summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAnsible Core Team <info@ansible.com>2020-03-09 09:40:29 +0000
committerAnsible Core Team <info@ansible.com>2020-03-09 09:40:29 +0000
commit6e048cc2689d033b7757174d582077dd4af494b5 (patch)
tree05eb51738d05d26c992b439214c3dd7ffd1af538 /test
parentcb06e04e718f73173a6dcae1b082637063bae786 (diff)
downloadansible-6e048cc2689d033b7757174d582077dd4af494b5.tar.gz
Migrated to community.general
Diffstat (limited to 'test')
-rw-r--r--test/integration/targets/aix_devices/aliases2
-rw-r--r--test/integration/targets/aix_devices/tasks/main.yml71
-rw-r--r--test/integration/targets/aix_filesystem/aliases1
-rw-r--r--test/integration/targets/aix_filesystem/tasks/main.yml120
-rw-r--r--test/integration/targets/alternatives/aliases6
-rw-r--r--test/integration/targets/alternatives/tasks/main.yml66
-rw-r--r--test/integration/targets/alternatives/tasks/path_is_checked.yml12
-rw-r--r--test/integration/targets/alternatives/tasks/remove_links.yml7
-rw-r--r--test/integration/targets/alternatives/tasks/setup.yml15
-rw-r--r--test/integration/targets/alternatives/tasks/setup_test.yml22
-rw-r--r--test/integration/targets/alternatives/tasks/test.yml53
-rw-r--r--test/integration/targets/alternatives/tasks/tests.yml15
-rw-r--r--test/integration/targets/alternatives/tasks/tests_set_priority.yml23
-rw-r--r--test/integration/targets/alternatives/templates/dummy_alternative12
-rw-r--r--test/integration/targets/alternatives/templates/dummy_command2
-rw-r--r--test/integration/targets/alternatives/vars/Debian.yml2
-rw-r--r--test/integration/targets/alternatives/vars/Suse-42.3.yml2
-rw-r--r--test/integration/targets/alternatives/vars/default.yml2
-rw-r--r--test/integration/targets/apache2_module/aliases3
-rw-r--r--test/integration/targets/apache2_module/meta/main.yml2
-rw-r--r--test/integration/targets/apache2_module/tasks/actualtest.yml231
-rw-r--r--test/integration/targets/apache2_module/tasks/main.yml21
-rw-r--r--test/integration/targets/archive/aliases4
-rw-r--r--test/integration/targets/archive/files/bar.txt1
-rw-r--r--test/integration/targets/archive/files/empty.txt0
-rw-r--r--test/integration/targets/archive/files/foo.txt1
-rw-r--r--test/integration/targets/archive/meta/main.yml2
-rw-r--r--test/integration/targets/archive/tasks/main.yml340
-rw-r--r--test/integration/targets/callback_log_plays/aliases1
-rw-r--r--test/integration/targets/callback_log_plays/ping_log.yml4
-rwxr-xr-xtest/integration/targets/callback_log_plays/runme.sh16
-rw-r--r--test/integration/targets/ce_is_is_instance/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_is_is_instance/meta/main.yml1
-rw-r--r--test/integration/targets/ce_is_is_instance/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_is_is_instance/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_is_is_instance/tests/netconf/ce_is_is_instance.yaml85
-rw-r--r--test/integration/targets/ce_is_is_interface/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_is_is_interface/meta/main.yml1
-rw-r--r--test/integration/targets/ce_is_is_interface/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_is_is_interface/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_is_is_interface/tests/netconf/ce_is_is_interface.yaml133
-rw-r--r--test/integration/targets/ce_is_is_view/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_is_is_view/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_is_is_view/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/cleanup.yaml21
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/setup.yaml22
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_is_is_view_entity .yaml78
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_bfd.yaml92
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_export.yaml96
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_import.yaml124
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_l1tol2.yaml109
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_l2tol1.yaml109
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_max_load.yaml80
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_preferences.yaml87
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_view_basic.yaml115
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_ce_issi_default.yaml111
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_isis_filter_import.yaml97
-rw-r--r--test/integration/targets/ce_is_is_view/tests/netconf/test_isis_next_hop.yaml87
-rw-r--r--test/integration/targets/ce_lacp/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_lacp/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_lacp/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_lacp/tests/netconf/absent.yaml95
-rw-r--r--test/integration/targets/ce_lacp/tests/netconf/delete.yaml32
-rw-r--r--test/integration/targets/ce_lacp/tests/netconf/merge.yaml31
-rw-r--r--test/integration/targets/ce_lacp/tests/netconf/present.yaml103
-rw-r--r--test/integration/targets/ce_lldp/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_lldp/meta/main.yml1
-rw-r--r--test/integration/targets/ce_lldp/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_lldp/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_lldp/tests/netconf/absent.yaml108
-rw-r--r--test/integration/targets/ce_lldp/tests/netconf/clean.yaml20
-rw-r--r--test/integration/targets/ce_lldp/tests/netconf/present.yaml66
-rw-r--r--test/integration/targets/ce_lldp_interface/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_lldp_interface/meta/main.yml1
-rw-r--r--test/integration/targets/ce_lldp_interface/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_lldp_interface/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_lldp_interface/tests/netconf/lldp_interface.yaml155
-rw-r--r--test/integration/targets/ce_mdn_interface/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_mdn_interface/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_mdn_interface/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_mdn_interface/tests/netconf/ce_mdn_interface.yaml97
-rw-r--r--test/integration/targets/ce_multicast_global/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_multicast_global/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_multicast_global/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_multicast_global/tests/netconf/test_ce_multicast_global.yaml73
-rw-r--r--test/integration/targets/ce_multicast_igmp_enable/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_multicast_igmp_enable/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_multicast_igmp_enable/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_multicast_igmp_enable/tests/netconf/ce_multicast_igmp_enable.yaml95
-rw-r--r--test/integration/targets/ce_static_route_bfd/defaults/main.yaml3
-rw-r--r--test/integration/targets/ce_static_route_bfd/tasks/main.yaml2
-rw-r--r--test/integration/targets/ce_static_route_bfd/tasks/netconf.yaml17
-rw-r--r--test/integration/targets/ce_static_route_bfd/tests/netconf/ce_static_route_bfd.yaml150
-rw-r--r--test/integration/targets/ce_static_route_bfd/tests/netconf/cleanup.yaml31
-rw-r--r--test/integration/targets/cloud_init_data_facts/aliases5
-rw-r--r--test/integration/targets/cloud_init_data_facts/tasks/main.yml50
-rw-r--r--test/integration/targets/cloudscale_floating_ip/aliases2
-rw-r--r--test/integration/targets/cloudscale_floating_ip/meta/main.yml3
-rw-r--r--test/integration/targets/cloudscale_floating_ip/tasks/floating_ip.yml129
-rw-r--r--test/integration/targets/cloudscale_floating_ip/tasks/main.yml35
-rw-r--r--test/integration/targets/cloudscale_floating_ip/tasks/unassigned.yml26
-rw-r--r--test/integration/targets/cloudscale_server/aliases2
-rw-r--r--test/integration/targets/cloudscale_server/defaults/main.yml2
-rw-r--r--test/integration/targets/cloudscale_server/meta/main.yml3
-rw-r--r--test/integration/targets/cloudscale_server/tasks/failures.yml53
-rw-r--r--test/integration/targets/cloudscale_server/tasks/main.yml11
-rw-r--r--test/integration/targets/cloudscale_server/tasks/tests.yml676
-rw-r--r--test/integration/targets/cloudscale_server_group/aliases2
-rw-r--r--test/integration/targets/cloudscale_server_group/meta/main.yml3
-rw-r--r--test/integration/targets/cloudscale_server_group/tasks/failures.yml45
-rw-r--r--test/integration/targets/cloudscale_server_group/tasks/main.yml8
-rw-r--r--test/integration/targets/cloudscale_server_group/tasks/tests.yml159
-rw-r--r--test/integration/targets/cloudscale_volume/aliases2
-rw-r--r--test/integration/targets/cloudscale_volume/meta/main.yml3
-rw-r--r--test/integration/targets/cloudscale_volume/tasks/cleanup.yml5
-rw-r--r--test/integration/targets/cloudscale_volume/tasks/failures.yml38
-rw-r--r--test/integration/targets/cloudscale_volume/tasks/main.yml11
-rw-r--r--test/integration/targets/cloudscale_volume/tasks/setup.yml9
-rw-r--r--test/integration/targets/cloudscale_volume/tasks/tests.yml262
-rw-r--r--test/integration/targets/cnos_backup/README.md115
-rw-r--r--test/integration/targets/cnos_backup/aliases2
-rw-r--r--test/integration/targets/cnos_backup/cnos_backup_sample_hosts17
-rw-r--r--test/integration/targets/cnos_backup/tasks/main.yml25
-rw-r--r--test/integration/targets/cnos_backup/vars/main.yml12
-rw-r--r--test/integration/targets/cnos_banner/aliases2
-rw-r--r--test/integration/targets/cnos_banner/cnos_banner_sample_hosts14
-rw-r--r--test/integration/targets/cnos_banner/defaults/main.yaml2
-rw-r--r--test/integration/targets/cnos_banner/tasks/cli.yaml22
-rw-r--r--test/integration/targets/cnos_banner/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_banner/tests/cli/basic-login.yaml43
-rw-r--r--test/integration/targets/cnos_banner/tests/cli/basic-motd.yaml45
-rw-r--r--test/integration/targets/cnos_banner/tests/cli/basic-no-login.yaml36
-rw-r--r--test/integration/targets/cnos_banner/vars/main.yaml9
-rw-r--r--test/integration/targets/cnos_bgp/README.md119
-rw-r--r--test/integration/targets/cnos_bgp/aliases2
-rw-r--r--test/integration/targets/cnos_bgp/cnos_bgp_sample_hosts14
-rw-r--r--test/integration/targets/cnos_bgp/tasks/main.yml78
-rw-r--r--test/integration/targets/cnos_bgp/vars/main.yml37
-rw-r--r--test/integration/targets/cnos_command/README.md115
-rw-r--r--test/integration/targets/cnos_command/aliases2
-rw-r--r--test/integration/targets/cnos_command/cnos_command_sample_hosts14
-rw-r--r--test/integration/targets/cnos_command/defaults/main.yaml3
-rw-r--r--test/integration/targets/cnos_command/tasks/cli.yaml15
-rw-r--r--test/integration/targets/cnos_command/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_command/tests/cli/bad_operator.yaml19
-rw-r--r--test/integration/targets/cnos_command/tests/cli/contains.yaml19
-rw-r--r--test/integration/targets/cnos_command/tests/cli/invalid.yaml27
-rw-r--r--test/integration/targets/cnos_command/tests/cli/output.yaml27
-rw-r--r--test/integration/targets/cnos_command/tests/cli/timeout.yaml18
-rw-r--r--test/integration/targets/cnos_conditional_command/README.md120
-rw-r--r--test/integration/targets/cnos_conditional_command/aliases2
-rw-r--r--test/integration/targets/cnos_conditional_command/cnos_conditional_command_sample_hosts14
-rw-r--r--test/integration/targets/cnos_conditional_command/tasks/main.yml7
-rw-r--r--test/integration/targets/cnos_conditional_command/vars/main.yml3
-rw-r--r--test/integration/targets/cnos_conditional_template/README.md120
-rw-r--r--test/integration/targets/cnos_conditional_template/aliases2
-rw-r--r--test/integration/targets/cnos_conditional_template/cnos_conditional_template_sample_hosts14
-rw-r--r--test/integration/targets/cnos_conditional_template/tasks/main.yml11
-rw-r--r--test/integration/targets/cnos_conditional_template/templates/demo_template.j213
-rw-r--r--test/integration/targets/cnos_conditional_template/vars/main.yml3
-rw-r--r--test/integration/targets/cnos_config/README.md110
-rw-r--r--test/integration/targets/cnos_config/aliases2
-rw-r--r--test/integration/targets/cnos_config/cnos_config_sample_hosts14
-rw-r--r--test/integration/targets/cnos_config/defaults/main.yaml3
-rw-r--r--test/integration/targets/cnos_config/tasks/cli.yaml15
-rw-r--r--test/integration/targets/cnos_config/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_config/templates/basic/config.j24
-rw-r--r--test/integration/targets/cnos_config/templates/basic/config1.j24
-rw-r--r--test/integration/targets/cnos_config/templates/defaults/config.j22
-rw-r--r--test/integration/targets/cnos_config/tests/cli/backup.yaml49
-rw-r--r--test/integration/targets/cnos_config/tests/cli/basic.yaml35
-rw-r--r--test/integration/targets/cnos_config/tests/cli/defaults.yaml46
-rw-r--r--test/integration/targets/cnos_facts/README.md112
-rw-r--r--test/integration/targets/cnos_facts/aliases2
-rw-r--r--test/integration/targets/cnos_facts/cnos_facts_sample_hosts14
-rw-r--r--test/integration/targets/cnos_facts/defaults/main.yaml3
-rw-r--r--test/integration/targets/cnos_facts/tasks/cli.yaml15
-rw-r--r--test/integration/targets/cnos_facts/tasks/main.yml2
-rw-r--r--test/integration/targets/cnos_facts/tests/cli/all_facts.yaml27
-rw-r--r--test/integration/targets/cnos_facts/tests/cli/default_facts.yaml25
-rw-r--r--test/integration/targets/cnos_facts/tests/cli/invalid_subset.yaml39
-rw-r--r--test/integration/targets/cnos_facts/tests/cli/not_hardware.yaml28
-rw-r--r--test/integration/targets/cnos_image/README.md119
-rw-r--r--test/integration/targets/cnos_image/aliases2
-rw-r--r--test/integration/targets/cnos_image/cnos_image_sample_hosts17
-rw-r--r--test/integration/targets/cnos_image/tasks/main.yml16
-rw-r--r--test/integration/targets/cnos_image/vars/main.yml6
-rw-r--r--test/integration/targets/cnos_interface/aliases2
-rw-r--r--test/integration/targets/cnos_interface/cnos_interface_sample_hosts14
-rw-r--r--test/integration/targets/cnos_interface/defaults/main.yaml2
-rw-r--r--test/integration/targets/cnos_interface/tasks/cli.yaml22
-rw-r--r--test/integration/targets/cnos_interface/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_interface/tests/cli/basic.yaml228
-rw-r--r--test/integration/targets/cnos_interface/tests/cli/intent.yaml140
-rw-r--r--test/integration/targets/cnos_interface/vars/main.yaml9
-rw-r--r--test/integration/targets/cnos_l2_interface/aliases2
-rw-r--r--test/integration/targets/cnos_l2_interface/cnos_l2_interface_sample_hosts14
-rw-r--r--test/integration/targets/cnos_l2_interface/defaults/main.yaml2
-rw-r--r--test/integration/targets/cnos_l2_interface/tasks/cli.yaml24
-rw-r--r--test/integration/targets/cnos_l2_interface/tasks/main.yaml5
-rw-r--r--test/integration/targets/cnos_l2_interface/tests/cli/agg.yaml81
-rw-r--r--test/integration/targets/cnos_l2_interface/tests/cli/sanity.yaml168
-rw-r--r--test/integration/targets/cnos_l2_interface/vars/main.yaml9
-rw-r--r--test/integration/targets/cnos_l3_interface/aliases2
-rw-r--r--test/integration/targets/cnos_l3_interface/cnos_l3_interface_sample_hosts14
-rw-r--r--test/integration/targets/cnos_l3_interface/defaults/main.yaml2
-rw-r--r--test/integration/targets/cnos_l3_interface/tasks/cli.yaml22
-rw-r--r--test/integration/targets/cnos_l3_interface/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_l3_interface/tests/cli/basic.yaml279
-rw-r--r--test/integration/targets/cnos_l3_interface/vars/main.yaml9
-rw-r--r--test/integration/targets/cnos_linkagg/aliases2
-rw-r--r--test/integration/targets/cnos_linkagg/cnos_linkagg_sample_hosts14
-rw-r--r--test/integration/targets/cnos_linkagg/defaults/main.yaml3
-rw-r--r--test/integration/targets/cnos_linkagg/tasks/cli.yaml22
-rw-r--r--test/integration/targets/cnos_linkagg/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_linkagg/tests/cli/basic.yaml169
-rw-r--r--test/integration/targets/cnos_linkagg/vars/main.yaml9
-rw-r--r--test/integration/targets/cnos_lldp/aliases2
-rw-r--r--test/integration/targets/cnos_lldp/cnos_lldp_sample_hosts14
-rw-r--r--test/integration/targets/cnos_lldp/defaults/main.yaml2
-rw-r--r--test/integration/targets/cnos_lldp/tasks/cli.yaml22
-rw-r--r--test/integration/targets/cnos_lldp/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_lldp/tests/cli/basic.yaml44
-rw-r--r--test/integration/targets/cnos_logging/aliases2
-rw-r--r--test/integration/targets/cnos_logging/cnos_logging_sample_hosts14
-rw-r--r--test/integration/targets/cnos_logging/defaults/main.yaml2
-rw-r--r--test/integration/targets/cnos_logging/tasks/cli.yaml22
-rw-r--r--test/integration/targets/cnos_logging/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_logging/tests/cli/basic.yaml136
-rw-r--r--test/integration/targets/cnos_rollback/README.md119
-rw-r--r--test/integration/targets/cnos_rollback/aliases2
-rw-r--r--test/integration/targets/cnos_rollback/cnos_rollback_sample_hosts17
-rw-r--r--test/integration/targets/cnos_rollback/tasks/main.yml25
-rw-r--r--test/integration/targets/cnos_rollback/vars/main.yml12
-rw-r--r--test/integration/targets/cnos_save/README.md96
-rw-r--r--test/integration/targets/cnos_save/aliases2
-rw-r--r--test/integration/targets/cnos_save/cnos_save_sample_hosts14
-rw-r--r--test/integration/targets/cnos_save/tasks/main.yml18
-rw-r--r--test/integration/targets/cnos_save/vars/main.yml9
-rw-r--r--test/integration/targets/cnos_showrun/README.md96
-rw-r--r--test/integration/targets/cnos_showrun/aliases2
-rw-r--r--test/integration/targets/cnos_showrun/cnos_showrun_sample_hosts14
-rw-r--r--test/integration/targets/cnos_showrun/tasks/main.yml6
-rw-r--r--test/integration/targets/cnos_showrun/vars/main.yml3
-rw-r--r--test/integration/targets/cnos_static_route/aliases2
-rw-r--r--test/integration/targets/cnos_static_route/cnos_static_route_sample_hosts14
-rw-r--r--test/integration/targets/cnos_static_route/defaults/main.yaml2
-rw-r--r--test/integration/targets/cnos_static_route/tasks/cli.yaml22
-rw-r--r--test/integration/targets/cnos_static_route/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_static_route/tests/cli/basic.yaml136
-rw-r--r--test/integration/targets/cnos_system/aliases2
-rw-r--r--test/integration/targets/cnos_system/cnos_system_sample_hosts14
-rw-r--r--test/integration/targets/cnos_system/defaults/main.yaml2
-rw-r--r--test/integration/targets/cnos_system/tasks/cli.yaml33
-rw-r--r--test/integration/targets/cnos_system/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_system/tests/cli/net_system.yaml34
-rw-r--r--test/integration/targets/cnos_system/tests/cli/set_domain_list.yaml111
-rw-r--r--test/integration/targets/cnos_system/tests/cli/set_domain_name.yaml32
-rw-r--r--test/integration/targets/cnos_system/tests/cli/set_name_servers.yaml73
-rw-r--r--test/integration/targets/cnos_system/tests/common/sanity.yaml122
-rw-r--r--test/integration/targets/cnos_system/tests/common/set_hostname.yaml36
-rw-r--r--test/integration/targets/cnos_template/README.md112
-rw-r--r--test/integration/targets/cnos_template/aliases2
-rw-r--r--test/integration/targets/cnos_template/cnos_template_sample_hosts14
-rw-r--r--test/integration/targets/cnos_template/tasks/main.yml13
-rw-r--r--test/integration/targets/cnos_template/templates/demo_template.j213
-rw-r--r--test/integration/targets/cnos_template/vars/main.yml3
-rw-r--r--test/integration/targets/cnos_user/aliases2
-rw-r--r--test/integration/targets/cnos_user/cnos_user_sample_hosts14
-rw-r--r--test/integration/targets/cnos_user/defaults/main.yaml2
-rw-r--r--test/integration/targets/cnos_user/tasks/cli.yaml27
-rw-r--r--test/integration/targets/cnos_user/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_user/tests/common/basic.yaml58
-rw-r--r--test/integration/targets/cnos_user/tests/common/sanity.yaml84
-rw-r--r--test/integration/targets/cnos_vlag/README.md115
-rw-r--r--test/integration/targets/cnos_vlag/aliases2
-rw-r--r--test/integration/targets/cnos_vlag/cnos_vlag_sample_hosts14
-rw-r--r--test/integration/targets/cnos_vlag/tasks/main.yml51
-rw-r--r--test/integration/targets/cnos_vlag/vars/main.yml33
-rw-r--r--test/integration/targets/cnos_vlan/aliases2
-rw-r--r--test/integration/targets/cnos_vlan/cnos_vlan_sample_hosts14
-rw-r--r--test/integration/targets/cnos_vlan/defaults/main.yaml3
-rw-r--r--test/integration/targets/cnos_vlan/tasks/cli.yaml22
-rw-r--r--test/integration/targets/cnos_vlan/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_vlan/tests/cli/basic.yaml213
-rw-r--r--test/integration/targets/cnos_vlan/vars/main.yaml9
-rw-r--r--test/integration/targets/cnos_vrf/aliases2
-rw-r--r--test/integration/targets/cnos_vrf/cnos_vrf_sample_hosts14
-rw-r--r--test/integration/targets/cnos_vrf/defaults/main.yaml3
-rw-r--r--test/integration/targets/cnos_vrf/tasks/cli.yaml16
-rw-r--r--test/integration/targets/cnos_vrf/tasks/main.yaml2
-rw-r--r--test/integration/targets/cnos_vrf/tests/cli/basic.yaml259
-rw-r--r--test/integration/targets/connection_chroot/aliases2
l---------test/integration/targets/connection_chroot/runme.sh1
-rw-r--r--test/integration/targets/connection_chroot/test_connection.inventory7
-rw-r--r--test/integration/targets/connection_docker/aliases2
l---------test/integration/targets/connection_docker/runme.sh1
-rw-r--r--test/integration/targets/connection_docker/test_connection.inventory6
-rw-r--r--test/integration/targets/connection_jail/aliases1
l---------test/integration/targets/connection_jail/runme.sh1
-rw-r--r--test/integration/targets/connection_jail/test_connection.inventory7
-rw-r--r--test/integration/targets/connection_libvirt_lxc/aliases1
l---------test/integration/targets/connection_libvirt_lxc/runme.sh1
-rw-r--r--test/integration/targets/connection_libvirt_lxc/test_connection.inventory6
-rw-r--r--test/integration/targets/connection_lxc/aliases1
l---------test/integration/targets/connection_lxc/runme.sh1
-rw-r--r--test/integration/targets/connection_lxc/test_connection.inventory17
-rw-r--r--test/integration/targets/connection_lxd/aliases2
l---------test/integration/targets/connection_lxd/runme.sh1
-rw-r--r--test/integration/targets/connection_lxd/test_connection.inventory6
-rw-r--r--test/integration/targets/consul/aliases3
-rw-r--r--test/integration/targets/consul/meta/main.yml3
-rw-r--r--test/integration/targets/consul/tasks/consul_session.yml162
-rw-r--r--test/integration/targets/consul/tasks/main.yml97
-rw-r--r--test/integration/targets/consul/templates/consul_config.hcl.j213
-rw-r--r--test/integration/targets/cronvar/aliases4
-rw-r--r--test/integration/targets/cronvar/defaults/main.yml1
-rw-r--r--test/integration/targets/cronvar/meta/main.yml2
-rw-r--r--test/integration/targets/cronvar/tasks/main.yml109
-rw-r--r--test/integration/targets/cs_account/aliases2
-rw-r--r--test/integration/targets/cs_account/meta/main.yml3
-rw-r--r--test/integration/targets/cs_account/tasks/main.yml442
-rw-r--r--test/integration/targets/cs_affinitygroup/aliases2
-rw-r--r--test/integration/targets/cs_affinitygroup/meta/main.yml3
-rw-r--r--test/integration/targets/cs_affinitygroup/tasks/main.yml93
-rw-r--r--test/integration/targets/cs_cluster/aliases2
-rw-r--r--test/integration/targets/cs_cluster/meta/main.yml3
-rw-r--r--test/integration/targets/cs_cluster/tasks/main.yml306
-rw-r--r--test/integration/targets/cs_configuration/aliases2
-rw-r--r--test/integration/targets/cs_configuration/defaults/main.yml5
-rw-r--r--test/integration/targets/cs_configuration/meta/main.yml3
-rw-r--r--test/integration/targets/cs_configuration/tasks/account.yml76
-rw-r--r--test/integration/targets/cs_configuration/tasks/cluster.yml76
-rw-r--r--test/integration/targets/cs_configuration/tasks/main.yml204
-rw-r--r--test/integration/targets/cs_configuration/tasks/storage.yml76
-rw-r--r--test/integration/targets/cs_configuration/tasks/zone.yml59
-rw-r--r--test/integration/targets/cs_disk_offering/aliases2
-rw-r--r--test/integration/targets/cs_disk_offering/meta/main.yml3
-rw-r--r--test/integration/targets/cs_disk_offering/tasks/main.yml143
-rw-r--r--test/integration/targets/cs_domain/aliases2
-rw-r--r--test/integration/targets/cs_domain/meta/main.yml3
-rw-r--r--test/integration/targets/cs_domain/tasks/main.yml241
-rw-r--r--test/integration/targets/cs_firewall/aliases2
-rw-r--r--test/integration/targets/cs_firewall/defaults/main.yml3
-rw-r--r--test/integration/targets/cs_firewall/meta/main.yml3
-rw-r--r--test/integration/targets/cs_firewall/tasks/main.yml484
-rw-r--r--test/integration/targets/cs_host/aliases2
-rw-r--r--test/integration/targets/cs_host/meta/main.yml3
-rw-r--r--test/integration/targets/cs_host/tasks/main.yml419
-rw-r--r--test/integration/targets/cs_image_store/aliases2
-rw-r--r--test/integration/targets/cs_image_store/meta/main.yml3
-rw-r--r--test/integration/targets/cs_image_store/tasks/main.yml166
-rw-r--r--test/integration/targets/cs_instance/aliases2
-rw-r--r--test/integration/targets/cs_instance/defaults/main.yml5
-rw-r--r--test/integration/targets/cs_instance/meta/main.yml3
-rw-r--r--test/integration/targets/cs_instance/tasks/absent.yml115
-rw-r--r--test/integration/targets/cs_instance/tasks/absent_display_name.yml43
-rw-r--r--test/integration/targets/cs_instance/tasks/cleanup.yml30
-rw-r--r--test/integration/targets/cs_instance/tasks/host.yml135
-rw-r--r--test/integration/targets/cs_instance/tasks/main.yml19
-rw-r--r--test/integration/targets/cs_instance/tasks/present.yml323
-rw-r--r--test/integration/targets/cs_instance/tasks/present_display_name.yml178
-rw-r--r--test/integration/targets/cs_instance/tasks/project.yml560
-rw-r--r--test/integration/targets/cs_instance/tasks/setup.yml24
-rw-r--r--test/integration/targets/cs_instance/tasks/sshkeys.yml168
-rw-r--r--test/integration/targets/cs_instance/tasks/tags.yml132
-rw-r--r--test/integration/targets/cs_instance_info/aliases2
-rw-r--r--test/integration/targets/cs_instance_info/defaults/main.yml3
-rw-r--r--test/integration/targets/cs_instance_info/meta/main.yml3
-rw-r--r--test/integration/targets/cs_instance_info/tasks/main.yml91
-rw-r--r--test/integration/targets/cs_instance_nic/aliases2
-rw-r--r--test/integration/targets/cs_instance_nic/meta/main.yml3
-rw-r--r--test/integration/targets/cs_instance_nic/tasks/main.yml306
-rw-r--r--test/integration/targets/cs_instance_nic_secondaryip/aliases2
-rw-r--r--test/integration/targets/cs_instance_nic_secondaryip/meta/main.yml3
-rw-r--r--test/integration/targets/cs_instance_nic_secondaryip/tasks/main.yml220
-rw-r--r--test/integration/targets/cs_instance_password_reset/aliases2
-rw-r--r--test/integration/targets/cs_instance_password_reset/meta/main.yml3
-rw-r--r--test/integration/targets/cs_instance_password_reset/tasks/main.yml85
-rw-r--r--test/integration/targets/cs_instancegroup/aliases2
-rw-r--r--test/integration/targets/cs_instancegroup/meta/main.yml3
-rw-r--r--test/integration/targets/cs_instancegroup/tasks/main.yml79
-rw-r--r--test/integration/targets/cs_ip_address/aliases2
-rw-r--r--test/integration/targets/cs_ip_address/meta/main.yml3
-rw-r--r--test/integration/targets/cs_ip_address/tasks/main.yml19
-rw-r--r--test/integration/targets/cs_ip_address/tasks/network.yml240
-rw-r--r--test/integration/targets/cs_ip_address/tasks/vpc.yml121
-rw-r--r--test/integration/targets/cs_iso/aliases2
-rw-r--r--test/integration/targets/cs_iso/meta/main.yml3
-rw-r--r--test/integration/targets/cs_iso/tasks/main.yml142
-rw-r--r--test/integration/targets/cs_loadbalancer_rule/aliases2
-rw-r--r--test/integration/targets/cs_loadbalancer_rule/meta/main.yml3
-rw-r--r--test/integration/targets/cs_loadbalancer_rule/tasks/main.yml392
-rw-r--r--test/integration/targets/cs_network/aliases2
-rw-r--r--test/integration/targets/cs_network/meta/main.yml3
-rw-r--r--test/integration/targets/cs_network/tasks/main.yml3
-rw-r--r--test/integration/targets/cs_network/tasks/vpc_network_tier.yml299
-rw-r--r--test/integration/targets/cs_network_acl/aliases2
-rw-r--r--test/integration/targets/cs_network_acl/meta/main.yml3
-rw-r--r--test/integration/targets/cs_network_acl/tasks/main.yml120
-rw-r--r--test/integration/targets/cs_network_acl_rule/aliases2
-rw-r--r--test/integration/targets/cs_network_acl_rule/meta/main.yml3
-rw-r--r--test/integration/targets/cs_network_acl_rule/tasks/main.yml548
-rw-r--r--test/integration/targets/cs_network_offering/aliases2
-rw-r--r--test/integration/targets/cs_network_offering/meta/main.yml3
-rw-r--r--test/integration/targets/cs_network_offering/tasks/main.yml434
-rw-r--r--test/integration/targets/cs_physical_network/aliases2
-rw-r--r--test/integration/targets/cs_physical_network/meta/main.yml3
-rw-r--r--test/integration/targets/cs_physical_network/tasks/main.yml238
-rw-r--r--test/integration/targets/cs_pod/aliases2
-rw-r--r--test/integration/targets/cs_pod/meta/main.yml3
-rw-r--r--test/integration/targets/cs_pod/tasks/main.yml301
-rw-r--r--test/integration/targets/cs_portforward/aliases2
-rw-r--r--test/integration/targets/cs_portforward/defaults/main.yml3
-rw-r--r--test/integration/targets/cs_portforward/meta/main.yml3
-rw-r--r--test/integration/targets/cs_portforward/tasks/main.yml255
-rw-r--r--test/integration/targets/cs_project/aliases2
-rw-r--r--test/integration/targets/cs_project/meta/main.yml3
-rw-r--r--test/integration/targets/cs_project/tasks/main.yml149
-rw-r--r--test/integration/targets/cs_region/aliases2
-rw-r--r--test/integration/targets/cs_region/meta/main.yml3
-rw-r--r--test/integration/targets/cs_region/tasks/main.yml154
-rw-r--r--test/integration/targets/cs_resourcelimit/aliases2
-rw-r--r--test/integration/targets/cs_resourcelimit/meta/main.yml3
-rw-r--r--test/integration/targets/cs_resourcelimit/tasks/cpu.yml122
-rw-r--r--test/integration/targets/cs_resourcelimit/tasks/instance.yml108
-rw-r--r--test/integration/targets/cs_resourcelimit/tasks/main.yml104
-rw-r--r--test/integration/targets/cs_role/aliases2
-rw-r--r--test/integration/targets/cs_role/meta/main.yml3
-rw-r--r--test/integration/targets/cs_role/tasks/main.yml130
-rw-r--r--test/integration/targets/cs_role_permission/aliases2
-rw-r--r--test/integration/targets/cs_role_permission/meta/main.yml3
-rw-r--r--test/integration/targets/cs_role_permission/tasks/main.yml303
-rw-r--r--test/integration/targets/cs_router/aliases2
-rw-r--r--test/integration/targets/cs_router/meta/main.yml3
-rw-r--r--test/integration/targets/cs_router/tasks/main.yml183
-rw-r--r--test/integration/targets/cs_securitygroup/aliases2
-rw-r--r--test/integration/targets/cs_securitygroup/meta/main.yml3
-rw-r--r--test/integration/targets/cs_securitygroup/tasks/main.yml79
-rw-r--r--test/integration/targets/cs_securitygroup_rule/aliases2
-rw-r--r--test/integration/targets/cs_securitygroup_rule/meta/main.yml3
-rw-r--r--test/integration/targets/cs_securitygroup_rule/tasks/absent.yml171
-rw-r--r--test/integration/targets/cs_securitygroup_rule/tasks/cleanup.yml7
-rw-r--r--test/integration/targets/cs_securitygroup_rule/tasks/main.yml4
-rw-r--r--test/integration/targets/cs_securitygroup_rule/tasks/present.yml163
-rw-r--r--test/integration/targets/cs_securitygroup_rule/tasks/setup.yml56
-rw-r--r--test/integration/targets/cs_service_offering/aliases2
-rw-r--r--test/integration/targets/cs_service_offering/meta/main.yml3
-rw-r--r--test/integration/targets/cs_service_offering/tasks/guest_vm_service_offering.yml223
-rw-r--r--test/integration/targets/cs_service_offering/tasks/main.yml3
-rw-r--r--test/integration/targets/cs_service_offering/tasks/system_vm_service_offering.yml151
-rw-r--r--test/integration/targets/cs_snapshot_policy/aliases2
-rw-r--r--test/integration/targets/cs_snapshot_policy/meta/main.yml3
-rw-r--r--test/integration/targets/cs_snapshot_policy/tasks/main.yml176
-rw-r--r--test/integration/targets/cs_sshkeypair/aliases2
-rw-r--r--test/integration/targets/cs_sshkeypair/meta/main.yml3
-rw-r--r--test/integration/targets/cs_sshkeypair/tasks/main.yml197
-rw-r--r--test/integration/targets/cs_storage_pool/aliases2
-rw-r--r--test/integration/targets/cs_storage_pool/meta/main.yml3
-rw-r--r--test/integration/targets/cs_storage_pool/tasks/main.yml465
-rw-r--r--test/integration/targets/cs_template/aliases2
-rw-r--r--test/integration/targets/cs_template/defaults/main.yml5
-rw-r--r--test/integration/targets/cs_template/meta/main.yml3
-rw-r--r--test/integration/targets/cs_template/tasks/main.yml3
-rw-r--r--test/integration/targets/cs_template/tasks/test1.yml160
-rw-r--r--test/integration/targets/cs_template/tasks/test2.yml181
-rw-r--r--test/integration/targets/cs_traffic_type/aliases2
-rw-r--r--test/integration/targets/cs_traffic_type/meta/main.yml3
-rw-r--r--test/integration/targets/cs_traffic_type/tasks/main.yml173
-rw-r--r--test/integration/targets/cs_user/aliases2
-rw-r--r--test/integration/targets/cs_user/meta/main.yml3
-rw-r--r--test/integration/targets/cs_user/tasks/main.yml618
-rw-r--r--test/integration/targets/cs_vlan_ip_range/aliases2
-rw-r--r--test/integration/targets/cs_vlan_ip_range/meta/main.yml3
-rw-r--r--test/integration/targets/cs_vlan_ip_range/tasks/main.yml435
-rw-r--r--test/integration/targets/cs_vmsnapshot/aliases2
-rw-r--r--test/integration/targets/cs_vmsnapshot/defaults/main.yml3
-rw-r--r--test/integration/targets/cs_vmsnapshot/meta/main.yml3
-rw-r--r--test/integration/targets/cs_vmsnapshot/tasks/main.yml152
-rw-r--r--test/integration/targets/cs_volume/aliases2
-rw-r--r--test/integration/targets/cs_volume/defaults/main.yml8
-rw-r--r--test/integration/targets/cs_volume/meta/main.yml3
-rw-r--r--test/integration/targets/cs_volume/tasks/common.yml296
-rw-r--r--test/integration/targets/cs_volume/tasks/extract_upload.yml190
-rw-r--r--test/integration/targets/cs_volume/tasks/main.yml3
-rw-r--r--test/integration/targets/cs_vpc/aliases2
-rw-r--r--test/integration/targets/cs_vpc/meta/main.yml3
-rw-r--r--test/integration/targets/cs_vpc/tasks/main.yml728
-rw-r--r--test/integration/targets/cs_vpc_offering/aliases2
-rw-r--r--test/integration/targets/cs_vpc_offering/meta/main.yml3
-rw-r--r--test/integration/targets/cs_vpc_offering/tasks/main.yml427
-rw-r--r--test/integration/targets/cs_vpn_connection/aliases2
-rw-r--r--test/integration/targets/cs_vpn_connection/meta/main.yml3
-rw-r--r--test/integration/targets/cs_vpn_connection/tasks/main.yml205
-rw-r--r--test/integration/targets/cs_vpn_customer_gateway/aliases2
-rw-r--r--test/integration/targets/cs_vpn_customer_gateway/meta/main.yml3
-rw-r--r--test/integration/targets/cs_vpn_customer_gateway/tasks/main.yml208
-rw-r--r--test/integration/targets/cs_vpn_gateway/aliases2
-rw-r--r--test/integration/targets/cs_vpn_gateway/meta/main.yml3
-rw-r--r--test/integration/targets/cs_vpn_gateway/tasks/main.yml108
-rw-r--r--test/integration/targets/cs_zone/aliases2
-rw-r--r--test/integration/targets/cs_zone/meta/main.yml3
-rw-r--r--test/integration/targets/cs_zone/tasks/main.yml205
-rw-r--r--test/integration/targets/cs_zone_info/aliases3
-rw-r--r--test/integration/targets/cs_zone_info/meta/main.yml3
-rw-r--r--test/integration/targets/cs_zone_info/tasks/main.yml73
-rw-r--r--test/integration/targets/deploy_helper/aliases1
-rw-r--r--test/integration/targets/deploy_helper/meta/main.yml2
-rw-r--r--test/integration/targets/deploy_helper/tasks/main.yml149
-rw-r--r--test/integration/targets/digital_ocean_floating_ip/aliases1
-rw-r--r--test/integration/targets/digital_ocean_floating_ip/tasks/main.yml42
-rw-r--r--test/integration/targets/digital_ocean_sshkey/aliases1
-rw-r--r--test/integration/targets/digital_ocean_sshkey/tasks/main.yml29
-rw-r--r--test/integration/targets/digital_ocean_tag/aliases2
-rw-r--r--test/integration/targets/digital_ocean_tag/tasks/main.yml51
-rw-r--r--test/integration/targets/docker_config/aliases8
-rw-r--r--test/integration/targets/docker_config/meta/main.yml3
-rw-r--r--test/integration/targets/docker_config/tasks/main.yml6
-rw-r--r--test/integration/targets/docker_config/tasks/test_docker_config.yml133
-rw-r--r--test/integration/targets/docker_container/aliases5
-rw-r--r--test/integration/targets/docker_container/files/env-file2
-rw-r--r--test/integration/targets/docker_container/meta/main.yml3
-rw-r--r--test/integration/targets/docker_container/tasks/main.yml43
-rw-r--r--test/integration/targets/docker_container/tasks/run-test.yml3
-rw-r--r--test/integration/targets/docker_container/tasks/tests/comparisons.yml463
-rw-r--r--test/integration/targets/docker_container/tasks/tests/compatibility.yml118
-rw-r--r--test/integration/targets/docker_container/tasks/tests/image-ids.yml146
-rw-r--r--test/integration/targets/docker_container/tasks/tests/mounts-volumes.yml445
-rw-r--r--test/integration/targets/docker_container/tasks/tests/network.yml736
-rw-r--r--test/integration/targets/docker_container/tasks/tests/options.yml3745
-rw-r--r--test/integration/targets/docker_container/tasks/tests/ports.yml286
-rw-r--r--test/integration/targets/docker_container/tasks/tests/regression-45700-dont-parse-on-absent.yml34
-rw-r--r--test/integration/targets/docker_container/tasks/tests/start-stop.yml455
-rw-r--r--test/integration/targets/docker_container_info/aliases5
-rw-r--r--test/integration/targets/docker_container_info/meta/main.yml3
-rw-r--r--test/integration/targets/docker_container_info/tasks/main.yml64
-rw-r--r--test/integration/targets/docker_host_info/aliases5
-rw-r--r--test/integration/targets/docker_host_info/meta/main.yml3
-rw-r--r--test/integration/targets/docker_host_info/tasks/main.yml5
-rw-r--r--test/integration/targets/docker_host_info/tasks/test_host_info.yml296
-rw-r--r--test/integration/targets/docker_image/aliases5
-rw-r--r--test/integration/targets/docker_image/files/Dockerfile3
-rw-r--r--test/integration/targets/docker_image/files/EtcHostsDockerfile3
-rw-r--r--test/integration/targets/docker_image/files/MyDockerfile5
-rw-r--r--test/integration/targets/docker_image/files/StagedDockerfile7
-rw-r--r--test/integration/targets/docker_image/meta/main.yml3
-rw-r--r--test/integration/targets/docker_image/tasks/main.yml3
-rw-r--r--test/integration/targets/docker_image/tasks/run-test.yml3
-rw-r--r--test/integration/targets/docker_image/tasks/test.yml34
-rw-r--r--test/integration/targets/docker_image/tasks/tests/basic.yml78
-rw-r--r--test/integration/targets/docker_image/tasks/tests/docker_image.yml152
-rw-r--r--test/integration/targets/docker_image/tasks/tests/old-options.yml48
-rw-r--r--test/integration/targets/docker_image/tasks/tests/options.yml300
-rw-r--r--test/integration/targets/docker_image_info/aliases5
-rw-r--r--test/integration/targets/docker_image_info/meta/main.yml3
-rw-r--r--test/integration/targets/docker_image_info/tasks/main.yml54
-rw-r--r--test/integration/targets/docker_login/aliases5
-rw-r--r--test/integration/targets/docker_login/meta/main.yml3
-rw-r--r--test/integration/targets/docker_login/tasks/main.yml3
-rw-r--r--test/integration/targets/docker_login/tasks/run-test.yml3
-rw-r--r--test/integration/targets/docker_login/tasks/test.yml8
-rw-r--r--test/integration/targets/docker_login/tasks/tests/docker_login.yml136
-rw-r--r--test/integration/targets/docker_network/aliases5
-rw-r--r--test/integration/targets/docker_network/meta/main.yml3
-rw-r--r--test/integration/targets/docker_network/tasks/main.yml33
-rw-r--r--test/integration/targets/docker_network/tasks/run-test.yml3
-rw-r--r--test/integration/targets/docker_network/tasks/tests/basic.yml134
-rw-r--r--test/integration/targets/docker_network/tasks/tests/ipam.yml398
-rw-r--r--test/integration/targets/docker_network/tasks/tests/options.yml240
-rw-r--r--test/integration/targets/docker_network/tasks/tests/overlay.yml61
-rw-r--r--test/integration/targets/docker_network/tasks/tests/substring.yml37
-rw-r--r--test/integration/targets/docker_network_info/aliases5
-rw-r--r--test/integration/targets/docker_network_info/meta/main.yml3
-rw-r--r--test/integration/targets/docker_network_info/tasks/main.yml60
-rw-r--r--test/integration/targets/docker_node/aliases11
-rw-r--r--test/integration/targets/docker_node/meta/main.yml3
-rw-r--r--test/integration/targets/docker_node/tasks/main.yml31
-rw-r--r--test/integration/targets/docker_node/tasks/test_node.yml840
-rw-r--r--test/integration/targets/docker_node_info/aliases8
-rw-r--r--test/integration/targets/docker_node_info/meta/main.yml3
-rw-r--r--test/integration/targets/docker_node_info/tasks/main.yml6
-rw-r--r--test/integration/targets/docker_node_info/tasks/test_node_info.yml88
-rw-r--r--test/integration/targets/docker_prune/aliases5
-rw-r--r--test/integration/targets/docker_prune/meta/main.yml3
-rw-r--r--test/integration/targets/docker_prune/tasks/main.yml63
-rw-r--r--test/integration/targets/docker_secret/aliases8
-rw-r--r--test/integration/targets/docker_secret/meta/main.yml3
-rw-r--r--test/integration/targets/docker_secret/tasks/main.yml5
-rw-r--r--test/integration/targets/docker_secret/tasks/test_secrets.yml118
-rw-r--r--test/integration/targets/docker_stack/aliases8
-rw-r--r--test/integration/targets/docker_stack/files/stack_compose_base.yml5
-rw-r--r--test/integration/targets/docker_stack/files/stack_compose_overrides.yml5
-rw-r--r--test/integration/targets/docker_stack/meta/main.yml3
-rw-r--r--test/integration/targets/docker_stack/tasks/main.yml5
-rw-r--r--test/integration/targets/docker_stack/tasks/test_stack.yml113
-rw-r--r--test/integration/targets/docker_stack/vars/main.yml15
-rw-r--r--test/integration/targets/docker_swarm/aliases12
-rw-r--r--test/integration/targets/docker_swarm/meta/main.yml4
-rw-r--r--test/integration/targets/docker_swarm/tasks/cleanup.yml35
-rw-r--r--test/integration/targets/docker_swarm/tasks/main.yml18
-rw-r--r--test/integration/targets/docker_swarm/tasks/run-test.yml0
-rw-r--r--test/integration/targets/docker_swarm/tasks/tests/basic.yml158
-rw-r--r--test/integration/targets/docker_swarm/tasks/tests/options-ca.yml159
-rw-r--r--test/integration/targets/docker_swarm/tasks/tests/options.yml1158
-rw-r--r--test/integration/targets/docker_swarm/tasks/tests/remote-addr-pool.yml90
-rw-r--r--test/integration/targets/docker_swarm_info/aliases8
-rw-r--r--test/integration/targets/docker_swarm_info/meta/main.yml3
-rw-r--r--test/integration/targets/docker_swarm_info/tasks/main.yml6
-rw-r--r--test/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml190
-rw-r--r--test/integration/targets/docker_swarm_service/aliases8
-rw-r--r--test/integration/targets/docker_swarm_service/files/env-file-12
-rw-r--r--test/integration/targets/docker_swarm_service/files/env-file-22
-rw-r--r--test/integration/targets/docker_swarm_service/meta/main.yml3
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/main.yml75
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/run-test.yml3
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/configs.yml413
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/logging.yml158
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/misc.yml113
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/mounts.yml601
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/networks.yml450
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/options.yml1831
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/placement.yml214
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/resources.yml230
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/restart_config.yml233
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/rollback_config.yml339
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/secrets.yml411
-rw-r--r--test/integration/targets/docker_swarm_service/tasks/tests/update_config.yml408
-rw-r--r--test/integration/targets/docker_swarm_service/vars/main.yml53
-rw-r--r--test/integration/targets/docker_swarm_service_info/aliases8
-rw-r--r--test/integration/targets/docker_swarm_service_info/meta/main.yml3
-rw-r--r--test/integration/targets/docker_swarm_service_info/tasks/main.yml6
-rw-r--r--test/integration/targets/docker_swarm_service_info/tasks/test_docker_swarm_service_info.yml83
-rw-r--r--test/integration/targets/docker_volume/aliases5
-rw-r--r--test/integration/targets/docker_volume/meta/main.yml3
-rw-r--r--test/integration/targets/docker_volume/tasks/main.yml25
-rw-r--r--test/integration/targets/docker_volume/tasks/run-test.yml3
-rw-r--r--test/integration/targets/docker_volume/tasks/tests/basic.yml177
-rw-r--r--test/integration/targets/docker_volume_info/aliases5
-rw-r--r--test/integration/targets/docker_volume_info/meta/main.yml3
-rw-r--r--test/integration/targets/docker_volume_info/tasks/main.yml58
-rw-r--r--test/integration/targets/enos_command/README.md115
-rw-r--r--test/integration/targets/enos_command/aliases2
-rw-r--r--test/integration/targets/enos_command/defaults/main.yaml3
-rw-r--r--test/integration/targets/enos_command/tasks/cli.yaml15
-rw-r--r--test/integration/targets/enos_command/tasks/main.yaml2
-rw-r--r--test/integration/targets/enos_command/tests/cli/bad_operator.yaml20
-rw-r--r--test/integration/targets/enos_command/tests/cli/contains.yaml20
-rw-r--r--test/integration/targets/enos_command/tests/cli/invalid.yaml29
-rw-r--r--test/integration/targets/enos_command/tests/cli/output.yaml29
-rw-r--r--test/integration/targets/enos_command/tests/cli/timeout.yaml19
-rw-r--r--test/integration/targets/enos_command/vars/main.yaml13
-rw-r--r--test/integration/targets/enos_config/README.md123
-rw-r--r--test/integration/targets/enos_config/aliases2
-rw-r--r--test/integration/targets/enos_config/defaults/main.yaml3
-rw-r--r--test/integration/targets/enos_config/tasks/cli.yaml15
-rw-r--r--test/integration/targets/enos_config/tasks/main.yaml2
-rw-r--r--test/integration/targets/enos_config/templates/basic/config.j24
-rw-r--r--test/integration/targets/enos_config/templates/defaults/config.j22
-rw-r--r--test/integration/targets/enos_config/tests/cli/backup.yaml52
-rw-r--r--test/integration/targets/enos_config/tests/cli/basic.yaml39
-rw-r--r--test/integration/targets/enos_config/tests/cli/defaults.yaml50
-rw-r--r--test/integration/targets/enos_config/tests/cli/force.yaml41
-rw-r--r--test/integration/targets/enos_config/vars/main.yml9
-rw-r--r--test/integration/targets/enos_facts/README.md111
-rw-r--r--test/integration/targets/enos_facts/aliases2
-rw-r--r--test/integration/targets/enos_facts/defaults/main.yaml3
-rw-r--r--test/integration/targets/enos_facts/tasks/cli.yaml15
-rw-r--r--test/integration/targets/enos_facts/tasks/main.yml2
-rw-r--r--test/integration/targets/enos_facts/tests/cli/all_facts.yaml27
-rw-r--r--test/integration/targets/enos_facts/tests/cli/default_facts.yaml29
-rw-r--r--test/integration/targets/enos_facts/tests/cli/invalid_subset.yaml43
-rw-r--r--test/integration/targets/enos_facts/tests/cli/not_hardware.yaml28
-rw-r--r--test/integration/targets/enos_facts/vars/main.yml9
-rw-r--r--test/integration/targets/etcd3/aliases5
-rw-r--r--test/integration/targets/etcd3/defaults/main.yml13
-rw-r--r--test/integration/targets/etcd3/tasks/main.yml25
-rw-r--r--test/integration/targets/etcd3/tasks/run_tests.yml178
-rw-r--r--test/integration/targets/etcd3/vars/RedHat-py3.yml1
-rw-r--r--test/integration/targets/etcd3/vars/RedHat.yml3
-rw-r--r--test/integration/targets/etcd3/vars/Suse.yml3
-rw-r--r--test/integration/targets/etcd3/vars/Ubuntu-16-py3.yml1
-rw-r--r--test/integration/targets/etcd3/vars/Ubuntu-16.yml1
-rw-r--r--test/integration/targets/etcd3/vars/default.yml1
-rw-r--r--test/integration/targets/exos_command/defaults/main.yaml3
-rw-r--r--test/integration/targets/exos_command/tasks/cli.yaml16
-rw-r--r--test/integration/targets/exos_command/tasks/httpapi.yaml16
-rw-r--r--test/integration/targets/exos_command/tasks/main.yaml3
-rw-r--r--test/integration/targets/exos_command/tests/common/multiple.yaml16
-rw-r--r--test/integration/targets/exos_command/tests/common/prompt.yaml17
-rw-r--r--test/integration/targets/exos_command/tests/common/single.yaml14
-rw-r--r--test/integration/targets/exos_command/tests/common/waitfor.yaml15
-rw-r--r--test/integration/targets/exos_command/tests/common/waitfor_multiple.yaml20
-rw-r--r--test/integration/targets/exos_config/defaults/main.yaml3
-rw-r--r--test/integration/targets/exos_config/tasks/cli.yaml16
-rw-r--r--test/integration/targets/exos_config/tasks/httpapi.yaml16
-rw-r--r--test/integration/targets/exos_config/tasks/main.yaml3
-rw-r--r--test/integration/targets/exos_config/templates/master.cfg242
-rw-r--r--test/integration/targets/exos_config/tests/common/backup.yaml35
-rw-r--r--test/integration/targets/exos_config/tests/common/diff_against_file.yaml32
-rw-r--r--test/integration/targets/exos_config/tests/common/diff_against_startup.yaml42
-rw-r--r--test/integration/targets/exos_config/tests/common/save_config.yaml51
-rw-r--r--test/integration/targets/exos_config/tests/common/sysname.yaml35
-rw-r--r--test/integration/targets/exos_facts/defaults/main.yaml3
-rw-r--r--test/integration/targets/exos_facts/tasks/cli.yaml16
-rw-r--r--test/integration/targets/exos_facts/tasks/httpapi.yaml16
-rw-r--r--test/integration/targets/exos_facts/tasks/main.yaml3
-rw-r--r--test/integration/targets/exos_facts/tests/common/basic.yaml27
-rw-r--r--test/integration/targets/exos_facts/tests/common/default_facts.yaml28
-rw-r--r--test/integration/targets/exos_facts/tests/common/invalid_subset.yaml40
-rw-r--r--test/integration/targets/exos_facts/tests/common/not_hardware_facts.yaml27
-rw-r--r--test/integration/targets/exos_l2_interfaces/defaults/main.yaml3
-rw-r--r--test/integration/targets/exos_l2_interfaces/tasks/httpapi.yaml19
-rw-r--r--test/integration/targets/exos_l2_interfaces/tasks/main.yaml2
-rw-r--r--test/integration/targets/exos_l2_interfaces/tests/httpapi/_populate_config.yaml12
-rw-r--r--test/integration/targets/exos_l2_interfaces/tests/httpapi/_reset_config.yaml7
-rw-r--r--test/integration/targets/exos_l2_interfaces/tests/httpapi/deleted.yaml96
-rw-r--r--test/integration/targets/exos_l2_interfaces/tests/httpapi/merged.yaml85
-rw-r--r--test/integration/targets/exos_l2_interfaces/tests/httpapi/overridden.yaml76
-rw-r--r--test/integration/targets/exos_l2_interfaces/tests/httpapi/replaced.yaml63
-rw-r--r--test/integration/targets/exos_l2_interfaces/vars/main.yaml44
-rw-r--r--test/integration/targets/exos_lldp_global/defaults/main.yaml3
-rw-r--r--test/integration/targets/exos_lldp_global/meta/main.yaml1
-rw-r--r--test/integration/targets/exos_lldp_global/tasks/httpapi.yaml19
-rw-r--r--test/integration/targets/exos_lldp_global/tasks/main.yaml2
-rw-r--r--test/integration/targets/exos_lldp_global/tests/httpapi/_populate_config.yaml7
-rw-r--r--test/integration/targets/exos_lldp_global/tests/httpapi/_reset_config.yaml7
-rw-r--r--test/integration/targets/exos_lldp_global/tests/httpapi/deleted.yaml48
-rw-r--r--test/integration/targets/exos_lldp_global/tests/httpapi/merged.yaml49
-rw-r--r--test/integration/targets/exos_lldp_global/tests/httpapi/replaced.yaml53
-rw-r--r--test/integration/targets/exos_lldp_global/vars/main.yaml85
-rw-r--r--test/integration/targets/exos_lldp_interfaces/defaults/main.yaml3
-rw-r--r--test/integration/targets/exos_lldp_interfaces/tasks/httpapi.yaml19
-rw-r--r--test/integration/targets/exos_lldp_interfaces/tasks/main.yaml2
-rw-r--r--test/integration/targets/exos_lldp_interfaces/tests/httpapi/_populate_config.yaml5
-rw-r--r--test/integration/targets/exos_lldp_interfaces/tests/httpapi/_reset_config.yaml5
-rw-r--r--test/integration/targets/exos_lldp_interfaces/tests/httpapi/deleted.yaml91
-rw-r--r--test/integration/targets/exos_lldp_interfaces/tests/httpapi/merged.yaml57
-rw-r--r--test/integration/targets/exos_lldp_interfaces/tests/httpapi/overridden.yaml56
-rw-r--r--test/integration/targets/exos_lldp_interfaces/tests/httpapi/replaced.yaml57
-rw-r--r--test/integration/targets/exos_lldp_interfaces/vars/main.yaml49
-rw-r--r--test/integration/targets/exos_vlans/defaults/main.yaml3
-rw-r--r--test/integration/targets/exos_vlans/tasks/httpapi.yaml19
-rw-r--r--test/integration/targets/exos_vlans/tasks/main.yaml2
-rw-r--r--test/integration/targets/exos_vlans/tests/httpapi/_populate_config.yaml7
-rw-r--r--test/integration/targets/exos_vlans/tests/httpapi/_reset_config.yaml6
-rw-r--r--test/integration/targets/exos_vlans/tests/httpapi/deleted.yaml44
-rw-r--r--test/integration/targets/exos_vlans/tests/httpapi/merged.yaml49
-rw-r--r--test/integration/targets/exos_vlans/tests/httpapi/overridden.yaml46
-rw-r--r--test/integration/targets/exos_vlans/tests/httpapi/replaced.yaml49
-rw-r--r--test/integration/targets/exos_vlans/vars/main.yaml88
-rw-r--r--test/integration/targets/filesystem/aliases4
-rw-r--r--test/integration/targets/filesystem/defaults/main.yml22
-rw-r--r--test/integration/targets/filesystem/meta/main.yml2
-rw-r--r--test/integration/targets/filesystem/tasks/create_device.yml32
-rw-r--r--test/integration/targets/filesystem/tasks/create_fs.yml82
-rw-r--r--test/integration/targets/filesystem/tasks/main.yml44
-rw-r--r--test/integration/targets/filesystem/tasks/overwrite_another_fs.yml39
-rw-r--r--test/integration/targets/filesystem/tasks/setup.yml96
-rw-r--r--test/integration/targets/filesystem/vars/Ubuntu-14.04.yml3
-rw-r--r--test/integration/targets/filesystem/vars/default.yml2
-rw-r--r--test/integration/targets/filter_json_query/aliases3
-rwxr-xr-xtest/integration/targets/filter_json_query/runme.sh12
-rw-r--r--test/integration/targets/filter_json_query/runme.yml3
-rw-r--r--test/integration/targets/filter_json_query/tasks/main.yml4
-rw-r--r--test/integration/targets/filter_json_query/vars/main.yml11
-rw-r--r--test/integration/targets/filter_random_mac/aliases3
-rw-r--r--test/integration/targets/filter_random_mac/tasks/main.yml59
-rw-r--r--test/integration/targets/firewalld/aliases5
-rw-r--r--test/integration/targets/firewalld/tasks/main.yml56
-rw-r--r--test/integration/targets/firewalld/tasks/port_test_cases.yml65
-rw-r--r--test/integration/targets/firewalld/tasks/run_all_tests.yml35
-rw-r--r--test/integration/targets/firewalld/tasks/service_test_cases.yml65
-rw-r--r--test/integration/targets/firewalld/tasks/source_test_cases.yml85
-rw-r--r--test/integration/targets/flatpak/aliases8
-rw-r--r--test/integration/targets/flatpak/meta/main.yml2
-rw-r--r--test/integration/targets/flatpak/tasks/check_mode.yml193
-rw-r--r--test/integration/targets/flatpak/tasks/main.yml56
-rw-r--r--test/integration/targets/flatpak/tasks/setup.yml41
-rw-r--r--test/integration/targets/flatpak/tasks/test.yml115
-rw-r--r--test/integration/targets/flatpak_remote/aliases7
-rw-r--r--test/integration/targets/flatpak_remote/meta/main.yml3
-rw-r--r--test/integration/targets/flatpak_remote/tasks/check_mode.yml101
-rw-r--r--test/integration/targets/flatpak_remote/tasks/main.yml57
-rw-r--r--test/integration/targets/flatpak_remote/tasks/setup.yml27
-rw-r--r--test/integration/targets/flatpak_remote/tasks/test.yml72
-rw-r--r--test/integration/targets/gem/aliases4
-rw-r--r--test/integration/targets/gem/meta/main.yml2
-rw-r--r--test/integration/targets/gem/tasks/main.yml175
-rw-r--r--test/integration/targets/gem/vars/FreeBSD.yml3
-rw-r--r--test/integration/targets/gem/vars/RedHat.yml2
-rw-r--r--test/integration/targets/gem/vars/default.yml1
-rw-r--r--test/integration/targets/git_config/aliases2
-rw-r--r--test/integration/targets/git_config/files/gitconfig2
-rw-r--r--test/integration/targets/git_config/tasks/exclusion_state_list-all.yml16
-rw-r--r--test/integration/targets/git_config/tasks/get_set_no_state.yml25
-rw-r--r--test/integration/targets/git_config/tasks/get_set_state_present.yml27
-rw-r--r--test/integration/targets/git_config/tasks/main.yml23
-rw-r--r--test/integration/targets/git_config/tasks/precedence_between_unset_and_value.yml25
-rw-r--r--test/integration/targets/git_config/tasks/setup.yml11
-rw-r--r--test/integration/targets/git_config/tasks/setup_no_value.yml8
-rw-r--r--test/integration/targets/git_config/tasks/setup_value.yml8
-rw-r--r--test/integration/targets/git_config/tasks/unset_check_mode.yml25
-rw-r--r--test/integration/targets/git_config/tasks/unset_no_value.yml23
-rw-r--r--test/integration/targets/git_config/tasks/unset_value.yml24
-rw-r--r--test/integration/targets/git_config/vars/main.yml6
-rw-r--r--test/integration/targets/github_issue/aliases2
-rw-r--r--test/integration/targets/github_issue/tasks/main.yml32
-rw-r--r--test/integration/targets/github_issue/vars/main.yml6
-rw-r--r--test/integration/targets/gitlab_deploy_key/aliases3
-rw-r--r--test/integration/targets/gitlab_deploy_key/defaults/main.yml2
-rw-r--r--test/integration/targets/gitlab_deploy_key/tasks/main.yml36
-rw-r--r--test/integration/targets/gitlab_group/aliases3
-rw-r--r--test/integration/targets/gitlab_group/defaults/main.yml1
-rw-r--r--test/integration/targets/gitlab_group/tasks/main.yml44
-rw-r--r--test/integration/targets/gitlab_hook/aliases3
-rw-r--r--test/integration/targets/gitlab_hook/defaults/main.yml2
-rw-r--r--test/integration/targets/gitlab_hook/tasks/main.yml67
-rw-r--r--test/integration/targets/gitlab_project/aliases3
-rw-r--r--test/integration/targets/gitlab_project/defaults/main.yml2
-rw-r--r--test/integration/targets/gitlab_project/tasks/main.yml40
-rw-r--r--test/integration/targets/gitlab_project_variable/aliases1
-rw-r--r--test/integration/targets/gitlab_project_variable/tasks/main.yml431
-rw-r--r--test/integration/targets/gitlab_runner/aliases3
-rw-r--r--test/integration/targets/gitlab_runner/defaults/main.yml3
-rw-r--r--test/integration/targets/gitlab_runner/tasks/main.yml68
-rw-r--r--test/integration/targets/gitlab_user/aliases3
-rw-r--r--test/integration/targets/gitlab_user/defaults/main.yml3
-rw-r--r--test/integration/targets/gitlab_user/tasks/main.yml50
-rw-r--r--test/integration/targets/hg/aliases3
-rw-r--r--test/integration/targets/hg/meta/main.yml2
-rw-r--r--test/integration/targets/hg/tasks/install.yml78
-rw-r--r--test/integration/targets/hg/tasks/main.yml52
-rw-r--r--test/integration/targets/hg/tasks/run-tests.yml86
-rw-r--r--test/integration/targets/hg/tasks/uninstall.yml42
-rw-r--r--test/integration/targets/hwc_ecs_instance/aliases1
-rw-r--r--test/integration/targets/hwc_ecs_instance/tasks/main.yml310
-rw-r--r--test/integration/targets/hwc_evs_disk/aliases1
-rw-r--r--test/integration/targets/hwc_evs_disk/tasks/main.yml104
-rw-r--r--test/integration/targets/hwc_network_vpc/aliases1
-rw-r--r--test/integration/targets/hwc_network_vpc/tasks/main.yml96
-rw-r--r--test/integration/targets/hwc_smn_topic/aliases1
-rw-r--r--test/integration/targets/hwc_smn_topic/tasks/main.yml76
-rw-r--r--test/integration/targets/hwc_vpc_eip/aliases1
-rw-r--r--test/integration/targets/hwc_vpc_eip/tasks/main.yml181
-rw-r--r--test/integration/targets/hwc_vpc_peering_connect/aliases1
-rw-r--r--test/integration/targets/hwc_vpc_peering_connect/tasks/main.yml146
-rw-r--r--test/integration/targets/hwc_vpc_port/aliases1
-rw-r--r--test/integration/targets/hwc_vpc_port/tasks/main.yml132
-rw-r--r--test/integration/targets/hwc_vpc_private_ip/aliases1
-rw-r--r--test/integration/targets/hwc_vpc_private_ip/tasks/main.yml133
-rw-r--r--test/integration/targets/hwc_vpc_route/aliases1
-rw-r--r--test/integration/targets/hwc_vpc_route/tasks/main.yml150
-rw-r--r--test/integration/targets/hwc_vpc_security_group/aliases1
-rw-r--r--test/integration/targets/hwc_vpc_security_group/tasks/main.yml82
-rw-r--r--test/integration/targets/hwc_vpc_security_group_rule/aliases1
-rw-r--r--test/integration/targets/hwc_vpc_security_group_rule/tasks/main.yml157
-rw-r--r--test/integration/targets/hwc_vpc_subnet/aliases1
-rw-r--r--test/integration/targets/hwc_vpc_subnet/tasks/main.yml143
-rw-r--r--test/integration/targets/influxdb_user/aliases6
-rw-r--r--test/integration/targets/influxdb_user/meta/main.yml2
-rw-r--r--test/integration/targets/influxdb_user/tasks/main.yml4
-rw-r--r--test/integration/targets/influxdb_user/tasks/tests.yml140
-rw-r--r--test/integration/targets/ini_file/aliases1
-rw-r--r--test/integration/targets/ini_file/meta/main.yml2
-rw-r--r--test/integration/targets/ini_file/tasks/main.yml408
-rw-r--r--test/integration/targets/intersight_info/aliases3
-rw-r--r--test/integration/targets/intersight_info/tasks/main.yml37
-rw-r--r--test/integration/targets/inventory_cloudscale/aliases3
-rw-r--r--test/integration/targets/inventory_cloudscale/filter_plugins/group_name.py17
-rw-r--r--test/integration/targets/inventory_cloudscale/inventory-private.yml14
-rw-r--r--test/integration/targets/inventory_cloudscale/inventory-public.yml14
-rw-r--r--test/integration/targets/inventory_cloudscale/inventory-uuid.yml14
-rw-r--r--test/integration/targets/inventory_cloudscale/playbooks/change-inventory-config.yml8
-rw-r--r--test/integration/targets/inventory_cloudscale/playbooks/cleanup.yml17
-rw-r--r--test/integration/targets/inventory_cloudscale/playbooks/common-asserts.yml50
-rw-r--r--test/integration/targets/inventory_cloudscale/playbooks/setup.yml74
-rw-r--r--test/integration/targets/inventory_cloudscale/playbooks/test-inventory.yml68
-rwxr-xr-xtest/integration/targets/inventory_cloudscale/runme.sh21
-rw-r--r--test/integration/targets/inventory_docker_machine/aliases10
-rw-r--r--test/integration/targets/inventory_docker_machine/docker-machine20
-rw-r--r--test/integration/targets/inventory_docker_machine/inventory_1.docker_machine.yml1
-rw-r--r--test/integration/targets/inventory_docker_machine/inventory_2.docker_machine.yml2
-rw-r--r--test/integration/targets/inventory_docker_machine/inventory_3.docker_machine.yml2
-rw-r--r--test/integration/targets/inventory_docker_machine/meta/main.yml3
-rw-r--r--test/integration/targets/inventory_docker_machine/playbooks/pre-setup.yml18
-rw-r--r--test/integration/targets/inventory_docker_machine/playbooks/setup.yml11
-rw-r--r--test/integration/targets/inventory_docker_machine/playbooks/teardown.yml6
-rw-r--r--test/integration/targets/inventory_docker_machine/playbooks/test_inventory_1.yml50
-rwxr-xr-xtest/integration/targets/inventory_docker_machine/runme.sh68
-rw-r--r--test/integration/targets/inventory_docker_machine/teardown.docker_machine.yml3
-rw-r--r--test/integration/targets/inventory_docker_swarm/aliases11
-rw-r--r--test/integration/targets/inventory_docker_swarm/inventory_1.docker_swarm.yml3
-rw-r--r--test/integration/targets/inventory_docker_swarm/inventory_2.docker_swarm.yml5
-rw-r--r--test/integration/targets/inventory_docker_swarm/meta/main.yml3
-rw-r--r--test/integration/targets/inventory_docker_swarm/playbooks/swarm_cleanup.yml18
-rw-r--r--test/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml15
-rw-r--r--test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_1.yml58
-rw-r--r--test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_2.yml35
-rwxr-xr-xtest/integration/targets/inventory_docker_swarm/runme.sh23
-rw-r--r--test/integration/targets/inventory_kubevirt/aliases1
-rw-r--r--test/integration/targets/inventory_kubevirt/constraints.txt1
-rwxr-xr-xtest/integration/targets/inventory_kubevirt/inventory_diff.py67
-rwxr-xr-xtest/integration/targets/inventory_kubevirt/runme.sh61
-rwxr-xr-xtest/integration/targets/inventory_kubevirt/server.py161
-rw-r--r--test/integration/targets/inventory_kubevirt/test.out61
-rw-r--r--test/integration/targets/ipify_facts/aliases1
-rw-r--r--test/integration/targets/ipify_facts/tasks/main.yml41
-rw-r--r--test/integration/targets/ipify_facts/vars/main.yml2
-rw-r--r--test/integration/targets/ipwcli_dns/aliases2
-rw-r--r--test/integration/targets/ipwcli_dns/tasks/main.yml106
-rw-r--r--test/integration/targets/iso_extract/aliases3
-rw-r--r--test/integration/targets/iso_extract/files/test.isobin374784 -> 0 bytes
-rw-r--r--test/integration/targets/iso_extract/meta/main.yml3
-rw-r--r--test/integration/targets/iso_extract/tasks/7zip.yml66
-rw-r--r--test/integration/targets/iso_extract/tasks/main.yml43
-rw-r--r--test/integration/targets/iso_extract/tasks/prepare.yml33
-rw-r--r--test/integration/targets/iso_extract/tasks/tests.yml52
-rw-r--r--test/integration/targets/iso_extract/vars/FreeBSD.yml1
-rw-r--r--test/integration/targets/iso_extract/vars/RedHat.yml1
-rw-r--r--test/integration/targets/iso_extract/vars/Suse.yml1
-rw-r--r--test/integration/targets/iso_extract/vars/Ubuntu.yml1
-rw-r--r--test/integration/targets/iso_extract/vars/default.yml0
-rw-r--r--test/integration/targets/java_cert/aliases1
-rw-r--r--test/integration/targets/java_cert/defaults/main.yml3
-rw-r--r--test/integration/targets/java_cert/files/testpkcs.p12bin2532 -> 0 bytes
-rw-r--r--test/integration/targets/java_cert/tasks/main.yml53
-rw-r--r--test/integration/targets/jboss/aliases7
-rw-r--r--test/integration/targets/jboss/meta/main.yml3
-rw-r--r--test/integration/targets/jboss/tasks/jboss.yml236
-rw-r--r--test/integration/targets/jboss/tasks/main.yml1
-rw-r--r--test/integration/targets/listen_ports_facts/aliases5
-rw-r--r--test/integration/targets/listen_ports_facts/tasks/main.yml85
-rw-r--r--test/integration/targets/locale_gen/aliases4
-rw-r--r--test/integration/targets/locale_gen/meta/main.yml2
-rw-r--r--test/integration/targets/locale_gen/tasks/locale_gen.yml94
-rw-r--r--test/integration/targets/locale_gen/tasks/main.yml19
-rw-r--r--test/integration/targets/lookup_cartesian/aliases3
-rw-r--r--test/integration/targets/lookup_cartesian/tasks/main.yml19
-rw-r--r--test/integration/targets/lookup_flattened/aliases3
-rw-r--r--test/integration/targets/lookup_flattened/tasks/main.yml13
-rw-r--r--test/integration/targets/lookup_hashi_vault/aliases6
-rw-r--r--test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/defaults/main.yml4
-rw-r--r--test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/approle_setup.yml21
-rw-r--r--test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/approle_test.yml45
-rw-r--r--test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/main.yml155
-rw-r--r--test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/tests.yml35
-rw-r--r--test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/token_setup.yml3
-rw-r--r--test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/token_test.yml58
-rw-r--r--test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/templates/vault_config.hcl.j210
-rw-r--r--test/integration/targets/lookup_hashi_vault/playbooks/install_dependencies.yml19
-rw-r--r--test/integration/targets/lookup_hashi_vault/playbooks/test_lookup_hashi_vault.yml9
-rwxr-xr-xtest/integration/targets/lookup_hashi_vault/runme.sh23
-rw-r--r--test/integration/targets/lookup_lmdb_kv/aliases4
-rw-r--r--test/integration/targets/lookup_lmdb_kv/dependencies.yml10
-rwxr-xr-xtest/integration/targets/lookup_lmdb_kv/runme.sh9
-rw-r--r--test/integration/targets/lookup_lmdb_kv/test.yml31
-rw-r--r--test/integration/targets/lookup_lmdb_kv/test_db.py11
-rw-r--r--test/integration/targets/lookup_passwordstore/aliases5
-rw-r--r--test/integration/targets/lookup_passwordstore/tasks/main.yml7
-rw-r--r--test/integration/targets/lookup_passwordstore/tasks/package.yml58
-rw-r--r--test/integration/targets/lookup_passwordstore/tasks/tests.yml49
-rw-r--r--test/integration/targets/lookup_passwordstore/templates/input9
-rw-r--r--test/integration/targets/lookup_passwordstore/templates/security-privacy.repo.j27
-rw-r--r--test/integration/targets/lookup_passwordstore/vars/Debian.yml2
-rw-r--r--test/integration/targets/lookup_passwordstore/vars/Fedora.yml2
-rw-r--r--test/integration/targets/lookup_passwordstore/vars/FreeBSD.yml3
-rw-r--r--test/integration/targets/lookup_passwordstore/vars/default.yml0
-rw-r--r--test/integration/targets/lookup_passwordstore/vars/main.yml117
-rw-r--r--test/integration/targets/lookup_rabbitmq/aliases7
-rw-r--r--test/integration/targets/lookup_rabbitmq/meta/main.yml2
-rw-r--r--test/integration/targets/lookup_rabbitmq/tasks/main.yml5
-rw-r--r--test/integration/targets/lookup_rabbitmq/tasks/ubuntu.yml138
-rw-r--r--test/integration/targets/lvg/aliases6
-rw-r--r--test/integration/targets/lvg/meta/main.yml2
-rw-r--r--test/integration/targets/lvg/tasks/main.yml15
-rw-r--r--test/integration/targets/lvg/tasks/setup.yml13
-rw-r--r--test/integration/targets/lvg/tasks/teardown.yml17
-rw-r--r--test/integration/targets/lvg/tasks/test_grow_reduce.yml33
-rw-r--r--test/integration/targets/lvg/tasks/test_indempotency.yml15
-rw-r--r--test/integration/targets/mail/aliases1
-rw-r--r--test/integration/targets/mail/files/smtpserver.crt22
-rw-r--r--test/integration/targets/mail/files/smtpserver.key28
-rwxr-xr-xtest/integration/targets/mail/files/smtpserver.py68
-rw-r--r--test/integration/targets/mail/tasks/main.yml85
-rw-r--r--test/integration/targets/mariadb_replication/aliases7
-rw-r--r--test/integration/targets/mariadb_replication/defaults/main.yml7
-rw-r--r--test/integration/targets/mariadb_replication/meta/main.yml3
-rw-r--r--test/integration/targets/mariadb_replication/tasks/main.yml21
-rw-r--r--test/integration/targets/mariadb_replication/tasks/mariadb_master_use_gtid.yml173
-rw-r--r--test/integration/targets/mariadb_replication/tasks/mariadb_replication_connection_name.yml118
-rw-r--r--test/integration/targets/mariadb_replication/tasks/mariadb_replication_initial.yml96
-rw-r--r--test/integration/targets/mas/aliases2
-rw-r--r--test/integration/targets/mas/tasks/main.yml151
-rw-r--r--test/integration/targets/memset_dns_reload/aliases1
-rw-r--r--test/integration/targets/memset_dns_reload/meta/main.yml1
-rw-r--r--test/integration/targets/memset_dns_reload/tasks/main.yml24
-rw-r--r--test/integration/targets/memset_memstore_info/aliases1
-rw-r--r--test/integration/targets/memset_memstore_info/meta/main.yml1
-rw-r--r--test/integration/targets/memset_memstore_info/tasks/main.yml25
-rw-r--r--test/integration/targets/memset_server_info/aliases1
-rw-r--r--test/integration/targets/memset_server_info/meta/main.yml1
-rw-r--r--test/integration/targets/memset_server_info/tasks/main.yml25
-rw-r--r--test/integration/targets/memset_zone/aliases1
-rw-r--r--test/integration/targets/memset_zone/meta/main.yml1
-rw-r--r--test/integration/targets/memset_zone/tasks/main.yml116
-rw-r--r--test/integration/targets/memset_zone/vars/main.yml2
-rw-r--r--test/integration/targets/memset_zone_domain/aliases1
-rw-r--r--test/integration/targets/memset_zone_domain/meta/main.yml1
-rw-r--r--test/integration/targets/memset_zone_domain/tasks/main.yml143
-rw-r--r--test/integration/targets/memset_zone_domain/vars/main.yml4
-rw-r--r--test/integration/targets/memset_zone_record/aliases1
-rw-r--r--test/integration/targets/memset_zone_record/meta/main.yml1
-rw-r--r--test/integration/targets/memset_zone_record/tasks/main.yml225
-rw-r--r--test/integration/targets/memset_zone_record/vars/main.yml3
-rw-r--r--test/integration/targets/mqtt/aliases6
-rw-r--r--test/integration/targets/mqtt/meta/main.yml2
-rw-r--r--test/integration/targets/mqtt/tasks/main.yml4
-rw-r--r--test/integration/targets/mqtt/tasks/ubuntu.yml142
-rw-r--r--test/integration/targets/mysql_db/aliases5
-rw-r--r--test/integration/targets/mysql_db/defaults/main.yml10
-rw-r--r--test/integration/targets/mysql_db/meta/main.yml2
-rw-r--r--test/integration/targets/mysql_db/tasks/encoding_dump_import.yml78
-rw-r--r--test/integration/targets/mysql_db/tasks/main.yml260
-rw-r--r--test/integration/targets/mysql_db/tasks/multi_db_create_delete.yml557
-rw-r--r--test/integration/targets/mysql_db/tasks/state_dump_import.yml346
-rw-r--r--test/integration/targets/mysql_info/aliases6
-rw-r--r--test/integration/targets/mysql_info/defaults/main.yml5
-rw-r--r--test/integration/targets/mysql_info/meta/main.yml3
-rw-r--r--test/integration/targets/mysql_info/tasks/main.yml190
-rw-r--r--test/integration/targets/mysql_info/templates/my.cnf.j23
-rw-r--r--test/integration/targets/mysql_query/aliases6
-rw-r--r--test/integration/targets/mysql_query/defaults/main.yml6
-rw-r--r--test/integration/targets/mysql_query/meta/main.yml2
-rw-r--r--test/integration/targets/mysql_query/tasks/main.yml5
-rw-r--r--test/integration/targets/mysql_query/tasks/mysql_query_initial.yml249
-rw-r--r--test/integration/targets/mysql_replication/aliases8
-rw-r--r--test/integration/targets/mysql_replication/defaults/main.yml9
-rw-r--r--test/integration/targets/mysql_replication/meta/main.yml3
-rw-r--r--test/integration/targets/mysql_replication/tasks/main.yml26
-rw-r--r--test/integration/targets/mysql_replication/tasks/mysql_replication_channel.yml119
-rw-r--r--test/integration/targets/mysql_replication/tasks/mysql_replication_initial.yml191
-rw-r--r--test/integration/targets/mysql_replication/tasks/mysql_replication_master_delay.yml44
-rw-r--r--test/integration/targets/mysql_replication/tasks/mysql_replication_resetmaster_mode.yml48
-rw-r--r--test/integration/targets/mysql_user/aliases5
-rw-r--r--test/integration/targets/mysql_user/defaults/main.yml19
-rw-r--r--test/integration/targets/mysql_user/files/create-function.sql8
-rw-r--r--test/integration/targets/mysql_user/files/create-procedure.sql5
-rw-r--r--test/integration/targets/mysql_user/meta/main.yml3
-rw-r--r--test/integration/targets/mysql_user/tasks/assert_no_user.yml25
-rw-r--r--test/integration/targets/mysql_user/tasks/assert_user.yml34
-rw-r--r--test/integration/targets/mysql_user/tasks/create_user.yml29
-rw-r--r--test/integration/targets/mysql_user/tasks/issue-29511.yaml78
-rw-r--r--test/integration/targets/mysql_user/tasks/issue-64560.yaml27
-rw-r--r--test/integration/targets/mysql_user/tasks/main.yml220
-rw-r--r--test/integration/targets/mysql_user/tasks/remove_user.yml59
-rw-r--r--test/integration/targets/mysql_user/tasks/test_priv_dict.yml46
-rw-r--r--test/integration/targets/mysql_user/tasks/test_privs.yml130
-rw-r--r--test/integration/targets/mysql_user/tasks/user_password_update_test.yml156
-rw-r--r--test/integration/targets/mysql_variables/aliases6
-rw-r--r--test/integration/targets/mysql_variables/defaults/main.yml4
-rw-r--r--test/integration/targets/mysql_variables/meta/main.yml2
-rw-r--r--test/integration/targets/mysql_variables/tasks/assert_fail_msg.yml25
-rw-r--r--test/integration/targets/mysql_variables/tasks/assert_var.yml34
-rw-r--r--test/integration/targets/mysql_variables/tasks/assert_var_output.yml38
-rw-r--r--test/integration/targets/mysql_variables/tasks/main.yml2
-rw-r--r--test/integration/targets/mysql_variables/tasks/mysql_variables.yml412
-rw-r--r--test/integration/targets/netapp_e_alerts/aliases10
-rw-r--r--test/integration/targets/netapp_e_alerts/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_alerts/tasks/run.yml39
-rw-r--r--test/integration/targets/netapp_e_asup/aliases10
-rw-r--r--test/integration/targets/netapp_e_asup/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_asup/tasks/run.yml233
-rw-r--r--test/integration/targets/netapp_e_drive_firmware/aliases10
-rw-r--r--test/integration/targets/netapp_e_drive_firmware/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_drive_firmware/tasks/run.yml209
-rw-r--r--test/integration/targets/netapp_e_firmware/aliases15
-rw-r--r--test/integration/targets/netapp_e_firmware/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_firmware/tasks/run.yml348
-rw-r--r--test/integration/targets/netapp_e_global/aliases10
-rw-r--r--test/integration/targets/netapp_e_global/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_global/tasks/run.yml51
-rw-r--r--test/integration/targets/netapp_e_host/aliases10
-rw-r--r--test/integration/targets/netapp_e_host/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_host/tasks/run.yml276
-rw-r--r--test/integration/targets/netapp_e_iscsi_interface/aliases10
-rw-r--r--test/integration/targets/netapp_e_iscsi_interface/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_iscsi_interface/tasks/run.yml448
-rw-r--r--test/integration/targets/netapp_e_iscsi_target/aliases10
-rw-r--r--test/integration/targets/netapp_e_iscsi_target/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_iscsi_target/tasks/run.yml68
-rw-r--r--test/integration/targets/netapp_e_lun_mapping/aliases10
-rw-r--r--test/integration/targets/netapp_e_lun_mapping/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_lun_mapping/tasks/run.yml326
-rw-r--r--test/integration/targets/netapp_e_storagepool/aliases10
-rw-r--r--test/integration/targets/netapp_e_storagepool/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_storagepool/tasks/run.yml1046
-rw-r--r--test/integration/targets/netapp_e_volume/aliases10
-rw-r--r--test/integration/targets/netapp_e_volume/tasks/main.yml1
-rw-r--r--test/integration/targets/netapp_e_volume/tasks/run.yml776
-rw-r--r--test/integration/targets/nios_a_record/aliases3
-rw-r--r--test/integration/targets/nios_a_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_a_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_a_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_a_record/tasks/nios_a_record_idempotence.yml77
-rw-r--r--test/integration/targets/nios_aaaa_record/aliases3
-rw-r--r--test/integration/targets/nios_aaaa_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_aaaa_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_aaaa_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_aaaa_record/tasks/nios_aaaa_record_idempotence.yml77
-rw-r--r--test/integration/targets/nios_cname_record/aliases3
-rw-r--r--test/integration/targets/nios_cname_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_cname_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_cname_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_cname_record/tasks/nios_cname_record_idempotence.yml77
-rw-r--r--test/integration/targets/nios_dns_view/aliases3
-rw-r--r--test/integration/targets/nios_dns_view/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_dns_view/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_dns_view/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_dns_view/tasks/nios_dns_view_idempotence.yml58
-rw-r--r--test/integration/targets/nios_host_record/aliases3
-rw-r--r--test/integration/targets/nios_host_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_host_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_host_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_host_record/tasks/nios_host_record_idempotence.yml126
-rw-r--r--test/integration/targets/nios_mx_record/aliases3
-rw-r--r--test/integration/targets/nios_mx_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_mx_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_mx_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_mx_record/tasks/nios_mx_record_idempotence.yml84
-rw-r--r--test/integration/targets/nios_naptr_record/aliases3
-rw-r--r--test/integration/targets/nios_naptr_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_naptr_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_naptr_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_naptr_record/tasks/nios_naptr_record_idempotence.yml91
-rw-r--r--test/integration/targets/nios_network/aliases3
-rw-r--r--test/integration/targets/nios_network/defaults/main.yaml0
-rw-r--r--test/integration/targets/nios_network/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_network/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_network/tasks/nios_network_idempotence.yml80
-rw-r--r--test/integration/targets/nios_network_view/aliases3
-rw-r--r--test/integration/targets/nios_network_view/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_network_view/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_network_view/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_network_view/tasks/nios_network_view_idempotence.yml58
-rw-r--r--test/integration/targets/nios_ptr_record/aliases3
-rw-r--r--test/integration/targets/nios_ptr_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_ptr_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_ptr_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_ptr_record/tasks/nios_ptr_record_idempotence.yml83
-rw-r--r--test/integration/targets/nios_srv_record/aliases3
-rw-r--r--test/integration/targets/nios_srv_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_srv_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_srv_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_srv_record/tasks/nios_srv_record_idempotence.yml98
-rw-r--r--test/integration/targets/nios_txt_record/aliases3
-rw-r--r--test/integration/targets/nios_txt_record/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_txt_record/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_txt_record/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml80
-rw-r--r--test/integration/targets/nios_zone/aliases3
-rw-r--r--test/integration/targets/nios_zone/defaults/main.yaml3
-rw-r--r--test/integration/targets/nios_zone/meta/main.yaml2
-rw-r--r--test/integration/targets/nios_zone/tasks/main.yml1
-rw-r--r--test/integration/targets/nios_zone/tasks/nios_zone_idempotence.yml68
-rw-r--r--test/integration/targets/npm/aliases4
-rw-r--r--test/integration/targets/npm/tasks/main.yml35
-rw-r--r--test/integration/targets/npm/tasks/run.yml2
-rw-r--r--test/integration/targets/npm/tasks/setup.yml6
-rw-r--r--test/integration/targets/npm/tasks/test.yml69
-rw-r--r--test/integration/targets/nuage_vspk/aliases3
-rw-r--r--test/integration/targets/nuage_vspk/defaults/main.yaml8
-rw-r--r--test/integration/targets/nuage_vspk/meta/main.yaml2
-rw-r--r--test/integration/targets/nuage_vspk/tasks/main.yml19
-rw-r--r--test/integration/targets/nuage_vspk/tests/basic.yaml226
-rw-r--r--test/integration/targets/one_host/aliases2
-rw-r--r--test/integration/targets/one_host/files/testhost/tmp/opennebula-fixtures.json.gzbin2950 -> 0 bytes
-rw-r--r--test/integration/targets/one_host/meta/main.yml2
-rw-r--r--test/integration/targets/one_host/tasks/main.yml235
-rw-r--r--test/integration/targets/osx_defaults/aliases5
-rw-r--r--test/integration/targets/osx_defaults/tasks/main.yml204
-rw-r--r--test/integration/targets/pids/aliases1
-rw-r--r--test/integration/targets/pids/files/obtainpid.sh3
-rw-r--r--test/integration/targets/pids/tasks/main.yml59
-rw-r--r--test/integration/targets/postgresql_copy/aliases4
-rw-r--r--test/integration/targets/postgresql_copy/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_copy/tasks/main.yml3
-rw-r--r--test/integration/targets/postgresql_copy/tasks/postgresql_copy_initial.yml255
-rw-r--r--test/integration/targets/postgresql_db/aliases5
-rw-r--r--test/integration/targets/postgresql_db/defaults/main.yml6
-rw-r--r--test/integration/targets/postgresql_db/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_db/tasks/main.yml31
-rw-r--r--test/integration/targets/postgresql_db/tasks/postgresql_db_general.yml194
-rw-r--r--test/integration/targets/postgresql_db/tasks/postgresql_db_initial.yml366
-rw-r--r--test/integration/targets/postgresql_db/tasks/postgresql_db_session_role.yml80
-rw-r--r--test/integration/targets/postgresql_db/tasks/state_dump_restore.yml164
-rw-r--r--test/integration/targets/postgresql_ext/aliases5
-rw-r--r--test/integration/targets/postgresql_ext/defaults/main.yml2
-rw-r--r--test/integration/targets/postgresql_ext/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_ext/tasks/main.yml21
-rw-r--r--test/integration/targets/postgresql_ext/tasks/postgresql_ext_initial.yml227
-rw-r--r--test/integration/targets/postgresql_ext/tasks/postgresql_ext_session_role.yml112
-rw-r--r--test/integration/targets/postgresql_ext/tasks/postgresql_ext_version_opt.yml331
-rw-r--r--test/integration/targets/postgresql_idx/aliases4
-rw-r--r--test/integration/targets/postgresql_idx/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_idx/tasks/main.yml2
-rw-r--r--test/integration/targets/postgresql_idx/tasks/postgresql_idx_initial.yml400
-rw-r--r--test/integration/targets/postgresql_info/aliases6
-rw-r--r--test/integration/targets/postgresql_info/defaults/main.yml15
-rw-r--r--test/integration/targets/postgresql_info/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_info/tasks/main.yml7
-rw-r--r--test/integration/targets/postgresql_info/tasks/postgresql_info_initial.yml154
-rw-r--r--test/integration/targets/postgresql_info/tasks/setup_publication.yml61
-rw-r--r--test/integration/targets/postgresql_lang/aliases4
-rw-r--r--test/integration/targets/postgresql_lang/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_lang/tasks/main.yml20
-rw-r--r--test/integration/targets/postgresql_lang/tasks/postgresql_lang_add_owner_param.yml196
-rw-r--r--test/integration/targets/postgresql_lang/tasks/postgresql_lang_initial.yml231
-rw-r--r--test/integration/targets/postgresql_lang/vars/CentOS-7.yml3
-rw-r--r--test/integration/targets/postgresql_lang/vars/CentOS-8.yml3
-rw-r--r--test/integration/targets/postgresql_lang/vars/default.yml0
-rw-r--r--test/integration/targets/postgresql_membership/aliases4
-rw-r--r--test/integration/targets/postgresql_membership/defaults/main.yml5
-rw-r--r--test/integration/targets/postgresql_membership/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_membership/tasks/main.yml2
-rw-r--r--test/integration/targets/postgresql_membership/tasks/postgresql_membership_initial.yml347
-rw-r--r--test/integration/targets/postgresql_owner/aliases4
-rw-r--r--test/integration/targets/postgresql_owner/defaults/main.yml1
-rw-r--r--test/integration/targets/postgresql_owner/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_owner/tasks/main.yml4
-rw-r--r--test/integration/targets/postgresql_owner/tasks/postgresql_owner_initial.yml1062
-rw-r--r--test/integration/targets/postgresql_pg_hba/aliases4
-rw-r--r--test/integration/targets/postgresql_pg_hba/defaults/main.yml23
-rw-r--r--test/integration/targets/postgresql_pg_hba/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_pg_hba/tasks/main.yml2
-rw-r--r--test/integration/targets/postgresql_pg_hba/tasks/postgresql_pg_hba_initial.yml169
-rw-r--r--test/integration/targets/postgresql_ping/aliases4
-rw-r--r--test/integration/targets/postgresql_ping/defaults/main.yml2
-rw-r--r--test/integration/targets/postgresql_ping/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_ping/tasks/main.yml4
-rw-r--r--test/integration/targets/postgresql_ping/tasks/postgresql_ping_initial.yml58
-rw-r--r--test/integration/targets/postgresql_privs/aliases4
-rw-r--r--test/integration/targets/postgresql_privs/defaults/main.yml8
-rw-r--r--test/integration/targets/postgresql_privs/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_privs/tasks/main.yml14
-rw-r--r--test/integration/targets/postgresql_privs/tasks/pg_authid_not_readable.yml50
-rw-r--r--test/integration/targets/postgresql_privs/tasks/postgresql_privs_general.yml966
-rw-r--r--test/integration/targets/postgresql_privs/tasks/postgresql_privs_initial.yml382
-rw-r--r--test/integration/targets/postgresql_privs/tasks/postgresql_privs_session_role.yml79
-rw-r--r--test/integration/targets/postgresql_privs/tasks/test_target_role.yml120
-rw-r--r--test/integration/targets/postgresql_publication/aliases5
-rw-r--r--test/integration/targets/postgresql_publication/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_publication/tasks/main.yml3
-rw-r--r--test/integration/targets/postgresql_publication/tasks/postgresql_publication_initial.yml411
-rw-r--r--test/integration/targets/postgresql_query/aliases4
-rw-r--r--test/integration/targets/postgresql_query/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_query/tasks/main.yml2
-rw-r--r--test/integration/targets/postgresql_query/tasks/postgresql_query_initial.yml471
-rw-r--r--test/integration/targets/postgresql_schema/aliases4
-rw-r--r--test/integration/targets/postgresql_schema/defaults/main.yml6
-rw-r--r--test/integration/targets/postgresql_schema/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_schema/tasks/main.yml4
-rw-r--r--test/integration/targets/postgresql_schema/tasks/postgresql_schema_initial.yml311
-rw-r--r--test/integration/targets/postgresql_schema/tasks/postgresql_schema_session_role.yml78
-rw-r--r--test/integration/targets/postgresql_sequence/aliases4
-rw-r--r--test/integration/targets/postgresql_sequence/defaults/main.yml5
-rw-r--r--test/integration/targets/postgresql_sequence/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_sequence/tasks/main.yml3
-rw-r--r--test/integration/targets/postgresql_sequence/tasks/postgresql_sequence_initial.yml708
-rw-r--r--test/integration/targets/postgresql_set/aliases4
-rw-r--r--test/integration/targets/postgresql_set/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_set/tasks/main.yml3
-rw-r--r--test/integration/targets/postgresql_set/tasks/postgresql_set_initial.yml304
-rw-r--r--test/integration/targets/postgresql_slot/aliases4
-rw-r--r--test/integration/targets/postgresql_slot/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_slot/tasks/main.yml4
-rw-r--r--test/integration/targets/postgresql_slot/tasks/postgresql_slot_initial.yml698
-rw-r--r--test/integration/targets/postgresql_subscription/aliases6
-rw-r--r--test/integration/targets/postgresql_subscription/defaults/main.yml15
-rw-r--r--test/integration/targets/postgresql_subscription/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_subscription/tasks/main.yml7
-rw-r--r--test/integration/targets/postgresql_subscription/tasks/postgresql_subscription_initial.yml627
-rw-r--r--test/integration/targets/postgresql_subscription/tasks/setup_publication.yml84
-rw-r--r--test/integration/targets/postgresql_table/aliases4
-rw-r--r--test/integration/targets/postgresql_table/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_table/tasks/main.yml2
-rw-r--r--test/integration/targets/postgresql_table/tasks/postgresql_table_initial.yml880
-rw-r--r--test/integration/targets/postgresql_tablespace/aliases4
-rw-r--r--test/integration/targets/postgresql_tablespace/defaults/main.yml2
-rw-r--r--test/integration/targets/postgresql_tablespace/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_tablespace/tasks/main.yml2
-rw-r--r--test/integration/targets/postgresql_tablespace/tasks/postgresql_tablespace_initial.yml245
-rw-r--r--test/integration/targets/postgresql_user/aliases4
-rw-r--r--test/integration/targets/postgresql_user/defaults/main.yml3
-rw-r--r--test/integration/targets/postgresql_user/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_user/tasks/main.yml7
-rw-r--r--test/integration/targets/postgresql_user/tasks/postgresql_user_general.yml741
-rw-r--r--test/integration/targets/postgresql_user/tasks/postgresql_user_initial.yml153
-rw-r--r--test/integration/targets/postgresql_user/tasks/test_no_password_change.yml167
-rw-r--r--test/integration/targets/postgresql_user/tasks/test_password.yml336
-rw-r--r--test/integration/targets/postgresql_user_obj_stat_info/aliases6
-rw-r--r--test/integration/targets/postgresql_user_obj_stat_info/defaults/main.yml12
-rw-r--r--test/integration/targets/postgresql_user_obj_stat_info/meta/main.yml2
-rw-r--r--test/integration/targets/postgresql_user_obj_stat_info/tasks/main.yml3
-rw-r--r--test/integration/targets/postgresql_user_obj_stat_info/tasks/postgresql_user_obj_stat_info.yml189
-rw-r--r--test/integration/targets/python_requirements_info/aliases1
-rw-r--r--test/integration/targets/python_requirements_info/tasks/main.yml22
-rw-r--r--test/integration/targets/rabbitmq_binding/aliases6
-rw-r--r--test/integration/targets/rabbitmq_binding/meta/main.yml2
-rw-r--r--test/integration/targets/rabbitmq_binding/tasks/main.yml3
-rw-r--r--test/integration/targets/rabbitmq_binding/tasks/tests.yml132
-rw-r--r--test/integration/targets/rabbitmq_plugin/aliases6
-rw-r--r--test/integration/targets/rabbitmq_plugin/meta/main.yml2
-rw-r--r--test/integration/targets/rabbitmq_plugin/tasks/main.yml2
-rw-r--r--test/integration/targets/rabbitmq_plugin/tasks/tests.yml71
-rw-r--r--test/integration/targets/rabbitmq_publish/aliases6
-rw-r--r--test/integration/targets/rabbitmq_publish/files/image.gifbin43 -> 0 bytes
-rw-r--r--test/integration/targets/rabbitmq_publish/meta/main.yml3
-rw-r--r--test/integration/targets/rabbitmq_publish/tasks/main.yml5
-rw-r--r--test/integration/targets/rabbitmq_publish/tasks/ubuntu.yml171
-rw-r--r--test/integration/targets/rabbitmq_user/aliases6
-rw-r--r--test/integration/targets/rabbitmq_user/meta/main.yml2
-rw-r--r--test/integration/targets/rabbitmq_user/tasks/main.yml10
-rw-r--r--test/integration/targets/rabbitmq_user/tasks/tests.yml137
-rw-r--r--test/integration/targets/rabbitmq_vhost/aliases6
-rw-r--r--test/integration/targets/rabbitmq_vhost/meta/main.yml2
-rw-r--r--test/integration/targets/rabbitmq_vhost/tasks/main.yml2
-rw-r--r--test/integration/targets/rabbitmq_vhost/tasks/tests.yml121
-rw-r--r--test/integration/targets/rabbitmq_vhost_limits/aliases6
-rw-r--r--test/integration/targets/rabbitmq_vhost_limits/meta/main.yml2
-rw-r--r--test/integration/targets/rabbitmq_vhost_limits/tasks/main.yml5
-rw-r--r--test/integration/targets/rabbitmq_vhost_limits/tasks/ubuntu.yml163
-rw-r--r--test/integration/targets/read_csv/aliases1
-rw-r--r--test/integration/targets/read_csv/tasks/main.yml140
-rw-r--r--test/integration/targets/scaleway_compute/aliases2
-rw-r--r--test/integration/targets/scaleway_compute/defaults/main.yml9
-rw-r--r--test/integration/targets/scaleway_compute/tasks/ip.yml201
-rw-r--r--test/integration/targets/scaleway_compute/tasks/main.yml4
-rw-r--r--test/integration/targets/scaleway_compute/tasks/pagination.yml71
-rw-r--r--test/integration/targets/scaleway_compute/tasks/security_group.yml147
-rw-r--r--test/integration/targets/scaleway_compute/tasks/state.yml387
-rw-r--r--test/integration/targets/scaleway_image_info/aliases2
-rw-r--r--test/integration/targets/scaleway_image_info/tasks/main.yml27
-rw-r--r--test/integration/targets/scaleway_ip/aliases2
-rw-r--r--test/integration/targets/scaleway_ip/defaults/main.yml7
-rw-r--r--test/integration/targets/scaleway_ip/tasks/main.yml439
-rw-r--r--test/integration/targets/scaleway_ip_info/aliases2
-rw-r--r--test/integration/targets/scaleway_ip_info/tasks/main.yml27
-rw-r--r--test/integration/targets/scaleway_lb/aliases2
-rw-r--r--test/integration/targets/scaleway_lb/defaults/main.yml8
-rw-r--r--test/integration/targets/scaleway_lb/tasks/main.yml214
-rw-r--r--test/integration/targets/scaleway_organization_info/aliases2
-rw-r--r--test/integration/targets/scaleway_organization_info/tasks/main.yml12
-rw-r--r--test/integration/targets/scaleway_security_group/aliases2
-rw-r--r--test/integration/targets/scaleway_security_group/defaults/main.yml3
-rw-r--r--test/integration/targets/scaleway_security_group/tasks/main.yml129
-rw-r--r--test/integration/targets/scaleway_security_group_info/aliases2
-rw-r--r--test/integration/targets/scaleway_security_group_info/tasks/main.yml27
-rw-r--r--test/integration/targets/scaleway_security_group_rule/aliases2
-rw-r--r--test/integration/targets/scaleway_security_group_rule/defaults/main.yml8
-rw-r--r--test/integration/targets/scaleway_security_group_rule/tasks/main.yml242
-rw-r--r--test/integration/targets/scaleway_server_info/aliases2
-rw-r--r--test/integration/targets/scaleway_server_info/tasks/main.yml27
-rw-r--r--test/integration/targets/scaleway_snapshot_info/aliases2
-rw-r--r--test/integration/targets/scaleway_snapshot_info/tasks/main.yml27
-rw-r--r--test/integration/targets/scaleway_sshkey/aliases2
-rw-r--r--test/integration/targets/scaleway_sshkey/tasks/main.yml39
-rw-r--r--test/integration/targets/scaleway_user_data/aliases2
-rw-r--r--test/integration/targets/scaleway_user_data/defaults/main.yml15
-rw-r--r--test/integration/targets/scaleway_user_data/tasks/main.yml77
-rw-r--r--test/integration/targets/scaleway_volume/aliases2
-rw-r--r--test/integration/targets/scaleway_volume/defaults/main.yml3
-rw-r--r--test/integration/targets/scaleway_volume/tasks/main.yml41
-rw-r--r--test/integration/targets/scaleway_volume_info/aliases2
-rw-r--r--test/integration/targets/scaleway_volume_info/tasks/main.yml27
-rw-r--r--test/integration/targets/script_inventory_foreman/aliases3
-rwxr-xr-xtest/integration/targets/script_inventory_foreman/foreman.sh10
-rwxr-xr-xtest/integration/targets/script_inventory_foreman/runme.sh50
-rw-r--r--test/integration/targets/script_inventory_foreman/test_foreman_inventory.yml7
-rw-r--r--test/integration/targets/sefcontext/aliases3
-rw-r--r--test/integration/targets/sefcontext/tasks/main.yml28
-rw-r--r--test/integration/targets/sefcontext/tasks/sefcontext.yml114
-rw-r--r--test/integration/targets/sensu_client/aliases2
-rw-r--r--test/integration/targets/sensu_client/tasks/main.yml169
-rw-r--r--test/integration/targets/sensu_handler/aliases2
-rw-r--r--test/integration/targets/sensu_handler/tasks/main.yml119
-rw-r--r--test/integration/targets/sensu_handler/tasks/pipe.yml20
-rw-r--r--test/integration/targets/sensu_handler/tasks/set.yml48
-rw-r--r--test/integration/targets/sensu_handler/tasks/tcp.yml51
-rw-r--r--test/integration/targets/sensu_handler/tasks/transport.yml51
-rw-r--r--test/integration/targets/sensu_handler/tasks/udp.yml51
-rw-r--r--test/integration/targets/supervisorctl/aliases4
-rwxr-xr-xtest/integration/targets/supervisorctl/files/sendProcessStdin.py24
l---------test/integration/targets/supervisorctl/tasks/install_Darwin.yml1
l---------test/integration/targets/supervisorctl/tasks/install_FreeBSD.yml1
-rw-r--r--test/integration/targets/supervisorctl/tasks/install_Linux.yml10
l---------test/integration/targets/supervisorctl/tasks/install_RedHat.yml1
l---------test/integration/targets/supervisorctl/tasks/install_Suse.yml1
-rw-r--r--test/integration/targets/supervisorctl/tasks/install_pip.yml4
-rw-r--r--test/integration/targets/supervisorctl/tasks/main.yml38
-rw-r--r--test/integration/targets/supervisorctl/tasks/start_supervisord.yml9
-rw-r--r--test/integration/targets/supervisorctl/tasks/stop_supervisord.yml2
-rw-r--r--test/integration/targets/supervisorctl/tasks/test.yml12
-rw-r--r--test/integration/targets/supervisorctl/tasks/test_start.yml135
-rw-r--r--test/integration/targets/supervisorctl/tasks/test_stop.yml59
l---------test/integration/targets/supervisorctl/tasks/uninstall_Darwin.yml1
l---------test/integration/targets/supervisorctl/tasks/uninstall_FreeBSD.yml1
-rw-r--r--test/integration/targets/supervisorctl/tasks/uninstall_Linux.yml4
l---------test/integration/targets/supervisorctl/tasks/uninstall_RedHat.yml1
l---------test/integration/targets/supervisorctl/tasks/uninstall_Suse.yml1
-rw-r--r--test/integration/targets/supervisorctl/tasks/uninstall_pip.yml4
-rw-r--r--test/integration/targets/supervisorctl/templates/supervisord.conf42
-rw-r--r--test/integration/targets/supervisorctl/vars/Debian.yml1
-rw-r--r--test/integration/targets/supervisorctl/vars/defaults.yml1
-rw-r--r--test/integration/targets/synchronize-buildah/aliases3
-rw-r--r--test/integration/targets/synchronize-buildah/inventory1
-rw-r--r--test/integration/targets/synchronize-buildah/roles/test_buildah_synchronize/files/normal_file.txt1
-rw-r--r--test/integration/targets/synchronize-buildah/roles/test_buildah_synchronize/tasks/main.yml66
-rwxr-xr-xtest/integration/targets/synchronize-buildah/runme.sh15
-rw-r--r--test/integration/targets/synchronize-buildah/test_synchronize_buildah.yml8
-rw-r--r--test/integration/targets/timezone/aliases4
-rw-r--r--test/integration/targets/timezone/tasks/main.yml68
-rw-r--r--test/integration/targets/timezone/tasks/test.yml607
-rw-r--r--test/integration/targets/ufw/aliases11
-rw-r--r--test/integration/targets/ufw/tasks/main.yml34
-rw-r--r--test/integration/targets/ufw/tasks/run-test.yml21
-rw-r--r--test/integration/targets/ufw/tasks/tests/basic.yml402
-rw-r--r--test/integration/targets/ufw/tasks/tests/global-state.yml150
-rw-r--r--test/integration/targets/ufw/tasks/tests/insert_relative_to.yml80
-rw-r--r--test/integration/targets/ufw/tasks/tests/interface.yml81
-rw-r--r--test/integration/targets/virt_net/aliases6
-rw-r--r--test/integration/targets/virt_net/files/foobar.xml9
-rw-r--r--test/integration/targets/virt_net/tasks/main.yml85
-rw-r--r--test/integration/targets/virt_net/vars/Debian.yml6
-rw-r--r--test/integration/targets/virt_net/vars/Fedora-29.yml6
-rw-r--r--test/integration/targets/virt_net/vars/RedHat-7.yml6
-rw-r--r--test/integration/targets/virt_net/vars/RedHat-8.yml6
-rw-r--r--test/integration/targets/virt_net/vars/Ubuntu-16.04.yml5
-rw-r--r--test/integration/targets/virt_net/vars/Ubuntu-18.04.yml5
-rw-r--r--test/integration/targets/virt_net/vars/Ubuntu-18.10.yml6
-rw-r--r--test/integration/targets/virt_net/vars/default.yml5
-rw-r--r--test/integration/targets/vultr_account_info/aliases2
-rw-r--r--test/integration/targets/vultr_account_info/tasks/main.yml27
-rw-r--r--test/integration/targets/vultr_block_storage/aliases2
-rw-r--r--test/integration/targets/vultr_block_storage/defaults/main.yml5
-rw-r--r--test/integration/targets/vultr_block_storage/tasks/main.yml111
-rw-r--r--test/integration/targets/vultr_block_storage_info/aliases2
-rw-r--r--test/integration/targets/vultr_block_storage_info/defaults/main.yml5
-rw-r--r--test/integration/targets/vultr_block_storage_info/tasks/main.yml35
-rw-r--r--test/integration/targets/vultr_dns_domain/aliases2
-rw-r--r--test/integration/targets/vultr_dns_domain/defaults/main.yml5
-rw-r--r--test/integration/targets/vultr_dns_domain/tasks/main.yml99
-rw-r--r--test/integration/targets/vultr_dns_domain_info/aliases2
-rw-r--r--test/integration/targets/vultr_dns_domain_info/defaults/main.yml4
-rw-r--r--test/integration/targets/vultr_dns_domain_info/tasks/main.yml32
-rw-r--r--test/integration/targets/vultr_dns_record/aliases2
-rw-r--r--test/integration/targets/vultr_dns_record/defaults/main.yml39
-rw-r--r--test/integration/targets/vultr_dns_record/tasks/create_record.yml67
-rw-r--r--test/integration/targets/vultr_dns_record/tasks/main.yml17
-rw-r--r--test/integration/targets/vultr_dns_record/tasks/record.yml6
-rw-r--r--test/integration/targets/vultr_dns_record/tasks/remove_record.yml114
-rw-r--r--test/integration/targets/vultr_dns_record/tasks/test_fail_multiple.yml78
-rw-r--r--test/integration/targets/vultr_dns_record/tasks/update_record.yml70
-rw-r--r--test/integration/targets/vultr_firewall_group/aliases2
-rw-r--r--test/integration/targets/vultr_firewall_group/defaults/main.yml5
-rw-r--r--test/integration/targets/vultr_firewall_group/tasks/main.yml86
-rw-r--r--test/integration/targets/vultr_firewall_group_info/aliases2
-rw-r--r--test/integration/targets/vultr_firewall_group_info/defaults/main.yml3
-rw-r--r--test/integration/targets/vultr_firewall_group_info/tasks/main.yml33
-rw-r--r--test/integration/targets/vultr_firewall_rule/aliases2
-rw-r--r--test/integration/targets/vultr_firewall_rule/defaults/main.yml5
-rw-r--r--test/integration/targets/vultr_firewall_rule/tasks/main.yml475
-rw-r--r--test/integration/targets/vultr_network/aliases2
-rw-r--r--test/integration/targets/vultr_network/defaults/main.yml5
-rw-r--r--test/integration/targets/vultr_network/tasks/main.yml113
-rw-r--r--test/integration/targets/vultr_network_info/aliases2
-rw-r--r--test/integration/targets/vultr_network_info/defaults/main.yml5
-rw-r--r--test/integration/targets/vultr_network_info/tasks/main.yml35
-rw-r--r--test/integration/targets/vultr_os_info/aliases2
-rw-r--r--test/integration/targets/vultr_os_info/tasks/main.yml22
-rw-r--r--test/integration/targets/vultr_plan_info/aliases2
-rw-r--r--test/integration/targets/vultr_plan_info/tasks/main.yml21
-rw-r--r--test/integration/targets/vultr_region_info/aliases2
-rw-r--r--test/integration/targets/vultr_region_info/tasks/main.yml21
-rw-r--r--test/integration/targets/vultr_server/aliases2
-rw-r--r--test/integration/targets/vultr_server/defaults/main.yml13
-rw-r--r--test/integration/targets/vultr_server/tasks/main.yml551
-rw-r--r--test/integration/targets/vultr_server_info/aliases2
-rw-r--r--test/integration/targets/vultr_server_info/defaults/main.yml6
-rw-r--r--test/integration/targets/vultr_server_info/tasks/main.yml66
-rw-r--r--test/integration/targets/vultr_ssh_key/aliases2
-rw-r--r--test/integration/targets/vultr_ssh_key/defaults/main.yml7
-rw-r--r--test/integration/targets/vultr_ssh_key/tasks/main.yml140
-rw-r--r--test/integration/targets/vultr_ssh_key_info/aliases2
-rw-r--r--test/integration/targets/vultr_ssh_key_info/defaults/main.yml4
-rw-r--r--test/integration/targets/vultr_ssh_key_info/tasks/main.yml44
-rw-r--r--test/integration/targets/vultr_startup_script/aliases2
-rw-r--r--test/integration/targets/vultr_startup_script/defaults/main.yml7
-rw-r--r--test/integration/targets/vultr_startup_script/tasks/main.yml140
-rw-r--r--test/integration/targets/vultr_startup_script_info/aliases2
-rw-r--r--test/integration/targets/vultr_startup_script_info/defaults/main.yml4
-rw-r--r--test/integration/targets/vultr_startup_script_info/tasks/main.yml35
-rw-r--r--test/integration/targets/vultr_user/aliases2
-rw-r--r--test/integration/targets/vultr_user/defaults/main.yml5
-rw-r--r--test/integration/targets/vultr_user/tasks/main.yml225
-rw-r--r--test/integration/targets/vultr_user_info/aliases2
-rw-r--r--test/integration/targets/vultr_user_info/defaults/main.yml10
-rw-r--r--test/integration/targets/vultr_user_info/tasks/main.yml34
-rw-r--r--test/integration/targets/wakeonlan/aliases2
-rw-r--r--test/integration/targets/wakeonlan/tasks/main.yml48
-rw-r--r--test/integration/targets/xattr/aliases6
-rw-r--r--test/integration/targets/xattr/defaults/main.yml1
-rw-r--r--test/integration/targets/xattr/tasks/main.yml11
-rw-r--r--test/integration/targets/xattr/tasks/setup.yml9
-rw-r--r--test/integration/targets/xattr/tasks/test.yml67
-rw-r--r--test/integration/targets/xfs_quota/aliases6
-rw-r--r--test/integration/targets/xfs_quota/defaults/main.yml42
-rw-r--r--test/integration/targets/xfs_quota/meta/main.yml2
-rw-r--r--test/integration/targets/xfs_quota/tasks/gquota.yml158
-rw-r--r--test/integration/targets/xfs_quota/tasks/main.yml18
-rw-r--r--test/integration/targets/xfs_quota/tasks/pquota.yml202
-rw-r--r--test/integration/targets/xfs_quota/tasks/uquota.yml158
-rw-r--r--test/integration/targets/xml/aliases3
-rw-r--r--test/integration/targets/xml/fixtures/ansible-xml-beers-unicode.xml13
-rw-r--r--test/integration/targets/xml/fixtures/ansible-xml-beers.xml14
-rw-r--r--test/integration/targets/xml/fixtures/ansible-xml-namespaced-beers.xml14
-rw-r--r--test/integration/targets/xml/results/test-add-children-elements-unicode.xml14
-rw-r--r--test/integration/targets/xml/results/test-add-children-elements.xml14
-rw-r--r--test/integration/targets/xml/results/test-add-children-from-groupvars.xml14
-rw-r--r--test/integration/targets/xml/results/test-add-children-insertafter.xml17
-rw-r--r--test/integration/targets/xml/results/test-add-children-insertbefore.xml17
-rw-r--r--test/integration/targets/xml/results/test-add-children-with-attributes-unicode.xml14
-rw-r--r--test/integration/targets/xml/results/test-add-children-with-attributes.xml14
-rw-r--r--test/integration/targets/xml/results/test-add-element-implicitly.yml32
-rw-r--r--test/integration/targets/xml/results/test-add-namespaced-children-elements.xml14
-rw-r--r--test/integration/targets/xml/results/test-pretty-print-only.xml14
-rw-r--r--test/integration/targets/xml/results/test-pretty-print.xml15
-rw-r--r--test/integration/targets/xml/results/test-remove-attribute.xml14
-rw-r--r--test/integration/targets/xml/results/test-remove-element.xml13
-rw-r--r--test/integration/targets/xml/results/test-remove-namespaced-attribute.xml14
-rw-r--r--test/integration/targets/xml/results/test-remove-namespaced-element.xml13
-rw-r--r--test/integration/targets/xml/results/test-set-attribute-value-unicode.xml14
-rw-r--r--test/integration/targets/xml/results/test-set-attribute-value.xml14
-rw-r--r--test/integration/targets/xml/results/test-set-children-elements-level.xml11
-rw-r--r--test/integration/targets/xml/results/test-set-children-elements-unicode.xml11
-rw-r--r--test/integration/targets/xml/results/test-set-children-elements.xml11
-rw-r--r--test/integration/targets/xml/results/test-set-element-value-empty.xml14
-rw-r--r--test/integration/targets/xml/results/test-set-element-value-unicode.xml14
-rw-r--r--test/integration/targets/xml/results/test-set-element-value.xml14
-rw-r--r--test/integration/targets/xml/results/test-set-namespaced-attribute-value.xml14
-rw-r--r--test/integration/targets/xml/results/test-set-namespaced-element-value.xml14
-rw-r--r--test/integration/targets/xml/tasks/main.yml67
-rw-r--r--test/integration/targets/xml/tasks/test-add-children-elements-unicode.yml29
-rw-r--r--test/integration/targets/xml/tasks/test-add-children-elements.yml29
-rw-r--r--test/integration/targets/xml/tasks/test-add-children-from-groupvars.yml28
-rw-r--r--test/integration/targets/xml/tasks/test-add-children-insertafter.yml32
-rw-r--r--test/integration/targets/xml/tasks/test-add-children-insertbefore.yml32
-rw-r--r--test/integration/targets/xml/tasks/test-add-children-with-attributes-unicode.yml31
-rw-r--r--test/integration/targets/xml/tasks/test-add-children-with-attributes.yml35
-rw-r--r--test/integration/targets/xml/tasks/test-add-element-implicitly.yml237
-rw-r--r--test/integration/targets/xml/tasks/test-add-namespaced-children-elements.yml32
-rw-r--r--test/integration/targets/xml/tasks/test-children-elements-xml.yml30
-rw-r--r--test/integration/targets/xml/tasks/test-count-unicode.yml19
-rw-r--r--test/integration/targets/xml/tasks/test-count.yml19
-rw-r--r--test/integration/targets/xml/tasks/test-get-element-content-unicode.yml32
-rw-r--r--test/integration/targets/xml/tasks/test-get-element-content.yml52
-rw-r--r--test/integration/targets/xml/tasks/test-mutually-exclusive-attributes.yml22
-rw-r--r--test/integration/targets/xml/tasks/test-pretty-print-only.yml29
-rw-r--r--test/integration/targets/xml/tasks/test-pretty-print.yml30
-rw-r--r--test/integration/targets/xml/tasks/test-remove-attribute.yml28
-rw-r--r--test/integration/targets/xml/tasks/test-remove-element.yml28
-rw-r--r--test/integration/targets/xml/tasks/test-remove-namespaced-attribute.yml33
-rw-r--r--test/integration/targets/xml/tasks/test-remove-namespaced-element.yml33
-rw-r--r--test/integration/targets/xml/tasks/test-set-attribute-value-unicode.yml29
-rw-r--r--test/integration/targets/xml/tasks/test-set-attribute-value.yml29
-rw-r--r--test/integration/targets/xml/tasks/test-set-children-elements-level.yml74
-rw-r--r--test/integration/targets/xml/tasks/test-set-children-elements-unicode.yml46
-rw-r--r--test/integration/targets/xml/tasks/test-set-children-elements.yml53
-rw-r--r--test/integration/targets/xml/tasks/test-set-element-value-empty.yml28
-rw-r--r--test/integration/targets/xml/tasks/test-set-element-value-unicode.yml43
-rw-r--r--test/integration/targets/xml/tasks/test-set-element-value.yml43
-rw-r--r--test/integration/targets/xml/tasks/test-set-namespaced-attribute-value.yml34
-rw-r--r--test/integration/targets/xml/tasks/test-set-namespaced-children-elements.yml57
-rw-r--r--test/integration/targets/xml/tasks/test-set-namespaced-element-value.yml46
-rw-r--r--test/integration/targets/xml/tasks/test-xmlstring.yml81
-rw-r--r--test/integration/targets/xml/vars/main.yml6
-rw-r--r--test/integration/targets/yarn/aliases4
-rw-r--r--test/integration/targets/yarn/tasks/main.yml28
-rw-r--r--test/integration/targets/yarn/tasks/run.yml114
-rw-r--r--test/integration/targets/yarn/templates/package.j28
-rw-r--r--test/integration/targets/zabbix_host/aliases6
-rw-r--r--test/integration/targets/zabbix_host/defaults/main.yml5
-rw-r--r--test/integration/targets/zabbix_host/meta/main.yml2
-rw-r--r--test/integration/targets/zabbix_host/tasks/main.yml16
-rw-r--r--test/integration/targets/zabbix_host/tasks/zabbix_host_doc.yml83
-rw-r--r--test/integration/targets/zabbix_host/tasks/zabbix_host_setup.yml20
-rw-r--r--test/integration/targets/zabbix_host/tasks/zabbix_host_teardown.yml10
-rw-r--r--test/integration/targets/zabbix_host/tasks/zabbix_host_tests.yml1169
-rw-r--r--test/integration/targets/zabbix_template/aliases6
-rw-r--r--test/integration/targets/zabbix_template/defaults/main.yml5
-rw-r--r--test/integration/targets/zabbix_template/meta/main.yml2
-rw-r--r--test/integration/targets/zabbix_template/tasks/main.yml159
-rw-r--r--test/integration/targets/zabbix_user/aliases6
-rw-r--r--test/integration/targets/zabbix_user/defaults/main.yml5
-rw-r--r--test/integration/targets/zabbix_user/meta/main.yml2
-rw-r--r--test/integration/targets/zabbix_user/tasks/main.yml912
-rw-r--r--test/integration/targets/zypper/aliases6
-rw-r--r--test/integration/targets/zypper/files/empty.spec12
-rw-r--r--test/integration/targets/zypper/meta/main.yml2
-rw-r--r--test/integration/targets/zypper/tasks/main.yml25
-rw-r--r--test/integration/targets/zypper/tasks/zypper.yml439
-rw-r--r--test/integration/targets/zypper_repository/aliases6
-rw-r--r--test/integration/targets/zypper_repository/meta/main.yml2
-rw-r--r--test/integration/targets/zypper_repository/tasks/main.yml21
-rw-r--r--test/integration/targets/zypper_repository/tasks/test.yml33
-rw-r--r--test/integration/targets/zypper_repository/tasks/zypper_repository.yml127
-rw-r--r--test/sanity/ignore.txt3801
-rw-r--r--test/units/module_utils/cloud/test_backoff.py47
-rw-r--r--test/units/module_utils/docker/test_common.py518
-rw-r--r--test/units/module_utils/gcp/test_auth.py171
-rw-r--r--test/units/module_utils/gcp/test_gcp_utils.py245
-rw-r--r--test/units/module_utils/gcp/test_utils.py371
-rw-r--r--test/units/module_utils/hwc/test_dict_comparison.py176
-rw-r--r--test/units/module_utils/hwc/test_hwc_utils.py34
-rw-r--r--test/units/module_utils/identity/keycloak/test_keycloak_connect.py169
-rw-r--r--test/units/module_utils/net_tools/nios/test_api.py251
-rw-r--r--test/units/module_utils/network/avi/test_avi_api_utils.py699
-rw-r--r--test/units/module_utils/network/ftd/test_common.py446
-rw-r--r--test/units/module_utils/network/ftd/test_configuration.py588
-rw-r--r--test/units/module_utils/network/ftd/test_data/ngfw_with_ex.json1
-rw-r--r--test/units/module_utils/network/ftd/test_device.py145
-rw-r--r--test/units/module_utils/network/ftd/test_fdm_swagger_parser.py379
-rw-r--r--test/units/module_utils/network/ftd/test_fdm_swagger_validator.py1120
-rw-r--r--test/units/module_utils/network/ftd/test_fdm_swagger_with_real_data.py75
-rw-r--r--test/units/module_utils/network/ftd/test_upsert_functionality.py886
-rw-r--r--test/units/module_utils/network/netscaler/test_netscaler.py175
-rw-r--r--test/units/module_utils/network/nos/test_nos.py148
-rw-r--r--test/units/module_utils/network/nso/test_nso.py659
-rw-r--r--test/units/module_utils/network/slxos/test_slxos.py148
-rw-r--r--test/units/module_utils/postgresql/test_postgres.py322
-rw-r--r--test/units/module_utils/remote_management/dellemc/test_ome.py78
-rw-r--r--test/units/module_utils/test_database.py100
-rw-r--r--test/units/module_utils/test_hetzner.py265
-rw-r--r--test/units/module_utils/test_known_hosts.py116
-rw-r--r--test/units/module_utils/test_kubevirt.py51
-rw-r--r--test/units/module_utils/test_utm_utils.py61
-rw-r--r--test/units/module_utils/xenserver/FakeAnsibleModule.py30
-rw-r--r--test/units/module_utils/xenserver/FakeXenAPI.py66
-rw-r--r--test/units/module_utils/xenserver/common.py25
-rw-r--r--test/units/module_utils/xenserver/fixtures/ansible-test-vm-1-facts.json73
-rw-r--r--test/units/module_utils/xenserver/fixtures/ansible-test-vm-1-params.json707
-rw-r--r--test/units/module_utils/xenserver/fixtures/ansible-test-vm-2-facts.json87
-rw-r--r--test/units/module_utils/xenserver/fixtures/ansible-test-vm-2-params.json771
-rw-r--r--test/units/module_utils/xenserver/fixtures/ansible-test-vm-3-facts.json75
-rw-r--r--test/units/module_utils/xenserver/fixtures/ansible-test-vm-3-params.json420
-rw-r--r--test/units/module_utils/xenserver/test_gather_vm_params_and_facts.py74
-rw-r--r--test/units/module_utils/xenserver/test_get_object_ref.py73
-rw-r--r--test/units/module_utils/xenserver/test_misc.py17
-rw-r--r--test/units/module_utils/xenserver/test_netaddr_functions.py182
-rw-r--r--test/units/module_utils/xenserver/test_set_vm_power_state.py413
-rw-r--r--test/units/module_utils/xenserver/test_wait_for_functions.py220
-rw-r--r--test/units/module_utils/xenserver/test_xapi.py175
-rw-r--r--test/units/module_utils/xenserver/test_xenserverobject.py50
-rw-r--r--test/units/modules/cloud/cloudstack/test_cs_traffic_type.py137
-rw-r--r--test/units/modules/cloud/docker/test_docker_container.py22
-rw-r--r--test/units/modules/cloud/docker/test_docker_network.py31
-rw-r--r--test/units/modules/cloud/docker/test_docker_swarm_service.py510
-rw-r--r--test/units/modules/cloud/docker/test_docker_volume.py36
-rw-r--r--test/units/modules/cloud/google/test_gce_tag.py61
-rw-r--r--test/units/modules/cloud/google/test_gcp_forwarding_rule.py30
-rw-r--r--test/units/modules/cloud/google/test_gcp_url_map.py164
-rw-r--r--test/units/modules/cloud/kubevirt/test_kubevirt_rs.py75
-rw-r--r--test/units/modules/cloud/kubevirt/test_kubevirt_vm.py110
-rw-r--r--test/units/modules/cloud/linode/test_linode.py15
-rw-r--r--test/units/modules/cloud/linode/test_linode_v4.py323
-rw-r--r--test/units/modules/cloud/misc/test_terraform.py20
-rw-r--r--test/units/modules/cloud/misc/virt_net/conftest.py69
-rw-r--r--test/units/modules/cloud/misc/virt_net/test_virt_net.py30
-rw-r--r--test/units/modules/cloud/xenserver/FakeAnsibleModule.py30
-rw-r--r--test/units/modules/cloud/xenserver/FakeXenAPI.py66
-rw-r--r--test/units/modules/cloud/xenserver/common.py11
-rw-r--r--test/units/modules/cloud/xenserver/test_xenserver_guest_info.py77
-rw-r--r--test/units/modules/cloud/xenserver/test_xenserver_guest_powerstate.py289
-rw-r--r--test/units/modules/messaging/rabbitmq/test_rabbitmq_user.py134
-rw-r--r--test/units/modules/monitoring/test_circonus_annotation.py147
-rw-r--r--test/units/modules/monitoring/test_icinga2_feature.py96
-rw-r--r--test/units/modules/monitoring/test_pagerduty.py123
-rw-r--r--test/units/modules/monitoring/test_pagerduty_alert.py39
-rw-r--r--test/units/modules/net_tools/nios/fixtures/nios_result.txt0
-rw-r--r--test/units/modules/net_tools/nios/test_nios_a_record.py159
-rw-r--r--test/units/modules/net_tools/nios/test_nios_aaaa_record.py159
-rw-r--r--test/units/modules/net_tools/nios/test_nios_cname_record.py133
-rw-r--r--test/units/modules/net_tools/nios/test_nios_dns_view.py127
-rw-r--r--test/units/modules/net_tools/nios/test_nios_fixed_address.py201
-rw-r--r--test/units/modules/net_tools/nios/test_nios_host_record.py152
-rw-r--r--test/units/modules/net_tools/nios/test_nios_member.py162
-rw-r--r--test/units/modules/net_tools/nios/test_nios_module.py88
-rw-r--r--test/units/modules/net_tools/nios/test_nios_mx_record.py137
-rw-r--r--test/units/modules/net_tools/nios/test_nios_naptr_record.py147
-rw-r--r--test/units/modules/net_tools/nios/test_nios_network.py248
-rw-r--r--test/units/modules/net_tools/nios/test_nios_network_view.py156
-rw-r--r--test/units/modules/net_tools/nios/test_nios_nsgroup.py125
-rw-r--r--test/units/modules/net_tools/nios/test_nios_ptr_record.py184
-rw-r--r--test/units/modules/net_tools/nios/test_nios_srv_record.py153
-rw-r--r--test/units/modules/net_tools/nios/test_nios_zone.py287
-rw-r--r--test/units/modules/net_tools/test_hetzner_firewall.py1405
-rw-r--r--test/units/modules/net_tools/test_hetzner_firewall_info.py239
-rw-r--r--test/units/modules/net_tools/test_nmcli.py656
-rw-r--r--test/units/modules/network/aireos/aireos_module.py87
-rw-r--r--test/units/modules/network/aireos/fixtures/aireos_config_config.cfg9
-rw-r--r--test/units/modules/network/aireos/fixtures/aireos_config_src.cfg9
-rw-r--r--test/units/modules/network/aireos/fixtures/show_sysinfo43
-rw-r--r--test/units/modules/network/aireos/test_aireos_command.py122
-rw-r--r--test/units/modules/network/aireos/test_aireos_config.py131
-rw-r--r--test/units/modules/network/apconos/apconos_module.py88
-rw-r--r--test/units/modules/network/apconos/fixtures/enable_ssh0
-rw-r--r--test/units/modules/network/apconos/fixtures/show_version2
-rw-r--r--test/units/modules/network/apconos/test_apconos_command.py110
-rw-r--r--test/units/modules/network/aruba/aruba_module.py88
-rw-r--r--test/units/modules/network/aruba/fixtures/aruba_config_config.cfg17
-rw-r--r--test/units/modules/network/aruba/fixtures/aruba_config_defaults.cfg13
-rw-r--r--test/units/modules/network/aruba/fixtures/aruba_config_src.cfg11
-rw-r--r--test/units/modules/network/aruba/fixtures/show_version17
-rw-r--r--test/units/modules/network/aruba/test_aruba_command.py109
-rw-r--r--test/units/modules/network/aruba/test_aruba_config.py189
-rw-r--r--test/units/modules/network/avi/fixtures/avi_user.json215
-rw-r--r--test/units/modules/network/avi/test_avi_user.py101
-rw-r--r--test/units/modules/network/check_point/test_checkpoint_access_rule.py105
-rw-r--r--test/units/modules/network/check_point/test_checkpoint_host.py99
-rw-r--r--test/units/modules/network/check_point/test_checkpoint_session.py67
-rw-r--r--test/units/modules/network/check_point/test_checkpoint_task_facts.py99
-rw-r--r--test/units/modules/network/cloudengine/ce_module.py90
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/after.txt11
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/before.txt11
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/after_interface.txt26
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/before_interface.txt26
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_is_is_view/after.txt104
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_is_is_view/before.txt10
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_00.txt26
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_01.txt26
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_10.txt10
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_11.txt10
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_00.txt21
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_01.txt21
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_00.txt11
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_01.txt11
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lldp/result_ok.txt3
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_changed.txt29
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_existing.txt29
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/result_ok.txt3
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/after.txt14
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/before.txt14
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_multicast_global/after.txt10
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_multicast_global/before.txt1
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/after.txt22
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/before.txt1
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/result_ok.txt3
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_1.txt18
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_2.txt18
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_1.txt18
-rw-r--r--test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_2.txt18
-rw-r--r--test/units/modules/network/cloudengine/test_ce_is_is_instance.py71
-rw-r--r--test/units/modules/network/cloudengine/test_ce_is_is_interface.py100
-rw-r--r--test/units/modules/network/cloudengine/test_ce_is_is_view.py248
-rw-r--r--test/units/modules/network/cloudengine/test_ce_lacp.py134
-rw-r--r--test/units/modules/network/cloudengine/test_ce_lldp.py113
-rw-r--r--test/units/modules/network/cloudengine/test_ce_lldp_interface.py111
-rw-r--r--test/units/modules/network/cloudengine/test_ce_mdn_interface.py67
-rw-r--r--test/units/modules/network/cloudengine/test_ce_multicast_global.py69
-rw-r--r--test/units/modules/network/cloudengine/test_ce_multicast_igmp_enable.py80
-rw-r--r--test/units/modules/network/cloudengine/test_ce_static_route_bfd.py102
-rw-r--r--test/units/modules/network/cloudvision/test_cv_server_provision.py886
-rw-r--r--test/units/modules/network/cnos/cnos_module.py126
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_banner_show_banner.txt3
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_bgp_config.cfg24
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_config_config.cfg337
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_config_src.cfg6
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_linkagg_config.cfg36
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_logging_config.cfg9
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_static_route.cfg3
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_system_config.cfg11
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_user_config.cfg8
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_vlag_config.cfg63
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_vlan_config.cfg77
-rw-r--r--test/units/modules/network/cnos/fixtures/cnos_vrf_config.cfg176
-rw-r--r--test/units/modules/network/cnos/fixtures/l3_interface_config.cfg27
-rw-r--r--test/units/modules/network/cnos/fixtures/show_interface_brief92
-rw-r--r--test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_33_switchport13
-rw-r--r--test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_44_switchport0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_45_switchport14
-rw-r--r--test/units/modules/network/cnos/fixtures/show_interface_mac-address72
-rw-r--r--test/units/modules/network/cnos/fixtures/show_interface_status74
-rw-r--r--test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all10
-rw-r--r--test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all5
-rw-r--r--test/units/modules/network/cnos/fixtures/show_lldp_neighbors8
-rw-r--r--test/units/modules/network/cnos/fixtures/show_process_memory38
-rw-r--r--test/units/modules/network/cnos/fixtures/show_run331
-rw-r--r--test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_3313
-rw-r--r--test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_4514
-rw-r--r--test/units/modules/network/cnos/fixtures/show_running-config331
-rw-r--r--test/units/modules/network/cnos/fixtures/show_sys-info62
-rw-r--r--test/units/modules/network/cnos/fixtures/show_version19
-rw-r--r--test/units/modules/network/cnos/fixtures/show_vlan97
-rw-r--r--test/units/modules/network/cnos/test_cnos_banner.py62
-rw-r--r--test/units/modules/network/cnos/test_cnos_bgp.py95
-rw-r--r--test/units/modules/network/cnos/test_cnos_command.py104
-rw-r--r--test/units/modules/network/cnos/test_cnos_config.py125
-rw-r--r--test/units/modules/network/cnos/test_cnos_facts.py82
-rw-r--r--test/units/modules/network/cnos/test_cnos_interface.py143
-rw-r--r--test/units/modules/network/cnos/test_cnos_l2_interface.py155
-rw-r--r--test/units/modules/network/cnos/test_cnos_l3_interface.py79
-rw-r--r--test/units/modules/network/cnos/test_cnos_linkagg.py144
-rw-r--r--test/units/modules/network/cnos/test_cnos_lldp.py101
-rw-r--r--test/units/modules/network/cnos/test_cnos_logging.py60
-rw-r--r--test/units/modules/network/cnos/test_cnos_static_route.py74
-rw-r--r--test/units/modules/network/cnos/test_cnos_system.py103
-rw-r--r--test/units/modules/network/cnos/test_cnos_user.py89
-rw-r--r--test/units/modules/network/cnos/test_cnos_vlag.py51
-rw-r--r--test/units/modules/network/cnos/test_cnos_vlan.py206
-rw-r--r--test/units/modules/network/cnos/test_cnos_vrf.py78
-rw-r--r--test/units/modules/network/cumulus/test_nclu.py222
-rw-r--r--test/units/modules/network/edgeos/edgeos_module.py86
-rw-r--r--test/units/modules/network/edgeos/fixtures/edgeos_config_config.cfg10
-rw-r--r--test/units/modules/network/edgeos/fixtures/edgeos_config_src.cfg5
-rw-r--r--test/units/modules/network/edgeos/fixtures/edgeos_config_src_brackets.cfg13
-rw-r--r--test/units/modules/network/edgeos/fixtures/show_host_name1
-rw-r--r--test/units/modules/network/edgeos/fixtures/show_version7
-rw-r--r--test/units/modules/network/edgeos/test_edgeos_command.py106
-rw-r--r--test/units/modules/network/edgeos/test_edgeos_config.py105
-rw-r--r--test/units/modules/network/edgeos/test_edgeos_facts.py86
-rw-r--r--test/units/modules/network/edgeswitch/edgeswitch_module.py86
-rw-r--r--test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_description26
-rw-r--r--test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_status_all31
-rw-r--r--test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_sysinfo7
-rw-r--r--test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_version8
-rw-r--r--test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_interfaces_switchport239
-rw-r--r--test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_vlan_brief4
-rw-r--r--test/units/modules/network/edgeswitch/test_edgeswitch_facts.py71
-rw-r--r--test/units/modules/network/edgeswitch/test_edgeswitch_vlan.py152
-rw-r--r--test/units/modules/network/enos/enos_module.py119
-rw-r--r--test/units/modules/network/enos/fixtures/enos_config_config.cfg47
-rw-r--r--test/units/modules/network/enos/fixtures/enos_config_src.cfg6
-rw-r--r--test/units/modules/network/enos/fixtures/show_interface_ip9
-rw-r--r--test/units/modules/network/enos/fixtures/show_interface_status59
-rw-r--r--test/units/modules/network/enos/fixtures/show_lldp_port60
-rw-r--r--test/units/modules/network/enos/fixtures/show_lldp_remote-device_port12
-rw-r--r--test/units/modules/network/enos/fixtures/show_run59
-rw-r--r--test/units/modules/network/enos/fixtures/show_running-config59
-rw-r--r--test/units/modules/network/enos/fixtures/show_system_memory166
-rw-r--r--test/units/modules/network/enos/fixtures/show_version60
-rw-r--r--test/units/modules/network/enos/test_enos_command.py104
-rw-r--r--test/units/modules/network/enos/test_enos_config.py125
-rw-r--r--test/units/modules/network/enos/test_enos_facts.py82
-rw-r--r--test/units/modules/network/eric_eccli/eccli_module.py88
-rw-r--r--test/units/modules/network/eric_eccli/fixtures/configure_terminal2
-rw-r--r--test/units/modules/network/eric_eccli/fixtures/show_version12
-rw-r--r--test/units/modules/network/eric_eccli/test_eric_eccli_command.py126
-rw-r--r--test/units/modules/network/exos/exos_module.py87
-rw-r--r--test/units/modules/network/exos/fixtures/exos_config_config.cfg31
-rw-r--r--test/units/modules/network/exos/fixtures/exos_config_modified.cfg31
-rw-r--r--test/units/modules/network/exos/fixtures/exos_config_src.cfg2
-rw-r--r--test/units/modules/network/exos/fixtures/show_lldp_neighbors1
-rw-r--r--test/units/modules/network/exos/fixtures/show_memory95
-rw-r--r--test/units/modules/network/exos/fixtures/show_port_config1
-rw-r--r--test/units/modules/network/exos/fixtures/show_port_description2
-rw-r--r--test/units/modules/network/exos/fixtures/show_switch33
-rw-r--r--test/units/modules/network/exos/fixtures/show_version6
-rw-r--r--test/units/modules/network/exos/fixtures/show_vlan2
-rw-r--r--test/units/modules/network/exos/fixtures/show_vlan_detail1
-rw-r--r--test/units/modules/network/exos/test_exos_command.py120
-rw-r--r--test/units/modules/network/exos/test_exos_config.py265
-rw-r--r--test/units/modules/network/exos/test_exos_facts.py123
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_facts.py137
-rw-r--r--test/units/modules/network/f5/test_bigip_security_address_list.py135
-rw-r--r--test/units/modules/network/f5/test_bigip_security_port_list.py127
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_device.json934
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_device_config.json204
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_device_group.json234
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_device_provision_template.json2063
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_address.json1051
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool.json388
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool6.json57
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_service.json745
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_vip.json1787
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_ipv4.json620
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_package.json279
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_ha.json241
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_query.json101
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_script.json92
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_appctrl.json250
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_av.json252
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_dns.json45
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ips.json79
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_profile_group.json68
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_proxy.json80
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_spam.json157
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ssl_ssh.json214
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_voip.json257
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_waf.json365
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_wanopt.json162
-rw-r--r--test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_web.json146
-rw-r--r--test/units/modules/network/fortimanager/fortimanager_module.py64
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_device.py272
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_device_config.py188
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_device_group.py202
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_device_provision_template.py1759
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_fwobj_address.py156
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool.py90
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool6.py72
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_fwobj_service.py123
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_fwobj_vip.py785
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_fwpol_ipv4.py596
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_fwpol_package.py97
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_ha.py216
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_provisioning.py64
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_query.py106
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_script.py129
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_appctrl.py78
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_av.py72
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_dns.py88
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_ips.py69
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_profile_group.py112
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_proxy.py72
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_spam.py72
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_ssl_ssh.py69
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_voip.py72
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_waf.py69
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_wanopt.py72
-rw-r--r--test/units/modules/network/fortimanager/test_fmgr_secprof_web.py67
-rw-r--r--test/units/modules/network/ftd/test_ftd_configuration.py124
-rw-r--r--test/units/modules/network/ftd/test_ftd_file_download.py98
-rw-r--r--test/units/modules/network/ftd/test_ftd_file_upload.py80
-rw-r--r--test/units/modules/network/ftd/test_ftd_install.py248
-rw-r--r--test/units/modules/network/icx/fixtures/configure_terminal0
-rw-r--r--test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt16
-rw-r--r--test/units/modules/network/icx/fixtures/icx_config_config.cfg11
-rw-r--r--test/units/modules/network/icx/fixtures/icx_config_src.cfg10
-rw-r--r--test/units/modules/network/icx/fixtures/icx_copy.txt2
-rw-r--r--test/units/modules/network/icx/fixtures/icx_interface_config.cfg91
-rw-r--r--test/units/modules/network/icx/fixtures/icx_lldp_None0
-rw-r--r--test/units/modules/network/icx/fixtures/icx_lldp_absent9
-rw-r--r--test/units/modules/network/icx/fixtures/icx_lldp_present1
-rw-r--r--test/units/modules/network/icx/fixtures/icx_logging_config.cfg17
-rw-r--r--test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_24
-rw-r--r--test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2_timeout_454
-rw-r--r--test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_25
-rw-r--r--test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_5_ttl_708
-rw-r--r--test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_size_100011
-rw-r--r--test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_ttl_3001
-rw-r--r--test/units/modules/network/icx/fixtures/icx_static_route_config.txt8
-rw-r--r--test/units/modules/network/icx/fixtures/icx_system.txt7
-rw-r--r--test/units/modules/network/icx/fixtures/icx_vlan_config32
-rw-r--r--test/units/modules/network/icx/fixtures/lag_running_config.txt7
-rw-r--r--test/units/modules/network/icx/fixtures/show_flash6
-rw-r--r--test/units/modules/network/icx/fixtures/show_interfaces85
-rw-r--r--test/units/modules/network/icx/fixtures/show_lldp9
-rw-r--r--test/units/modules/network/icx/fixtures/show_lldp_neighbors_detail0
-rw-r--r--test/units/modules/network/icx/fixtures/show_media2
-rw-r--r--test/units/modules/network/icx/fixtures/show_memory3
-rw-r--r--test/units/modules/network/icx/fixtures/show_running-config76
-rw-r--r--test/units/modules/network/icx/fixtures/show_running-config_begin_interface77
-rw-r--r--test/units/modules/network/icx/fixtures/show_running-config_include_hostname1
-rw-r--r--test/units/modules/network/icx/fixtures/show_running-config_include_username.txt8
-rw-r--r--test/units/modules/network/icx/fixtures/show_version26
-rw-r--r--test/units/modules/network/icx/fixtures/skip1
-rw-r--r--test/units/modules/network/icx/icx_module.py93
-rw-r--r--test/units/modules/network/icx/test_icx_banner.py96
-rw-r--r--test/units/modules/network/icx/test_icx_command.py113
-rw-r--r--test/units/modules/network/icx/test_icx_config.py219
-rw-r--r--test/units/modules/network/icx/test_icx_copy.py203
-rw-r--r--test/units/modules/network/icx/test_icx_facts.py137
-rw-r--r--test/units/modules/network/icx/test_icx_interface.py208
-rw-r--r--test/units/modules/network/icx/test_icx_l3_interface.py121
-rw-r--r--test/units/modules/network/icx/test_icx_linkagg.py123
-rw-r--r--test/units/modules/network/icx/test_icx_lldp.py99
-rw-r--r--test/units/modules/network/icx/test_icx_logging.py149
-rw-r--r--test/units/modules/network/icx/test_icx_ping.py86
-rw-r--r--test/units/modules/network/icx/test_icx_static_route.py122
-rw-r--r--test/units/modules/network/icx/test_icx_system.py164
-rw-r--r--test/units/modules/network/icx/test_icx_user.py197
-rw-r--r--test/units/modules/network/icx/test_icx_vlan.py279
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_config_add.json10
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_config_delete.json18
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_config_download.json9
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_config_factory.json7
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_config_get.json20
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_config_modify.json10
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_config_return_rowid.json1
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_config_revert.json7
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_config_store.json7
-rw-r--r--test/units/modules/network/ingate/fixtures/test_ig_unit_information.json21
-rw-r--r--test/units/modules/network/ingate/ingate_module.py84
-rw-r--r--test/units/modules/network/ingate/test_ig_config.py241
-rw-r--r--test/units/modules/network/ingate/test_ig_unit_information.py56
-rw-r--r--test/units/modules/network/ironware/fixtures/dir1
-rw-r--r--test/units/modules/network/ironware/fixtures/ironware_config_config.cfg12
-rw-r--r--test/units/modules/network/ironware/fixtures/ironware_config_defaults.cfg13
-rw-r--r--test/units/modules/network/ironware/fixtures/ironware_config_src.cfg10
-rw-r--r--test/units/modules/network/ironware/fixtures/show_chassis45
-rw-r--r--test/units/modules/network/ironware/fixtures/show_interfaces1053
-rw-r--r--test/units/modules/network/ironware/fixtures/show_ipv6_interface5
-rw-r--r--test/units/modules/network/ironware/fixtures/show_lldp_neighbors3
-rw-r--r--test/units/modules/network/ironware/fixtures/show_memory30
-rw-r--r--test/units/modules/network/ironware/fixtures/show_mpls_lsp_detail32
-rw-r--r--test/units/modules/network/ironware/fixtures/show_mpls_vll-local_detail7
-rw-r--r--test/units/modules/network/ironware/fixtures/show_mpls_vll_detail19
-rw-r--r--test/units/modules/network/ironware/fixtures/show_mpls_vpls_detail21
-rw-r--r--test/units/modules/network/ironware/fixtures/show_running-config291
-rw-r--r--test/units/modules/network/ironware/fixtures/show_version92
-rw-r--r--test/units/modules/network/ironware/ironware_module.py88
-rw-r--r--test/units/modules/network/ironware/test_ironware_command.py100
-rw-r--r--test/units/modules/network/ironware/test_ironware_config.py165
-rw-r--r--test/units/modules/network/ironware/test_ironware_facts.py102
-rw-r--r--test/units/modules/network/itential/test_iap_start_workflow.py914
-rw-r--r--test/units/modules/network/itential/test_iap_token.py51
-rw-r--r--test/units/modules/network/netact/test_netact_cm_command.py172
-rw-r--r--test/units/modules/network/netscaler/netscaler_module.py44
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_cs_action.py636
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_cs_policy.py329
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_cs_vserver.py765
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_gslb_service.py735
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_gslb_site.py668
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py758
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_lb_monitor.py518
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_lb_vserver.py840
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_nitro_request.py340
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_save_config.py148
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_server.py696
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_service.py350
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_servicegroup.py537
-rw-r--r--test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py621
-rw-r--r--test/units/modules/network/netvisor/nvos_module.py108
-rw-r--r--test/units/modules/network/netvisor/test_pn_access_list_ip.py59
-rw-r--r--test/units/modules/network/netvisor/test_pn_admin_service.py54
-rw-r--r--test/units/modules/network/netvisor/test_pn_admin_session_timeout.py54
-rw-r--r--test/units/modules/network/netvisor/test_pn_admin_syslog.py74
-rw-r--r--test/units/modules/network/netvisor/test_pn_connection_stats_settings.py63
-rw-r--r--test/units/modules/network/netvisor/test_pn_cpu_class.py68
-rw-r--r--test/units/modules/network/netvisor/test_pn_cpu_mgmt_class.py47
-rw-r--r--test/units/modules/network/netvisor/test_pn_dhcp_filter.py73
-rw-r--r--test/units/modules/network/netvisor/test_pn_dscp_map.py59
-rw-r--r--test/units/modules/network/netvisor/test_pn_dscp_map_pri_map.py60
-rw-r--r--test/units/modules/network/netvisor/test_pn_fabric_local.py47
-rw-r--r--test/units/modules/network/netvisor/test_pn_igmp_snooping.py55
-rw-r--r--test/units/modules/network/netvisor/test_pn_ipv6security_raguard.py73
-rw-r--r--test/units/modules/network/netvisor/test_pn_ipv6security_raguard_port.py60
-rw-r--r--test/units/modules/network/netvisor/test_pn_ipv6security_raguard_vlan.py60
-rw-r--r--test/units/modules/network/netvisor/test_pn_log_audit_exception.py62
-rw-r--r--test/units/modules/network/netvisor/test_pn_port_config.py61
-rw-r--r--test/units/modules/network/netvisor/test_pn_port_cos_bw.py47
-rw-r--r--test/units/modules/network/netvisor/test_pn_port_cos_rate_setting.py49
-rw-r--r--test/units/modules/network/netvisor/test_pn_prefix_list.py60
-rw-r--r--test/units/modules/network/netvisor/test_pn_prefix_list_network.py60
-rw-r--r--test/units/modules/network/netvisor/test_pn_role.py74
-rw-r--r--test/units/modules/network/netvisor/test_pn_snmp_community.py74
-rw-r--r--test/units/modules/network/netvisor/test_pn_snmp_trap_sink.py61
-rw-r--r--test/units/modules/network/netvisor/test_pn_snmp_vacm.py74
-rw-r--r--test/units/modules/network/netvisor/test_pn_stp.py49
-rw-r--r--test/units/modules/network/netvisor/test_pn_stp_port.py47
-rw-r--r--test/units/modules/network/netvisor/test_pn_switch_setup.py63
-rw-r--r--test/units/modules/network/netvisor/test_pn_user.py74
-rw-r--r--test/units/modules/network/netvisor/test_pn_vflow_table_profile.py47
-rw-r--r--test/units/modules/network/netvisor/test_pn_vrouter_bgp.py73
-rw-r--r--test/units/modules/network/netvisor/test_pn_vrouter_bgp_network.py61
-rw-r--r--test/units/modules/network/netvisor/test_pn_vrouter_interface_ip.py62
-rw-r--r--test/units/modules/network/netvisor/test_pn_vrouter_loopback_interface.py60
-rw-r--r--test/units/modules/network/netvisor/test_pn_vrouter_ospf.py59
-rw-r--r--test/units/modules/network/netvisor/test_pn_vrouter_ospf6.py60
-rw-r--r--test/units/modules/network/netvisor/test_pn_vrouter_packet_relay.py60
-rw-r--r--test/units/modules/network/netvisor/test_pn_vrouter_pim_config.py55
-rw-r--r--test/units/modules/network/netvisor/test_pn_vtep.py63
-rw-r--r--test/units/modules/network/nos/fixtures/nos_config_config.cfg31
-rw-r--r--test/units/modules/network/nos/fixtures/nos_config_src.cfg11
-rw-r--r--test/units/modules/network/nos/fixtures/nos_facts_show_inventory_chassis3
-rw-r--r--test/units/modules/network/nos/fixtures/nos_facts_show_running-config1
-rw-r--r--test/units/modules/network/nos/fixtures/nos_facts_show_version17
-rw-r--r--test/units/modules/network/nos/fixtures/show_version17
-rw-r--r--test/units/modules/network/nos/nos_module.py87
-rw-r--r--test/units/modules/network/nos/test_nos_command.py121
-rw-r--r--test/units/modules/network/nos/test_nos_config.py167
-rw-r--r--test/units/modules/network/nos/test_nos_facts.py61
-rw-r--r--test/units/modules/network/nso/fixtures/complex_schema.json212
-rw-r--r--test/units/modules/network/nso/fixtures/config_config.json20
-rw-r--r--test/units/modules/network/nso/fixtures/config_config_changes.json46
-rw-r--r--test/units/modules/network/nso/fixtures/config_empty_data.json1
-rw-r--r--test/units/modules/network/nso/fixtures/description_schema.json28
-rw-r--r--test/units/modules/network/nso/fixtures/device_schema.json1
-rw-r--r--test/units/modules/network/nso/fixtures/devices_schema.json1
-rw-r--r--test/units/modules/network/nso/fixtures/l3vpn_l3vpn_endpoint_schema.json1
-rw-r--r--test/units/modules/network/nso/fixtures/l3vpn_l3vpn_schema.json1
-rw-r--r--test/units/modules/network/nso/fixtures/l3vpn_schema.json1
-rw-r--r--test/units/modules/network/nso/fixtures/sync_from_schema.json178
-rw-r--r--test/units/modules/network/nso/fixtures/verify_violation_data.json10
-rw-r--r--test/units/modules/network/nso/nso_module.py131
-rw-r--r--test/units/modules/network/nso/test_nso_action.py166
-rw-r--r--test/units/modules/network/nso/test_nso_config.py137
-rw-r--r--test/units/modules/network/nso/test_nso_query.py56
-rw-r--r--test/units/modules/network/nso/test_nso_show.py97
-rw-r--r--test/units/modules/network/nso/test_nso_verify.py109
-rw-r--r--test/units/modules/network/nuage/nuage_module.py71
-rw-r--r--test/units/modules/network/nuage/test_nuage_vspk.py1421
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_bgp_show.cfg34
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_buffer_pool.cfg15
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_command_show_version.txt19
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_config_config.cfg115
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_config_src.cfg3
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_facts_show_interfaces_ethernet.cfg20
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_facts_show_module.cfg7
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_facts_show_version.cfg19
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_igmp_show.cfg14
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_interfaces_rates.cfg10
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_interfaces_show.cfg74
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_interfaces_status.cfg15
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_l2_interface_show.cfg12
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_l3_interface_show.cfg89
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_l3_vlan_interface_show.cfg18
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_lldp_interface_show.cfg16
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_lldp_show.cfg14
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_logging_config_show.cfg11
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_logging_show.cfg35
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_magp_show.cfg18
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_mlag_ipl_show.cfg29
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_mlag_port_channel_show.cfg18
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_mlag_show.cfg18
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_mlag_vip_show.cfg19
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_ntp_servers_peers_show.cfg19
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_ntp_show.cfg30
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_ospf_interfaces_show.cfg5
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_ospf_show.cfg1
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_pfc_interface_disabled.cfg26
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_pfc_interface_enabled.cfg26
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_port_channel_show.cfg15
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_protocols_show.cfg27
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_aaa.cfg16
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_bfd.cfg14
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_dcb_ets_interface.cfg99
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_igmp_interfaces.cfg162
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_interface_congestion_control.cfg46
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve.cfg18
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve_detail.cfg16
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping.cfg10
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_groups.cfg30
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_querier.cfg20
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_ntp_configured.cfg8
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_ptp_clock.cfg7
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_ptp_interface.cfg15
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_snmp_hosts.cfg38
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_show_snmp_users.cfg22
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_snmp_show.cfg52
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_username_show.cfg51
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_vlan_show.cfg14
-rw-r--r--test/units/modules/network/onyx/fixtures/onyx_wjh_show.cfg3
-rw-r--r--test/units/modules/network/onyx/fixtures/show_qos_interface_ethernet.cfg134
-rw-r--r--test/units/modules/network/onyx/onyx_module.py91
-rw-r--r--test/units/modules/network/onyx/test_onyx_aaa.py74
-rw-r--r--test/units/modules/network/onyx/test_onyx_bfd.py114
-rw-r--r--test/units/modules/network/onyx/test_onyx_bgp.py111
-rw-r--r--test/units/modules/network/onyx/test_onyx_buffer_pool.py78
-rw-r--r--test/units/modules/network/onyx/test_onyx_command.py114
-rw-r--r--test/units/modules/network/onyx/test_onyx_config.py113
-rw-r--r--test/units/modules/network/onyx/test_onyx_facts.py71
-rw-r--r--test/units/modules/network/onyx/test_onyx_igmp.py127
-rw-r--r--test/units/modules/network/onyx/test_onyx_igmp_interface.py69
-rw-r--r--test/units/modules/network/onyx/test_onyx_igmp_vlan.py190
-rw-r--r--test/units/modules/network/onyx/test_onyx_interface.py125
-rw-r--r--test/units/modules/network/onyx/test_onyx_l2_interface.py119
-rw-r--r--test/units/modules/network/onyx/test_onyx_l3_interface.py113
-rw-r--r--test/units/modules/network/onyx/test_onyx_linkagg.py116
-rw-r--r--test/units/modules/network/onyx/test_onyx_lldp.py68
-rw-r--r--test/units/modules/network/onyx/test_onyx_lldp_interface.py76
-rw-r--r--test/units/modules/network/onyx/test_onyx_magp.py110
-rw-r--r--test/units/modules/network/onyx/test_onyx_mlag_ipl.py86
-rw-r--r--test/units/modules/network/onyx/test_onyx_mlag_vip.py84
-rw-r--r--test/units/modules/network/onyx/test_onyx_ntp.py76
-rw-r--r--test/units/modules/network/onyx/test_onyx_ntp_servers_peers.py134
-rw-r--r--test/units/modules/network/onyx/test_onyx_ospf.py106
-rw-r--r--test/units/modules/network/onyx/test_onyx_pfc_interface.py114
-rw-r--r--test/units/modules/network/onyx/test_onyx_protocol.py152
-rw-r--r--test/units/modules/network/onyx/test_onyx_ptp_global.py138
-rw-r--r--test/units/modules/network/onyx/test_onyx_ptp_interface.py91
-rw-r--r--test/units/modules/network/onyx/test_onyx_qos.py52
-rw-r--r--test/units/modules/network/onyx/test_onyx_snmp.py150
-rw-r--r--test/units/modules/network/onyx/test_onyx_snmp_hosts.py170
-rw-r--r--test/units/modules/network/onyx/test_onyx_snmp_users.py95
-rw-r--r--test/units/modules/network/onyx/test_onyx_syslog_files.py113
-rw-r--r--test/units/modules/network/onyx/test_onyx_syslog_remote.py91
-rw-r--r--test/units/modules/network/onyx/test_onyx_traffic_class.py108
-rw-r--r--test/units/modules/network/onyx/test_onyx_username.py99
-rw-r--r--test/units/modules/network/onyx/test_onyx_vlan.py106
-rw-r--r--test/units/modules/network/onyx/test_onyx_vxlan.py101
-rw-r--r--test/units/modules/network/onyx/test_onyx_wjh.py66
-rw-r--r--test/units/modules/network/opx/fixtures/opx_get_config.cfg10
-rw-r--r--test/units/modules/network/opx/fixtures/opx_operation_create.cfg13
-rw-r--r--test/units/modules/network/opx/fixtures/opx_operation_delete.cfg8
-rw-r--r--test/units/modules/network/opx/fixtures/opx_operation_get.cfg16
-rw-r--r--test/units/modules/network/opx/fixtures/opx_operation_get_db.cfg25
-rw-r--r--test/units/modules/network/opx/fixtures/opx_operation_set.cfg11
-rw-r--r--test/units/modules/network/opx/opx_module.py91
-rw-r--r--test/units/modules/network/opx/test_opx_cps.py183
-rw-r--r--test/units/modules/network/radware/ct.vm32
-rw-r--r--test/units/modules/network/radware/test_vdirect_commit.py199
-rw-r--r--test/units/modules/network/radware/test_vdirect_file.py241
-rw-r--r--test/units/modules/network/radware/test_vdirect_runnable.py435
-rw-r--r--test/units/modules/network/radware/wt.zip0
-rw-r--r--test/units/modules/network/routeros/fixtures/routeros_facts/export26
-rw-r--r--test/units/modules/network/routeros/fixtures/routeros_facts/interface_print_detail_without-paging34
-rw-r--r--test/units/modules/network/routeros/fixtures/routeros_facts/ip_address_print_detail_without-paging10
-rw-r--r--test/units/modules/network/routeros/fixtures/routeros_facts/ip_neighbor_print_detail_without-paging15
-rw-r--r--test/units/modules/network/routeros/fixtures/routeros_facts/ipv6_address_print_detail_without-paging3
-rw-r--r--test/units/modules/network/routeros/fixtures/routeros_facts/system_identity_print_without-paging1
-rw-r--r--test/units/modules/network/routeros/fixtures/routeros_facts/system_resource_print_without-paging16
-rw-r--r--test/units/modules/network/routeros/fixtures/routeros_facts/system_routerboard_print_without-paging7
-rw-r--r--test/units/modules/network/routeros/fixtures/system_package_print106
-rw-r--r--test/units/modules/network/routeros/fixtures/system_resource_print17
-rw-r--r--test/units/modules/network/routeros/routeros_module.py88
-rw-r--r--test/units/modules/network/routeros/test_routeros_command.py113
-rw-r--r--test/units/modules/network/routeros/test_routeros_facts.py109
-rw-r--r--test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_2_switchport6
-rw-r--r--test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_3_switchport0
-rw-r--r--test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_4_switchport6
-rw-r--r--test/units/modules/network/slxos/fixtures/show_version18
-rw-r--r--test/units/modules/network/slxos/fixtures/show_vlan_brief17
-rw-r--r--test/units/modules/network/slxos/fixtures/slxos_config_config.cfg31
-rw-r--r--test/units/modules/network/slxos/fixtures/slxos_config_src.cfg11
-rw-r--r--test/units/modules/network/slxos/fixtures/slxos_facts_show_inventory_chassis5
-rw-r--r--test/units/modules/network/slxos/fixtures/slxos_facts_show_running-config1
-rw-r--r--test/units/modules/network/slxos/fixtures/slxos_facts_show_version18
-rw-r--r--test/units/modules/network/slxos/slxos_module.py87
-rw-r--r--test/units/modules/network/slxos/test_slxos_command.py121
-rw-r--r--test/units/modules/network/slxos/test_slxos_config.py195
-rw-r--r--test/units/modules/network/slxos/test_slxos_facts.py61
-rw-r--r--test/units/modules/network/slxos/test_slxos_interface.py155
-rw-r--r--test/units/modules/network/slxos/test_slxos_l2_interface.py171
-rw-r--r--test/units/modules/network/slxos/test_slxos_l3_interface.py102
-rw-r--r--test/units/modules/network/slxos/test_slxos_linkagg.py159
-rw-r--r--test/units/modules/network/slxos/test_slxos_lldp.py95
-rw-r--r--test/units/modules/network/slxos/test_slxos_vlan.py144
-rw-r--r--test/units/modules/network/voss/fixtures/show_sys-info107
-rw-r--r--test/units/modules/network/voss/fixtures/voss_config_config.cfg16
-rw-r--r--test/units/modules/network/voss/fixtures/voss_config_ipv6.cfg6
-rw-r--r--test/units/modules/network/voss/fixtures/voss_config_src.cfg10
-rw-r--r--test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_interface93
-rw-r--r--test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_name93
-rw-r--r--test/units/modules/network/voss/fixtures/voss_facts_show_ip_interface12
-rw-r--r--test/units/modules/network/voss/fixtures/voss_facts_show_ipv6_address_interface12
-rw-r--r--test/units/modules/network/voss/fixtures/voss_facts_show_khi_performance_memory14
-rw-r--r--test/units/modules/network/voss/fixtures/voss_facts_show_lldp_neighbor12
-rw-r--r--test/units/modules/network/voss/fixtures/voss_facts_show_running-config903
-rw-r--r--test/units/modules/network/voss/fixtures/voss_facts_show_sys-info107
-rw-r--r--test/units/modules/network/voss/test_voss_command.py120
-rw-r--r--test/units/modules/network/voss/test_voss_config.py272
-rw-r--r--test/units/modules/network/voss/test_voss_facts.py86
-rw-r--r--test/units/modules/network/voss/voss_module.py88
-rw-r--r--test/units/modules/notification/test_campfire.py93
-rw-r--r--test/units/modules/notification/test_slack.py120
-rw-r--r--test/units/modules/packaging/language/test_gem.py139
-rw-r--r--test/units/modules/packaging/language/test_maven_artifact.py70
-rw-r--r--test/units/modules/packaging/os/test_apk.py31
-rw-r--r--test/units/modules/packaging/os/test_redhat_subscription.py1221
-rw-r--r--test/units/modules/packaging/os/test_rhn_channel.py141
-rw-r--r--test/units/modules/packaging/os/test_rhn_register.py284
-rw-r--r--test/units/modules/packaging/os/test_rhsm_release.py141
-rw-r--r--test/units/modules/remote_management/dellemc/test_ome_device_info.py189
-rw-r--r--test/units/modules/remote_management/lxca/test_lxca_cmms.py94
-rw-r--r--test/units/modules/remote_management/lxca/test_lxca_nodes.py98
-rw-r--r--test/units/modules/remote_management/oneview/hpe_test_utils.py214
-rw-r--r--test/units/modules/remote_management/oneview/oneview_module_loader.py27
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_datacenter_info.py74
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_enclosure_info.py132
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_ethernet_network.py400
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_ethernet_network_info.py100
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_fc_network.py178
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_fc_network_info.py57
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_fcoe_network.py176
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_fcoe_network_info.py60
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group.py257
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_info.py57
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_network_set.py183
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_network_set_info.py117
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_san_manager.py239
-rw-r--r--test/units/modules/remote_management/oneview/test_oneview_san_manager_info.py68
-rw-r--r--test/units/modules/source_control/bitbucket/test_bitbucket_access_key.py337
-rw-r--r--test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_key_pair.py192
-rw-r--r--test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_known_host.py187
-rw-r--r--test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_variable.py290
-rw-r--r--test/units/modules/source_control/gitlab/gitlab.py580
-rw-r--r--test/units/modules/source_control/gitlab/test_gitlab_deploy_key.py107
-rw-r--r--test/units/modules/source_control/gitlab/test_gitlab_group.py108
-rw-r--r--test/units/modules/source_control/gitlab/test_gitlab_hook.py101
-rw-r--r--test/units/modules/source_control/gitlab/test_gitlab_project.py103
-rw-r--r--test/units/modules/source_control/gitlab/test_gitlab_runner.py94
-rw-r--r--test/units/modules/source_control/gitlab/test_gitlab_user.py163
-rw-r--r--test/units/modules/storage/hpe3par/test_ss_3par_cpg.py246
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_alerts.py183
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_asup.py181
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_auditlog.py234
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_drive_firmware.py216
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_facts.py455
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_firmware.py555
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_global.py76
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_host.py489
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_hostgroup.py163
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_iscsi_interface.py245
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_iscsi_target.py132
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_ldap.py430
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_mgmt_interface.py682
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_storagepool.py724
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_syslog.py123
-rw-r--r--test/units/modules/storage/netapp/test_netapp_e_volume.py870
-rw-r--r--test/units/modules/system/test_java_keystore.py264
-rw-r--r--test/units/modules/system/test_pamd.py372
-rw-r--r--test/units/modules/system/test_parted.py240
-rw-r--r--test/units/modules/system/test_ufw.py434
-rw-r--r--test/units/modules/web_infrastructure/test_apache2_module.py17
-rw-r--r--test/units/modules/web_infrastructure/test_jenkins_plugin.py148
-rw-r--r--test/units/plugins/become/test_doas.py39
-rw-r--r--test/units/plugins/become/test_dzdo.py44
-rw-r--r--test/units/plugins/become/test_ksu.py39
-rw-r--r--test/units/plugins/become/test_pbrun.py39
-rw-r--r--test/units/plugins/become/test_pfexec.py38
-rw-r--r--test/units/plugins/cache/test_memcached.py35
-rw-r--r--test/units/plugins/cache/test_redis.py36
-rw-r--r--test/units/plugins/cliconf/test_nos.py137
-rw-r--r--test/units/plugins/cliconf/test_slxos.py144
-rw-r--r--test/units/plugins/connection/test_docker.py61
-rw-r--r--test/units/plugins/connection/test_lxc.py40
-rw-r--r--test/units/plugins/httpapi/test_ftd.py413
-rw-r--r--test/units/plugins/inventory/test_linode.py76
-rw-r--r--test/units/plugins/lookup/test_avi.py92
-rw-r--r--test/units/plugins/lookup/test_conjur_variable.py110
-rw-r--r--test/units/plugins/lookup/test_lastpass.py187
-rw-r--r--test/units/plugins/lookup/test_manifold.py536
-rw-r--r--test/units/plugins/lookup/test_onepassword.py321
-rw-r--r--test/units/plugins/terminal/test_slxos.py53
2333 files changed, 0 insertions, 195986 deletions
diff --git a/test/integration/targets/aix_devices/aliases b/test/integration/targets/aix_devices/aliases
deleted file mode 100644
index e6cab07d71..0000000000
--- a/test/integration/targets/aix_devices/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No AIX LPAR available
-unsupported
diff --git a/test/integration/targets/aix_devices/tasks/main.yml b/test/integration/targets/aix_devices/tasks/main.yml
deleted file mode 100644
index 106274c8cd..0000000000
--- a/test/integration/targets/aix_devices/tasks/main.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-- name: Scan new devices.
- aix_devices:
- device: all
- state: present
-
-- name: Scan new virtual devices (vio0).
- aix_devices:
- device: vio0
- state: present
-
-- name: Removing IP alias to en0
- aix_devices:
- device: en0
- attributes:
- delalias4: 10.0.0.100,255.255.255.0
-
-- name: Removes ent2.
- aix_devices:
- device: ent2
- state: absent
-
-- name: Put device en2 in Defined
- aix_devices:
- device: en2
- state: defined
-
-- name: Removes ent4 (inexistent).
- aix_devices:
- device: ent4
- state: absent
-
-- name: Put device en4 in Defined (inexistent)
- aix_devices:
- device: en4
- state: defined
-
-- name: Put vscsi1 and children devices in Defined state.
- aix_devices:
- device: vscsi1
- recursive: yes
- state: defined
-
-- name: Removes vscsi1 and children devices.
- aix_devices:
- device: vscsi1
- recursive: yes
- state: absent
-
-- name: Changes en1 mtu to 9000 and disables arp.
- aix_devices:
- device: en1
- attributes:
- mtu: 900
- arp: off
- state: present
-
-- name: Configure IP, netmask and set en1 up.
- aix_devices:
- device: en1
- attributes:
- netaddr: 192.168.0.100
- netmask: 255.255.255.0
- state: up
- state: present
-
-- name: Adding IP alias to en0
- aix_devices:
- device: en0
- attributes:
- alias4: 10.0.0.100,255.255.255.0
- state: present
diff --git a/test/integration/targets/aix_filesystem/aliases b/test/integration/targets/aix_filesystem/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/aix_filesystem/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/aix_filesystem/tasks/main.yml b/test/integration/targets/aix_filesystem/tasks/main.yml
deleted file mode 100644
index 2942bf034b..0000000000
--- a/test/integration/targets/aix_filesystem/tasks/main.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-- name: Umounting /testfs
- aix_filesystem:
- filesystem: /testfs
- state: unmounted
-
-- name: Removing /testfs
- aix_filesystem:
- filesystem: /testfs
- state: absent
-
-- name: Creating a new file system
- aix_filesystem:
- filesystem: /newfs
- size: 1G
- state: present
- vg: datavg
-
-# It requires a host (nfshost) exporting the NFS
-- name: Creating NFS filesystem from nfshost (Linux NFS server)
- aix_filesystem:
- device: /home/ftp
- nfs_server: nfshost
- filesystem: /nfs/ftp
- state: present
-
-# It requires a volume group named datavg (next three actions)
-- name: Creating a logical volume testlv (aix_lvol module)
- aix_lvol:
- vg: datavg
- lv: testlv
- size: 2G
- state: present
-
-- name: Create filesystem in a previously defined logical volume
- aix_filesystem:
- device: testlv
- filesystem: /testfs
- state: present
-
-- name: Create an already existing filesystem using existing logical volume.
- aix_filesystem:
- vg: datavg
- device: mksysblv
- filesystem: /mksysb
- state: present
-
-- name: Create a filesystem in a non-existing VG
- aix_filesystem:
- vg: nonexistvg
- filesystem: /newlv
- state: present
-
-- name: Resizing /mksysb to 1G
- aix_filesystem:
- filesystem: /mksysb
- size: 1G
- state: present
-
-- name: Resizing /mksysb to +512M
- aix_filesystem:
- filesystem: /mksysb
- size: +512M
- state: present
-
-- name: Resizing /mksysb to 11G
- aix_filesystem:
- filesystem: /mksysb
- size: 11G
- state: present
-
-- name: Resizing /mksysb to 11G (already done)
- aix_filesystem:
- filesystem: /mksysb
- size: 11G
- state: present
-
-- name: Resizing /mksysb to -2G
- aix_filesystem:
- filesystem: /mksysb
- size: -2G
- state: present
-
-- name: Resizing /mksysb to 100G (no enought space)
- aix_filesystem:
- filesystem: /mksysb
- size: +100G
- state: present
-
-- name: Unmount filesystem /home/ftp
- aix_filesystem:
- filesystem: /home/ftp
- state: unmounted
-
-- name: Remove NFS filesystem /home/ftp
- aix_filesystem:
- filesystem: /home/ftp
- rm_mount_point: yes
- state: absent
-
-- name: Mount filesystem /newfs
- aix_filesystem:
- filesystem: /newfs
- state: mounted
-
-- name: Remove mounted /newfs
- aix_filesystem:
- filesystem: /newfs
- rm_mount_point: yes
- state: absent
-
-- name: Umount /newfs
- aix_filesystem:
- filesystem: /newfs
- state: unmounted
-
-- name: Remove /newfs
- aix_filesystem:
- filesystem: /newfs
- rm_mount_point: yes
- state: absent
diff --git a/test/integration/targets/alternatives/aliases b/test/integration/targets/alternatives/aliases
deleted file mode 100644
index 3c1ea41f18..0000000000
--- a/test/integration/targets/alternatives/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-shippable/posix/group3
-destructive
-needs/root
-skip/aix
-skip/freebsd
-skip/osx
diff --git a/test/integration/targets/alternatives/tasks/main.yml b/test/integration/targets/alternatives/tasks/main.yml
deleted file mode 100644
index 94f7deeb8c..0000000000
--- a/test/integration/targets/alternatives/tasks/main.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (c) 2017 Pierre-Louis Bonicoli <pierre-louis.bonicoli@libregerbil.fr>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: 'setup: create a dummy alternative'
- block:
- - import_tasks: setup.yml
-
- ##############
- # Test parameters:
- # link parameter present / absent ('with_link' variable)
- # with / without alternatives defined in alternatives file ('with_alternatives' variable)
- # auto / manual ('mode' variable)
-
- - include_tasks: tests.yml
- with_nested:
- - [ True, False ] # with_link
- - [ True, False ] # with_alternatives
- - [ 'auto', 'manual' ] # mode
- loop_control:
- loop_var: test_conf
-
- ##########
- # Priority
- - block:
- - include_tasks: remove_links.yml
- - include_tasks: setup_test.yml
- # at least two iterations again
- - include_tasks: tests_set_priority.yml
- with_sequence: start=3 end=4
- vars:
- with_alternatives: True
- mode: auto
-
- - block:
- - include_tasks: remove_links.yml
- - include_tasks: setup_test.yml
- # at least two iterations again
- - include_tasks: tests_set_priority.yml
- with_sequence: start=3 end=4
- vars:
- with_alternatives: False
- mode: auto
-
- # Test that path is checked: alternatives must fail when path is nonexistent
- - import_tasks: path_is_checked.yml
-
- always:
- - include_tasks: remove_links.yml
-
- - file:
- path: '{{ item }}'
- state: absent
- with_items:
- - '{{ alternatives_dir }}/dummy'
-
- - file:
- path: '/usr/bin/dummy{{ item }}'
- state: absent
- with_sequence: start=1 end=4
- # *Disable tests on Fedora 24*
- # Shippable Fedora 24 image provides chkconfig-1.7-2.fc24.x86_64 but not the
- # latest available version (chkconfig-1.8-1.fc24.x86_64). update-alternatives
- # in chkconfig-1.7-2 fails when /etc/alternatives/dummy link is missing,
- # error is: 'failed to read link /usr/bin/dummy: No such file or directory'.
- # Moreover Fedora 24 is no longer maintained.
- when: ansible_distribution != 'Fedora' or ansible_distribution_major_version|int > 24
diff --git a/test/integration/targets/alternatives/tasks/path_is_checked.yml b/test/integration/targets/alternatives/tasks/path_is_checked.yml
deleted file mode 100644
index ef0a3b4763..0000000000
--- a/test/integration/targets/alternatives/tasks/path_is_checked.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-- name: Try with nonexistent path
- alternatives:
- name: dummy
- path: '/non/existent/path/there'
- link: '/usr/bin/dummy'
- ignore_errors: True
- register: alternative
-
-- name: Check previous task failed
- assert:
- that:
- - 'alternative is failed'
diff --git a/test/integration/targets/alternatives/tasks/remove_links.yml b/test/integration/targets/alternatives/tasks/remove_links.yml
deleted file mode 100644
index 690b06069a..0000000000
--- a/test/integration/targets/alternatives/tasks/remove_links.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-- name: remove links
- file:
- path: '{{ item }}'
- state: absent
- with_items:
- - /etc/alternatives/dummy
- - /usr/bin/dummy
diff --git a/test/integration/targets/alternatives/tasks/setup.yml b/test/integration/targets/alternatives/tasks/setup.yml
deleted file mode 100644
index bf6613374d..0000000000
--- a/test/integration/targets/alternatives/tasks/setup.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-- include_vars: '{{ item }}'
- with_first_found:
- - files:
- - '{{ ansible_os_family }}-{{ ansible_distribution_version }}.yml'
- - '{{ ansible_os_family }}.yml'
- - 'default.yml'
- paths: '../vars'
-
-- template:
- src: dummy_command
- dest: '/usr/bin/dummy{{ item }}'
- owner: root
- group: root
- mode: 0755
- with_sequence: start=1 end=4
diff --git a/test/integration/targets/alternatives/tasks/setup_test.yml b/test/integration/targets/alternatives/tasks/setup_test.yml
deleted file mode 100644
index 594a69e4db..0000000000
--- a/test/integration/targets/alternatives/tasks/setup_test.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-- template:
- src: dummy_alternative
- dest: '{{ alternatives_dir }}/dummy'
- owner: root
- group: root
- mode: 0644
- when: with_alternatives or ansible_os_family != 'RedHat'
-
-# update-alternatives included in Fedora 26 (1.10) & Red Hat 7.4 (1.8) segfaults
-# when <admindir>/dummy file contains only mode and link. Hence the file is
-# deleted instead of containing only mode and link. The file below works fine with
-# newer version of update-alternatives:
-# """
-# auto
-# /usr/bin/dummy
-#
-#
-# """
-- file:
- path: '{{ alternatives_dir }}/dummy'
- state: absent
- when: not with_alternatives and ansible_os_family == 'RedHat'
diff --git a/test/integration/targets/alternatives/tasks/test.yml b/test/integration/targets/alternatives/tasks/test.yml
deleted file mode 100644
index e5cf2d99cc..0000000000
--- a/test/integration/targets/alternatives/tasks/test.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-- debug:
- msg: ' with_alternatives: {{ with_alternatives }}, mode: {{ mode }}'
-
-- block:
- - name: set alternative (using link parameter)
- alternatives:
- name: dummy
- path: '/usr/bin/dummy{{ item }}'
- link: '/usr/bin/dummy'
- register: alternative
-
- - name: check expected command was executed
- assert:
- that:
- - 'alternative is successful'
- - 'alternative is changed'
- when: with_link
-
-- block:
- - name: set alternative (without link parameter)
- alternatives:
- name: dummy
- path: '/usr/bin/dummy{{ item }}'
- register: alternative
-
- - name: check expected command was executed
- assert:
- that:
- - 'alternative is successful'
- - 'alternative is changed'
- when: not with_link
-
-- name: execute dummy command
- shell: dummy
- register: cmd
-
-- name: check expected command was executed
- assert:
- that:
- - 'cmd.stdout == "dummy" ~ item'
-
-- name: 'check mode (manual: alternatives file existed, it has been updated)'
- shell: 'head -n1 {{ alternatives_dir }}/dummy | grep "^manual$"'
- when: ansible_os_family != 'RedHat' or with_alternatives or item != 1
-
-- name: 'check mode (auto: alternatives file didn''t exist, it has been created)'
- shell: 'head -n1 {{ alternatives_dir }}/dummy | grep "^auto$"'
- when: ansible_os_family == 'RedHat' and not with_alternatives and item == 1
-
-- name: check that alternative has been updated
- command: "grep -Pzq '/bin/dummy{{ item }}\\n' '{{ alternatives_dir }}/dummy'"
- # priority doesn't seem updated
- #command: "grep -Pzq '/bin/dummy{{ item }}\\n50' '{{ alternatives_dir }}/dummy'"
diff --git a/test/integration/targets/alternatives/tasks/tests.yml b/test/integration/targets/alternatives/tasks/tests.yml
deleted file mode 100644
index e0400dfd81..0000000000
--- a/test/integration/targets/alternatives/tasks/tests.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-- block:
- - include_tasks: remove_links.yml
- - include_tasks: setup_test.yml
- # at least two iterations:
- # - first will use 'link currently absent',
- # - second will receive 'link currently points to'
- - include_tasks: test.yml
- with_sequence: start=1 end=2
- vars:
- with_link: '{{ test_conf[0] }}'
- with_alternatives: '{{ test_conf[1] }}'
- mode: '{{ test_conf[2] }}'
- # update-alternatives included in Fedora 26 (1.10) & Red Hat 7.4 (1.8) doesn't provide
- # '--query' switch, 'link' is mandatory for these distributions.
- when: ansible_os_family != 'RedHat' or test_conf[0]
diff --git a/test/integration/targets/alternatives/tasks/tests_set_priority.yml b/test/integration/targets/alternatives/tasks/tests_set_priority.yml
deleted file mode 100644
index 7e27817583..0000000000
--- a/test/integration/targets/alternatives/tasks/tests_set_priority.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-- name: update dummy alternative
- alternatives:
- name: dummy
- path: '/usr/bin/dummy{{ item }}'
- link: /usr/bin/dummy
- priority: '{{ 60 + item|int }}'
- register: alternative
-
-- name: execute dummy command
- shell: dummy
- register: cmd
-
-- name: check if link group is in manual mode
- shell: 'head -n1 {{ alternatives_dir }}/dummy | grep "^manual$"'
-
-- name: check expected command was executed
- assert:
- that:
- - 'alternative is changed'
- - 'cmd.stdout == "dummy{{ item }}"'
-
-- name: check that alternative has been updated
- command: "grep -Pzq '/bin/dummy{{ item }}\\n{{ 60 + item|int }}' '{{ alternatives_dir }}/dummy'"
diff --git a/test/integration/targets/alternatives/templates/dummy_alternative b/test/integration/targets/alternatives/templates/dummy_alternative
deleted file mode 100644
index 5dce8adde7..0000000000
--- a/test/integration/targets/alternatives/templates/dummy_alternative
+++ /dev/null
@@ -1,12 +0,0 @@
-{{ mode }}
-/usr/bin/dummy
-
-{% if with_alternatives %}
-/usr/bin/dummy1
-40
-/usr/bin/dummy2
-30
-
-{% else %}
-
-{% endif %}
diff --git a/test/integration/targets/alternatives/templates/dummy_command b/test/integration/targets/alternatives/templates/dummy_command
deleted file mode 100644
index 332d9fe1a9..0000000000
--- a/test/integration/targets/alternatives/templates/dummy_command
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-echo dummy{{ item }}
diff --git a/test/integration/targets/alternatives/vars/Debian.yml b/test/integration/targets/alternatives/vars/Debian.yml
deleted file mode 100644
index 1e83283e4d..0000000000
--- a/test/integration/targets/alternatives/vars/Debian.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-alternatives_dir: /var/lib/dpkg/alternatives/
diff --git a/test/integration/targets/alternatives/vars/Suse-42.3.yml b/test/integration/targets/alternatives/vars/Suse-42.3.yml
deleted file mode 100644
index 37664ddb56..0000000000
--- a/test/integration/targets/alternatives/vars/Suse-42.3.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-alternatives_dir: /var/lib/rpm/alternatives/
diff --git a/test/integration/targets/alternatives/vars/default.yml b/test/integration/targets/alternatives/vars/default.yml
deleted file mode 100644
index d00123ded3..0000000000
--- a/test/integration/targets/alternatives/vars/default.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-alternatives_dir: /var/lib/alternatives/
diff --git a/test/integration/targets/apache2_module/aliases b/test/integration/targets/apache2_module/aliases
deleted file mode 100644
index 0725da563f..0000000000
--- a/test/integration/targets/apache2_module/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-destructive
-shippable/posix/group3
-skip/aix
diff --git a/test/integration/targets/apache2_module/meta/main.yml b/test/integration/targets/apache2_module/meta/main.yml
deleted file mode 100644
index 07faa21776..0000000000
--- a/test/integration/targets/apache2_module/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_tests
diff --git a/test/integration/targets/apache2_module/tasks/actualtest.yml b/test/integration/targets/apache2_module/tasks/actualtest.yml
deleted file mode 100644
index d780e92caa..0000000000
--- a/test/integration/targets/apache2_module/tasks/actualtest.yml
+++ /dev/null
@@ -1,231 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: install apache via apt
- apt:
- name: "{{item}}"
- state: present
- when: "ansible_os_family == 'Debian'"
- with_items:
- - apache2
- - libapache2-mod-evasive
-
-- name: install apache via zypper
- package:
- name: apache2
- state: present
- when: "ansible_os_family == 'Suse'"
-
-- name: disable userdir module
- apache2_module:
- name: userdir
- state: absent
- register: userdir_first_disable
-
-- name: disable userdir module, second run
- apache2_module:
- name: userdir
- state: absent
- register: disable
-
-- name: ensure apache2_module is idempotent
- assert:
- that:
- - disable is not changed
-
-- name: enable userdir module
- apache2_module:
- name: userdir
- state: present
- register: enable
-
-- name: ensure changed on successful enable
- assert:
- that:
- - enable is changed
-
-- name: enable userdir module, second run
- apache2_module:
- name: userdir
- state: present
- register: enabletwo
-
-- name: ensure apache2_module is idempotent
- assert:
- that:
- - 'not enabletwo.changed'
-
-- name: disable userdir module, final run
- apache2_module:
- name: userdir
- state: absent
- register: disablefinal
-
-- name: ensure changed on successful disable
- assert:
- that:
- - 'disablefinal.changed'
-
-- name: set userdir to original state
- apache2_module:
- name: userdir
- state: present
- when: userdir_first_disable is changed
-
-- name: ensure autoindex enabled
- apache2_module:
- name: autoindex
- state: present
-
-- name: Debian/Ubuntu specific tests
- when: "ansible_os_family == 'Debian'"
- block:
- - name: force disable of autoindex # bug #2499
- apache2_module:
- name: autoindex
- state: absent
- force: True
-
- - name: reenable autoindex
- apache2_module:
- name: autoindex
- state: present
-
- - name: enable evasive module, test https://github.com/ansible/ansible/issues/22635
- apache2_module:
- name: evasive
- state: present
-
- - name: disable evasive module
- apache2_module:
- name: evasive
- state: absent
-
- - name: use identifier to enable module, fix for https://github.com/ansible/ansible/issues/33669
- apache2_module:
- name: dump_io
- state: present
- ignore_errors: True
- register: enable_dumpio_wrong
-
- - name: disable dump_io
- apache2_module:
- name: dump_io
- identifier: dumpio_module
- state: absent
-
- - name: use identifier to enable module, fix for https://github.com/ansible/ansible/issues/33669
- apache2_module:
- name: dump_io
- identifier: dumpio_module
- state: present
- register: enable_dumpio_correct_1
-
- - name: ensure idempotency with identifier
- apache2_module:
- name: dump_io
- identifier: dumpio_module
- state: present
- register: enable_dumpio_correct_2
-
- - name: disable dump_io
- apache2_module:
- name: dump_io
- identifier: dumpio_module
- state: absent
-
- - assert:
- that:
- - enable_dumpio_wrong is failed
- - enable_dumpio_correct_1 is changed
- - enable_dumpio_correct_2 is not changed
-
- - name: disable mpm modules
- apache2_module:
- name: "{{ item }}"
- state: absent
- ignore_configcheck: True
- with_items:
- - mpm_worker
- - mpm_event
- - mpm_prefork
-
- - name: enabled mpm_event
- apache2_module:
- name: mpm_event
- state: present
- ignore_configcheck: True
- register: enabledmpmevent
-
- - name: ensure changed mpm_event
- assert:
- that:
- - 'enabledmpmevent.changed'
-
- - name: switch between mpm_event and mpm_worker
- apache2_module:
- name: "{{ item.name }}"
- state: "{{ item.state }}"
- ignore_configcheck: True
- with_items:
- - name: mpm_event
- state: absent
- - name: mpm_worker
- state: present
-
- - name: ensure mpm_worker is already enabled
- apache2_module:
- name: mpm_worker
- state: present
- register: enabledmpmworker
-
- - name: ensure mpm_worker unchanged
- assert:
- that:
- - 'not enabledmpmworker.changed'
-
- - name: try to disable all mpm modules with configcheck
- apache2_module:
- name: "{{item}}"
- state: absent
- with_items:
- - mpm_worker
- - mpm_event
- - mpm_prefork
- ignore_errors: yes
- register: remove_with_configcheck
-
- - name: ensure configcheck fails task with when run without mpm modules
- assert:
- that:
- - "{{ item.failed }}"
- with_items: "{{ remove_with_configcheck.results }}"
-
- - name: try to disable all mpm modules without configcheck
- apache2_module:
- name: "{{item}}"
- state: absent
- ignore_configcheck: True
- with_items:
- - mpm_worker
- - mpm_event
- - mpm_prefork
-
- - name: enabled mpm_event to restore previous state
- apache2_module:
- name: mpm_event
- state: present
- ignore_configcheck: True
- register: enabledmpmevent
diff --git a/test/integration/targets/apache2_module/tasks/main.yml b/test/integration/targets/apache2_module/tasks/main.yml
deleted file mode 100644
index d95c21243e..0000000000
--- a/test/integration/targets/apache2_module/tasks/main.yml
+++ /dev/null
@@ -1,21 +0,0 @@
----
-
-
-- name:
- block:
- - name: get list of enabled modules
- shell: apache2ctl -M | sort
- register: modules_before
- - name: include only on supported systems
- include: actualtest.yml
- always:
- - name: get list of enabled modules
- shell: apache2ctl -M | sort
- register: modules_after
- - debug: var=modules_before
- - debug: var=modules_after
- - name: ensure that all test modules are disabled again
- assert:
- that: modules_before.stdout == modules_after.stdout
- when: ansible_os_family in ['Debian', 'Suse']
- # centos/RHEL does not have a2enmod/a2dismod
diff --git a/test/integration/targets/archive/aliases b/test/integration/targets/archive/aliases
deleted file mode 100644
index db9bbd8c42..0000000000
--- a/test/integration/targets/archive/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-needs/root
-shippable/posix/group2
-destructive
-skip/aix
diff --git a/test/integration/targets/archive/files/bar.txt b/test/integration/targets/archive/files/bar.txt
deleted file mode 100644
index 5f34b0af07..0000000000
--- a/test/integration/targets/archive/files/bar.txt
+++ /dev/null
@@ -1 +0,0 @@
-bar.txt \ No newline at end of file
diff --git a/test/integration/targets/archive/files/empty.txt b/test/integration/targets/archive/files/empty.txt
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/archive/files/empty.txt
+++ /dev/null
diff --git a/test/integration/targets/archive/files/foo.txt b/test/integration/targets/archive/files/foo.txt
deleted file mode 100644
index 7c6ded14ec..0000000000
--- a/test/integration/targets/archive/files/foo.txt
+++ /dev/null
@@ -1 +0,0 @@
-foo.txt
diff --git a/test/integration/targets/archive/meta/main.yml b/test/integration/targets/archive/meta/main.yml
deleted file mode 100644
index 07faa21776..0000000000
--- a/test/integration/targets/archive/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_tests
diff --git a/test/integration/targets/archive/tasks/main.yml b/test/integration/targets/archive/tasks/main.yml
deleted file mode 100644
index 171cb91dcd..0000000000
--- a/test/integration/targets/archive/tasks/main.yml
+++ /dev/null
@@ -1,340 +0,0 @@
-# Test code for the archive module.
-# (c) 2017, Abhijeet Kasurde <akasurde@redhat.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-# Make sure we start fresh
-
-- name: Ensure zip is present to create test archive (yum)
- yum: name=zip state=latest
- when: ansible_pkg_mgr == 'yum'
-
-- name: Ensure zip is present to create test archive (apt)
- apt: name=zip state=latest
- when: ansible_pkg_mgr == 'apt'
-
-- name: Install prerequisites for backports.lzma when using python2 (non OSX)
- block:
- - name: Set liblzma package name depending on the OS
- set_fact:
- liblzma_dev_package:
- Debian: liblzma-dev
- RedHat: xz-devel
- Suse: xz-devel
- - name: Ensure liblzma-dev is present to install backports-lzma
- package: name={{ liblzma_dev_package[ansible_os_family] }} state=latest
- when: ansible_os_family in liblzma_dev_package.keys()
- when:
- - ansible_python_version.split('.')[0] == '2'
- - ansible_os_family != 'Darwin'
-
-- name: Install prerequisites for backports.lzma when using python2 (OSX)
- block:
- - name: Find brew binary
- command: which brew
- register: brew_which
- - name: Get owner of brew binary
- stat: path="{{ brew_which.stdout }}"
- register: brew_stat
- - name: "Install package"
- homebrew:
- name: xz
- state: present
- update_homebrew: no
- become: yes
- become_user: "{{ brew_stat.stat.pw_name }}"
- # Newer versions of brew want to compile a package which takes a long time. Do not upgrade homebrew until a
- # proper solution can be found
- environment:
- HOMEBREW_NO_AUTO_UPDATE: True
- when:
- - ansible_python_version.split('.')[0] == '2'
- - ansible_os_family == 'Darwin'
-
-- name: Ensure backports.lzma is present to create test archive (pip)
- pip: name=backports.lzma state=latest
- when: ansible_python_version.split('.')[0] == '2'
- register: backports_lzma_pip
-
-- name: prep our files
- copy: src={{ item }} dest={{output_dir}}/{{ item }}
- with_items:
- - foo.txt
- - bar.txt
- - empty.txt
-
-- name: archive using gz
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/archive_01.gz"
- format: gz
- register: archive_gz_result_01
-
-- debug: msg="{{ archive_gz_result_01 }}"
-
-- name: verify that the files archived
- file: path={{output_dir}}/archive_01.gz state=file
-
-- name: check if gz file exists and includes all text files
- assert:
- that:
- - "{{ archive_gz_result_01.changed }}"
- - "{{ 'archived' in archive_gz_result_01 }}"
- - "{{ archive_gz_result_01['archived'] | length }} == 3"
-
-- name: archive using zip
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/archive_01.zip"
- format: zip
- register: archive_zip_result_01
-
-- debug: msg="{{ archive_zip_result_01 }}"
-
-- name: verify that the files archived
- file: path={{output_dir}}/archive_01.zip state=file
-
-- name: check if zip file exists
- assert:
- that:
- - "{{ archive_zip_result_01.changed }}"
- - "{{ 'archived' in archive_zip_result_01 }}"
- - "{{ archive_zip_result_01['archived'] | length }} == 3"
-
-- name: archive using bz2
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/archive_01.bz2"
- format: bz2
- register: archive_bz2_result_01
-
-- debug: msg="{{ archive_bz2_result_01 }}"
-
-- name: verify that the files archived
- file: path={{output_dir}}/archive_01.bz2 state=file
-
-- name: check if bzip file exists
- assert:
- that:
- - "{{ archive_bz2_result_01.changed }}"
- - "{{ 'archived' in archive_bz2_result_01 }}"
- - "{{ archive_bz2_result_01['archived'] | length }} == 3"
-
-- name: archive using xz
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/archive_01.xz"
- format: xz
- register: archive_xz_result_01
-
-- debug: msg="{{ archive_xz_result_01 }}"
-
-- name: verify that the files archived
- file: path={{output_dir}}/archive_01.xz state=file
-
-- name: check if xz file exists
- assert:
- that:
- - "{{ archive_xz_result_01.changed }}"
- - "{{ 'archived' in archive_xz_result_01 }}"
- - "{{ archive_xz_result_01['archived'] | length }} == 3"
-
-- name: archive and set mode to 0600
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/archive_02.gz"
- format: gz
- mode: "u+rwX,g-rwx,o-rwx"
- register: archive_bz2_result_02
-
-- name: Test that the file modes were changed
- stat:
- path: "{{ output_dir }}/archive_02.gz"
- register: archive_02_gz_stat
-
-- debug: msg="{{ archive_02_gz_stat}}"
-
-- name: Test that the file modes were changed
- assert:
- that:
- - "archive_02_gz_stat.changed == False "
- - "archive_02_gz_stat.stat.mode == '0600'"
- - "'archived' in archive_bz2_result_02"
- - "{{ archive_bz2_result_02['archived']| length}} == 3"
-
-- name: remove our gz
- file: path="{{ output_dir }}/archive_02.gz" state=absent
-
-
-- name: archive and set mode to 0600
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/archive_02.zip"
- format: zip
- mode: "u+rwX,g-rwx,o-rwx"
- register: archive_zip_result_02
-
-- name: Test that the file modes were changed
- stat:
- path: "{{ output_dir }}/archive_02.zip"
- register: archive_02_zip_stat
-
-- name: Test that the file modes were changed
- assert:
- that:
- - "archive_02_zip_stat.changed == False"
- - "archive_02_zip_stat.stat.mode == '0600'"
- - "'archived' in archive_zip_result_02"
- - "{{ archive_zip_result_02['archived']| length}} == 3"
-
-- name: remove our zip
- file: path="{{ output_dir }}/archive_02.zip" state=absent
-
-
-- name: archive and set mode to 0600
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/archive_02.bz2"
- format: bz2
- mode: "u+rwX,g-rwx,o-rwx"
- register: archive_bz2_result_02
-
-- name: Test that the file modes were changed
- stat:
- path: "{{ output_dir }}/archive_02.bz2"
- register: archive_02_bz2_stat
-
-- name: Test that the file modes were changed
- assert:
- that:
- - "archive_02_bz2_stat.changed == False"
- - "archive_02_bz2_stat.stat.mode == '0600'"
- - "'archived' in archive_bz2_result_02"
- - "{{ archive_bz2_result_02['archived']| length}} == 3"
-
-- name: remove our bz2
- file: path="{{ output_dir }}/archive_02.bz2" state=absent
-
-- name: archive and set mode to 0600
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/archive_02.xz"
- format: xz
- mode: "u+rwX,g-rwx,o-rwx"
- register: archive_xz_result_02
-
-- name: Test that the file modes were changed
- stat:
- path: "{{ output_dir }}/archive_02.xz"
- register: archive_02_xz_stat
-
-- name: Test that the file modes were changed
- assert:
- that:
- - "archive_02_xz_stat.changed == False"
- - "archive_02_xz_stat.stat.mode == '0600'"
- - "'archived' in archive_xz_result_02"
- - "{{ archive_xz_result_02['archived']| length}} == 3"
-
-- name: remove our xz
- file: path="{{ output_dir }}/archive_02.xz" state=absent
-
-- name: test that gz archive that contains non-ascii filenames
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/test-archive-nonascii-くらとみ.tar.gz"
- format: gz
- register: nonascii_result_0
-
-- name: Check that file is really there
- stat:
- path: "{{ output_dir }}/test-archive-nonascii-くらとみ.tar.gz"
- register: nonascii_stat0
-
-- name: Assert that nonascii tests succeeded
- assert:
- that:
- - "nonascii_result_0.changed == true"
- - "nonascii_stat0.stat.exists == true"
-
-- name: remove nonascii test
- file: path="{{ output_dir }}/test-archive-nonascii-くらとみ.tar.gz" state=absent
-
-- name: test that bz2 archive that contains non-ascii filenames
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/test-archive-nonascii-くらとみ.bz2"
- format: bz2
- register: nonascii_result_1
-
-- name: Check that file is really there
- stat:
- path: "{{ output_dir }}/test-archive-nonascii-くらとみ.bz2"
- register: nonascii_stat_1
-
-- name: Assert that nonascii tests succeeded
- assert:
- that:
- - "nonascii_result_1.changed == true"
- - "nonascii_stat_1.stat.exists == true"
-
-- name: remove nonascii test
- file: path="{{ output_dir }}/test-archive-nonascii-くらとみ.bz2" state=absent
-
-- name: test that xz archive that contains non-ascii filenames
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/test-archive-nonascii-くらとみ.xz"
- format: xz
- register: nonascii_result_1
-
-- name: Check that file is really there
- stat:
- path: "{{ output_dir }}/test-archive-nonascii-くらとみ.xz"
- register: nonascii_stat_1
-
-- name: Assert that nonascii tests succeeded
- assert:
- that:
- - "nonascii_result_1.changed == true"
- - "nonascii_stat_1.stat.exists == true"
-
-- name: remove nonascii test
- file: path="{{ output_dir }}/test-archive-nonascii-くらとみ.xz" state=absent
-
-- name: test that zip archive that contains non-ascii filenames
- archive:
- path: "{{ output_dir }}/*.txt"
- dest: "{{ output_dir }}/test-archive-nonascii-くらとみ.zip"
- format: zip
- register: nonascii_result_2
-
-- name: Check that file is really there
- stat:
- path: "{{ output_dir }}/test-archive-nonascii-くらとみ.zip"
- register: nonascii_stat_2
-
-- name: Assert that nonascii tests succeeded
- assert:
- that:
- - "nonascii_result_2.changed == true"
- - "nonascii_stat_2.stat.exists == true"
-
-- name: remove nonascii test
- file: path="{{ output_dir }}/test-archive-nonascii-くらとみ.zip" state=absent
-
-- name: Remove backports.lzma if previously installed (pip)
- pip: name=backports.lzma state=absent
- when: backports_lzma_pip is changed
diff --git a/test/integration/targets/callback_log_plays/aliases b/test/integration/targets/callback_log_plays/aliases
deleted file mode 100644
index b59832142f..0000000000
--- a/test/integration/targets/callback_log_plays/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/posix/group3
diff --git a/test/integration/targets/callback_log_plays/ping_log.yml b/test/integration/targets/callback_log_plays/ping_log.yml
deleted file mode 100644
index 8015726ebb..0000000000
--- a/test/integration/targets/callback_log_plays/ping_log.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- hosts: localhost
- gather_facts: false
- tasks:
- - ping:
diff --git a/test/integration/targets/callback_log_plays/runme.sh b/test/integration/targets/callback_log_plays/runme.sh
deleted file mode 100755
index 059f8976ef..0000000000
--- a/test/integration/targets/callback_log_plays/runme.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-
-set -eux
-
-export ANSIBLE_CALLBACK_WHITELIST="log_plays,${ANSIBLE_CALLBACK_WHITELIST:-}"
-
-# run play, should create log and dir if needed
-export ANSIBLE_LOG_FOLDER="logit"
-ansible-playbook ping_log.yml -v "$@"
-[[ -f "${ANSIBLE_LOG_FOLDER}/localhost" ]]
-
-# now force it to fail
-export ANSIBLE_LOG_FOLDER="logit.file"
-touch "${ANSIBLE_LOG_FOLDER}"
-ansible-playbook ping_log.yml -v "$@" 2>&1| grep 'Failure using method (v2_runner_on_ok) in callback plugin'
-[[ ! -f "${ANSIBLE_LOG_FOLDER}/localhost" ]]
diff --git a/test/integration/targets/ce_is_is_instance/defaults/main.yaml b/test/integration/targets/ce_is_is_instance/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_is_is_instance/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_is_is_instance/meta/main.yml b/test/integration/targets/ce_is_is_instance/meta/main.yml
deleted file mode 100644
index 8b13789179..0000000000
--- a/test/integration/targets/ce_is_is_instance/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/test/integration/targets/ce_is_is_instance/tasks/main.yaml b/test/integration/targets/ce_is_is_instance/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_is_is_instance/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_is_is_instance/tasks/netconf.yaml b/test/integration/targets/ce_is_is_instance/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_is_is_instance/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_is_is_instance/tests/netconf/ce_is_is_instance.yaml b/test/integration/targets/ce_is_is_instance/tests/netconf/ce_is_is_instance.yaml
deleted file mode 100644
index d7c5a7c6e1..0000000000
--- a/test/integration/targets/ce_is_is_instance/tests/netconf/ce_is_is_instance.yaml
+++ /dev/null
@@ -1,85 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_instance merged integration tests on connection={{ ansible_connection }}"
-
-- block:
- - name: berfore merged, there should be no isis 100.
- ce_is_is_instance: &delete
- instance_id: 100
- state: absent
-
- - name: Merge the provided configuration with the exisiting running configuration
- ce_is_is_instance: &merged
- instance_id: 100
- vpn_name: '__public__'
- register: result
-
- - name: change ansible_connection to network_cli
- ce_netconf:
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId></instanceId>
- <vpnName></vpnName>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
- - "'<instanceId>100</instanceId>' in result_xml.end_state.result"
- - "'<vpnName>__public__</vpnName>' in result_xml.end_state.result"
-
- - name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_instance: *merged
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
- - name: delete the provided configuration with the exisiting running configuration
- ce_is_is_instance: *delete
- register: result
-
- - name: change ansible_connection to network_cli
- ce_netconf:
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId></instanceId>
- <vpnName></vpnName>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
- - "'<instanceId>100</instanceId>' not in result_xml.end_state.result"
- - "'<vpnName>__public__</vpnName>' not in result_xml.end_state.result"
-
- - name: delete the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_instance: *delete
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
-
-- debug:
- msg: "END ce_is_is_instance merged integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_interface/defaults/main.yaml b/test/integration/targets/ce_is_is_interface/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_is_is_interface/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_is_is_interface/meta/main.yml b/test/integration/targets/ce_is_is_interface/meta/main.yml
deleted file mode 100644
index 8b13789179..0000000000
--- a/test/integration/targets/ce_is_is_interface/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/test/integration/targets/ce_is_is_interface/tasks/main.yaml b/test/integration/targets/ce_is_is_interface/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_is_is_interface/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_is_is_interface/tasks/netconf.yaml b/test/integration/targets/ce_is_is_interface/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_is_is_interface/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_is_is_interface/tests/netconf/ce_is_is_interface.yaml b/test/integration/targets/ce_is_is_interface/tests/netconf/ce_is_is_interface.yaml
deleted file mode 100644
index 75afbbe899..0000000000
--- a/test/integration/targets/ce_is_is_interface/tests/netconf/ce_is_is_interface.yaml
+++ /dev/null
@@ -1,133 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_interface merged integration tests on connection={{ ansible_connection }}"
-
-- block:
-
- - name: Merge the provided configuration with the exisiting running configuration
- ce_is_is_interface: &delete
- instance_id: 100
- ifname: 10GE1/0/1
- leveltype: level_1
- level1dispriority: 10
- silentenable: true
- silentcost: true
- typep2penable: true
- snpacheck: true
- p2pnegotiationmode: 2_way
- p2ppeeripignore: true
- ppposicpcheckenable: true
- level2cost: 10
- state: absent
- register: result
-
- - name: Merge the provided configuration with the exisiting running configuration
- ce_is_is_interface: &merged
- instance_id: 100
- ifname: 10GE1/0/1
- leveltype: level_1
- level1dispriority: 10
- silentenable: true
- silentcost: true
- typep2penable: true
- snpacheck: true
- p2pnegotiationmode: 2_way
- p2ppeeripignore: true
- ppposicpcheckenable: true
- level2cost: 10
- register: result
-
- - name: use ce_netconf to get configuration
- ce_netconf:
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isCircuits>
- <isCircuit>
- </isCircuit>
- </isCircuits>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "'<ifName>10GE1/0/1</ifName>' in result_xml.end_state.result"
- - "'<circuitLevelType>level_1</circuitLevelType>' in result_xml.end_state.result"
- - "'<level1DisPriority>10</level1DisPriority>' in result_xml.end_state.result"
- - "'<level2DisPriority>10</level2DisPriority>' in result_xml.end_state.result"
- - "'<silentEnable>true</silentEnable>' in result_xml.end_state.result"
- - "'<silentCost>true</silentCost>' in result_xml.end_state.result"
- - "'<typeP2pEnable>true</typeP2pEnable>' in result_xml.end_state.result"
- - "'<snpaCheck>true</snpaCheck>' in result_xml.end_state.result"
- - "'<p2pNegotiationMode>2_way</p2pNegotiationMode>' in result_xml.end_state.result"
- - "'<p2pPeerIPIgnore>true</p2pPeerIPIgnore>' in result_xml.end_state.result"
- - "'<pPPOsicpCheckEnable>true</pPPOsicpCheckEnable>' in result_xml.end_state.result"
- - "'<level1Cost>10</level1Cost>' in result_xml.end_state.result"
- - "'<level2Cost>10</level2Cost>' in result_xml.end_state.result"
-
- - name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_interface: *merged
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
- - name: delete the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_interface: *delete
- register: result
-
- - name: use ce_netconf to get configuration
- ce_netconf:
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isCircuits>
- <isCircuit>
- </isCircuit>
- </isCircuits>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "'<ifName>10GE1/0/1</ifName>' not in result_xml.end_state.result"
- - "'<circuitLevelType>level_1</circuitLevelType>' not in result_xml.end_state.result"
- - "'<level1DisPriority>10</level1DisPriority>' not in result_xml.end_state.result"
- - "'<level2DisPriority>10</level2DisPriority>' not in result_xml.end_state.result"
- - "'<silentEnable>true</silentEnable>' not in result_xml.end_state.result"
- - "'<silentCost>true</silentCost>' not in result_xml.end_state.result"
- - "'<typeP2pEnable>true</typeP2pEnable>' not in result_xml.end_state.result"
- - "'<snpaCheck>true</snpaCheck>' not in result_xml.end_state.result"
- - "'<p2pNegotiationMode>2_way</p2pNegotiationMode>' not in result_xml.end_state.result"
- - "'<p2pPeerIPIgnore>true</p2pPeerIPIgnore>' not in result_xml.end_state.result"
- - "'<pPPOsicpCheckEnable>true</pPPOsicpCheckEnable>' not in result_xml.end_state.result"
- - "'<level1Cost>10</level1Cost>' not in result_xml.end_state.result"
- - "'<level2Cost>10</level2Cost>' not in result_xml.end_state.result"
-
- - name: delete the provided configuration with the existing running configuration (REPEAT)
- ce_is_is_interface: *delete
- register: result
-
- - name: Assert that the previous task was REPEAT
- assert:
- that:
- - "result['changed'] == false"
-
-- debug:
- msg: "END ce_is_is_interface merged integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/defaults/main.yaml b/test/integration/targets/ce_is_is_view/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_is_is_view/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_is_is_view/tasks/main.yaml b/test/integration/targets/ce_is_is_view/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_is_is_view/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_is_is_view/tasks/netconf.yaml b/test/integration/targets/ce_is_is_view/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_is_is_view/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/cleanup.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/cleanup.yaml
deleted file mode 100644
index 03c0f0ee94..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/cleanup.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
----
-- debug:
- msg: "CLEANUP ce_is_is_view, deleted integration tests on connection={{ ansible_connection }}"
-
-- name: Get lacp config by ce_netconf.
- ce_netconf:
- rpc: get
- cfg_xml: "<config>
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite operation=\"delete\">
- <instanceId>100</instanceId>
- <vpnName>_public_</vpnName>
- <description>ISIS</description>
- </isSite>
- </isSites>
- </isiscomm>
- </config>"
-
-- debug:
- msg: "END CLEANUP ce_is_is_view, deleted integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/setup.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/setup.yaml
deleted file mode 100644
index 92ec370c28..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/setup.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- debug:
- msg: "SETUP ce_is_is_view integration tests on connection={{ ansible_connection }}"
-# create ISIS 100
-
-- name: Get lacp config by ce_netconf.
- ce_netconf:
- rpc: get
- cfg_xml: "<config>
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite operation=\"merg\">
- <instanceId>100</instanceId>
- <vpnName>_public_</vpnName>
- <description>ISIS</description>
- </isSite>
- </isSites>
- </isiscomm>
- </config>"
-
-- debug:
- msg: "END SETUP ce_is_is_view integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_is_is_view_entity .yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_is_is_view_entity .yaml
deleted file mode 100644
index 1c81c2ca7b..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_is_is_view_entity .yaml
+++ /dev/null
@@ -1,78 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view entity presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- netentity: isis_net_entity
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isNetEntitys>
- <isNetEntity>
- <netEntity></netEntity>
- </isNetEntity>
- </isNetEntitys>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<instanceId>100</instanceId>' in result_xml.end_state.result"
- - "'<netEntity>isis_net_entity</netEntity>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- netentity: isis_net_entity
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<instanceId>100</instanceId>' not in result_xml.end_state.result"
- - "''<netEntity>isis_net_entity</netEntity>' not in result_xml.end_state.result"
- # after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view pentity resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_bfd.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_bfd.yaml
deleted file mode 100644
index 6aa200f6e8..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_bfd.yaml
+++ /dev/null
@@ -1,92 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view EXPORTROUTE route policy presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- bfd_min_rx: 100
- bfd_min_tx: 100
- bfd_multiplier_num: 10
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <bfdMinRx></bfdMinRx>
- <bfdMinTx></bfdMinTx>
- <bfdMultNum></bfdMultNum>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<bfdMinRx>100</bfdMinRx>' in result_xml.end_state.result"
- - "'<bfdMinTx>100</bfdMinTx>' in result_xml.end_state.result"
- - "'<bfdMultNum>10</bfdMultNum>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- defaultmode: always
- cost: 10
- mode_tag: 10
- level_type: level_1
- avoid_learning: true
- mode_routepolicyname: routepolicy_name
- tag: 100
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<bfdMinRx>100</bfdMinRx>' not in result_xml.end_state.result"
- - "'<bfdMinTx>100</bfdMinTx>' not in result_xml.end_state.result"
- - "'<bfdMultNum>10</bfdMultNum>' not in result_xml.end_state.result"
-# after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view EXPORTROUTE route policy resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_export.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_export.yaml
deleted file mode 100644
index f83a07c2cf..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_export.yaml
+++ /dev/null
@@ -1,96 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view EXPORTROUTE route policy presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- export_protocol: ospf
- export_policytype: aclNumOrName
- export_processid: 100
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <isFilterExports>
- <isFilterExport>
- <protocol></protocol>
- <processId></processId>
- <policyType></policyType>
- </isFilterExport>
- </isFilterExports>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<protocol>ospf</protocol>' in result_xml.end_state.result"
- - "'<processId>100</processId>' in result_xml.end_state.result"
- - "'<policyType>level_1</policyType>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- defaultmode: always
- cost: 10
- mode_tag: 10
- level_type: level_1
- avoid_learning: true
- mode_routepolicyname: routepolicy_name
- tag: 100
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<protocol>ospf</protocol>' not in result_xml.end_state.result"
- - "'<processId>100</processId>' not in result_xml.end_state.result"
- - "'<policyType>level_1</policyType>' in result_xml.end_state.result"
-# after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view EXPORTROUTE route policy resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_import.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_import.yaml
deleted file mode 100644
index c5b4e60df4..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_import.yaml
+++ /dev/null
@@ -1,124 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view import route policy presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- protocol: ospf
- processid: 100
- cost_type: external
- import_cost: 10
- import_tag: 10
- import_route_policy: routepolicy_name
- impotr_leveltype: level_1
- inheritcost: true
- permitibgp: true
- tag: 100
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <isImportRoutes>
- <isImportRoute>
- <protocol></protocol>
- <processId></processId>
- <costType></costType>
- <cost></cost>
- <tag></tag>
- <policyType></policyType>
- <routePolicyName></routePolicyName>
- <levelType></levelType>
- <inheritCost></inheritCost>
- <permitIbgp></permitIbgp>
- </isImportRoute>
- </isImportRoutes>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<protocol>ospf</protocol>' in result_xml.end_state.result"
- - "'<processId>100</processId>' in result_xml.end_state.result"
- - "'<costType>external</costType>' in result_xml.end_state.result"
- - "'<cost>10</cost>' in result_xml.end_state.result"
- - "'<tag>10</tag>' in result_xml.end_state.result"
- - "'<policyType>level_1</policyType>' in result_xml.end_state.result"
- - "'<routePolicyName>routepolicy_name</routePolicyName>' in result_xml.end_state.result"
- - "'<levelType>level_1</levelType>' in result_xml.end_state.result"
- - "'<inheritCost>true</inheritCost>' in result_xml.end_state.result"
- - "'<permitIbgp>true</permitIbgp>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- defaultmode: always
- cost: 10
- mode_tag: 10
- level_type: level_1
- avoid_learning: true
- mode_routepolicyname: routepolicy_name
- tag: 100
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<protocol>ospf</protocol>' not in result_xml.end_state.result"
- - "'<processId>100</processId>' not in result_xml.end_state.result"
- - "'<costType>external</costType>' not in result_xml.end_state.result"
- - "'<cost>10</cost>' not in result_xml.end_state.result"
- - "'<tag>10</tag>' not in result_xml.end_state.result"
- - "'<policyType>level_1</policyType>' not in result_xml.end_state.result"
- - "'<routePolicyName>routepolicy_name</routePolicyName>' not in result_xml.end_state.result"
- - "'<levelType>level_1</levelType>' not in result_xml.end_state.result"
- - "'<inheritCost>true</inheritCost>' not in result_xml.end_state.result"
- - "'<permitIbgp>true</permitIbgp>' not in result_xml.end_state.result"
-# after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view import route policy resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_l1tol2.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_l1tol2.yaml
deleted file mode 100644
index f12b5034bf..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_l1tol2.yaml
+++ /dev/null
@@ -1,109 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view import route policy presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- allow_filter: true
- allow_up_down: true
- ip_prefix_name: prefix_name
- aclnum_or_name: 3001
- penetration_direct: level1-level2
- import_routepolicy_name: routepolicy_name
- tag: 100
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <isLeakRouteLevel2ToLevel1s>
- <isLeakRouteLevel2ToLevel1>
- <tag></tag>
- <routePolicyName></routePolicyName>
- <aclNumOrName></aclNumOrName>
- <ipPrefix></ipPrefix>
- <allowFilter></allowFilter>
- <allowUpdown></allowUpdown>
- </isLeakRouteLevel2ToLevel1>
- </isLeakRouteLevel2ToLevel1s>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<tag>100</tag>' in result_xml.end_state.result"
- - "'<routePolicyName>routepolicy_name</routePolicyName>' in result_xml.end_state.result"
- - "'<allowUpdown>true</allowUpdown>' in result_xml.end_state.result"
- - "'<aclNumOrName>3001</aclNumOrName>' in result_xml.end_state.result"
- - "'<ipPrefix>prefix_name</ipPrefix>' in result_xml.end_state.result"
- - "'<allowFilter>true</allowFilter>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- allow_filter: true
- allow_up_down: true
- ip_prefix_name: prefix_name
- aclnum_or_name: 3001
- penetration_direct: level1-level2
- import_routepolicy_name: routepolicy_name
- tag: 100
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<tag>100</tag>' in result_xml.end_state.result"
- - "'<routePolicyName>routepolicy_name</routePolicyName>' not in result_xml.end_state.result"
- - "'<allowUpdown>true</allowUpdown>' not in result_xml.end_state.result"
- - "'<aclNumOrName>3001</aclNumOrName>' not in result_xml.end_state.result"
- - "'<ipPrefix>prefix_name</ipPrefix>' not in result_xml.end_state.result"
- - "'<allowFilter>true</allowFilter>' not in result_xml.end_state.result"
- # after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view import route policy resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_l2tol1.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_l2tol1.yaml
deleted file mode 100644
index 3af5111fb4..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_l2tol1.yaml
+++ /dev/null
@@ -1,109 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view import route policy presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- penetration_direct: level2-level1
- allow_filter: true
- allow_up_down: true
- ip_prefix_name: prefix_name
- aclnum_or_name: 3001
- import_routepolicy_name: routepolicy_name
- tag: 100
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <isLeakRouteLevel2ToLevel1s>
- <isLeakRouteLevel1ToLevel2s>
- <tag></tag>
- <routePolicyName></routePolicyName>
- <aclNumOrName></aclNumOrName>
- <ipPrefix></ipPrefix>
- <allowFilter></allowFilter>
- <allowUpdown></allowUpdown>
- </isLeakRouteLevel1ToLevel2s>
- </isLeakRouteLevel2ToLevel1s>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<tag>100</tag>' in result_xml.end_state.result"
- - "'<routePolicyName>routepolicy_name</routePolicyName>' in result_xml.end_state.result"
- - "'<allowUpdown>true</allowUpdown>' in result_xml.end_state.result"
- - "'<aclNumOrName>3001</aclNumOrName>' in result_xml.end_state.result"
- - "'<ipPrefix>prefix_name</ipPrefix>' in result_xml.end_state.result"
- - "'<allowFilter>true</allowFilter>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- penetration_direct: level2-level1
- allow_filter: true
- allow_up_down: true
- ip_prefix_name: prefix_name
- aclnum_or_name: 3001
- import_routepolicy_name: routepolicy_name
- tag: 100
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<tag>100</tag>' in result_xml.end_state.result"
- - "'<routePolicyName>routepolicy_name</routePolicyName>' not in result_xml.end_state.result"
- - "'<allowUpdown>true</allowUpdown>' not in result_xml.end_state.result"
- - "'<aclNumOrName>3001</aclNumOrName>' not in result_xml.end_state.result"
- - "'<ipPrefix>prefix_name</ipPrefix>' not in result_xml.end_state.result"
- - "'<allowFilter>true</allowFilter>' not in result_xml.end_state.result"
- # after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view import route policy resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_max_load.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_max_load.yaml
deleted file mode 100644
index 0629d3415c..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_max_load.yaml
+++ /dev/null
@@ -1,80 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view maxLoadBalancing presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- max_load: 30
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <maxLoadBalancing></maxLoadBalancing>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<instanceId>100</instanceId>' in result_xml.end_state.result"
- - "'<maxLoadBalancing>30</maxLoadBalancing>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- max_load: 30
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<instanceId>100</instanceId>' not in result_xml.end_state.result"
- - "'<maxLoadBalancing>30</maxLoadBalancing>' not in result_xml.end_state.result"
- # after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view maxLoadBalancing resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_preferences.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_preferences.yaml
deleted file mode 100644
index 97d232feca..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_preferences.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view preferences presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- preference_value: 100
- route_policy_name: route
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <isPreferences>
- <isPreference>
- <preferenceValue></preferenceValue>
- <routePolicyName></routePolicyName>
- </isPreference>
- </isPreferences>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<instanceId>100</instanceId>' in result_xml.end_state.result"
- - "'<preferenceValue>100</preferenceValue>' in result_xml.end_state.result"
- - "'<routePolicyName>route</routePolicyName>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- preference_value: 100
- route_policy_name: route
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<instanceId>100</instanceId>' not in result_xml.end_state.result"
- - "''<preferenceValue>100</preferenceValue>' not in result_xml.end_state.result"
- - "''<routePolicyName>route</routePolicyName>' not in result_xml.end_state.result"
- # after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view Preference resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_view_basic.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_view_basic.yaml
deleted file mode 100644
index ca95d0e059..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_isis_view_basic.yaml
+++ /dev/null
@@ -1,115 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- description: ISIS
- islevel: level_1
- coststyle: narrow
- relaxSpfLimit: true
- stdlevel1cost: 60
- stdlevel2cost: 60
- stdbandwidth: 100
- autocostenable: true
- autocostenablecompatible: true
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <description></description>
- <isLevel></isLevel>
- <costStyle></costStyle>
- <relaxSpfLimit></relaxSpfLimit>
- <stdLevel1Cost></stdLevel1Cost>
- <stdLevel2Cost></stdLevel2Cost>
- <stdbandwidth></stdbandwidth>
- <stdAutoCostEnable></stdAutoCostEnable>
- <stdAutoCostEnableCompatible></stdAutoCostEnableCompatible>
- </isSite>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<instanceId>100</instanceId>' in result_xml.end_state.result"
- - "'<vpnName>_public_</vpnName>' in result_xml.end_state.result"
- - "'<description>ISIS</description>' in result_xml.end_state.result"
- - "'<isLevel>level_1</isLevel>' in result_xml.end_state.result"
- - "'<costStyle>narrow</costStyle>' in result_xml.end_state.result"
- - "'<relaxSpfLimit>true</relaxSpfLimit>' in result_xml.end_state.result"
- - "'<stdLevel1Cost>60</stdLevel1Cost>' in result_xml.end_state.result"
- - "'<stdLevel2Cost>60</stdLevel2Cost>' in result_xml.end_state.result"
- - "'<stdbandwidth>100</stdbandwidth>' in result_xml.end_state.result"
- - "'<stdAutoCostEnable>true</stdAutoCostEnable>' in result_xml.end_state.result"
- - "'<stdAutoCostEnableCompatible>true</stdAutoCostEnableCompatible>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- description: ISIS
- islevel: level_1
- coststyle: narrow
- relaxSpfLimit: true
- stdlevel1cost: 60
- stdlevel2cost: 60
- stdbandwidth: 100
- autocostenable: true
- autocostenablecompatible: true
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<instanceId>100</instanceId>' not in result_xml.end_state.result"
- - "'<vpnName>_public_</vpnName>' not in result_xml.end_state.result"
- - "'<description>ISIS</description>' not in result_xml.end_state.result"
- - "'<isLevel>level_1</isLevel>' not in result_xml.end_state.result"
- - "'<costStyle>narrow</costStyle>' not in result_xml.end_state.result"
- - "'<relaxSpfLimit>true</relaxSpfLimit>' not in result_xml.end_state.result"
- - "'<stdLevel1Cost>60</stdLevel1Cost>' not in result_xml.end_state.result"
- - "'<stdLevel2Cost>60</stdLevel2Cost>' not in result_xml.end_state.result"
- - "'<stdbandwidth>100</stdbandwidth>' not in result_xml.end_state.result"
- - "'<stdAutoCostEnable>true</stdAutoCostEnable>' not in result_xml.end_state.result"
- - "'<stdAutoCostEnableCompatible>true</stdAutoCostEnableCompatible>' not in result_xml.end_state.result"
-# after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view presentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_issi_default.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_issi_default.yaml
deleted file mode 100644
index 1059054dce..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_ce_issi_default.yaml
+++ /dev/null
@@ -1,111 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view import route policy presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- defaultmode: always
- cost: 10
- mode_tag: 10
- level_type: level_1
- avoid_learning: true
- mode_routepolicyname: routepolicy_name
- tag: 100
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <isDefaultRoutes>
- <isDefaultRoute>
- <defaultMode></defaultMode>
- <routePolicyName></routePolicyName>
- <cost></cost>
- <tag></tag>
- <levelType></levelType>
- <avoidLearning></avoidLearning>
- </isDefaultRoute>
- </isDefaultRoutes>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<tag>100</tag>' in result_xml.end_state.result"
- - "'<defaultMode>always</defaultMode>' in result_xml.end_state.result"
- - "'<routePolicyName>routepolicy_name</routePolicyName>' in result_xml.end_state.result"
- - "'<cost>10</cost>' in result_xml.end_state.result"
- - "'<tag>10</tag>' in result_xml.end_state.result"
- - "'<levelType>level_1</levelType>' in result_xml.end_state.result"
- - "'<avoidLearning>true</avoidLearning>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- defaultmode: always
- cost: 10
- mode_tag: 10
- level_type: level_1
- avoid_learning: true
- mode_routepolicyname: routepolicy_name
- tag: 100
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<tag>100</tag>' not in result_xml.end_state.result"
- - "'<defaultMode>always</defaultMode>' not in result_xml.end_state.result"
- - "'<routePolicyName>routepolicy_name</routePolicyName>' not in result_xml.end_state.result"
- - "'<cost>10</cost>' not in result_xml.end_state.result"
- - "'<tag>10</tag>' not in result_xml.end_state.result"
- - "'<levelType>level_1</levelType>' not in result_xml.end_state.result"
- - "'<avoidLearning>true</avoidLearning>' not in result_xml.end_state.result"
-# after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view import route policy resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_isis_filter_import.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_isis_filter_import.yaml
deleted file mode 100644
index 7a97d982d6..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_isis_filter_import.yaml
+++ /dev/null
@@ -1,97 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view EXPORTROUTE route policy presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- import_aclnumorname: 301
- import_ipprefix: ipprefix
- import_routepolicyname: routepolicyname
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <isFilterImports>
- <isFilterImport>
- <aclNumOrName></aclNumOrName>
- <ipPrefix></ipPrefix>
- <routePolicyName></routePolicyName>
- </isFilterImport>
- </isFilterImports>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<aclNumOrName>3001</aclNumOrName>' in result_xml.end_state.result"
- - "'<ipPrefix>ipprefix</ipPrefix>' in result_xml.end_state.result"
- - "'<routePolicyName>routepolicyname</routePolicyName>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- defaultmode: always
- cost: 10
- mode_tag: 10
- level_type: level_1
- avoid_learning: true
- mode_routepolicyname: routepolicy_name
- tag: 100
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<aclNumOrName>3001</aclNumOrName>' not in result_xml.end_state.result"
- - "'<ipPrefix>ipprefix</ipPrefix>' not in result_xml.end_state.result"
- - "'<routePolicyName>routepolicyname</routePolicyName>' not in result_xml.end_state.result"
-
-# after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view EXPORTROUTE route policy resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_is_is_view/tests/netconf/test_isis_next_hop.yaml b/test/integration/targets/ce_is_is_view/tests/netconf/test_isis_next_hop.yaml
deleted file mode 100644
index f18eeaf844..0000000000
--- a/test/integration/targets/ce_is_is_view/tests/netconf/test_isis_next_hop.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
----
-- debug:
- msg: "START ce_is_is_view next hop presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: setup.yaml
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &present
- instance_id: 100
- ip_address: 1.1.1.1
- weight: 100
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <isiscomm xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <isNextHopWeights>
- <isNextHopWeight>
- <ipAddress></ipAddress>
- <weight></weight>
- </isNextHopWeight>
- </isNextHopWeights>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<ipAddress>1.1.1.1</ipAddress>' in result_xml.end_state.result"
- - "'<weight>100</weight>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_is_is_view: &absent
- instance_id: 100
- ip_address: 1.1.1.1
- weight: 100
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_is_is_view: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<ipAddress>1.1.1.1</ipAddress>' not in result_xml.end_state.result"
- - "'<weight>100</weight>' not in result_xml.end_state.result"
- # after present, isis 100 should be deleted
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_is_is_view next hop resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_lacp/defaults/main.yaml b/test/integration/targets/ce_lacp/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_lacp/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_lacp/tasks/main.yaml b/test/integration/targets/ce_lacp/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_lacp/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_lacp/tasks/netconf.yaml b/test/integration/targets/ce_lacp/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_lacp/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_lacp/tests/netconf/absent.yaml b/test/integration/targets/ce_lacp/tests/netconf/absent.yaml
deleted file mode 100644
index 2c32e574d4..0000000000
--- a/test/integration/targets/ce_lacp/tests/netconf/absent.yaml
+++ /dev/null
@@ -1,95 +0,0 @@
----
-- debug:
- msg: "START ce_lacp merged integration tests on connection={{ ansible_connection }}"
-# befor removing, it should be merged
-- include_tasks: merge.yaml
-
-- name: Merge the provided configuration with the exisiting running configuration
- ce_lacp: &absent
- mode: Dynamic
- trunk_id: 10
- preempt_enable: True
- state_flapping: True
- port_id_extension_enable: True
- unexpected_mac_disable: True
- system_id: 1111-2222-3333
- timeout_type: Fast
- fast_timeout: 12
- mixed_rate_link_enable: True
- preempt_delay: 12
- collector_delay: 12
- max_active_linknumber: 2
- select: Prority
- priority: 23
- global_priority: 123
- state: absent
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get lacp config by ce_netconf.
- ce_netconf:
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <ifmtrunk xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <TrunkIfs>
- <TrunkIf>
- <ifName>Eth-Trunk10</ifName>
- <lacpTrunk>
- <isSupportPrmpt></isSupportPrmpt>
- <rcvTimeoutType></rcvTimeoutType>
- <fastTimeoutUserDefinedValue></fastTimeoutUserDefinedValue>
- <selectPortStd></selectPortStd>
- <promptDelay></promptDelay>
- <maxActiveNum></maxActiveNum>
- <collectMaxDelay></collectMaxDelay>
- <mixRateEnable></mixRateEnable>
- <dampStaFlapEn></dampStaFlapEn>
- <dampUnexpMacEn></dampUnexpMacEn>
- <trunkSysMac></trunkSysMac>
- <trunkPortIdExt></trunkPortIdExt>
- </lacpTrunk>
- </TrunkIf>
- </TrunkIfs>
- </ifmtrunk>
- </filter>"
- register: result_ifs_merged
-
-- name: Get lacp config by ce_netconf.
- ce_netconf:
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <ifmtrunk xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <lacpSysInfo>
- <priority></priority>
- </lacpSysInfo>
- </ifmtrunk>
- </filter>"
- register: result_global_merged
-
-
-- name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_lacp: *absent
- register: result_re_merged
-
-- name: Assert that the previous task was idempotent, some become ot default values, others depend on devices.
- assert:
- that:
- - "result_re_merged.changed == false"
- - "'<isSupportPrmpt>false</isSupportPrmpt>' == result_ifs_merged.end_state.result"
- - "'<rcvTimeoutType>Slow</rcvTimeoutType>' == result_ifs_merged.end_state.result"
- - "'<fastTimeoutUserDefinedValue>90</fastTimeoutUserDefinedValue>' == result_ifs_merged.end_state.result"
- - "'<selectPortStd>Prority</selectPortStd>' == result_ifs_merged.end_state.result"
- - "'<promptDelay>30</promptDelay>' == result_ifs_merged.end_state.result"
- - "'<collectMaxDelay>0</collectMaxDelay>' in result_ifs_merged.end_state.result"
- - "'<mixRateEnable>false</mixRateEnable>' in result_ifs_merged.end_state.result"
- - "'<dampStaFlapEn>false</dampStaFlapEn>' in result_ifs_merged.end_state.result"
- - "'<dampUnexpMacEn>false</dampUnexpMacEn>' in result_ifs_merged.end_state.result"
- - "'<trunkSysMac>false</trunkSysMac>' in result_ifs_merged.end_state.result"
- - "'<priority>32768</priority>' in result_global_merged.end_state.result"
-
-- debug:
- msg: "END ce_lacp merged integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_lacp/tests/netconf/delete.yaml b/test/integration/targets/ce_lacp/tests/netconf/delete.yaml
deleted file mode 100644
index a3ce81723a..0000000000
--- a/test/integration/targets/ce_lacp/tests/netconf/delete.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-- debug:
- msg: "START ce_lacp deleted integration tests on connection={{ ansible_connection }}"
-
-- name: Merge the provided configuration with the exisiting running configuration
- ce_lacp:
- mode: Dynamic
- trunk_id: 10
- preempt_enable: True
- state_flapping: True
- port_id_extension_enable: True
- unexpected_mac_disable: True
- system_id: 1111-2222-3333
- timeout_type: Fast
- fast_timeout: 12
- mixed_rate_link_enable: True
- preempt_delay: 12
- collector_delay: 12
- max_active_linknumber: 2
- select: Prority
- priority: 23
- global_priority: 123
- state: absent
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- debug:
- msg: "END ce_lacp deleted integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_lacp/tests/netconf/merge.yaml b/test/integration/targets/ce_lacp/tests/netconf/merge.yaml
deleted file mode 100644
index eef3956eeb..0000000000
--- a/test/integration/targets/ce_lacp/tests/netconf/merge.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
----
-- debug:
- msg: "START ce_lacp merged integration tests on connection={{ ansible_connection }}"
-
-- name: Merge the provided configuration with the exisiting running configuration
- ce_lacp:
- mode: Dynamic
- trunk_id: 10
- preempt_enable: True
- state_flapping: True
- port_id_extension_enable: True
- unexpected_mac_disable: True
- system_id: 1111-2222-3333
- timeout_type: Fast
- fast_timeout: 12
- mixed_rate_link_enable: True
- preempt_delay: 12
- collector_delay: 12
- max_active_linknumber: 2
- select: Prority
- priority: 23
- global_priority: 123
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- debug:
- msg: "END ce_lacp merged integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_lacp/tests/netconf/present.yaml b/test/integration/targets/ce_lacp/tests/netconf/present.yaml
deleted file mode 100644
index ee696c9e1c..0000000000
--- a/test/integration/targets/ce_lacp/tests/netconf/present.yaml
+++ /dev/null
@@ -1,103 +0,0 @@
----
-- debug:
- msg: "START ce_lacp presented integration tests on connection={{ ansible_connection }}"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_lacp: &present
- mode: Dynamic
- trunk_id: 10
- preempt_enable: True
- state_flapping: True
- port_id_extension_enable: True
- unexpected_mac_disable: True
- system_id: 1111-2222-3333
- timeout_type: Fast
- fast_timeout: 12
- mixed_rate_link_enable: True
- preempt_delay: 12
- collector_delay: 12
- max_active_linknumber: 2
- select: Prority
- priority: 23
- global_priority: 123
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get lacp config by ce_netconf.
- ce_netconf:
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <ifmtrunk xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <TrunkIfs>
- <TrunkIf>
- <ifName>Eth-Trunk10</ifName>
- <workMode></workMode>
- <lacpTrunk>
- <isSupportPrmpt></isSupportPrmpt>
- <rcvTimeoutType></rcvTimeoutType>
- <fastTimeoutUserDefinedValue></fastTimeoutUserDefinedValue>
- <selectPortStd></selectPortStd>
- <promptDelay></promptDelay>
- <maxActiveNum></maxActiveNum>
- <collectMaxDelay></collectMaxDelay>
- <mixRateEnable></mixRateEnable>
- <dampStaFlapEn></dampStaFlapEn>
- <dampUnexpMacEn></dampUnexpMacEn>
- <trunkSysMac></trunkSysMac>
- <trunkPortIdExt></trunkPortIdExt>
- </lacpTrunk>
- </TrunkIf>
- </TrunkIfs>
- </ifmtrunk>
- </filter>"
- register: result_ifs_presentd
-
-- name: Get global lacp config by ce_netconf.
- ce_netconf:
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <ifmtrunk xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <lacpSysInfo>
- <priority></priority>
- <lacpMlagGlobal>
- <lacpMlagPriority></lacpMlagPriority>
- <lacpMlagSysId></lacpMlagSysId>
- </lacpMlagGlobal>
- </lacpSysInfo>
- </ifmtrunk>
- </filter>"
- register: result_global_presentd
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_lacp: *present
- register: result_re_presentd
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "result_re_presentd.changed == false"
- - "'<workMode>Dynamic</workMode>' == result_ifs_presentd.end_state.result"
- - "'<isSupportPrmpt>true</isSupportPrmpt>' == result_ifs_presentd.end_state.result"
- - "'<rcvTimeoutType>Fast</rcvTimeoutType>' == result_ifs_presentd.end_state.result"
- - "'<fastTimeoutUserDefinedValue>12</fastTimeoutUserDefinedValue>' == result_ifs_presentd.end_state.result"
- - "'<selectPortStd>Prority</selectPortStd>' == result_ifs_presentd.end_state.result"
- - "'<promptDelay>12</promptDelay>' == result_ifs_presentd.end_state.result"
- - "'<maxActiveNum>2</maxActiveNum>' == result_ifs_presentd.end_state.result"
- - "'<collectMaxDelay>12</collectMaxDelay>' in result_ifs_presentd.end_state.result"
- - "'<mixRateEnable>true</mixRateEnable>' in result_ifs_presentd.end_state.result"
- - "'<dampStaFlapEn>true</dampStaFlapEn>' in result_ifs_presentd.end_state.result"
- - "'<dampUnexpMacEn>true</dampUnexpMacEn>' in result_ifs_presentd.end_state.result"
- - "'<trunkSysMac>true</trunkSysMac>' in result_ifs_presentd.end_state.result"
- - "'<trunkPortIdExt>true</trunkPortIdExt>' in result_ifs_presentd.end_state.result"
- - "'<lacpMlagSysId>1111-2222-3333</lacpMlagSysId>' in result_global_presentd.end_state.result"
- - "'<priority>123</priority>' in result_global_presentd.end_state.result"
-
-# after present, it should be deleted
-- include_tasks: delete.yaml
-- debug:
- msg: "END ce_lacp presentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_lldp/defaults/main.yaml b/test/integration/targets/ce_lldp/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_lldp/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_lldp/meta/main.yml b/test/integration/targets/ce_lldp/meta/main.yml
deleted file mode 100644
index 8b13789179..0000000000
--- a/test/integration/targets/ce_lldp/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/test/integration/targets/ce_lldp/tasks/main.yaml b/test/integration/targets/ce_lldp/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_lldp/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_lldp/tasks/netconf.yaml b/test/integration/targets/ce_lldp/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_lldp/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_lldp/tests/netconf/absent.yaml b/test/integration/targets/ce_lldp/tests/netconf/absent.yaml
deleted file mode 100644
index 1a14890677..0000000000
--- a/test/integration/targets/ce_lldp/tests/netconf/absent.yaml
+++ /dev/null
@@ -1,108 +0,0 @@
----
-- debug:
- msg: "START ce_lldp absent integration tests on connection={{ ansible_connection }}"
-
-- block:
-
- - name: present the provided configuration befor absent
- ce_lldp:
- lldpenable: enabled
- mdnstatus: rxOnly
- interval: 35
- hold_multiplier: 5
- restart_delay: 3
- transmit_delay: 5
- notification_interval: 6
- fast_count: 5
- mdn_notification_interval: 10.1.1.1
- management_address: 10.10.10.1
- bind_name: vlanif100
- register: result
-
- - name: change ansible_connection to network_cli
- set_fact:
- ansible_connection: network_cli
-
- - name: display lldp
- ce_command:
- commands:
- - display current-configuration | include lldp
- register: result_display
-
- - name: change ansible_connection to netconf
- set_fact:
- ansible_connection: netconf
-
-# There should be some configuration(LLDP) on host befor absent
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "'lldp enable' in result_display.stdout[0]"
- - "'undo lldp mdn disable' in result_display.stdout[0]"
- - "'lldp transmit interval 35' in result_display.stdout[0]"
- - "'lldp transmit multiplier 5' in result_display.stdout[0]"
- - "'lldp restart 3' in result_display.stdout[0]"
- - "'lldp transmit delay 5' in result_display.stdout[0]"
- - "'lldp fast-count 5' in result_display.stdout[0]"
- - "'lldp management-address 10.10.10.1' in result_display.stdout[0]"
- - "'lldp mdn trap-interval 6' in result_display.stdout[0]"
- - "'lldp trap-interval 6' in result_display.stdout[0]"
- - "'lldp management-address bind interface vlanif100' in result_display.stdout[0]"
-
- - name: absent the provided configuration with the exisiting running configuration
- ce_lldp: &absent
- lldpenable: enabled
- mdnstatus: rxOnly
- interval: 35
- hold_multiplier: 5
- restart_delay: 3
- transmit_delay: 5
- notification_interval: 6
- fast_count: 5
- mdn_notification_interval: 10.1.1.1
- management_address: 10.10.10.1
- bind_name: vlanif100
- state: absent
- register: result
-
- - name: change ansible_connection to network_cli
- set_fact:
- ansible_connection: network_cli
-
- - name: display lldp
- ce_command:
- commands:
- - display current-configuration | include lldp
- register: result_display
-
- - name: change ansible_connection to netconf
- set_fact:
- ansible_connection: netconf
-
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
- - "'lldp enable' not in result_display.stdout[0]"
- - "'undo lldp mdn disable' not in result_display.stdout[0]"
- - "'lldp transmit interval 35' not in result_display.stdout[0]"
- - "'lldp transmit multiplier 5' not in result_display.stdout[0]"
- - "'lldp restart 3' not in result_display.stdout[0]"
- - "'lldp transmit delay 5' not in result_display.stdout[0]"
- - "'lldp fast-count 5' not in result_display.stdout[0]"
- - "'lldp management-address 10.10.10.1' not in result_display.stdout[0]"
- - "'lldp mdn trap-interval 6' not in result_display.stdout[0]"
- - "'lldp trap-interval 6' not in result_display.stdout[0]"
- - "'lldp management-address bind interface vlanif100' not in result_display.stdout[0]"
-
- - name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_lldp: *absent
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
-- debug:
- msg: "END ce_lldp absent integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_lldp/tests/netconf/clean.yaml b/test/integration/targets/ce_lldp/tests/netconf/clean.yaml
deleted file mode 100644
index 8e12f61ea2..0000000000
--- a/test/integration/targets/ce_lldp/tests/netconf/clean.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-- debug:
- msg: "Start ce_lldp deleted remove interface config ansible_connection={{ ansible_connection }}"
-
-- name: change ansible_connection to network_cli
- set_fact:
- ansible_connection: network_cli
-# After the global LLDP function is disabled, all LLDP configuration restore defaults except the LLDP alarm function.
-- name: display lldp
- ce_command:
- commands:
- - undo lldp enable
- - lldp mdn disable
-
-- name: change ansible_connection to netconf
- set_fact:
- ansible_connection: netconf
-
-- debug:
- msg: "End ce_lldp deleted remove interface config ansible_connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_lldp/tests/netconf/present.yaml b/test/integration/targets/ce_lldp/tests/netconf/present.yaml
deleted file mode 100644
index f523d32dd7..0000000000
--- a/test/integration/targets/ce_lldp/tests/netconf/present.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
----
-- debug:
- msg: "START ce_lldp merged integration tests on connection={{ ansible_connection }}"
-
-- block:
-
- - include_tasks: cleanup.yaml
-
- - name: Merge the provided configuration with the exisiting running configuration
- ce_lldp: &merged
- lldpenable: enabled
- mdnstatus: rxOnly
- interval: 35
- hold_multiplier: 5
- restart_delay: 3
- transmit_delay: 5
- notification_interval: 6
- fast_count: 5
- mdn_notification_interval: 10.1.1.1
- management_address: 10.10.10.1
- bind_name: vlanif100
- register: result
-
- - name: change ansible_connection to network_cli
- set_fact:
- ansible_connection: network_cli
-
- - name: display lldp
- ce_command:
- commands:
- - display current-configuration | include lldp
- register: result_display
-
- - name: change ansible_connection to netconf
- set_fact:
- ansible_connection: netconf
-
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
- - "'lldp enable' in result_display.stdout[0]"
- - "'undo lldp mdn disable' in result_display.stdout[0]"
- - "'lldp transmit interval 35' in result_display.stdout[0]"
- - "'lldp transmit multiplier 5' in result_display.stdout[0]"
- - "'lldp restart 3' in result_display.stdout[0]"
- - "'lldp transmit delay 5' in result_display.stdout[0]"
- - "'lldp fast-count 5' in result_display.stdout[0]"
- - "'lldp management-address 10.10.10.1' in result_display.stdout[0]"
- - "'lldp mdn trap-interval 6' in result_display.stdout[0]"
- - "'lldp trap-interval 6' in result_display.stdout[0]"
- - "'lldp management-address bind interface vlanif100' in result_display.stdout[0]"
-
- - name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_lldp: *merged
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
- - include_tasks: cleanup.yaml
-
-- debug:
- msg: "END ce_lldp merged integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_lldp_interface/defaults/main.yaml b/test/integration/targets/ce_lldp_interface/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_lldp_interface/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_lldp_interface/meta/main.yml b/test/integration/targets/ce_lldp_interface/meta/main.yml
deleted file mode 100644
index 8b13789179..0000000000
--- a/test/integration/targets/ce_lldp_interface/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/test/integration/targets/ce_lldp_interface/tasks/main.yaml b/test/integration/targets/ce_lldp_interface/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_lldp_interface/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_lldp_interface/tasks/netconf.yaml b/test/integration/targets/ce_lldp_interface/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_lldp_interface/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_lldp_interface/tests/netconf/lldp_interface.yaml b/test/integration/targets/ce_lldp_interface/tests/netconf/lldp_interface.yaml
deleted file mode 100644
index d5551a84f8..0000000000
--- a/test/integration/targets/ce_lldp_interface/tests/netconf/lldp_interface.yaml
+++ /dev/null
@@ -1,155 +0,0 @@
----
-- debug:
- msg: "START ce_lldp_interface merged integration tests on connection={{ ansible_connection }}"
-
-- block:
- - name: Merge the provided configuration with the exisiting running configuration - basic-tlv
- ce_lldp_interface: &merged1
- config:
- msg_interval: 8
- ifname: 10GE 1/0/1
- admin_status: txandrx
- basic_tlv:
- management_addr: true
- port_desc: true
- system_capability: true
- system_description: true
- system_name: true
- register: result1
- - name: Merge the provided configuration with the existing running configuration (REPEAT)
- ce_lldp_interface: *merged1
- register: result2
- - name: "Netconf get operation"
- ce_netconf:
- rpc: get
- cfg_xml: '<filter type=\"subtree\">
- <lldp xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <lldpInterfaces>
- <lldpInterface>
- <ifName>10GE1/0/1</ifName>
- <msgInterval>
- <txInterval></txInterval>
- </msgInterval>
- <lldpAdminStatus></lldpAdminStatus>
- <tlvTxEnable>
- <manAddrTxEnable></manAddrTxEnable>
- <portDescTxEnable></portDescTxEnable>
- <sysCapTxEnable></sysCapTxEnable>
- </tlvTxEnable>
- </lldpInterface>
- </lldpInterfaces>
- </lldp>
- </filter>'
- register: result3
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "result1['changed'] == true"
- - "result2['changed'] == false"
- - "'<txInterval>8</txInterval>' in result3.endstate.result"
- - "'<lldpAdminStatus>txAndRx</lldpAdminStatus>' in result3.endstate.result"
- - "'<manAddrTxEnable>true</manAddrTxEnable>' in result3.endstate.result"
- - "'<portDescTxEnable>true</portDescTxEnable>' in result3.endstate.result"
- - "'<sysCapTxEnable>true</sysCapTxEnable>' in result3.endstate.result"
-
- - name: Merge the provided configuration with the exisiting running configuration - dot1-tlv
- ce_lldp_interface: &merged2
- config:
- msg_interval: 8
- ifname: 10GE 1/0/1
- dot1_tlv:
- port_vlan_enable: true
- port_desc: true
- prot_vlan_enable: true
- prot_vlan_id: 123
- vlan_name: 234
- vlan_name_enable: true
- register: result1
- - name: Merge the provided configuration with the existing running configuration (REPEAT)
- ce_lldp_interface: *merged2
- register: result2
- - name: "Netconf get operation"
- ce_netconf:
- rpc: get
- cfg_xml: '<filter type=\"subtree\">
- <lldp xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <lldpInterfaces>
- <lldpInterface>
- <ifName>10GE1/0/1</ifName>
- <msgInterval>
- <txInterval></txInterval>
- </msgInterval>
- <lldpAdminStatus></lldpAdminStatus>
- <tlvTxEnable>
- <portVlanTxEnable></portVlanTxEnable>
- <protoVlanTxEnable></protoVlanTxEnable>
- <txProtocolVlanId></txProtocolVlanId>
- <vlanNameTxEnable></vlanNameTxEnable>
- <txVlanNameId></txVlanNameId>
- <protoIdTxEnable></protoIdTxEnable>
- </tlvTxEnable>
- </lldpInterface>
- </lldpInterfaces>
- </lldp>
- </filter>'
- register: result3
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "result1['changed'] == true"
- - "result2['changed'] == false"
- - "'<portVlanTxEnable>true</portVlanTxEnable>' in result3.endstate.result"
- - "'<protoVlanTxEnable>true</protoVlanTxEnable>' in result3.endstate.result"
- - "'<txProtocolVlanId>123</txProtocolVlanId>' in result3.endstate.result"
- - "'<vlanNameTxEnable>true</vlanNameTxEnable>' in result3.endstate.result"
- - "'<txVlanNameId>true</txVlanNameId>' in result3.endstate.result"
- - "'<protoIdTxEnable>true</protoIdTxEnable>' in result3.endstate.result"
-
- - name: Merge the provided configuration with the exisiting running configuration - dot3-tlv
- ce_lldp_interface: &merged
- config:
- msg_interval: 8
- ifname: 10GE 1/0/1
- dot3_tlv:
- eee: true
- link_aggregation: true
- mac_physic: true
- max_frame_size: true
- register: result1
- - name: Merge the provided configuration with the existing running configuration (REPEAT)
- ce_lldp_interface: *merged
- register: result2
- - name: "Netconf get operation"
- ce_netconf:
- rpc: get
- cfg_xml: '<filter type=\"subtree\">
- <lldp xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <lldpInterfaces>
- <lldpInterface>
- <ifName>10GE1/0/1</ifName>
- <msgInterval>
- <txInterval></txInterval>
- </msgInterval>
- <lldpAdminStatus></lldpAdminStatus>
- <tlvTxEnable>
- <macPhyTxEnable></macPhyTxEnable>
- <linkAggreTxEnable></linkAggreTxEnable>
- <maxFrameTxEnable></maxFrameTxEnable>
- <eee></eee>
- </tlvTxEnable>
- </lldpInterface>
- </lldpInterfaces>
- </lldp>
- </filter>'
- register: result3
- - name: Assert the configuration is reflected on host
- assert:
- that:
- - "result1['changed'] == true"
- - "result2['changed'] == false"
- - "'<macPhyTxEnable>true</macPhyTxEnable>' in result3.endstate.result"
- - "'<linkAggreTxEnable>true</linkAggreTxEnable>' in result3.endstate.result"
- - "'<maxFrameTxEnable>123</maxFrameTxEnable>' in result3.endstate.result"
-
-- debug:
- msg: "END ce_lldp_interface merged integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_mdn_interface/defaults/main.yaml b/test/integration/targets/ce_mdn_interface/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_mdn_interface/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_mdn_interface/tasks/main.yaml b/test/integration/targets/ce_mdn_interface/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_mdn_interface/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_mdn_interface/tasks/netconf.yaml b/test/integration/targets/ce_mdn_interface/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_mdn_interface/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_mdn_interface/tests/netconf/ce_mdn_interface.yaml b/test/integration/targets/ce_mdn_interface/tests/netconf/ce_mdn_interface.yaml
deleted file mode 100644
index 4aec853fef..0000000000
--- a/test/integration/targets/ce_mdn_interface/tests/netconf/ce_mdn_interface.yaml
+++ /dev/null
@@ -1,97 +0,0 @@
----
-- debug:
- msg: "START ce_mdn_interface presented integration tests on connection={{ ansible_connection }}"
-# set up default before test
-- name: clean up default configuration with the exisiting running configuration
- ce_mdn_interface:
- lldpenable: disabled
- mdnstatus: disabled
- ifname: 10GE1/0/1
-
-- name: present the provided configuration with the exisiting running configuration
- ce_mdn_interface: &present
- lldpenable: enabled
- mdnstatus: rxOnly
- ifname: 10GE1/0/1
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get mdnInterface config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <lldp xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <mdnInterfaces>
- <mdnInterface>
- <ifName>10GE1/0/1</ifName>
- <mdnStatus></mdnStatus>
- </mdnInterface>
- </mdnInterfaces>
- </lldp>
- </filter>"
- register: result_xml
-
-- name: Get lldp enabled config by ce_netconf.
- ce_netconf: &get_config_lldp
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <lldp xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <lldpSys>
- <lldpEnable></lldpEnable>
- </lldpSys>
- </lldp>
- /filter>"
- register: result_xml_lldp
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_mdn_interface: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<mdnStatus>rxOnly</mdnStatus>' in result_xml.end_state.result"
- - "'<lldpEnable>enabled</lldpEnable>' in result_xml_lldp.end_state.result"
-
-- name: absent the provided configuration with the exisiting running configuration
- ce_mdn_interface: &absent
- lldpenable: disabled
- mdnstatus: disabled
- ifname: 10GE1/0/1
- state: absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: absent the provided configuration with the existing running configuration (REPEAT)
- ce_mdn_interface: *absent
- register: repeat
-
-- name: Get mdnInterface config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Get lldp enabled config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml_lldp
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "result['changed'] == false"
- - "'<mdnStatus>disabled</mdnStatus>' not in result_xml.end_state.result"
- - "'<lldpEnable>disabled</lldpEnable>' in result_xml_lldp.end_state.result"
-# after present, isis 100 should be deleted
-
-- debug:
- msg: "END ce_mdn_interface resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_multicast_global/defaults/main.yaml b/test/integration/targets/ce_multicast_global/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_multicast_global/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_multicast_global/tasks/main.yaml b/test/integration/targets/ce_multicast_global/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_multicast_global/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_multicast_global/tasks/netconf.yaml b/test/integration/targets/ce_multicast_global/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_multicast_global/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_multicast_global/tests/netconf/test_ce_multicast_global.yaml b/test/integration/targets/ce_multicast_global/tests/netconf/test_ce_multicast_global.yaml
deleted file mode 100644
index 69b1f5f26b..0000000000
--- a/test/integration/targets/ce_multicast_global/tests/netconf/test_ce_multicast_global.yaml
+++ /dev/null
@@ -1,73 +0,0 @@
----
-- debug:
- msg: "START ce_multicast_global presented integration tests on connection={{ ansible_connection }}"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_multicast_global: &present
- aftype: v4
- vrf: vpna
- weight: 100
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <mcastbase xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <mcastAfsEnables>
- <mcastAfsEnable>
- <vrfName></vrfName>
- <addressFamily></addressFamily>
- </mcastAfsEnable>
- </mcastAfsEnables>
- </mcastbase>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_multicast_global: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<vrfName>vpna</vrfName>' in result_xml.end_state.result"
- - "'<addressFamily>vpna</addressFamily>' in result_xml.end_state.result"
-
-- name: present the provided configuration with the exisiting running configuration
- ce_multicast_global: &absent
- aftype: v4
- vrf: vpna
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_multicast_global: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<vrfName>vpna</vrfName>' not in result_xml.end_state.result"
- - "'<addressFamily>vpna</addressFamily>' not in result_xml.end_state.result"
-# after present, isis 100 should be deleted
-
-- debug:
- msg: "END ce_multicast_global resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_multicast_igmp_enable/defaults/main.yaml b/test/integration/targets/ce_multicast_igmp_enable/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_multicast_igmp_enable/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_multicast_igmp_enable/tasks/main.yaml b/test/integration/targets/ce_multicast_igmp_enable/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_multicast_igmp_enable/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_multicast_igmp_enable/tasks/netconf.yaml b/test/integration/targets/ce_multicast_igmp_enable/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_multicast_igmp_enable/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_multicast_igmp_enable/tests/netconf/ce_multicast_igmp_enable.yaml b/test/integration/targets/ce_multicast_igmp_enable/tests/netconf/ce_multicast_igmp_enable.yaml
deleted file mode 100644
index 2a94b0a352..0000000000
--- a/test/integration/targets/ce_multicast_igmp_enable/tests/netconf/ce_multicast_igmp_enable.yaml
+++ /dev/null
@@ -1,95 +0,0 @@
----
-- debug:
- msg: "START ce_multicast_igmp_enable presented integration tests on connection={{ ansible_connection }}"
-# clean up before test
-- name: clean up configuration with the exisiting running configuration
- ce_multicast_igmp_enable: &absent
- aftype: v4
- features: vlan
- vlan_id: 100
- igmp: true
- version: 2
- proxy: true
-
-
-- name: present the provided configuration with the exisiting running configuration
- ce_multicast_igmp_enable: &present
- aftype: v4
- features: vlan
- vlan_id: 100
- igmp: true
- version: 2
- proxy: true
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: Get basic config by ce_netconf.
- ce_netconf: &get_config
- rpc: get
- cfg_xml: "<filter type=\"subtree\">
- <l2mc xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <vlan>
- <l2McVlanCfgs>
- <l2McVlanCfg>
- <addrFamily></addrFamily>
- <vlanId></vlanId>
- <snoopingEnable></snoopingEnable>
- <version></version>
- <proxyEnable></proxyEnable>
- </l2McVlanCfg>
- </l2McVlanCfgs>
- </vlan>
- </l2mc>
- </filter>"
- register: result_xml
-
-
-- name: present the provided configuration with the existing running configuration (IDEMPOTENT)
- ce_multicast_igmp_enable: *present
- register: repeat
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "repeat.changed == false"
- - "'<addrFamily>ipv4unicast</addrFamily>' in result_xml.end_state.result"
- - "'<vlanId>100</vlanId>' in result_xml.end_state.result"
- - "'<snoopingEnable>true</snoopingEnable>' in result_xml.end_state.result"
- - "'<version>2</version>' in result_xml.end_state.result"
- - "'<proxyEnable>true</proxyEnable>' in result_xml.end_state.result"
-
-- name: absent the provided configuration with the exisiting running configuration
- ce_multicast_igmp_enable: *absent
- register: result
-
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-
-- name: absent the provided configuration with the existing running configuration (REPEAT)
- ce_multicast_igmp_enable: *absent
- register: repeat
-
-- name: Get basic config by ce_netconf.
- ce_netconf: *get_config
- register: result_xml
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "result['changed'] == false"
- - "'<addrFamily>ipv4unicast</addrFamily>' not in result_xml.end_state.result"
- - "'<vlanId>100</vlanId>' not in result_xml.end_state.result"
- - "'<snoopingEnable>true</snoopingEnable>' not in result_xml.end_state.result"
- - "'<version>2</version>' not in result_xml.end_state.result"
- - "'<proxyEnable>true</proxyEnable>' not in result_xml.end_state.result"
-# after present, isis 100 should be deleted
-
-- debug:
- msg: "END ce_multicast_igmp_enable resentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_static_route_bfd/defaults/main.yaml b/test/integration/targets/ce_static_route_bfd/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/ce_static_route_bfd/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/ce_static_route_bfd/tasks/main.yaml b/test/integration/targets/ce_static_route_bfd/tasks/main.yaml
deleted file mode 100644
index cc27f174fd..0000000000
--- a/test/integration/targets/ce_static_route_bfd/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: netconf.yaml, tags: ['netconf'] }
diff --git a/test/integration/targets/ce_static_route_bfd/tasks/netconf.yaml b/test/integration/targets/ce_static_route_bfd/tasks/netconf.yaml
deleted file mode 100644
index 73b91adfaa..0000000000
--- a/test/integration/targets/ce_static_route_bfd/tasks/netconf.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: collect all netconf test cases
- find:
- paths: "{{ role_path }}/tests/netconf"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- connection: local
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case (connection=netconf)
- include: "{{ test_case_to_run }} ansible_connection=netconf"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/ce_static_route_bfd/tests/netconf/ce_static_route_bfd.yaml b/test/integration/targets/ce_static_route_bfd/tests/netconf/ce_static_route_bfd.yaml
deleted file mode 100644
index e333278d91..0000000000
--- a/test/integration/targets/ce_static_route_bfd/tests/netconf/ce_static_route_bfd.yaml
+++ /dev/null
@@ -1,150 +0,0 @@
----
-- debug:
- msg: "START ce_static_route_bfd presented integration tests on connection={{ ansible_connection }}"
-- include_tasks: cleanup.yaml
-- name: Config an ip route-static bfd 10GE1/0/1 3.3.3.3 min-rx-interval 50 min-tx-interval 50 detect-multiplier 5
- ce_static_route_bfd: &merge1
- function_flag: 'singleBFD'
- nhp_interface: 10GE1/0/1
- next_hop: 3.3.3.3
- min_tx_interval: 50
- min_rx_interval: 50
- detect_multiplier: 5
- aftype: v4
- state: present
- register: result1
-- name: (repeat)Config an ip route-static bfd 10GE1/0/1 3.3.3.3 min-rx-interval 50 min-tx-interval 50 detect-multiplier 5
- ce_static_route_bfd:
- <<: *merge1
- register: result2
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result1['changed'] == true"
- - "result2['changed'] == false"
-
-
-# ip route-static bfd [ interface-type interface-number | vpn-instance vpn-instance-name ] nexthop-address
-- name: ip route-static bfd 10GE1/0/1 3.3.3.4
- ce_static_route_bfd: &merge2
- function_flag: 'singleBFD'
- nhp_interface: 10GE1/0/1
- next_hop: 3.3.3.4
- aftype: v4
- register: result1
-- name: (repeat)ip route-static bfd 10GE1/0/1 3.3.3.4
- ce_static_route_bfd:
- <<: *merge2
- register: result2
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result1['changed'] == true"
- - "result2['changed'] == false"
-#ip route-static default-bfd { min-rx-interval {min-rx-interval} | min-tx-interval {min-tx-interval} | detect-multiplier {multiplier}}
-- name: Config an ip route-static default-bfd min-rx-interval 50 min-tx-interval 50 detect-multiplier 6
- ce_static_route_bfd: &merge3
- function_flag: 'globalBFD'
- min_tx_interval: 50
- min_rx_interval: 50
- detect_multiplier: 6
- aftype: v4
- state: present
- register: result1
-- name: (repeat)Config an ip route-static default-bfd min-rx-interval 50 min-tx-interval 50 detect-multiplier 6
- ce_static_route_bfd:
- <<: *merge3
- register: result2
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result1['changed'] == true"
- - "result2['changed'] == false"
-
-- name: undo ip route-static default-bfd
- ce_static_route_bfd: &merge4
- function_flag: 'globalBFD'
- aftype: v4
- state: absent
- commands: 'sys,undo ip route-static default-bfd,commit'
- register: result1
-- name: (repeat)undo ip route-static default-bfd
- ce_static_route_bfd:
- <<: *merge4
- register: result2
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result1['changed'] == true"
- - "result2['changed'] == false"
-
-- name: Config an ipv4 static route 2.2.2.0/24 2.2.2.1 preference 1 tag 2 description test for staticBFD
- ce_static_route_bfd: &merge5
- function_flag: 'staticBFD'
- prefix: 2.2.2.2
- mask: 24
- next_hop: 2.2.2.1
- tag: 2
- description: test
- pref: 1
- aftype: v4
- bfd_session_name: btoa
- state: present
- register: result1
-- name: (repeat) Config an ipv4 static route 2.2.2.0/24 2.2.2.1 preference 1 tag 2 description test for staticBFD
- ce_static_route_bfd:
- <<: *merge5
- register: result2
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result1['changed'] == true"
- - "result2['changed'] == false"
-
-- name: Get lacp config by ce_netconf.
- ce_netconf:
- rpc: get
- cfg_xml: "<get>
- <filter type=\"subtree\">
- <staticrt xmlns=\"http://www.huawei.com/netconf/vrp\" content-version=\"1.0\" format-version=\"1.0\">
- <staticrtbase>
- <srBfdParas>
- <srBfdPara>
- <afType/>
- <ifName/>
- <destVrfName/>
- <nexthop/>
- <localAddress/>
- <minTxInterval/>
- <minRxInterval/>
- <multiplier/>
- </srBfdPara>
- </srBfdParas>
- </staticrtbase>
- </staticrt>
- </filter>
- </get>"
- register: result_present
-
-- name: Assert that the previous task was idempotent
- assert:
- that:
- - "'<afType>v4</afType>' == result_present.end_state.result"
- - "'<ifName>10GE1/0/1</ifName>' == result_present.end_state.result"
- - "'<rcvTimeoutType>Fast</rcvTimeoutType>' == result_present.end_state.result"
- - "'<destVrfName>__publiv__</destVrfName>' == result_present.end_state.result"
- - "'<selectPortStd>Prority</selectPortStd>' == result_present.end_state.result"
- - "'<nexthop>2.2.2.1</nexthop>' == result_present.end_state.result"
- - "'<localAddress>2.2.2.2</localAddress>' == result_present.end_state.result"
- - "'<minTxInterval>12</minTxInterval>' in result_present.end_state.result"
- - "'<mixRateEnable>true</mixRateEnable>' in result_present.end_state.result"
- - "'<multiplier>true</multiplier>' in result_present.end_state.result"
- - "'<dampUnexpMacEn>true</dampUnexpMacEn>' in result_present.end_state.result"
- - "'<trunkSysMac>true</trunkSysMac>' in result_present.end_state.result"
- - "'<trunkPortIdExt>true</trunkPortIdExt>' in result_present.end_state.result"
- - "'<lacpMlagSysId>1111-2222-3333</lacpMlagSysId>' in result_present.end_state.result"
- - "'<priority>123</priority>' in result_present.end_state.result"
-- include_tasks: cleanup.yaml
-- debug:
- msg: "END ce_static_route_bfd presentd integration tests on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/ce_static_route_bfd/tests/netconf/cleanup.yaml b/test/integration/targets/ce_static_route_bfd/tests/netconf/cleanup.yaml
deleted file mode 100644
index 10ad3e5c18..0000000000
--- a/test/integration/targets/ce_static_route_bfd/tests/netconf/cleanup.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
----
-- name: Merge the provided configuration with the exisiting running configuration
- ce_static_route_bfd:
- function_flag: 'singleBFD'
- nhp_interface: 10GE1/0/1
- next_hop: 3.3.3.3
- min_tx_interval: 50
- min_rx_interval: 50
- detect_multiplier: 5
- aftype: v4
- state: absent
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
-- name: ip route-static bfd 10GE1/0/1 3.3.3.4
- ce_static_route_bfd: &merge
- function_flag: 'globalBFD'
- min_tx_interval: 50
- min_rx_interval: 50
- detect_multiplier: 6
- aftype: v4
- state: absent
- register: result
-
-- name: Assert the configuration is reflected on host
- assert:
- that:
- - "result['changed'] == true"
diff --git a/test/integration/targets/cloud_init_data_facts/aliases b/test/integration/targets/cloud_init_data_facts/aliases
deleted file mode 100644
index e93cd86b56..0000000000
--- a/test/integration/targets/cloud_init_data_facts/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
diff --git a/test/integration/targets/cloud_init_data_facts/tasks/main.yml b/test/integration/targets/cloud_init_data_facts/tasks/main.yml
deleted file mode 100644
index eca905c6c2..0000000000
--- a/test/integration/targets/cloud_init_data_facts/tasks/main.yml
+++ /dev/null
@@ -1,50 +0,0 @@
----
-- name: test cloud-init
- # TODO: check for a workaround
- # install 'cloud-init'' failed: dpkg-divert: error: `diversion of /etc/init/ureadahead.conf
- # to /etc/init/ureadahead.conf.disabled by cloud-init' clashes with `local diversion of
- # /etc/init/ureadahead.conf to /etc/init/ureadahead.conf.distrib
- # https://bugs.launchpad.net/ubuntu/+source/ureadahead/+bug/997838
- # Will also have to skip on OpenSUSE when running on Python 2 on newer Leap versions
- # (!= 42 and >= 15) ascloud-init will install the Python 3 package, breaking our build on py2.
- when:
- - not (ansible_distribution == "Ubuntu" and ansible_distribution_major_version|int == 14)
- - not (ansible_os_family == "Suse" and ansible_distribution_major_version|int != 42 and ansible_python.version.major != 3)
- block:
- - name: setup install cloud-init
- package:
- name:
- - cloud-init
- - udev
-
- - name: setup run cloud-init
- service:
- name: cloud-init-local
- state: restarted
-
- - name: test gather cloud-init facts in check mode
- cloud_init_data_facts:
- check_mode: yes
- register: result
- - name: verify test gather cloud-init facts in check mode
- assert:
- that:
- - result.cloud_init_data_facts.status.v1 is defined
- - result.cloud_init_data_facts.status.v1.stage is defined
- - not result.cloud_init_data_facts.status.v1.stage
- - cloud_init_data_facts.status.v1 is defined
- - cloud_init_data_facts.status.v1.stage is defined
- - not cloud_init_data_facts.status.v1.stage
-
- - name: test gather cloud-init facts
- cloud_init_data_facts:
- register: result
- - name: verify test gather cloud-init facts
- assert:
- that:
- - result.cloud_init_data_facts.status.v1 is defined
- - result.cloud_init_data_facts.status.v1.stage is defined
- - not result.cloud_init_data_facts.status.v1.stage
- - cloud_init_data_facts.status.v1 is defined
- - cloud_init_data_facts.status.v1.stage is defined
- - not cloud_init_data_facts.status.v1.stage
diff --git a/test/integration/targets/cloudscale_floating_ip/aliases b/test/integration/targets/cloudscale_floating_ip/aliases
deleted file mode 100644
index c200a3d2c8..0000000000
--- a/test/integration/targets/cloudscale_floating_ip/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cloudscale
-unsupported
diff --git a/test/integration/targets/cloudscale_floating_ip/meta/main.yml b/test/integration/targets/cloudscale_floating_ip/meta/main.yml
deleted file mode 100644
index 8dd48f0337..0000000000
--- a/test/integration/targets/cloudscale_floating_ip/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cloudscale_common
diff --git a/test/integration/targets/cloudscale_floating_ip/tasks/floating_ip.yml b/test/integration/targets/cloudscale_floating_ip/tasks/floating_ip.yml
deleted file mode 100644
index 4e92c6ff46..0000000000
--- a/test/integration/targets/cloudscale_floating_ip/tasks/floating_ip.yml
+++ /dev/null
@@ -1,129 +0,0 @@
-- name: Request regional floating IP
- cloudscale_floating_ip:
- server: '{{ test01.uuid }}'
- ip_version: '{{ item.ip_version }}'
- reverse_ptr: '{{ item.reverse_ptr | default(omit) }}'
- prefix_length: '{{ item.prefix_length | default(omit) }}'
- region: '{{ cloudscale_test_region }}'
-
- register: floating_ip
-- name: Verify request floating IP
- assert:
- that:
- - floating_ip is successful
- - floating_ip is changed
- - floating_ip.region.slug == '{{ cloudscale_test_region }}'
- - (item.ip_version == 4 and floating_ip.ip | ipv4) or (item.ip_version == 6 and floating_ip.ip | ipv6)
- - floating_ip.server == test01.uuid
-
-- name: Check floating IP idempotence
- cloudscale_floating_ip:
- server: '{{ test01.uuid }}'
- ip: '{{ floating_ip.ip }}'
- region: '{{ cloudscale_test_region }}'
- register: floating_ip_idempotence
-- name: Verify floating IP idempotence
- assert:
- that:
- - floating_ip_idempotence is successful
- - floating_ip_idempotence is not changed
- - floating_ip_idempotence.server == test01.uuid
- - floating_ip.region.slug == '{{ cloudscale_test_region }}'
-
-- name: Request global floating IP
- cloudscale_floating_ip:
- server: '{{ test01.uuid }}'
- ip_version: '{{ item.ip_version }}'
- reverse_ptr: '{{ item.reverse_ptr | default(omit) }}'
- prefix_length: '{{ item.prefix_length | default(omit) }}'
- type: 'global'
- register: global_floating_ip
-- name: Verify global floating IP
- assert:
- that:
- - global_floating_ip is successful
- - global_floating_ip is changed
- - global_floating_ip.region == None
- - global_floating_ip.type == 'global'
- - (item.ip_version == 4 and global_floating_ip.ip | ipv4) or (item.ip_version == 6 and global_floating_ip.ip | ipv6)
- - global_floating_ip.server == test01.uuid
-
-- name: Release global floating IP
- cloudscale_floating_ip:
- ip: '{{ global_floating_ip.ip }}'
- state: 'absent'
- register: global_floating_ip
-- name: Verify release of global floating IP
- assert:
- that:
- - global_floating_ip is successful
- - global_floating_ip is changed
- - global_floating_ip.state == 'absent'
-
-- name: Check network parameter alias
- cloudscale_floating_ip:
- server: '{{ test01.uuid }}'
- network: '{{ floating_ip.ip }}'
- register: floating_ip_network
-- name: Verify network parameter alias
- assert:
- that:
- - floating_ip_network is successful
-
-- name: Move floating IP to second server
- cloudscale_floating_ip:
- server: '{{ test02.uuid }}'
- ip: '{{ floating_ip.ip }}'
- register: move_ip
-- name: Verify move floating IPv4 to second server
- assert:
- that:
- - move_ip is successful
- - move_ip is changed
- - move_ip.server == test02.uuid
-
-- name: Fail if server is missing on update
- cloudscale_floating_ip:
- ip: '{{ floating_ip.ip }}'
- register: update_failed
- ignore_errors: True
-- name: Verify fail if server is missing on update
- assert:
- that:
- - update_failed is failed
- - "'Missing required parameter' in update_failed.msg"
-
-- name: Release floating IP
- cloudscale_floating_ip:
- ip: '{{ floating_ip.ip }}'
- state: 'absent'
- register: release_ip
-- name: Verify release floating IPs
- assert:
- that:
- - release_ip is successful
- - release_ip is changed
- - release_ip.state == 'absent'
-
-- name: Release floating IP idempotence
- cloudscale_floating_ip:
- ip: '{{ floating_ip.ip }}'
- state: 'absent'
- register: release_ip
-- name: Verify release floating IPs idempotence
- assert:
- that:
- - release_ip is successful
- - release_ip is not changed
- - release_ip.state == 'absent'
-
-- name: Fail if server is missing on request
- cloudscale_floating_ip:
- ip_version: 6
- register: request_failed
- ignore_errors: True
-- name: Verify fail if server is missing on request
- assert:
- that:
- - request_failed is failed
- - "'Missing required parameter' in request_failed.msg"
diff --git a/test/integration/targets/cloudscale_floating_ip/tasks/main.yml b/test/integration/targets/cloudscale_floating_ip/tasks/main.yml
deleted file mode 100644
index e46cad3108..0000000000
--- a/test/integration/targets/cloudscale_floating_ip/tasks/main.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-- name: Cloudscale floating IP tests
- block:
- - name: Create a server
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test01'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- zone: '{{ cloudscale_test_zone }}'
- register: test01
-
- - name: Create a second server
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test02'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- zone: '{{ cloudscale_test_zone }}'
- register: test02
-
- - include_tasks: floating_ip.yml
- loop:
- - { 'ip_version': 4, 'reverse_ptr': '{{ cloudscale_resource_prefix }}-4.example.com' }
- - { 'ip_version': 6, 'reverse_ptr': '{{ cloudscale_resource_prefix }}-6.example.com' }
- - { 'ip_version': 6, 'prefix_length': 56 }
-
- - import_tasks: unassigned.yml
-
- always:
- - import_role:
- name: cloudscale_common
- tasks_from: cleanup_servers
- - import_role:
- name: cloudscale_common
- tasks_from: cleanup_floating_ips
diff --git a/test/integration/targets/cloudscale_floating_ip/tasks/unassigned.yml b/test/integration/targets/cloudscale_floating_ip/tasks/unassigned.yml
deleted file mode 100644
index 214f4ab368..0000000000
--- a/test/integration/targets/cloudscale_floating_ip/tasks/unassigned.yml
+++ /dev/null
@@ -1,26 +0,0 @@
----
-- name: Assign Floating IP to server test01
- cloudscale_floating_ip:
- ip_version: 6
- server: '{{ test01.uuid }}'
- reverse_ptr: '{{ cloudscale_resource_prefix }}-unassigned.example.com'
- region: '{{ cloudscale_test_region }}'
- register: floating_ip
-
-# The only way to have an unassigned floating IP is to delete the server
-# where the floating IP is currently assigned.
-- name: Delete server test01
- cloudscale_server:
- uuid: '{{ test01.uuid }}'
- state: 'absent'
-
-- name: Do not fail if floating IP is unassigned
- cloudscale_floating_ip:
- ip: '{{ floating_ip.ip }}'
- register: floating_ip_not_fail
-- name: Verify do not fail if floating IP is unassigned
- assert:
- that:
- - floating_ip_not_fail is successful
- - floating_ip_not_fail is not changed
- - floating_ip_not_fail.server == None
diff --git a/test/integration/targets/cloudscale_server/aliases b/test/integration/targets/cloudscale_server/aliases
deleted file mode 100644
index c200a3d2c8..0000000000
--- a/test/integration/targets/cloudscale_server/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cloudscale
-unsupported
diff --git a/test/integration/targets/cloudscale_server/defaults/main.yml b/test/integration/targets/cloudscale_server/defaults/main.yml
deleted file mode 100644
index 6d8a0ff847..0000000000
--- a/test/integration/targets/cloudscale_server/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-cloudscale_test_flavor_2: flex-4
diff --git a/test/integration/targets/cloudscale_server/meta/main.yml b/test/integration/targets/cloudscale_server/meta/main.yml
deleted file mode 100644
index 8dd48f0337..0000000000
--- a/test/integration/targets/cloudscale_server/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cloudscale_common
diff --git a/test/integration/targets/cloudscale_server/tasks/failures.yml b/test/integration/targets/cloudscale_server/tasks/failures.yml
deleted file mode 100644
index 2c975d76bd..0000000000
--- a/test/integration/targets/cloudscale_server/tasks/failures.yml
+++ /dev/null
@@ -1,53 +0,0 @@
----
-- name: Fail missing params
- cloudscale_server:
- register: srv
- ignore_errors: True
-- name: 'VERIFY: Fail name and UUID'
- assert:
- that:
- - srv is failed
-
-- name: Fail unexisting server group
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-group'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- password: '{{ cloudscale_test_password }}'
- server_groups: '{{ cloudscale_resource_prefix }}-unexist-group'
- ignore_errors: True
- register: srv
-- name: 'VERIFY: Fail unexisting server group'
- assert:
- that:
- - srv is failed
- - srv.msg.startswith('Server group name or UUID not found')
-
-- name: Create two server groups with the same name
- uri:
- url: https://api.cloudscale.ch/v1/server-groups
- method: POST
- headers:
- Authorization: 'Bearer {{ cloudscale_api_token }}'
- body:
- name: '{{ cloudscale_resource_prefix }}-duplicate'
- type: anti-affinity
- body_format: json
- status_code: 201
- register: duplicate
- with_sequence: count=2
-
-- name: Try to use server groups with identical name
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-group'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- password: '{{ cloudscale_test_password }}'
- server_groups: '{{ cloudscale_resource_prefix }}-duplicate'
- ignore_errors: True
- register: srv
-- name: 'VERIFY: Fail unexisting server group'
- assert:
- that:
- - srv is failed
- - srv.msg.startswith('More than one server group with name exists')
diff --git a/test/integration/targets/cloudscale_server/tasks/main.yml b/test/integration/targets/cloudscale_server/tasks/main.yml
deleted file mode 100644
index cb53757eb8..0000000000
--- a/test/integration/targets/cloudscale_server/tasks/main.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-- block:
- - import_tasks: failures.yml
- - import_tasks: tests.yml
- always:
- - import_role:
- name: cloudscale_common
- tasks_from: cleanup_servers
- - import_role:
- name: cloudscale_common
- tasks_from: cleanup_server_groups \ No newline at end of file
diff --git a/test/integration/targets/cloudscale_server/tasks/tests.yml b/test/integration/targets/cloudscale_server/tasks/tests.yml
deleted file mode 100644
index 34c4b3bf83..0000000000
--- a/test/integration/targets/cloudscale_server/tasks/tests.yml
+++ /dev/null
@@ -1,676 +0,0 @@
----
-- name: Setup server groups
- cloudscale_server_group:
- name: '{{ cloudscale_resource_prefix }}-group-{{ item }}'
- type: anti-affinity
- zone: '{{ cloudscale_test_zone }}'
- with_sequence: count=2
-
-- name: Test create a running server in check mode
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- zone: '{{ cloudscale_test_zone }}'
- tags:
- project: ansible-test
- stage: production
- sla: 24-7
- register: server
- check_mode: yes
-- name: Verify create a running server in check mode
- assert:
- that:
- - server is changed
- - server.state == 'absent'
-
-- name: Test create a running server
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- zone: '{{ cloudscale_test_zone }}'
- tags:
- project: ansible-test
- stage: production
- sla: 24-7
- register: server
-- name: Verify create a running server
- assert:
- that:
- - server is changed
- - server.state == 'running'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
- - server.zone.slug == '{{ cloudscale_test_zone }}'
- - server.tags.project == 'ansible-test'
- - server.tags.stage == 'production'
- - server.tags.sla == '24-7'
-
-- name: Test create a running server idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- zone: '{{ cloudscale_test_zone }}'
- tags:
- project: ansible-test
- stage: production
- sla: 24-7
- register: server
-- name: Verify create a running server idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'running'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
- - server.zone.slug == '{{ cloudscale_test_zone }}'
- - server.tags.project == 'ansible-test'
- - server.tags.stage == 'production'
- - server.tags.sla == '24-7'
-
-- name: Test update tags in check mode
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- tags:
- project: ansible-test
- stage: staging
- sla: 8-5
- register: server
- check_mode: yes
-- name: Verify update tags in check mode
- assert:
- that:
- - server is changed
- - server.state == 'running'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
- - server.tags.project == 'ansible-test'
- - server.tags.stage == 'production'
- - server.tags.sla == '24-7'
-
-- name: Test update tags
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- tags:
- project: ansible-test
- stage: staging
- sla: 8-5
- register: server
-- name: Verify update tags
- assert:
- that:
- - server is changed
- - server.state == 'running'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
- - server.tags.project == 'ansible-test'
- - server.tags.stage == 'staging'
- - server.tags.sla == '8-5'
-
-- name: Test update tags idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- tags:
- project: ansible-test
- stage: staging
- sla: 8-5
- register: server
-- name: Verify update tags idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'running'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
- - server.tags.project == 'ansible-test'
- - server.tags.stage == 'staging'
- - server.tags.sla == '8-5'
-
-- name: Test omit tags idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- register: server
-- name: Verify update tags idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'running'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
- - server.tags.project == 'ansible-test'
- - server.tags.stage == 'staging'
- - server.tags.sla == '8-5'
-
-- name: Test delete tags
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- tags: {}
- register: server
-- name: Verify delete tags
- assert:
- that:
- - server is changed
- - server.state == 'running'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
- - not server.tags
-
-- name: Test delete tags idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- tags: {}
- register: server
-- name: Verify delete tags idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'running'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
- - not server.tags
-
-- name: Test update flavor of a running server without force in check mode
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor_2 }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- force: no
- register: server
- check_mode: yes
-- name: Verify update flavor of a running server without force in check mode
- assert:
- that:
- - server is not changed
- - server.state == 'running'
- - server.flavor.slug == '{{ cloudscale_test_flavor }}'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
-
-- name: Test update flavor of a running server without force
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor_2 }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- force: no
- register: server
-- name: Verify update flavor of a running server without force
- assert:
- that:
- - server is not changed
- - server.state == 'running'
- - server.flavor.slug == '{{ cloudscale_test_flavor }}'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
-
-- name: Test update flavor of a running server without force idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor_2 }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- force: no
- register: server
-- name: Verify update flavor of a running server without force idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'running'
- - server.flavor.slug == '{{ cloudscale_test_flavor }}'
- - server.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
-
-- name: Test update flavor and name of a running server without force in check mode
- cloudscale_server:
- uuid: '{{ server.uuid }}'
- name: '{{ cloudscale_resource_prefix }}-test-renamed'
- flavor: '{{ cloudscale_test_flavor_2 }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- force: no
- register: server
- check_mode: yes
-- name: Verify update flavor and name of a running server without force in check mode
- assert:
- that:
- - server is changed
- - server.state == 'running'
- - server.flavor.slug == '{{ cloudscale_test_flavor }}'
- - server.name == '{{ cloudscale_resource_prefix }}-test'
-
-- name: Test update flavor and name of a running server without force
- cloudscale_server:
- uuid: '{{ server.uuid }}'
- name: '{{ cloudscale_resource_prefix }}-test-renamed'
- flavor: '{{ cloudscale_test_flavor_2 }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- force: no
- register: server
-- name: Verify update flavor and name of a running server without force
- assert:
- that:
- - server is changed
- - server.state == 'running'
- - server.flavor.slug == '{{ cloudscale_test_flavor }}'
- - server.name == '{{ cloudscale_resource_prefix }}-test-renamed'
-
-- name: Test update flavor and name of a running server without force idempotence
- cloudscale_server:
- uuid: '{{ server.uuid }}'
- name: '{{ cloudscale_resource_prefix }}-test-renamed'
- flavor: '{{ cloudscale_test_flavor_2 }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- force: no
- register: server
-- name: Verify update flavor and name of a running server without force idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'running'
- - server.flavor.slug == '{{ cloudscale_test_flavor }}'
- - server.name == '{{ cloudscale_resource_prefix }}-test-renamed'
-
-- name: Test update flavor of a running server with force in check mode
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-renamed'
- flavor: '{{ cloudscale_test_flavor_2 }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- force: yes
- register: server
- check_mode: yes
-- name: Verify update flavor of a running server with force in check mode
- assert:
- that:
- - server is changed
- - server.state == 'running'
- - server.flavor.slug == '{{ cloudscale_test_flavor }}'
- - server.name == '{{ cloudscale_resource_prefix }}-test-renamed'
-
-- name: Test update flavor of a running server with force
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-renamed'
- flavor: '{{ cloudscale_test_flavor_2 }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- force: yes
- register: server
-- name: Verify update flavor of a running server with force
- assert:
- that:
- - server is changed
- - server.state == 'running'
- - server.flavor.slug == '{{ cloudscale_test_flavor_2 }}'
- - server.name == '{{ cloudscale_resource_prefix }}-test-renamed'
-
-- name: Test update a running server with force idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-renamed'
- flavor: '{{ cloudscale_test_flavor_2 }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- force: yes
- register: server
-- name: Verify update flavor of a running server with force idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'running'
- - server.flavor.slug == '{{ cloudscale_test_flavor_2 }}'
- - server.name == '{{ cloudscale_resource_prefix }}-test-renamed'
-
-- name: Remember uuid of running server for anti affinity
- set_fact:
- running_server_uuid: '{{ server.uuid }}'
-
-- name: Test create server stopped in anti affinity and private network only in check mode
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-stopped'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- zone: '{{ cloudscale_test_zone }}'
- use_public_network: no
- use_private_network: yes
- state: stopped
- check_mode: yes
- register: server_stopped
-- name: Verify create server stopped in anti affinity and private network only in check mode
- assert:
- that:
- - server_stopped is changed
- - server_stopped.state == 'absent'
-
-- name: Test create server stopped in anti affinity and private network only
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-stopped'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- zone: '{{ cloudscale_test_zone }}'
- use_public_network: no
- use_private_network: yes
- state: stopped
- register: server_stopped
-- name: Verify create server stopped in anti affinity and private network only
- assert:
- that:
- - server_stopped is changed
- - server_stopped.state == 'stopped'
- - server_stopped.zone.slug == '{{ cloudscale_test_zone }}'
- - server_stopped.anti_affinity_with.0.uuid == running_server_uuid
- - server_stopped.interfaces.0.type == 'private'
- - server_stopped.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
-
-- name: Test create server stopped in anti affinity and private network only idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-stopped'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-1'
- zone: '{{ cloudscale_test_zone }}'
- use_public_network: no
- use_private_network: yes
- state: stopped
- register: server_stopped
-- name: Verify create server stopped in anti affinity and private network only idempotence
- assert:
- that:
- - server_stopped is not changed
- - server_stopped.state == 'stopped'
- - server_stopped.zone.slug == '{{ cloudscale_test_zone }}'
- - server_stopped.anti_affinity_with.0.uuid == running_server_uuid
- - server_stopped.interfaces.0.type == 'private'
- - server_stopped.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
-
-- name: Test change server group not changed
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-stopped'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- server_groups: '{{ cloudscale_resource_prefix }}-group-2'
- use_public_network: no
- use_private_network: yes
- state: stopped
- register: server_stopped
-- name: Verify Test update server group not changed
- assert:
- that:
- - server_stopped is not changed
- - server_stopped.state == 'stopped'
- - server_stopped.zone.slug == '{{ cloudscale_test_zone }}'
- - server_stopped.anti_affinity_with.0.uuid == running_server_uuid
- - server_stopped.interfaces.0.type == 'private'
- - server_stopped.server_groups.0.name == '{{ cloudscale_resource_prefix }}-group-1'
-
-- name: Test create server with password in check mode
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-password'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- password: '{{ cloudscale_test_password }}'
- check_mode: yes
- register: server_password
-- name: Verify create server with password in check mode
- assert:
- that:
- - server_password is changed
- - server_password.state == 'absent'
- # Verify password is not logged
- - server_password.diff.after.password != cloudscale_test_password
-
-- name: Test create server with password
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-password'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- password: '{{ cloudscale_test_password }}'
- register: server_password
-- name: Verify create server with password
- assert:
- that:
- - server_password is changed
- - server_password.state == 'running'
- # Verify password is not logged
- - server_password.diff.after.password != cloudscale_test_password
-
-- name: Test create server with password idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-password'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- password: '{{ cloudscale_test_password }}'
- register: server_password
-- name: Verify create server with password idempotence
- assert:
- that:
- - server_password is not changed
- - server_password.state == 'running'
-
-- name: Test create server failure without required parameters
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-failed'
- register: server_failed
- ignore_errors: yes
-- name: Verify create server failure without required parameters
- assert:
- that:
- - server_failed is failed
- - "'Failure while calling the cloudscale.ch API with POST for \"servers\".' in server_failed.msg"
- - "'This field is required.' in server_failed.fetch_url_info.body"
-
-- name: Test stop running server in check mode
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-renamed'
- state: stopped
- check_mode: yes
- register: server
-- name: Verify stop running server in check mode
- assert:
- that:
- - server is changed
- - server.state == 'running'
-
-- name: Test stop running server
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-renamed'
- state: stopped
- register: server
-- name: Verify stop running server
- assert:
- that:
- - server is changed
- - server.state == 'stopped'
-
-- name: Test stop running server idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test-renamed'
- state: 'stopped'
- register: server
-- name: Verify stop running server idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'stopped'
-
-- name: Test update a stopped server in check mode
- cloudscale_server:
- uuid: '{{ server.uuid }}'
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- state: stopped
- register: server
- check_mode: yes
-- name: Verify update a stopped server in check mode
- assert:
- that:
- - server is changed
- - server.state == 'stopped'
- - server.flavor.slug == '{{ cloudscale_test_flavor_2 }}'
- - server.name == '{{ cloudscale_resource_prefix }}-test-renamed'
-
-- name: Test update a stopped server without force
- cloudscale_server:
- uuid: '{{ server.uuid }}'
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- state: stopped
- register: server
-- name: Verify update a stopped server without force
- assert:
- that:
- - server is changed
- - server.state == 'stopped'
- - server.flavor.slug == '{{ cloudscale_test_flavor }}'
- - server.name == '{{ cloudscale_resource_prefix }}-test'
-
-- name: Test update a stopped server idempotence
- cloudscale_server:
- uuid: '{{ server.uuid }}'
- name: '{{ cloudscale_resource_prefix }}-test'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- state: stopped
- register: server
-- name: Verify update a stopped server idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'stopped'
- - server.flavor.slug == '{{ cloudscale_test_flavor }}'
- - server.name == '{{ cloudscale_resource_prefix }}-test'
-
-- name: Test server running in check mode
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- state: running
- register: server
- check_mode: yes
-- name: Verify server running in check mode
- assert:
- that:
- - server is changed
- - server.state == 'stopped'
-
-- name: Test server running
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- state: running
- register: server
-- name: Verify server running
- assert:
- that:
- - server is changed
- - server.state == 'running'
-
-- name: Test server running idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- state: running
- register: server
-- name: Verify server running idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'running'
-
-- name: Test running server deletion by name in check mode
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- state: absent
- register: server
- check_mode: yes
-- name: Verify running server deletion by name in check mode
- assert:
- that:
- - server is changed
- - server.state == 'running'
-
-- name: Test running server deletion by name
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- state: absent
- register: server
-- name: Verify running server deletion by name
- assert:
- that:
- - server is changed
- - server.state == 'absent'
-
-- name: Test running server deletion by name idempotence
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-test'
- state: absent
- register: server
-- name: Verify running server deletion by name idempotence
- assert:
- that:
- - server is not changed
- - server.state == 'absent'
-
-- name: Test stopped server deletion by uuid in check mode
- cloudscale_server:
- uuid: '{{ server_stopped.uuid }}'
- state: absent
- register: server_stopped
- check_mode: yes
-- name: Verify stopped server deletion by uuid in check mode
- assert:
- that:
- - server_stopped is changed
- - server_stopped.state == 'stopped'
-
-- name: Test stopped server deletion by uuid
- cloudscale_server:
- uuid: '{{ server_stopped.uuid }}'
- state: absent
- register: server_stopped
-- name: Verify stopped server deletion by uuid
- assert:
- that:
- - server_stopped is changed
- - server_stopped.state == 'absent'
-
-- name: Test stopped server deletion by uuid idempotence
- cloudscale_server:
- uuid: '{{ server_stopped.uuid }}'
- state: absent
- register: server_stopped
-- name: Verify stopped server deletion by uuid idempotence
- assert:
- that:
- - server_stopped is not changed
- - server_stopped.state == 'absent'
diff --git a/test/integration/targets/cloudscale_server_group/aliases b/test/integration/targets/cloudscale_server_group/aliases
deleted file mode 100644
index c200a3d2c8..0000000000
--- a/test/integration/targets/cloudscale_server_group/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cloudscale
-unsupported
diff --git a/test/integration/targets/cloudscale_server_group/meta/main.yml b/test/integration/targets/cloudscale_server_group/meta/main.yml
deleted file mode 100644
index 8dd48f0337..0000000000
--- a/test/integration/targets/cloudscale_server_group/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cloudscale_common
diff --git a/test/integration/targets/cloudscale_server_group/tasks/failures.yml b/test/integration/targets/cloudscale_server_group/tasks/failures.yml
deleted file mode 100644
index 9269a63458..0000000000
--- a/test/integration/targets/cloudscale_server_group/tasks/failures.yml
+++ /dev/null
@@ -1,45 +0,0 @@
----
-- name: Fail missing params
- cloudscale_server_group:
- register: grp
- ignore_errors: True
-- name: 'VERIFY: Fail name and UUID'
- assert:
- that:
- - grp is failed
-
-- name: Create two server groups with the same name
- uri:
- url: 'https://api.cloudscale.ch/v1/server-groups'
- method: POST
- headers:
- Authorization: 'Bearer {{ cloudscale_api_token }}'
- body:
- name: '{{ cloudscale_resource_prefix }}-duplicate'
- type: 'anti-affinity'
- body_format: json
- status_code: 201
- register: duplicate
- with_sequence: count=2
-
-- name: Try access to duplicate name
- cloudscale_server_group:
- name: '{{ cloudscale_resource_prefix }}-duplicate'
- register: grp
- ignore_errors: True
-- name: 'VERIFY: Try access to duplicate name'
- assert:
- that:
- - grp is failed
- - grp.msg.startswith('More than one server group with name exists')
-
-- name: Fail server group creation with UUID
- cloudscale_server_group:
- uuid: ea3b39a3-77a8-4d0b-881d-0bb00a1e7f48
- register: grp
- ignore_errors: True
-- name: 'VERIFY: Fail server group creation with UUID'
- assert:
- that:
- - grp is failed
- - grp.msg.startswith('missing required arguments') \ No newline at end of file
diff --git a/test/integration/targets/cloudscale_server_group/tasks/main.yml b/test/integration/targets/cloudscale_server_group/tasks/main.yml
deleted file mode 100644
index f8783414af..0000000000
--- a/test/integration/targets/cloudscale_server_group/tasks/main.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-- block:
- - import_tasks: failures.yml
- - import_tasks: tests.yml
- always:
- - import_role:
- name: cloudscale_common
- tasks_from: cleanup_server_groups
diff --git a/test/integration/targets/cloudscale_server_group/tasks/tests.yml b/test/integration/targets/cloudscale_server_group/tasks/tests.yml
deleted file mode 100644
index 3fcaa0397b..0000000000
--- a/test/integration/targets/cloudscale_server_group/tasks/tests.yml
+++ /dev/null
@@ -1,159 +0,0 @@
----
-- name: Create server group in check mode
- cloudscale_server_group:
- name: '{{ cloudscale_resource_prefix }}-grp'
- tags:
- project: ansible-test
- stage: production
- sla: 24-7
- register: grp
- check_mode: yes
-- name: 'VERIFY: Create server group in check mode'
- assert:
- that:
- - grp is changed
- - grp.name == '{{ cloudscale_resource_prefix }}-grp'
- - not grp.uuid
-
-- name: Create server group
- cloudscale_server_group:
- name: '{{ cloudscale_resource_prefix }}-grp'
- zone: '{{ cloudscale_test_zone }}'
- tags:
- project: ansible-test
- stage: production
- sla: 24-7
- register: grp
-- name: 'VERIFY: Create server group'
- assert:
- that:
- - grp is changed
- - grp.type == 'anti-affinity'
- - grp.name == '{{ cloudscale_resource_prefix }}-grp'
- - grp.zone.slug == '{{ cloudscale_test_zone }}'
- - grp.uuid
- - grp.tags.project == 'ansible-test'
- - grp.tags.stage == 'production'
- - grp.tags.sla == '24-7'
-
-- name: Remember uuid
- set_fact:
- server_group_uuid: '{{ grp.uuid }}'
-
-- name: Create server group idempotence
- cloudscale_server_group:
- name: '{{ cloudscale_resource_prefix }}-grp'
- zone: '{{ cloudscale_test_zone }}'
- tags:
- project: ansible-test
- stage: production
- sla: 24-7
- register: grp
-- name: 'VERIFY: Create server group idempotence'
- assert:
- that:
- - grp is not changed
- - grp.name == '{{ cloudscale_resource_prefix }}-grp'
- - grp.zone.slug == '{{ cloudscale_test_zone }}'
- - grp.uuid == server_group_uuid
- - grp.tags.project == 'ansible-test'
- - grp.tags.stage == 'production'
- - grp.tags.sla == '24-7'
-
-- name: Update server group in check mode
- cloudscale_server_group:
- uuid: '{{ server_group_uuid }}'
- name: '{{ cloudscale_resource_prefix }}-grp2'
- tags:
- project: ansible-test
- stage: staging
- sla: 8-5
- register: grp
- check_mode: yes
-- name: 'VERIFY: Update server group in check mode'
- assert:
- that:
- - grp is changed
- - grp.name == '{{ cloudscale_resource_prefix }}-grp'
- - grp.uuid == server_group_uuid
- - grp.zone.slug == '{{ cloudscale_test_zone }}'
- - grp.tags.project == 'ansible-test'
- - grp.tags.stage == 'production'
- - grp.tags.sla == '24-7'
-
-- name: Update server group
- cloudscale_server_group:
- uuid: '{{ server_group_uuid }}'
- name: '{{ cloudscale_resource_prefix }}-grp2'
- tags:
- project: ansible-test
- stage: staging
- sla: 8-5
- register: grp
-- name: 'VERIFY: Update server group'
- assert:
- that:
- - grp is changed
- - grp.name == '{{ cloudscale_resource_prefix }}-grp2'
- - grp.uuid == server_group_uuid
- - grp.zone.slug == '{{ cloudscale_test_zone }}'
- - grp.tags.project == 'ansible-test'
- - grp.tags.stage == 'staging'
- - grp.tags.sla == '8-5'
-
-- name: Update server group idempotence
- cloudscale_server_group:
- uuid: '{{ server_group_uuid }}'
- name: '{{ cloudscale_resource_prefix }}-grp2'
- tags:
- project: ansible-test
- stage: staging
- sla: 8-5
- register: grp
-- name: 'VERIFY: Update server group idempotence'
- assert:
- that:
- - grp is not changed
- - grp.name == '{{ cloudscale_resource_prefix }}-grp2'
- - grp.uuid == server_group_uuid
- - grp.zone.slug == '{{ cloudscale_test_zone }}'
- - grp.tags.project == 'ansible-test'
- - grp.tags.stage == 'staging'
- - grp.tags.sla == '8-5'
-
-- name: Delete server group in check mode
- cloudscale_server_group:
- name: '{{ cloudscale_resource_prefix }}-grp2'
- state: absent
- register: grp
- check_mode: yes
-- name: 'VERIFY: Delete server group in check mode'
- assert:
- that:
- - grp is changed
- - grp.name == '{{ cloudscale_resource_prefix }}-grp2'
- - grp.uuid == server_group_uuid
-
-- name: Delete server group
- cloudscale_server_group:
- name: '{{ cloudscale_resource_prefix }}-grp2'
- state: absent
- register: grp
-- name: 'VERIFY: Delete server group'
- assert:
- that:
- - grp is changed
- - grp.name == '{{ cloudscale_resource_prefix }}-grp2'
- - grp.uuid == server_group_uuid
-
-- name: Delete server group idempotence
- cloudscale_server_group:
- name: '{{ cloudscale_resource_prefix }}-grp2'
- state: absent
- register: grp
-- name: 'VERIFY: Delete server group idempotence'
- assert:
- that:
- - grp is not changed
- - grp.name == '{{ cloudscale_resource_prefix }}-grp2'
- - not grp.uuid
diff --git a/test/integration/targets/cloudscale_volume/aliases b/test/integration/targets/cloudscale_volume/aliases
deleted file mode 100644
index c200a3d2c8..0000000000
--- a/test/integration/targets/cloudscale_volume/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cloudscale
-unsupported
diff --git a/test/integration/targets/cloudscale_volume/meta/main.yml b/test/integration/targets/cloudscale_volume/meta/main.yml
deleted file mode 100644
index 8dd48f0337..0000000000
--- a/test/integration/targets/cloudscale_volume/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cloudscale_common
diff --git a/test/integration/targets/cloudscale_volume/tasks/cleanup.yml b/test/integration/targets/cloudscale_volume/tasks/cleanup.yml
deleted file mode 100644
index 716717071a..0000000000
--- a/test/integration/targets/cloudscale_volume/tasks/cleanup.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- name: Remove test server
- cloudscale_server:
- uuid: '{{ server.uuid }}'
- state: 'absent'
diff --git a/test/integration/targets/cloudscale_volume/tasks/failures.yml b/test/integration/targets/cloudscale_volume/tasks/failures.yml
deleted file mode 100644
index cab0d27cdc..0000000000
--- a/test/integration/targets/cloudscale_volume/tasks/failures.yml
+++ /dev/null
@@ -1,38 +0,0 @@
----
-- name: Create two volumes with the same name
- uri:
- url: 'https://api.cloudscale.ch/v1/volumes'
- method: POST
- headers:
- Authorization: 'Bearer {{ cloudscale_api_token }}'
- body:
- name: '{{ cloudscale_resource_prefix }}-duplicate'
- size_gb: 50
- body_format: json
- status_code: 201
- register: duplicate
- with_sequence: count=2
-
-- name: Try access to duplicate name
- cloudscale_volume:
- name: '{{ cloudscale_resource_prefix }}-duplicate'
- size_gb: 10
- register: vol
- ignore_errors: True
-- name: 'VERIFY: Try access to duplicate name'
- assert:
- that:
- - vol is failed
-
-- name: Fail volume creation with UUID
- cloudscale_volume:
- uuid: ea3b39a3-77a8-4d0b-881d-0bb00a1e7f48
- name: '{{ cloudscale_resource_prefix }}-inexistent'
- size_gb: 10
- register: vol
- ignore_errors: True
-- name: 'VERIFY: Fail volume creation with UUID'
- assert:
- that:
- - vol is failed
- - vol.msg.startswith('The volume with UUID \'ea3b39a3-77a8-4d0b-881d-0bb00a1e7f48\' was not found')
diff --git a/test/integration/targets/cloudscale_volume/tasks/main.yml b/test/integration/targets/cloudscale_volume/tasks/main.yml
deleted file mode 100644
index 984f6e1a24..0000000000
--- a/test/integration/targets/cloudscale_volume/tasks/main.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-- block:
- - import_tasks: setup.yml
- - import_tasks: tests.yml
- always:
- - import_role:
- name: cloudscale_common
- tasks_from: cleanup_servers
- - import_role:
- name: cloudscale_common
- tasks_from: cleanup_volumes
diff --git a/test/integration/targets/cloudscale_volume/tasks/setup.yml b/test/integration/targets/cloudscale_volume/tasks/setup.yml
deleted file mode 100644
index 4e3593cfe3..0000000000
--- a/test/integration/targets/cloudscale_volume/tasks/setup.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-- name: Create test instance
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-server'
- flavor: '{{ cloudscale_test_flavor }}'
- zone: '{{ cloudscale_test_zone }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- register: server
diff --git a/test/integration/targets/cloudscale_volume/tasks/tests.yml b/test/integration/targets/cloudscale_volume/tasks/tests.yml
deleted file mode 100644
index ec1ac28b51..0000000000
--- a/test/integration/targets/cloudscale_volume/tasks/tests.yml
+++ /dev/null
@@ -1,262 +0,0 @@
----
-- name: Create volume in check mode
- cloudscale_volume:
- name: '{{ cloudscale_resource_prefix }}-vol'
- zone: '{{ cloudscale_test_zone }}'
- size_gb: 50
- tags:
- project: ansible-test
- stage: production
- sla: 24-7
- check_mode: yes
- register: vol
-- name: 'VERIFY: Create volume in check mode'
- assert:
- that:
- - vol is successful
- - vol is changed
- - vol.state == 'absent'
-
-- name: Create volume
- cloudscale_volume:
- name: '{{ cloudscale_resource_prefix }}-vol'
- zone: '{{ cloudscale_test_zone }}'
- size_gb: 50
- tags:
- project: ansible-test
- stage: production
- sla: 24-7
- register: vol
-- name: 'VERIFY: Create volume'
- assert:
- that:
- - vol is successful
- - vol is changed
- - vol.size_gb == 50
- - vol.name == '{{ cloudscale_resource_prefix }}-vol'
- - vol.zone.slug == '{{ cloudscale_test_zone }}'
- - vol.tags.project == 'ansible-test'
- - vol.tags.stage == 'production'
- - vol.tags.sla == '24-7'
-
-- name: Create volume idempotence
- cloudscale_volume:
- name: '{{ cloudscale_resource_prefix }}-vol'
- zone: '{{ cloudscale_test_zone }}'
- size_gb: 50
- tags:
- project: ansible-test
- stage: production
- sla: 24-7
- register: vol
-- name: 'VERIFY: Create volume idempotence'
- assert:
- that:
- - vol is successful
- - vol is not changed
- - vol.size_gb == 50
- - vol.name == '{{ cloudscale_resource_prefix }}-vol'
- - vol.zone.slug == '{{ cloudscale_test_zone }}'
- - vol.tags.project == 'ansible-test'
- - vol.tags.stage == 'production'
- - vol.tags.sla == '24-7'
-
-- name: Attach existing volume by name to server in check mode
- cloudscale_volume:
- name: '{{ cloudscale_resource_prefix }}-vol'
- server_uuids:
- - '{{ server.uuid }}'
- check_mode: yes
- register: vol
-- name: 'VERIFY: Attach existing volume by name to server in check mode'
- assert:
- that:
- - vol is successful
- - vol is changed
- - server.uuid not in vol.server_uuids
-
-- name: Attach existing volume by name to server
- cloudscale_volume:
- name: '{{ cloudscale_resource_prefix }}-vol'
- server_uuids:
- - '{{ server.uuid }}'
- register: vol
-- name: 'VERIFY: Attach existing volume by name to server'
- assert:
- that:
- - vol is successful
- - vol is changed
- - server.uuid in vol.server_uuids
-
-- name: Attach existing volume by name to server idempotence
- cloudscale_volume:
- name: '{{ cloudscale_resource_prefix }}-vol'
- server_uuids:
- - '{{ server.uuid }}'
- register: vol
-- name: 'VERIFY: Attach existing volume by name to server idempotence'
- assert:
- that:
- - vol is successful
- - vol is not changed
- - server.uuid in vol.server_uuids
-
-- name: Resize attached volume by UUID in check mode
- cloudscale_volume:
- uuid: '{{ vol.uuid }}'
- size_gb: 100
- check_mode: yes
- register: vol
-- name: 'VERIFY: Resize attached volume by UUID in check mode'
- assert:
- that:
- - vol is successful
- - vol is changed
- - vol.size_gb == 50
-
-- name: Resize attached volume by UUID
- cloudscale_volume:
- uuid: '{{ vol.uuid }}'
- size_gb: 100
- register: vol
-- name: 'VERIFY: Resize attached volume by UUID'
- assert:
- that:
- - vol is successful
- - vol is changed
- - vol.size_gb == 100
-
-- name: Resize attached volume by UUID idempotence
- cloudscale_volume:
- uuid: '{{ vol.uuid }}'
- size_gb: 100
- register: vol
-- name: 'VERIFY: Resize attached volume by UUID idempotence'
- assert:
- that:
- - vol is successful
- - vol is not changed
- - vol.size_gb == 100
-
-- name: Delete attached volume by UUID in check mode
- cloudscale_volume:
- uuid: '{{ vol.uuid }}'
- state: 'absent'
- check_mode: yes
- register: deleted
-- name: 'VERIFY: Delete attached volume by UUID in check mode'
- assert:
- that:
- - deleted is successful
- - deleted is changed
- - deleted.state == 'present'
- - deleted.uuid == vol.uuid
- - deleted.name == '{{ cloudscale_resource_prefix }}-vol'
-
-- name: Delete attached volume by UUID
- cloudscale_volume:
- uuid: '{{ vol.uuid }}'
- state: 'absent'
- register: deleted
-- name: 'VERIFY: Delete attached volume by UUID'
- assert:
- that:
- - deleted is successful
- - deleted is changed
- - deleted.state == 'absent'
- - deleted.uuid == vol.uuid
- - deleted.name == '{{ cloudscale_resource_prefix }}-vol'
-
-- name: Delete attached volume by UUID idempotence
- cloudscale_volume:
- uuid: '{{ vol.uuid }}'
- state: 'absent'
- register: deleted
-- name: 'VERIFY: Delete attached volume by UUID idempotence'
- assert:
- that:
- - deleted is successful
- - deleted is not changed
- - deleted.state == 'absent'
- - deleted.uuid == vol.uuid
- - not deleted.name
-
-- name: Create bulk volume and attach
- cloudscale_volume:
- name: '{{ cloudscale_resource_prefix }}-bulk'
- type: bulk
- zone: '{{ cloudscale_test_zone }}'
- size_gb: 100
- server_uuids:
- - '{{ server.uuid }}'
- register: bulk
-- name: 'VERIFY: Create bulk volume and attach'
- assert:
- that:
- - bulk is successful
- - bulk is changed
- - bulk.size_gb == 100
- - server.uuid in bulk.server_uuids
-
-- name: Detach volume by UUID
- cloudscale_volume:
- uuid: '{{ bulk.uuid }}'
- server_uuids: []
- register: bulk
-- name: 'VERIFY: Detach volume by UUID'
- assert:
- that:
- - bulk is successful
- - bulk is changed
- - bulk.server_uuids == []
-
-- name: Resize detached volume by name
- cloudscale_volume:
- name: '{{ bulk.name }}'
- size_gb: 200
- register: bulk
-- name: 'VERIFY: Resize detached volume by name'
- assert:
- that:
- - bulk is successful
- - bulk is changed
- - bulk.size_gb == 200
-
-- name: Delete volume by name in check mode
- cloudscale_volume:
- name: '{{ bulk.name }}'
- state: 'absent'
- check_mode: yes
- register: bulk
-- name: 'VERIFY: Delete volume by name'
- assert:
- that:
- - bulk is successful
- - bulk is changed
- - bulk.state == 'present'
-
-- name: Delete volume by name
- cloudscale_volume:
- name: '{{ bulk.name }}'
- state: 'absent'
- register: bulk
-- name: 'VERIFY: Delete volume by name'
- assert:
- that:
- - bulk is successful
- - bulk is changed
- - bulk.state == 'absent'
-
-- name: Delete volume by name idempotence
- cloudscale_volume:
- name: '{{ bulk.name }}'
- state: 'absent'
- register: bulk
-- name: 'VERIFY: Delete volume by name idempotence'
- assert:
- that:
- - bulk is successful
- - bulk is not changed
- - bulk.state == 'absent'
-
-- import_tasks: failures.yml
diff --git a/test/integration/targets/cnos_backup/README.md b/test/integration/targets/cnos_backup/README.md
deleted file mode 100644
index 9b3c7cd8f8..0000000000
--- a/test/integration/targets/cnos_backup/README.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# Ansible Role: cnos_backup_sample - Saving the switch configuration to a remote server
----
-<add role description below>
-
-This role is an example of using the *cnos_backup.py* Lenovo module in the context of CNOS switch configuration. This module allows you to work with switch configurations. It provides a way to back up the running or startup configurations of a switch to a remote server. This is achieved by periodically saving a copy of the startup or running configuration of the network device to a remote server using FTP, SFTP, TFTP, or SCP.
-
-The results of the operation can be viewed in *results* directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_backup](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_backup.html&cp=0_3_1_0_4_4).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up (**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-
-The values of the variables used need to be modified to fit the specific scenario in which you are deploying the solution. To change the values of the variables, you need to visits the *vars* directory of each role and edit the *main.yml* file located there. The values stored in this file will be used by Ansible when the template is executed.
-
-The syntax of *main.yml* file for variables is the following:
-
-```
-<template variable>:<value>
-```
-
-You will need to replace the `<value>` field with the value that suits your topology. The `<template variable>` fields are taken from the template and it is recommended that you leave them unchanged.
-
-Variable | Description
---- | ---
-`configType` | Specifies the type of configuration to be backed up to the remote server (**running-config** - running configuration, **startup-config** - startup configuration)
-`protocol` | Specifies the protocol used by the network device to interact with the remote server to where to upload the backup configuration (**ftp** - FTP, **sftp** - SFTP, **tftp** - TFTP, **scp** - SCP)
-`serverip` | Specifies the IP Address of the remote server to where the configuration will be backed up
-`rcpath` | Specifies the full file path where the configuration file will be copied on the remote server (when backing up the switch configuration through TFTP, an empty directory needs to be created, otherwise the operation will fail)
-`serverusername` | Configures the username for the server relating to the protocol used
-`serverpassword` | Configures the password for the server relating to the protocol used
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_backup.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_backup_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_backup_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_backup_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
-- name: Module to back up configuration
- hosts: cnos_backup_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_backup_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/cnos_backup/aliases b/test/integration/targets/cnos_backup/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_backup/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_backup/cnos_backup_sample_hosts b/test/integration/targets/cnos_backup/cnos_backup_sample_hosts
deleted file mode 100644
index 9f07a29d4b..0000000000
--- a/test/integration/targets/cnos_backup/cnos_backup_sample_hosts
+++ /dev/null
@@ -1,17 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_backup_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_backup_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos rcpath=/root/cnos_config/G8272-running-config.txt
-
-#Use this in case its TFTP as tftpboot folder is the starting point for tftp
-#10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos rcpath=/anil/G8272-running-config.txt
diff --git a/test/integration/targets/cnos_backup/tasks/main.yml b/test/integration/targets/cnos_backup/tasks/main.yml
deleted file mode 100644
index fe2b9a88e6..0000000000
--- a/test/integration/targets/cnos_backup/tasks/main.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# This contain sample config back up tasks
----
-
-- name: Test Startup Config Backup
- cnos_backup: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_backup_{{ inventory_hostname }}_output.txt configType='{{item.configType}}' protocol='{{item.protocol}}' serverip='{{item.serverip}}' rcpath='{{item.rcpath}}' serverusername='{{item.serverusername}}' serverpassword='{{item.serverpassword}}'
- with_items: "{{test_config_data2}}"
-
-- name: Test Running Config Backup
- cnos_backup: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_backup_{{ inventory_hostname }}_output.txt configType='{{item.configType}}' protocol='{{item.protocol}}' serverip='{{item.serverip}}' rcpath='{{item.rcpath}}' serverusername='{{item.serverusername}}' serverpassword='{{item.serverpassword}}'
- with_items: "{{test_config_data1}}"
-
-#Root folder will be different for SFTP/SCP and TFTP
-#The following task is commented.
-#Before trying this, please change in /etc/ansible/hosts file
-#and backup the config file with reference to your tftp-root folder
-
-#- name: Test Running Config Backup -TFTP
-# cnos_backup: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_backup_{{ inventory_hostname }}_output.txt configType='{{item.configType}}' protocol='{{item.protocol}}' serverip='{{item.serverip}}' rcpath='{{item.rcpath}}'
-# with_items: "{{test_config_data3}}"
-
-#- name: Test Startup Config Backup - TFTP
-# cnos_backup: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_backup_{{ inventory_hostname }}_output.txt configType='{{item.configType}}' protocol='{{item.protocol}}' serverip='{{item.serverip}}' rcpath='{{item.rcpath}}'
-# with_items: "{{test_config_data4}}"
-
-# Completed file
diff --git a/test/integration/targets/cnos_backup/vars/main.yml b/test/integration/targets/cnos_backup/vars/main.yml
deleted file mode 100644
index 478ec145c4..0000000000
--- a/test/integration/targets/cnos_backup/vars/main.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-test_config_data1:
- - {configType: "running-config", protocol: "sftp", serverip: "10.241.106.118", serverusername: "root", serverpassword: "root123", rcpath: "/root/cnos_config/"}
-
-test_config_data2:
- - {configType: "startup-config", protocol: "sftp", serverip: "10.241.106.118", serverusername: "root", serverpassword: "root123", rcpath: "/root/cnos_config/"}
-
-test_config_data3:
- - {configType: running-config, protocol: "tftp", serverip: "10.241.106.118", rcpath: "/root/cnos_config/"}
-
-test_config_data4:
- - {configType: startup-config, protocol: "tftp", serverip: "10.241.106.118", rcpath: "/root/cnos_config/"}
diff --git a/test/integration/targets/cnos_banner/aliases b/test/integration/targets/cnos_banner/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_banner/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_banner/cnos_banner_sample_hosts b/test/integration/targets/cnos_banner/cnos_banner_sample_hosts
deleted file mode 100644
index 495d6ba41d..0000000000
--- a/test/integration/targets/cnos_banner/cnos_banner_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_banner_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_banner_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password>
diff --git a/test/integration/targets/cnos_banner/defaults/main.yaml b/test/integration/targets/cnos_banner/defaults/main.yaml
deleted file mode 100644
index 5f709c5aac..0000000000
--- a/test/integration/targets/cnos_banner/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/test/integration/targets/cnos_banner/tasks/cli.yaml b/test/integration/targets/cnos_banner/tasks/cli.yaml
deleted file mode 100644
index 303af40762..0000000000
--- a/test/integration/targets/cnos_banner/tasks/cli.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-- name: run test case (connection=local)
- include: "{{ test_case_to_run }} ansible_connection=local"
- with_first_found: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_banner/tasks/main.yaml b/test/integration/targets/cnos_banner/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_banner/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_banner/tests/cli/basic-login.yaml b/test/integration/targets/cnos_banner/tests/cli/basic-login.yaml
deleted file mode 100644
index 0e1e8f97d6..0000000000
--- a/test/integration/targets/cnos_banner/tests/cli/basic-login.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
----
-
-- name: setup - remove login
- cnos_banner:
- banner: login
- state: absent
- provider: "{{ cli }}"
-
-- name: Set login
- cnos_banner:
- banner: login
- text: |
- this is my login banner
- that has a multiline
- string
- state: present
- provider: "{{ cli }}"
-
- register: result
-
-- debug:
- msg: "{{ result }}"
-
-- assert:
- that:
- - "result.changed == true"
-
-- name: Set login again (idempotent)
- cnos_banner:
- banner: login
- text: |
- this is my login banner
- that has a multiline
- string
- state: present
- provider: "{{ cli }}"
-
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.commands | length == 0"
diff --git a/test/integration/targets/cnos_banner/tests/cli/basic-motd.yaml b/test/integration/targets/cnos_banner/tests/cli/basic-motd.yaml
deleted file mode 100644
index b7bcfc6710..0000000000
--- a/test/integration/targets/cnos_banner/tests/cli/basic-motd.yaml
+++ /dev/null
@@ -1,45 +0,0 @@
----
-
-- name: setup - remove motd
- cnos_banner:
- banner: motd
- state: absent
- provider: "{{ cli }}"
-
-
-- name: Set motd
- cnos_banner:
- banner: motd
- text: |
- this is my motd banner
- that has a multiline
- string
- state: present
- provider: "{{ cli }}"
-
- register: result
-
-- debug:
- msg: "{{ result }}"
-
-- assert:
- that:
- - "result.changed == true"
-# - "'banner motd @\nthis is my motd banner\nthat has a multiline\nstring\n@' in result.commands"
-
-- name: Set motd again (idempotent)
- cnos_banner:
- banner: motd
- text: |
- this is my motd banner
- that has a multiline
- string
- state: present
- provider: "{{ cli }}"
-
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.commands | length == 0"
diff --git a/test/integration/targets/cnos_banner/tests/cli/basic-no-login.yaml b/test/integration/targets/cnos_banner/tests/cli/basic-no-login.yaml
deleted file mode 100644
index b3d7d4b671..0000000000
--- a/test/integration/targets/cnos_banner/tests/cli/basic-no-login.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
----
-- name: Setup
- cnos_banner:
- banner: login
- text: |
- Junk login banner
- over multiple lines
- state: present
- provider: "{{ cli }}"
-
-- name: remove login
- cnos_banner:
- banner: login
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- debug:
- msg: "{{ result }}"
-
-- assert:
- that:
- - "result.changed == true"
- - "'no banner login' in result.commands" # does this break due to "contains?"
-
-- name: remove login (idempotent)
- cnos_banner:
- banner: login
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.commands | length == 0"
diff --git a/test/integration/targets/cnos_banner/vars/main.yaml b/test/integration/targets/cnos_banner/vars/main.yaml
deleted file mode 100644
index aa25153ec8..0000000000
--- a/test/integration/targets/cnos_banner/vars/main.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-cli:
- host: "{{ inventory_hostname }}"
- port: 22
- username: admin
- password: admin
- timeout: 30
- authorize: True
- auth_pass:
diff --git a/test/integration/targets/cnos_bgp/README.md b/test/integration/targets/cnos_bgp/README.md
deleted file mode 100644
index d48ce85205..0000000000
--- a/test/integration/targets/cnos_bgp/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# Ansible Role: cnos_bgp_sample - CNOS Switch BGP Configuration
----
-<add role description below>
-
-This role is an example of using the *cnos_bgp.py* Lenovo module in the context of CNOS switch configuration. This module allows you to work with Border Gateway Protocol (BGP) related configurations. The operators used are overloaded to ensure control over switch BGP configurations. This module is invoked using method with *asNumber* as one of its arguments.
-
-The first level of the BGP configuration allows to set up an AS number, with the following attributes going into various configuration operations under the context of BGP. After passing this level, there are eight BGP arguments that will perform further configurations. They are *bgpArg1*, *bgpArg2*, *bgpArg3*, *bgpArg4*, *bgpArg5*, *bgpArg6*, *bgpArg7*, and *bgpArg8*.
-
-The results of the operation can be viewed in *results* directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_bgp](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_bgp.html&cp=0_3_1_0_4_16).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up (**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-
-The values of the variables used need to be modified to fit the specific scenario in which you are deploying the solution. To change the values of the variables, you need to visits the *vars* directory of each role and edit the *main.yml* file located there. The values stored in this file will be used by Ansible when the template is executed.
-
-The syntax of *main.yml* file for variables is the following:
-
-```
-<template variable>:<value>
-```
-
-You will need to replace the `<value>` field with the value that suits your topology. The `<template variable>` fields are taken from the template and it is recommended that you leave them unchanged.
-
-Variable | Description
---- | ---
-`asNum` | Specifies the AS number
-`bgpArg1` | This is an overloaded BGP variable. Please refer to the [cnos_bgp module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_bgp.html?cp=0_3_1_0_2_13) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: **address-family**, **bestpath**, **bgp**, **cluster-id**, **confederation**, **enforce-first-as**, **fast-external-failover**, **graceful-restart**, **graceful-restart-helper**, **log-neighbor-changes**, **maxas-limit**, **neighbor**, **router-id**, **shutdown**, **synchronization**, **timers**, **vrf**.
-`bgpArg2` | This is an overloaded BGP variable. Please refer to the [cnos_bgp module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_bgp.html?cp=0_3_1_0_2_13) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: **ipv4**, **ipv6**, **always-compare-med**, **compare-confed-aspath**, **compare-routerid**, **dont-compare-originator-id**, **tie-break-on-age**, **as-path**, **med**, number of times to prepend the local AS, Route Reflector Cluster ID as a 32 bit quantity or in IP address format, **identifier**, **peers**, delay value, number of autonomous systems in the AS-path attribute, neighbor address, neighbor prefix, manually configured router identifier, keepalive interval.
-`bgpArg3` | This is an overloaded BGP variable. Please refer to the [cnos_bgp module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_bgp.html?cp=0_3_1_0_2_13) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: **aggregate-address**, **client-to-client**, **dampening**, **distance**, **maximum-paths**, **network**, **nexthop**, **redistribute**, **save**, **synchronization**, **ignore**, **multipath-relax**, **confed**, **missing-as-worst**, **non-deterministic**, **remove-recv-med**, **remove-send-med**, set routing domain confederation AS, AS number.
-`bgpArg4` | This is an overloaded BGP variable. Please refer to the [cnos_bgp module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_bgp.html?cp=0_3_1_0_2_13) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: IP address/prefix length, **route-map**, time after which a penalty is decreased by half, administrative distance to routes outside the AS, **ebgp**, **ibgp**, **synchronization**, IP address, delay value, **direct**, **ospf**, **static**, **memory**.
-`bgpArg5` | This is an overloaded BGP variable. Please refer to the [cnos_bgp module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_bgp.html?cp=0_3_1_0_2_13) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: **as-set**, **summary-only**, name of the route map that controls where BGP route dampening is enabled, value to start reusing a route, administrative distance to routes inside the AS, value for maximum path numbers, **backdoor**, **mask**, **route-map**.
-`bgpArg6` | This is an overloaded BGP variable. Please refer to the [cnos_bgp module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_bgp.html?cp=0_3_1_0_2_13) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: **summary-only**, **as-set**, value to start suppressing a route, administrative distance for local routes, IP subnet address mask, name of the route map.
-`bgpArg7` | This is an overloaded BGP variable. Please refer to the [cnos_bgp module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_bgp.html?cp=0_3_1_0_2_13) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: maximum duration to suppress a stable route, **route-map**, **backdoor**.
-'bgpArg8' | This is an overloaded BGP variable. Please refer to the [cnos_bgp module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_bgp.html?cp=0_3_1_0_2_13) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: time after which an unreachable route's penalty is decreased by half, **backdoor**.
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_bgp.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_bgp_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_bgp_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_bgp_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
-- name: Module to do BGP configuration
- hosts: cnos_bgp_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_bgp_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/cnos_bgp/aliases b/test/integration/targets/cnos_bgp/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_bgp/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_bgp/cnos_bgp_sample_hosts b/test/integration/targets/cnos_bgp/cnos_bgp_sample_hosts
deleted file mode 100644
index c84d7e3c0d..0000000000
--- a/test/integration/targets/cnos_bgp/cnos_bgp_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_bgp_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_bgp_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_bgp/tasks/main.yml b/test/integration/targets/cnos_bgp/tasks/main.yml
deleted file mode 100644
index 96af8dbb3e..0000000000
--- a/test/integration/targets/cnos_bgp/tasks/main.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-## This contain sample BGP execution tasks
----
-- name: Test BGP - neighbor
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}' bgpArg3='{{item.bgpArg3}}' bgpArg4='{{item.bgpArg4}}' bgpArg5='{{item.bgpArg5}}' bgpArg6='{{item.bgpArg6}}'
- with_items: "{{test_bgp_data13}}"
-
-- name: Test BGP - BFD
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}' bgpArg3='{{item.bgpArg3}}' bgpArg4='{{item.bgpArg4}}'
- with_items: "{{test_bgp_data19}}"
-
-- name: Test BGP - address-family - dampening
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}' bgpArg3='{{item.bgpArg3}}' bgpArg4='{{item.bgpArg4}}' bgpArg5='{{item.bgpArg5}}' bgpArg6='{{item.bgpArg6}}' bgpArg7='{{item.bgpArg7}}' bgpArg8='{{item.bgpArg8}}'
- with_items: "{{test_bgp_data1}}"
-
-- name: Test BGP - address-family - network
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}' bgpArg3='{{item.bgpArg3}}' bgpArg4='{{item.bgpArg4}}' bgpArg5='{{item.bgpArg5}}'
- with_items: "{{test_bgp_data18}}"
-
-- name: Test BGP - bestpath - always-compare-med
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}'
- with_items: "{{test_bgp_data2}}"
-
-- name: Test BGP - bestpath-compare-confed-aspat
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}'
- with_items: "{{test_bgp_data3}}"
-
-- name: Test BGP - bgp
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}'
- with_items: "{{test_bgp_data4}}"
-
-- name: Test BGP - cluster-id
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}'
- with_items: "{{test_bgp_data5}}"
-
-- name: Test BGP - confederation-identifier
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}' bgpArg3='{{item.bgpArg3}}'
- with_items: "{{test_bgp_data6}}"
-
-- name: Test BGP - enforce-first-as
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}'
- with_items: "{{test_bgp_data7}}"
-
-- name: Test BGP - fast-external-failover
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}'
- with_items: "{{test_bgp_data8}}"
-
-- name: Test BGP - graceful-restart
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}'
- with_items: "{{test_bgp_data9}}"
-
-- name: Test BGP - graceful-restart-helper
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}'
- with_items: "{{test_bgp_data10}}"
-
-- name: Test BGP - maxas-limit
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}'
- with_items: "{{test_bgp_data11}}"
-
-#- name: Test BGP - neighbor
-# cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}' bgpArg3='{{item.bgpArg3}}'
-# with_items: "{{test_bgp_data13}}"
-
-- name: Test BGP - router-id
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}'
- with_items: "{{test_bgp_data14}}"
-
-- name: Test BGP - synchronization
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}'
- with_items: "{{test_bgp_data15}}"
-
-- name: Test BGP - timers
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}' bgpArg2='{{item.bgpArg2}}' bgpArg3='{{item.bgpArg3}}'
- with_items: "{{test_bgp_data16}}"
-
-- name: Test BGP - vrf
- cnos_bgp: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_bgp_{{ inventory_hostname }}_output.txt asNum='{{item.asNum}}' bgpArg1='{{item.bgpArg1}}'
- with_items: "{{test_bgp_data17}}"
-# Completed file
diff --git a/test/integration/targets/cnos_bgp/vars/main.yml b/test/integration/targets/cnos_bgp/vars/main.yml
deleted file mode 100644
index ba08d9c0ff..0000000000
--- a/test/integration/targets/cnos_bgp/vars/main.yml
+++ /dev/null
@@ -1,37 +0,0 @@
----
-test_bgp_data1:
- - {asNum: 33, bgpArg1: "address-family", bgpArg2: "ipv4", bgpArg3: "dampening", bgpArg4: 13, bgpArg5: 233, bgpArg6: 333, bgpArg7: 15, bgpArg8: 33 }
-test_bgp_data2:
- - {asNum: 33, bgpArg1: "bestpath", bgpArg2: "always-compare-med"}
-test_bgp_data3:
- - {asNum: 33, bgpArg1: "bestpath", bgpArg2: "compare-confed-aspath"}
-test_bgp_data4:
- - {asNum: 33, bgpArg1: "bgp", bgpArg2: 33}
-test_bgp_data5:
- - {asNum: 33, bgpArg1: "cluster-id", bgpArg2: "1.2.3.4"}
-test_bgp_data6:
- - {asNum: 33, bgpArg1: "confederation", bgpArg2: "identifier", bgpArg3: 333}
-test_bgp_data7:
- - {asNum: 33, bgpArg1: "enforce-first-as"}
-test_bgp_data8:
- - {asNum: 33, bgpArg1: "fast-external-failover"}
-test_bgp_data9:
- - {asNum: 33, bgpArg1: "graceful-restart", bgpArg2: 333}
-test_bgp_data10:
- - {asNum: 33, bgpArg1: "graceful-restart-helper"}
-test_bgp_data11:
- - {asNum: 33, bgpArg1: "maxas-limit", bgpArg2: 333}
-test_bgp_data13:
- - {asNum: 33, bgpArg1: "neighbor", bgpArg2: "10.241.107.40", bgpArg3: 13, bgpArg4: "address-family", bgpArg5: "ipv4", bgpArg6: "next-hop-self" }
-test_bgp_data14:
- - {asNum: 33, bgpArg1: "router-id", bgpArg2: "1.2.3.4"}
-test_bgp_data15:
- - {asNum: 33, bgpArg1: "synchronization"}
-test_bgp_data16:
- - {asNum: 33, bgpArg1: "timers", bgpArg2: 333, bgpArg3: 3333}
-test_bgp_data17:
- - {asNum: 33, bgpArg1: "vrf"}
-test_bgp_data18:
- - {asNum: 33, bgpArg1: "address-family", bgpArg2: "ipv4", bgpArg3: "network", bgpArg4: "1.2.3.4/5", bgpArg5: "backdoor"}
-test_bgp_data19:
- - {asNum: 33, bgpArg1: "neighbor", bgpArg2: "10.241.107.40", bgpArg3: 13, bgpArg4: "bfd"}
diff --git a/test/integration/targets/cnos_command/README.md b/test/integration/targets/cnos_command/README.md
deleted file mode 100644
index 374470c4a4..0000000000
--- a/test/integration/targets/cnos_command/README.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# Ansible Role: cnos_command - Executes any CLI command on switch and results are displayed.
----
-<add role description below>
-
- Sends arbitrary commands to an CNOS node and returns the results
- read from the device. The C(cnos_command) module includes an
- argument that will cause the module to wait for a specific condition
- before returning or timing out if the condition is not met.
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.6 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-
-These are the various options the customer have in executing the cnos_command modules:
-
-Variable | Description
---- | ---
-`commands` | List of commands to send to the remote device. The resulting output from the command is returned. If the I(wait_for) argument is provided, the module is not returned until the condition is satisfied or the number of retires as expired.
-`wait_for` | List of conditions to evaluate against the output of the command. The task will wait for each condition to be true before moving forward. If the conditional is not true within the configured number of retries, the task fails. See examples.
-`match` | The I(match) argument is used in conjunction with the I(wait_for) argument to specify the match policy. Valid values are C(all) or C(any). If the value is set to C(all) then all conditionals in the wait_for must be satisfied. If the value is set to C(any) then only one of the values must be satisfied.
-`retries` | Specifies the number of retries a command should by tried before it is considered failed. The command is run on the target device every retry and evaluated against the I(wait_for) conditions.
-`interval` | Configures the interval in seconds to wait between retries of the command. If the command does not pass the specified conditions, the interval indicates how long to wait before trying the command again.
-
-Need to specify these variables in vars/main.yml under variable `cli`
-
-Variable | Description
---- | ---
-`host` | Has to be "{{ inventory_hostname }}"
-`port` | Has to be`22`
-`username` | User Name of switch
-`password` | Password of switch
-`timeout` | time out value for CLI
-`authorize` | Whether u have to enter enable mode for data collection.
-`auth_pass`| Enable Password if required
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_command.py - This module file will be located at lib/ansible/modules/network/cnos/ of Ansible installation.
-- cnos.py - This module util file will be located at lib/ansible/module_utils/network/cnos of Ansible installation.
-- cnos.py - This module plugin file will be located at lib/ansible/plugins/action of Ansible installation.
-- cnos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- cnos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_command_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_command]
-10.241.107.39 ansible_connection=network_cli ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password>
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_command_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do some CLI Command configurations
- hosts: cnos_command
- gather_facts: no
- connection: network_cli
- roles:
- - cnos_command
-```
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, eithe
-r version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PU
-RPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/cnos_command/aliases b/test/integration/targets/cnos_command/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_command/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_command/cnos_command_sample_hosts b/test/integration/targets/cnos_command/cnos_command_sample_hosts
deleted file mode 100644
index 05c50f2567..0000000000
--- a/test/integration/targets/cnos_command/cnos_command_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_command_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_command_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_command/defaults/main.yaml b/test/integration/targets/cnos_command/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/cnos_command/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/cnos_command/tasks/cli.yaml b/test/integration/targets/cnos_command/tasks/cli.yaml
deleted file mode 100644
index d675462dd0..0000000000
--- a/test/integration/targets/cnos_command/tasks/cli.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_command/tasks/main.yaml b/test/integration/targets/cnos_command/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_command/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_command/tests/cli/bad_operator.yaml b/test/integration/targets/cnos_command/tests/cli/bad_operator.yaml
deleted file mode 100644
index 0e885c4c21..0000000000
--- a/test/integration/targets/cnos_command/tests/cli/bad_operator.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- debug: msg="START cli/bad_operator.yaml"
-
-- name: test bad operator
- cnos_command:
- commands:
- - display version
- - display interface brief
- wait_for:
- - result[0] contains 'Description: Foo'
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - "result.failed == true"
- - "result.msg is defined"
-
-- debug: msg="END cli/bad_operator.yaml"
diff --git a/test/integration/targets/cnos_command/tests/cli/contains.yaml b/test/integration/targets/cnos_command/tests/cli/contains.yaml
deleted file mode 100644
index 87a4035e72..0000000000
--- a/test/integration/targets/cnos_command/tests/cli/contains.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- debug: msg="START cli/contains.yaml"
-
-- name: test contains operator
- cnos_command:
- commands:
- - display version
- - display process memory
- wait_for:
- - "result[0] contains 'Lenovo'"
- - "result[1] contains 'Mem:'"
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
-
-- debug: msg="END cli/contains.yaml"
diff --git a/test/integration/targets/cnos_command/tests/cli/invalid.yaml b/test/integration/targets/cnos_command/tests/cli/invalid.yaml
deleted file mode 100644
index f4df0c3f24..0000000000
--- a/test/integration/targets/cnos_command/tests/cli/invalid.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-- debug: msg="START cli/invalid.yaml"
-
-- name: run invalid command
- cnos_command:
- commands: ['display foo']
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - "result.failed"
-
-- name: run commands that include invalid command
- cnos_command:
- commands:
- - display version
- - display foo
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - "result.failed"
- ignore_errors: true
-
-- debug: msg="END cli/invalid.yaml"
diff --git a/test/integration/targets/cnos_command/tests/cli/output.yaml b/test/integration/targets/cnos_command/tests/cli/output.yaml
deleted file mode 100644
index a9a328507e..0000000000
--- a/test/integration/targets/cnos_command/tests/cli/output.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-- debug: msg="START cli/output.yaml"
-
-- name: get output for single command
- cnos_command:
- commands: ['display version']
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
-
-- name: get output for multiple commands
- cnos_command:
- commands:
- - display version
- - display interface brief
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
- - "result.stdout | length == 2"
-
-- debug: msg="END cli/output.yaml"
diff --git a/test/integration/targets/cnos_command/tests/cli/timeout.yaml b/test/integration/targets/cnos_command/tests/cli/timeout.yaml
deleted file mode 100644
index 54781db0ed..0000000000
--- a/test/integration/targets/cnos_command/tests/cli/timeout.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-- debug: msg="START cli/timeout.yaml"
-
-- name: test bad condition
- cnos_command:
- commands:
- - display version
- wait_for:
- - "result[0] contains bad_value_string"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - "result.failed == true"
- - "result.msg is defined"
-
-- debug: msg="END cli/timeout.yaml"
diff --git a/test/integration/targets/cnos_conditional_command/README.md b/test/integration/targets/cnos_conditional_command/README.md
deleted file mode 100644
index 7f8a187f0a..0000000000
--- a/test/integration/targets/cnos_conditional_command/README.md
+++ /dev/null
@@ -1,120 +0,0 @@
-# Ansible Role: cnos_conditional_command_sample - Executing a single CNOS command with respect to conditions specified in the inventory
----
-<add role description below>
-
-This role is an example of using the *cnos_conditional_command.py* Lenovo module in the context of CNOS switch configuration. This module allows you to modify the running configuration of a switch. It provides a way to execute a single CNOS command on a network device by evaluating the current running configuration and executing the command only if the specific settings have not been already configured.
-
-The CNOS command is passed as an argument of the method.
-
-This module functions the same as the *cnos_command.py* module. The only exception is that the following inventory variable can be specified: condition = &lt;flag string&gt;
-
-When this inventory variable is specified as the variable of a task, the command is executed for the network element that matches the flag string.
-Usually, commands are executed across a group of network devices. When there is a requirement to skip the execution of the command on one or more devices, it is recommended to use this module.
-
-The results of the operation can be viewed in *results* directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_conditional_command](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_conditional_command.html&cp=0_3_1_0_4_9).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up (**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-`condition` | If `condition=false` is specified in the inventory file against any device, the command execution is skipped for that device (**true**, **false**)
-
-The values of the variables used need to be modified to fit the specific scenario in which you are deploying the solution. To change the values of the variables, you need to visits the *vars* directory of each role and edit the *main.yml* file located there. The values stored in this file will be used by Ansible when the template is executed.
-
-The syntax of *main.yml* file for variables is the following:
-
-```
-<template variable>:<value>
-```
-
-You will need to replace the `<value>` field with the value that suits your topology. The `<template variable>` fields are taken from the template and it is recommended that you leave them unchanged.
-
-Variable | Description
---- | ---
-`flag` | If a task needs to be executed, the flag needs to be set the same as it is specified in the inventory for that device
-`clicommand` | Specifies the CLI command as an attribute to this method
-
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_conditional_command.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_conditional_command_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_conditional_command_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos condition=pass
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_conditional_command_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do some configurations
- hosts: cnos_conditional_command_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_conditional_command_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/cnos_conditional_command/aliases b/test/integration/targets/cnos_conditional_command/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_conditional_command/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_conditional_command/cnos_conditional_command_sample_hosts b/test/integration/targets/cnos_conditional_command/cnos_conditional_command_sample_hosts
deleted file mode 100644
index 81da313f07..0000000000
--- a/test/integration/targets/cnos_conditional_command/cnos_conditional_command_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_conditional_command_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_conditional_command_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_conditional_command/tasks/main.yml b/test/integration/targets/cnos_conditional_command/tasks/main.yml
deleted file mode 100644
index 18feb5d262..0000000000
--- a/test/integration/targets/cnos_conditional_command/tasks/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-# This contain sample command execution tasks
----
-
-- name: Run a command
- cnos_conditional_command: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} condition={{ hostvars[inventory_hostname]['condition'] }} flag='{{item.flag}}' clicommand='{{item.clicommand}}' outputfile=./results/cnos_conditional_command_{{ inventory_hostname }}_output.txt
- with_items: "{{conditional_command_data1}}"
-# Completed file
diff --git a/test/integration/targets/cnos_conditional_command/vars/main.yml b/test/integration/targets/cnos_conditional_command/vars/main.yml
deleted file mode 100644
index 588ae01178..0000000000
--- a/test/integration/targets/cnos_conditional_command/vars/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-conditional_command_data1:
- - {flag: "pass", clicommand: "display users"}
diff --git a/test/integration/targets/cnos_conditional_template/README.md b/test/integration/targets/cnos_conditional_template/README.md
deleted file mode 100644
index 51dabf8617..0000000000
--- a/test/integration/targets/cnos_conditional_template/README.md
+++ /dev/null
@@ -1,120 +0,0 @@
-# Ansible Role: cnos_conditional_template_sample - Manages switch configuration using templates with respect to conditions specified in the inventory
----
-<add role description below>
-
-This role is an example of using the *cnos_conditional_template.py* Lenovo module in the context of CNOS switch configuration. This module allows you to work with the running configuration of a switch. It provides a way to execute a set of CNOS commands on a switch by evaluating the current running configuration and executing the commands only if the specific settings have not been already configured.
-
-The configuration source can be a set of commands or a template written in the Jinja2 templating language.
-
-This module functions the same as the *cnos_template.py* module. The only exception is that the following inventory variable can be specified: condition = &lt;flag string&gt;
-
-When this inventory variable is specified as the variable of a task, the template is executed for the network element that matches the flag string.
-
-Usually, templates are used when commands are the same across a group of network devices. When there is a requirement to skip the execution of the template on one or more devices, it is recommended to use this module.
-
-The results of the operation can be viewed in *results* directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_conditional_template](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_conditional_template.html&cp=0_3_1_0_4_11).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up (**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-`condition` | If `condition=<flag string>` is specified in the inventory file against any device, the template execution is done for that device in case it matches the flag setting for that task
-
-The values of the variables used need to be modified to fit the specific scenario in which you are deploying the solution. To change the values of the variables, you need to visits the *vars* directory of each role and edit the *main.yml* file located there. The values stored in this file will be used by Ansible when the template is executed.
-
-The syntax of *main.yml* file for variables is the following:
-
-```
-<template variable>:<value>
-```
-
-You will need to replace the `<value>` field with the value that suits your topology. The `<template variable>` fields are taken from the template and it is recommended that you leave them unchanged.
-
-Variable | Description
---- | ---
-`flag` | If a task needs to be executed, you have to set the flag the same as it is specified in the inventory for that device
-`commandfile` | Specifies the path to the CNOS command file which needs to be applied
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_conditional_template.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_conditional_template_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_conditional_template_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos condition=pass
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_conditional_template_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do some template configurations
- hosts: cnos_conditional_template_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_conditional_template_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/cnos_conditional_template/aliases b/test/integration/targets/cnos_conditional_template/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_conditional_template/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_conditional_template/cnos_conditional_template_sample_hosts b/test/integration/targets/cnos_conditional_template/cnos_conditional_template_sample_hosts
deleted file mode 100644
index 0062378924..0000000000
--- a/test/integration/targets/cnos_conditional_template/cnos_conditional_template_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_conditional_template_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_conditional_template_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_conditional_template/tasks/main.yml b/test/integration/targets/cnos_conditional_template/tasks/main.yml
deleted file mode 100644
index 2567f12ad7..0000000000
--- a/test/integration/targets/cnos_conditional_template/tasks/main.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# This contain sample conditional template execution tasks
----
-- name: Replace Config CLI command template with values
- template: src=demo_template.j2 dest=./commands/cnos_conditional_template_{{ inventory_hostname }}_command.txt
- with_items: "{{conditional_template_data1}}"
-
-- name: Applying CLI commands on Switches
- cnos_conditional_template: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}}
- condition={{ hostvars[inventory_hostname]['condition'] }} flag='{{item.flag}}' commandfile=./commands/cnos_conditional_template_{{ inventory_hostname }}_command.txt outputfile=./results/cnos_conditional_template_{{ inventory_hostname }}_output.txt
- with_items: "{{conditional_template_data1}}"
-# Completed file
diff --git a/test/integration/targets/cnos_conditional_template/templates/demo_template.j2 b/test/integration/targets/cnos_conditional_template/templates/demo_template.j2
deleted file mode 100644
index 63a47a6418..0000000000
--- a/test/integration/targets/cnos_conditional_template/templates/demo_template.j2
+++ /dev/null
@@ -1,13 +0,0 @@
-#Demo Template
-vlan {{item.vlanid1}}
-name anil
-exit
-interface ethernet {{item.slot_chassis_number1}}
-description anil
-mtu 600
-exit
-interface port-channel {{item.portchannel_interface_number1}}
-shut
-lacp suspend-individual
-no shut
-exit
diff --git a/test/integration/targets/cnos_conditional_template/vars/main.yml b/test/integration/targets/cnos_conditional_template/vars/main.yml
deleted file mode 100644
index b2795dc79a..0000000000
--- a/test/integration/targets/cnos_conditional_template/vars/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-conditional_template_data1:
- - {flag: "pass", vlanid1: 13, slot_chassis_number1: "1/2", portchannel_interface_number1: 100, portchannel_mode1: "active"}
diff --git a/test/integration/targets/cnos_config/README.md b/test/integration/targets/cnos_config/README.md
deleted file mode 100644
index 2c971737d9..0000000000
--- a/test/integration/targets/cnos_config/README.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# Ansible Role: cnos_config - Executes any Configuration command on switch and results are displayed.
----
-<add role description below>
-
- Lenovo CNOS configurations use a simple block indent file syntax
- for segmenting configuration into sections. This module provides
- an implementation for working with CNOS configuration sections in
- a deterministic way.
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.6 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-
-These are the various options the customer have in executing the cnos_config modules:
-
-Variable | Description
---- | ---
-`lines` | The ordered set of commands that should be configured in the section. The commands must be the exact same commands as found in the device running-config. Be sure to note the configuration command syntax as some commands are automatically modified by the device config parser.
-`parents` | The ordered set of parents that uniquely identify the section the commands should be checked against. If the parents argument is omitted, the commands are checked against the set of top level or global commands.
-`src` | Specifies the source path to the file that contains the configuration or configuration template to load. The path to the source file can either be the full path on the Ansible control host or a relative path from the playbook or role root directory. This argument is mutually exclusive with I(lines), I(parents).
-`before` | The ordered set of commands to push on to the command stack if a change needs to be made. This allows the playbook designer the opportunity to perform configuration commands prior to pushing any changes without affecting how the set of commands are matched against the system.
-`after` | The ordered set of commands to append to the end of the command stack if a change needs to be made. Just like with I(before) this allows the playbook designer to append a set of commands to be executed after the command set.
-`replace` | Instructs the module on the way to perform the configuration on the device. If the replace argument is set to I(line) then the modified lines are pushed to the device in configuration mode. If the replace argument is set to I(block) then the entire command block is pushed to the device in configuration mode if any line is not correct.
-`config` | The module, by default, will connect to the remote device and retrieve the current running-config to use as a base for comparing against the contents of source. There are times when it is not desirable to have the task get the current running-config for every task in a playbook. The I(config) argument allows the implementer to pass in the configuration to use as the base config for comparison.
-`backup` | This argument will cause the module to create a full backup of the current C(running-config) from the remote device before any changes are made. The backup file is written to the C(backup) folder in the playbook root directory. If the directory does not exist, it is created.
-`match` |Instructs the module on the way to perform the matching of the set of commands against the current device config. If match is set to I(line), commands are matched line by line. If match is set to I(strict), command lines are matched with respect to position. If match is set to I(exact), command lines must be an equal match. Finally, if match is set to I(none), the module will not attempt to compare the source configuration with the running configuration on the remote device.
-`comment` | Allows a commit description to be specified to be included when the configuration is committed. If the configuration is not changed or committed, this argument is ignored.
-`admin` | Enters into administration configuration mode for making config changes to the device.
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_config.py - This module file will be located at lib/ansible/modules/network/cnos/ of Ansible installation.
-- cnos.py - This module util file will be located at lib/ansible/module_utils/network/cnos of Ansible installation.
-- cnos.py - This module plugin file will be located at lib/ansible/plugins/action of Ansible installation.
-- cnos_config.py - This module plugin file will be located at lib/ansible/plugins/action of Ansible installation.
-- cnos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- cnos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_command_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_config]
-10.241.105.24 ansible_connection=network_cli ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password>
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_config_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do some CLI Command configurations
- hosts: cnos_config
- gather_facts: no
- connection: network_cli
- roles:
- - cnos_config
-```
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, eithe
-r version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PU
-RPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/cnos_config/aliases b/test/integration/targets/cnos_config/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_config/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_config/cnos_config_sample_hosts b/test/integration/targets/cnos_config/cnos_config_sample_hosts
deleted file mode 100644
index aa860b3cf6..0000000000
--- a/test/integration/targets/cnos_config/cnos_config_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_config_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_config_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_config/defaults/main.yaml b/test/integration/targets/cnos_config/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/cnos_config/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/cnos_config/tasks/cli.yaml b/test/integration/targets/cnos_config/tasks/cli.yaml
deleted file mode 100644
index d675462dd0..0000000000
--- a/test/integration/targets/cnos_config/tasks/cli.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_config/tasks/main.yaml b/test/integration/targets/cnos_config/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_config/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_config/templates/basic/config.j2 b/test/integration/targets/cnos_config/templates/basic/config.j2
deleted file mode 100644
index 13ae810013..0000000000
--- a/test/integration/targets/cnos_config/templates/basic/config.j2
+++ /dev/null
@@ -1,4 +0,0 @@
-vlan 13
- name anil
- flood ipv4
- state active
diff --git a/test/integration/targets/cnos_config/templates/basic/config1.j2 b/test/integration/targets/cnos_config/templates/basic/config1.j2
deleted file mode 100644
index e6c4c4fe61..0000000000
--- a/test/integration/targets/cnos_config/templates/basic/config1.j2
+++ /dev/null
@@ -1,4 +0,0 @@
-vlan 33
- name sunil
- flood ipv4
- state active
diff --git a/test/integration/targets/cnos_config/templates/defaults/config.j2 b/test/integration/targets/cnos_config/templates/defaults/config.j2
deleted file mode 100644
index d4c04bb3ee..0000000000
--- a/test/integration/targets/cnos_config/templates/defaults/config.j2
+++ /dev/null
@@ -1,2 +0,0 @@
-vlan 13
- name anil
diff --git a/test/integration/targets/cnos_config/tests/cli/backup.yaml b/test/integration/targets/cnos_config/tests/cli/backup.yaml
deleted file mode 100644
index 2f1673b699..0000000000
--- a/test/integration/targets/cnos_config/tests/cli/backup.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
----
-- debug: msg="START cli/backup.yaml"
-
-- name: setup
- cnos_config:
- commands:
- - no vlan 13
- ignore_errors: yes
-
-- name: collect any backup files
- find:
- paths: "{{ role_path }}/backup"
- pattern: "{{ inventory_hostname_short }}_config*"
- register: backup_files
- delegate_to: localhost
-
-- name: delete backup files
- file:
- path: "{{ item.path }}"
- state: absent
- with_items: "{{backup_files.files|default([])}}"
-
-- name: configure device with config
- cnos_config:
- src: roles/cnos_config/templates/basic/config.j2
- backup: yes
- register: result
-
-- assert:
- that:
- - "result.changed == true"
-
-- name: collect any backup files
- find:
- paths: "{{ role_path }}/backup"
- pattern: "{{ inventory_hostname_short }}_config*"
- register: backup_files
- delegate_to: localhost
-
-- assert:
- that:
- - "backup_files.files is defined"
-
-- name: teardown
- cnos_config:
- commands:
- - no vlan 13
-
-- debug: msg="END cli/backup.yaml"
diff --git a/test/integration/targets/cnos_config/tests/cli/basic.yaml b/test/integration/targets/cnos_config/tests/cli/basic.yaml
deleted file mode 100644
index 21a4d2c35a..0000000000
--- a/test/integration/targets/cnos_config/tests/cli/basic.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
----
-- debug: msg="START cli/basic.yaml"
-
-- name: setup
- cnos_config:
- commands:
- - no vlan 13\n
- ignore_errors: yes
-
-- name: configure device with config
- cnos_config:
- src: roles/cnos_config/templates/basic/config.j2
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "result.updates is not defined"
-
-- name: check device with config
- cnos_config:
- src: roles/cnos_config/templates/basic/config.j2
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "result.updates is not defined"
-
-- name: teardown
- cnos_config:
- commands:
- - no vlan 13\n
-
-- debug: msg="END cli/basic.yaml"
diff --git a/test/integration/targets/cnos_config/tests/cli/defaults.yaml b/test/integration/targets/cnos_config/tests/cli/defaults.yaml
deleted file mode 100644
index f557cd65e4..0000000000
--- a/test/integration/targets/cnos_config/tests/cli/defaults.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
----
-- debug: msg="START cli/defaults.yaml"
-
-- name: setup
- cnos_config:
- commands:
- - no vlan 13\n
- ignore_errors: yes
- become: True
- become_method: enable
-
-- name: configure device with defaults included
- cnos_config:
- src: roles/cnos_config/templates/defaults/config.j2
- register: result
- become: True
- become_method: enable
-
-- debug: var=result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.updates is not defined"
-
-- name: check device with defaults included Hell
- cnos_config:
- src: roles/cnos_config/templates/defaults/config.j2
- register: result
-
-- debug: var=result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.updates is not defined"
-
-- name: teardown
- cnos_config:
- commands:
- - no vlan 13\n
- become: true
- become_method: enable
- ignore_errors: yes
-
-- debug: msg="END cli/defaults.yaml"
diff --git a/test/integration/targets/cnos_facts/README.md b/test/integration/targets/cnos_facts/README.md
deleted file mode 100644
index 3f8f516881..0000000000
--- a/test/integration/targets/cnos_facts/README.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# Ansible Role: cnos_facts - Displays switch information
----
-<add role description below>
-
- Collects a base set of device facts from a remote Lenovo device
- running on CNOS. This module prepends all of the
- base network fact keys with C(ansible_net_<fact>). The facts
- module will always collect a base set of facts from the device
- and can enable or disable collection of additional facts.
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.6 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-
-To gather subsets you will specify the following variables to get appropriate
-data retrieved from the devices
-
-Variable | Description
---- | ---
-`gather_subset` | When supplied, this argument will restrict the facts collected to a given subset. Possible values for this argument include all, hardware, config, and interfaces. Can specify a list of values to include a larger subset. Values can also be used with an initial C(M(!)) to specify that a specific subset should not be collected.
-
-Need to specify these variables in vars/main.yml under variable `cli`
-
-Variable | Description
---- | ---
-`host` | Has to be "{{ inventory_hostname }}"
-`port` | Has to be`22`
-`username` | User Name of switch
-`password` | Password of switch
-`timeout` | time out value for CLI
-`authorize` | Whether u have to enter enable mode for data collection.
-`auth_pass`| Enable Password if required
-
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_facts.py - This module file will be located at lib/ansible/modules/network/cnos/ of Ansible installation.
-- cnos.py - This module util file will be located at lib/ansible/module_utils/network/cnos of Ansible installation.
-- cnos.py - This module plugin file will be located at lib/ansible/plugins/action of Ansible installation.
-- cnos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- cnos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_command_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_facts]
-10.241.105.24 ansible_connection=network_cli ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password>
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_facts_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do some CLI Command configurations
- hosts: cnos_facts
- gather_facts: no
- connection: network_cli
- roles:
- - cnos_facts
-```
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/cnos_facts/aliases b/test/integration/targets/cnos_facts/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_facts/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_facts/cnos_facts_sample_hosts b/test/integration/targets/cnos_facts/cnos_facts_sample_hosts
deleted file mode 100644
index a1356ed7c4..0000000000
--- a/test/integration/targets/cnos_facts/cnos_facts_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_facts_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_facts_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_facts/defaults/main.yaml b/test/integration/targets/cnos_facts/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/cnos_facts/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/cnos_facts/tasks/cli.yaml b/test/integration/targets/cnos_facts/tasks/cli.yaml
deleted file mode 100644
index d675462dd0..0000000000
--- a/test/integration/targets/cnos_facts/tasks/cli.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_facts/tasks/main.yml b/test/integration/targets/cnos_facts/tasks/main.yml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_facts/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_facts/tests/cli/all_facts.yaml b/test/integration/targets/cnos_facts/tests/cli/all_facts.yaml
deleted file mode 100644
index 4deed11fe7..0000000000
--- a/test/integration/targets/cnos_facts/tests/cli/all_facts.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-- debug: msg="START cli/all_facts.yaml"
-
-- name: test getting all facts
- cnos_facts:
- gather_subset:
- - all
- register: result
-
-- assert:
- that:
- # _facts modules should never report a change
- - "result.changed == false"
-
- # Correct subsets are present
- - "'config' in result.ansible_facts.ansible_net_gather_subset"
- - "'hardware' in result.ansible_facts.ansible_net_gather_subset"
- - "'default' in result.ansible_facts.ansible_net_gather_subset"
- - "'interfaces' in result.ansible_facts.ansible_net_gather_subset"
-
- # Items from those subsets are present
- #- "result.ansible_facts.ansible_net_filesystems is defined"
- # Check that these facts not only are present, but are valid (positive integers)
- - "result.ansible_facts.ansible_net_memfree_mb > 1"
- - "result.ansible_facts.ansible_net_memtotal_mb > 1"
-
-- debug: msg="END cli/all_facts.yaml"
diff --git a/test/integration/targets/cnos_facts/tests/cli/default_facts.yaml b/test/integration/targets/cnos_facts/tests/cli/default_facts.yaml
deleted file mode 100644
index 2b050f1b97..0000000000
--- a/test/integration/targets/cnos_facts/tests/cli/default_facts.yaml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-- debug: msg="START cli/default_facts.yaml"
-
-
-- name: test getting default facts
- cnos_facts:
- register: result
-
-- assert:
- that:
- # _facts modules should never report a change
- - "result.changed == false"
-
- # Correct subsets are present
- - "'hardware' in result.ansible_facts.ansible_net_gather_subset"
- - "'default' in result.ansible_facts.ansible_net_gather_subset"
- - "'interfaces' in result.ansible_facts.ansible_net_gather_subset"
- - "'config' not in result.ansible_facts.ansible_net_gather_subset"
-
- # Items from those subsets are present
- - "result.ansible_facts.ansible_net_memtotal_mb > 10" #hw
- - "result.ansible_facts.ansible_net_interfaces | length > 1" # more than one interface returned
- - "result.ansible_facts.ansible_net_config is not defined" # config
-
-- debug: msg="END cli/default.yaml"
diff --git a/test/integration/targets/cnos_facts/tests/cli/invalid_subset.yaml b/test/integration/targets/cnos_facts/tests/cli/invalid_subset.yaml
deleted file mode 100644
index c583f84b53..0000000000
--- a/test/integration/targets/cnos_facts/tests/cli/invalid_subset.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
----
-- debug: msg="START cli/invalid_subset.yaml"
-
-- name: test invalid subset (foobar)
- cnos_facts:
- gather_subset:
- - "foobar"
- register: result
- ignore_errors: true
-
-- assert:
- that:
- # Failures shouldn't return changes
- - "result.changed == false"
- # It's a failure
- - "result.failed == true"
- # Sensible Failure message
- - "result.msg == 'Bad subset'"
-
-- name: test subset specified multiple times
- cnos_facts:
- gather_subset:
- - "!hardware"
- - "hardware"
- authorize: yes
- register: result
- ignore_errors: true
-
-- assert:
- that:
- # Failures shouldn't return changes
- - "result.changed == false"
- # It's a failure
- - "result.failed == true"
- # Sensible Failure message
- - "result.msg == 'Bad subset'"
- ignore_errors: true
-
-- debug: msg="END cli/invalid_subset.yaml"
diff --git a/test/integration/targets/cnos_facts/tests/cli/not_hardware.yaml b/test/integration/targets/cnos_facts/tests/cli/not_hardware.yaml
deleted file mode 100644
index 4f019e40d3..0000000000
--- a/test/integration/targets/cnos_facts/tests/cli/not_hardware.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
----
-- debug: msg="START cli/not_hardware_facts.yaml"
-
-- name: test not hardware
- cnos_facts:
- gather_subset:
- - "!hardware"
- register: result
-
-- assert:
- that:
- # _facts modules should never report a change
- - "result.changed == false"
-
- # Correct subsets are present
- - "'config' in result.ansible_facts.ansible_net_gather_subset"
-
- - "'default' in result.ansible_facts.ansible_net_gather_subset"
- - "'interfaces' in result.ansible_facts.ansible_net_gather_subset"
- # ... and not present
- - "'hardware' not in result.ansible_facts.ansible_net_gather_subset"
-
- # Items from those subsets are present
- - "result.ansible_facts.ansible_net_interfaces | length > 1" # more than one interface returned
- # ... and not present
- - "result.ansible_facts.ansible_net_filesystems is not defined"
-
-- debug: msg="END cli/not_hardware_facts.yaml"
diff --git a/test/integration/targets/cnos_image/README.md b/test/integration/targets/cnos_image/README.md
deleted file mode 100644
index 7a9ec1d9c8..0000000000
--- a/test/integration/targets/cnos_image/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# Ansible Role: cnos_image_sample - Switch firmware download from a remote server
----
-<add role description below>
-
-This role is an example of using the *cnos_image.py* Lenovo module in the context of CNOS switch configuration. This module allows you to work with switch firmware images. It provides a way to download a firmware image to a network device from a remote server using FTP, SFTP, TFTP, or SCP.
-
-The first step is to create a directory from where the remote server can be reached. The next step is to provide the full file path of the image location. Authentication details required by the remote server must be provided as well.
-
-By default, this method makes the newly downloaded firmware image the active image, which will be used by the switch during the next restart.
-
-The results of the operation can be viewed in *results* directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_image](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_image.html&cp=0_3_1_0_4_2).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up (**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-
-The values of the variables used need to be modified to fit the specific scenario in which you are deploying the solution. To change the values of the variables, you need to visits the *vars* directory of each role and edit the *main.yml* file located there. The values stored in this file will be used by Ansible when the template is executed.
-
-The syntax of *main.yml* file for variables is the following:
-
-```
-<template variable>:<value>
-```
-
-You will need to replace the `<value>` field with the value that suits your topology. The `<template variable>` fields are taken from the template and it is recommended that you leave them unchanged.
-
-Variable | Description
---- | ---
-`imgType` | Specifies the firmware image type to be downloaded (**all** - both Uboot and OS images, **boot** - only the Uboot image, **os** - only the OS image, **onie** - ONIE image)
-`protocol` | Specifies the protocol used by the network device to interact with the remote server from where to download the firmware image (**ftp** - FTP, **sftp** - SFTP, **tftp** - TFTP, **scp** - SCP)
-`serverip` | Specifies the IP Address of the remote server from where the software image will be downloaded
-`imgpath` | Specifies the full file path of the image located on the remote server (in case the relative path is used as the variable value, the root folder for the user of the server needs to be specified)
-`serverusername` | Configures the username for the server relating to the protocol used
-`serverpassword` | Configures the password for the server relating to the protocol used
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_image.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_image_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_image_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_image_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do image download
- hosts: cnos_image_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_image_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
diff --git a/test/integration/targets/cnos_image/aliases b/test/integration/targets/cnos_image/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_image/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_image/cnos_image_sample_hosts b/test/integration/targets/cnos_image/cnos_image_sample_hosts
deleted file mode 100644
index a36bb74c60..0000000000
--- a/test/integration/targets/cnos_image/cnos_image_sample_hosts
+++ /dev/null
@@ -1,17 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_image_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_image_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos imgpath=/root/cnos_images/G8272-10.1.0.112.img
-
-#Use this in case its TFTP as tftpboot is the starting point for tftp
-#10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos imgpath="/anil/G8272-10.2.0.34.img
diff --git a/test/integration/targets/cnos_image/tasks/main.yml b/test/integration/targets/cnos_image/tasks/main.yml
deleted file mode 100644
index 17c1fef833..0000000000
--- a/test/integration/targets/cnos_image/tasks/main.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-# This contain sample Image download tasks
----
-
-- name: Test Image transfer
- cnos_image: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_image_{{ inventory_hostname }}_output.txt protocol='{{item.protocol}}' serverip='{{item.serverip}}' imgpath={{ hostvars[inventory_hostname]['imgpath']}} imgtype='{{item.imgtype}}' serverusername='{{item.serverusername}}' serverpassword='{{item.serverpassword}}'
- with_items: "{{test_image_data1}}"
-
-#Root folder will be different for SFTP/SCP and TFTP
-#The following task is commented.
-#Before trying this, please change in /etc/ansible/hosts file
-#and place an image with reference to your tftp-root folder
-#- name: Test Image tftp
-# cnos_image: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_image_{{ inventory_hostname }}_output.txt protocol='{{item.protocol}}' serverip='{{item.serverip}}' imgpath={{ hostvars[inventory_hostname]['imgpath']}} imgtype='{{item.imgtype}}'
-# with_items: "{{test_image_data2}}"
-
-# Completed file
diff --git a/test/integration/targets/cnos_image/vars/main.yml b/test/integration/targets/cnos_image/vars/main.yml
deleted file mode 100644
index 1b77668dda..0000000000
--- a/test/integration/targets/cnos_image/vars/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-test_image_data1:
- - {protocol: "sftp", serverip: "10.241.106.118", imgtype: "os", serverusername: "root", serverpassword: "root123"}
-
-test_image_data2:
- - {protocol: "tftp", serverip: "10.241.106.118", imgtype: "os"}
diff --git a/test/integration/targets/cnos_interface/aliases b/test/integration/targets/cnos_interface/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_interface/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_interface/cnos_interface_sample_hosts b/test/integration/targets/cnos_interface/cnos_interface_sample_hosts
deleted file mode 100644
index 21878e2cb0..0000000000
--- a/test/integration/targets/cnos_interface/cnos_interface_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_interface_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_interface_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> test_interface=ethernet1/33 test_interface2=ethernet1/44
diff --git a/test/integration/targets/cnos_interface/defaults/main.yaml b/test/integration/targets/cnos_interface/defaults/main.yaml
deleted file mode 100644
index 5f709c5aac..0000000000
--- a/test/integration/targets/cnos_interface/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/test/integration/targets/cnos_interface/tasks/cli.yaml b/test/integration/targets/cnos_interface/tasks/cli.yaml
deleted file mode 100644
index 303af40762..0000000000
--- a/test/integration/targets/cnos_interface/tasks/cli.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-- name: run test case (connection=local)
- include: "{{ test_case_to_run }} ansible_connection=local"
- with_first_found: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_interface/tasks/main.yaml b/test/integration/targets/cnos_interface/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_interface/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_interface/tests/cli/basic.yaml b/test/integration/targets/cnos_interface/tests/cli/basic.yaml
deleted file mode 100644
index 9525b6b571..0000000000
--- a/test/integration/targets/cnos_interface/tests/cli/basic.yaml
+++ /dev/null
@@ -1,228 +0,0 @@
----
-- debug: msg="START cnos_interface cli/basic.yaml on connection={{ ansible_connection }}"
-
-- name: Configure interface (setup)
- cnos_interface:
- name: "{{ test_interface }}"
- description: test-interface-1
- speed: 1000
- mtu: 1800
- state: present
- provider: "{{ cli }}"
- register: result
-
-- name: Configure interface
- cnos_interface:
- name: "{{ test_interface }}"
- description: test-interface-initial
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"description test-interface-initial" in result.commands'
-
-- name: Confgure interface (idempotent)
- cnos_interface:
- name: "{{ test_interface }}"
- description: test-interface-initial
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: Confgure interface parameters
- cnos_interface:
- name: "{{ test_interface }}"
- description: test-interface
- mtu: 2000
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"description test-interface" in result.commands'
- - '"mtu 2000" in result.commands'
-
-- name: Change interface parameters
- cnos_interface:
- name: "{{ test_interface }}"
- description: test-interface-1
- mtu: 1800
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"description test-interface-1" in result.commands'
- - '"mtu 1800" in result.commands'
-
-- name: Disable interface
- cnos_interface:
- name: "{{ test_interface }}"
- enabled: False
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- #- '"interface {{ test_interface }}" in result.commands'
- #- '"shutdown" in result.commands'
-
-- name: Enable interface
- cnos_interface:
- name: "{{ test_interface }}"
- enabled: True
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- #- '"no shutdown" in result.commands'
-
-- name: Confgure second interface (setup)
- cnos_interface:
- name: "{{ test_interface2 }}"
- description: test-interface-initial
- speed: 1000
- mtu: 1800
- state: present
- provider: "{{ cli }}"
- register: result
-
-- name: Add interface aggregate
- cnos_interface:
- aggregate:
- - { name: "{{ test_interface }}", mtu: 2000, description: test-interface-1 }
- - { name: "{{ test_interface2 }}", mtu: 2000, description: test-interface-2 }
- speed: 1000
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"mtu 2000" in result.commands'
- - '"interface {{ test_interface2 }}" in result.commands'
- - '"description test-interface-2" in result.commands'
- - '"mtu 2000" in result.commands'
-
-- name: Add interface aggregate (idempotent)
- cnos_interface:
- aggregate:
- - { name: "{{ test_interface }}", mtu: 2000, description: test-interface-1 }
- - { name: "{{ test_interface2 }}", mtu: 2000, description: test-interface-2 }
- speed: 1000
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: Disable interface aggregate
- cnos_interface:
- aggregate:
- - { name: "{{ test_interface }}" }
- - { name: "{{ test_interface2 }}" }
- enabled: False
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-# - '"interface {{ test_interface }}" in result.commands'
-# - '"shutdown" in result.commands'
-# - '"interface {{ test_interface2 }}" in result.commands'
-# - '"shutdown" in result.commands'
-
-- name: Enable interface aggregate
- cnos_interface:
- aggregate:
- - { name: "{{ test_interface }}" }
- - { name: "{{ test_interface2 }}" }
- enabled: True
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- #- '"no shutdown" in result.commands'
- - '"interface {{ test_interface2 }}" in result.commands'
- #- '"no shutdown" in result.commands'
-
-- name: loopback interface setup
- cnos_interface:
- aggregate:
- - name: loopback3
- - name: loopback6
- state: absent
- provider: "{{ cli }}"
-
-- name: Create loopback interface aggregate
- cnos_interface:
- aggregate:
- - name: loopback3
- - name: loopback6
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- #- '"interface loopback3" in result.commands'
- #- '"interface loopback6" in result.commands'
-
-- name: Delete loopback interface aggregate
- cnos_interface:
- aggregate:
- - name: loopback3
- - name: loopback6
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"no interface loopback3" in result.commands'
- - '"no interface loopback6" in result.commands'
-
-- name: Delete loopback interface aggregate (idempotent)
- cnos_interface:
- aggregate:
- - name: loopback3
- - name: loopback6
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == false'
-
-- debug: msg="END cnos_interface cli/basic.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/cnos_interface/tests/cli/intent.yaml b/test/integration/targets/cnos_interface/tests/cli/intent.yaml
deleted file mode 100644
index c4d7534ef4..0000000000
--- a/test/integration/targets/cnos_interface/tests/cli/intent.yaml
+++ /dev/null
@@ -1,140 +0,0 @@
----
-- debug: msg="START cnos_interface cli/intent.yaml on connection={{ ansible_connection }}"
-
-- name: Check intent arguments
- cnos_interface:
- name: "{{ test_interface }}"
- state: down
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - "result.failed == false"
-
-- name: Check intent arguments (failed condition)
- cnos_interface:
- name: "{{ test_interface }}"
- state: up
- provider: "{{ cli }}"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - "result.failed == true"
- - "'state eq(up)' in result.failed_conditions"
-
-- name: Config + intent
- cnos_interface:
- name: "{{ test_interface }}"
- enabled: False
- state: down
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - "result.failed == false"
-
-- name: Config + intent (fail)
- cnos_interface:
- name: "{{ test_interface }}"
- enabled: False
- provider: "{{ cli }}"
- state: up
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - "result.failed == true"
- - "'state eq(up)' in result.failed_conditions"
-
-- name: Register show neighbors detail
- cnos_command:
- commands:
- - show lldp neighbors
- provider: "{{ cli }}"
- register: show_lldp_neighbors_result
-
-- block:
- - name: Check neighbors intent arguments
- cnos_interface:
- name: Ethernet1/7
- neighbors:
- - port: Ethernet1/19
- host: NE1032
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.failed == false"
-
- - name: Check neighbors intent arguments (failed condition)
- cnos_interface:
- name: Ethernet1/7
- neighbors:
- - port: dummy_port
- host: dummy_host
- provider: "{{ cli }}"
- ignore_errors: yes
- register: result
-
- - assert:
- that:
- - "result.failed == true"
- - "'host dummy_host' in result.failed_conditions"
- - "'port dummy_port' in result.failed_conditions"
- when: '"netdev" in show_lldp_neighbors_result.stdout[0]'
-
-- name: Aggregate config + intent (pass)
- cnos_interface:
- aggregate:
- - name: "{{ test_interface }}"
- enabled: True
- state: down
- provider: "{{ cli }}"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - "result.failed == false"
-
-- block:
- - name: Aggregate neighbors intent (pass)
- cnos_interface:
- aggregate:
- - name: Ethernet1/7
- neighbors:
- - port: Ethernet1/19
- host: NE1032
- provider: "{{ cli }}"
- ignore_errors: yes
- register: result
-
- - assert:
- that:
- - "result.failed == false"
-
- - name: Aggregate neighbors intent (fail)
- cnos_interface:
- aggregate:
- - name: Ethernet1/7
- neighbors:
- - port: Ethernet1/19
- host: NE1032
- - port: dummy_port
- host: dummy_host
- provider: "{{ cli }}"
- ignore_errors: yes
- register: result
-
- - assert:
- that:
- - "result.failed == true"
- - "'host dummy_host' in result.failed_conditions"
- - "'port dummy_port' in result.failed_conditions"
- when: "'netdev' in show_lldp_neighbors_result.stdout[0]"
diff --git a/test/integration/targets/cnos_interface/vars/main.yaml b/test/integration/targets/cnos_interface/vars/main.yaml
deleted file mode 100644
index aa25153ec8..0000000000
--- a/test/integration/targets/cnos_interface/vars/main.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-cli:
- host: "{{ inventory_hostname }}"
- port: 22
- username: admin
- password: admin
- timeout: 30
- authorize: True
- auth_pass:
diff --git a/test/integration/targets/cnos_l2_interface/aliases b/test/integration/targets/cnos_l2_interface/aliases
deleted file mode 100644
index cdb5033353..0000000000
--- a/test/integration/targets/cnos_l2_interface/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported \ No newline at end of file
diff --git a/test/integration/targets/cnos_l2_interface/cnos_l2_interface_sample_hosts b/test/integration/targets/cnos_l2_interface/cnos_l2_interface_sample_hosts
deleted file mode 100644
index f5443b2819..0000000000
--- a/test/integration/targets/cnos_l2_interface/cnos_l2_interface_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_l2_interface_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_l2_interface_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=admin ansible_ssh_pass=admin deviceType=g8272_cnos test_interface=ethernet1/33 test_interface2=ethernet1/44
diff --git a/test/integration/targets/cnos_l2_interface/defaults/main.yaml b/test/integration/targets/cnos_l2_interface/defaults/main.yaml
deleted file mode 100644
index 5f709c5aac..0000000000
--- a/test/integration/targets/cnos_l2_interface/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/test/integration/targets/cnos_l2_interface/tasks/cli.yaml b/test/integration/targets/cnos_l2_interface/tasks/cli.yaml
deleted file mode 100644
index 6d2dbcbd6f..0000000000
--- a/test/integration/targets/cnos_l2_interface/tasks/cli.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-- name: run test case (connection=local)
- include: "{{ test_case_to_run }} ansible_connection=local"
- with_first_found:
- - files: "{{ test_items|default([]) }}"
- skip: true
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_l2_interface/tasks/main.yaml b/test/integration/targets/cnos_l2_interface/tasks/main.yaml
deleted file mode 100644
index 0863b30b81..0000000000
--- a/test/integration/targets/cnos_l2_interface/tasks/main.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
-#- block:
-# - { include: cli.yaml, tags: ['cli'] }
-# when: 'switch_type == "L2"'
diff --git a/test/integration/targets/cnos_l2_interface/tests/cli/agg.yaml b/test/integration/targets/cnos_l2_interface/tests/cli/agg.yaml
deleted file mode 100644
index ff15cee1af..0000000000
--- a/test/integration/targets/cnos_l2_interface/tests/cli/agg.yaml
+++ /dev/null
@@ -1,81 +0,0 @@
----
-- debug: msg="START connection={{ ansible_connection }} cnos_l2_interface aggregate test"
-
-- name: Setup - Ensure interfaces are switchport
- cnos_config:
- lines:
- - switchport
- parents:
- - "interface {{ item }}"
- loop:
- - "{{ test_interface }}"
- - "{{ test_interface2 }}"
-
-- name: "Setup vlans"
- cnos_vlan:
- aggregate:
- - vlan_id: 6
- - vlan_id: 15
- provider: "{{ cli }}"
-
-- name: Setup - Remove interface aggregate before testing
- cnos_l2_interface:
- aggregate:
- - { name: "{{ test_interface }}", mode: access, access_vlan: 6 }
- - { name: "{{ test_interface2 }}", mode: access, access_vlan: 15 }
- state: absent
- provider: "{{ cli }}"
-
-- block:
- - name: Configure interface for access_vlan aggregate
- cnos_l2_interface: &conf_agg
- aggregate:
- - { name: "{{ test_interface }}", mode: access, access_vlan: 6 }
- - { name: "{{ test_interface2 }}", mode: access, access_vlan: 15 }
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
-
- - name: Configure interface for access_vlan aggregate(Idempotence)
- cnos_l2_interface: *conf_agg
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: Remove interface aggregate
- cnos_l2_interface: &rm_agg
- aggregate:
- - { name: "{{ test_interface }}", mode: access, access_vlan: 6 }
- - { name: "{{ test_interface2 }}", mode: access, access_vlan: 15 }
- provider: "{{ cli }}"
- state: absent
- register: result
-
- - assert:
- that:
- - "result.changed == true"
-
- - name: Remove interface aggregate(Idempotence)
- cnos_l2_interface: *rm_agg
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- always:
- - name: "remove vlans"
- cnos_vlan:
- aggregate:
- - vlan_id: 6
- - vlan_id: 15
- state: absent
- provider: "{{ cli }}"
- ignore_errors: yes
-
-- debug: msg="END connection={{ ansible_connection }} cnos_l2_interface aggregate test"
diff --git a/test/integration/targets/cnos_l2_interface/tests/cli/sanity.yaml b/test/integration/targets/cnos_l2_interface/tests/cli/sanity.yaml
deleted file mode 100644
index d76d536be0..0000000000
--- a/test/integration/targets/cnos_l2_interface/tests/cli/sanity.yaml
+++ /dev/null
@@ -1,168 +0,0 @@
----
-- debug: msg="START connection={{ ansible_connection }} cnos_l2_interface sanity test"
-
-- name: "Setup interface"
- cnos_config: &default
- lines:
- - "interface {{ test_interface }}"
- provider: "{{ cli }}"
-
-#- name: set trunk encapsulation type
-# cnos_config:
-# lines:
-# - switchport trunk encapsulation dot1q
-# parents:
-# - "interface {{ test_interface }}"
-# provider: "{{ cli }}"
-
-- name: "Setup vlans"
- cnos_vlan:
- aggregate:
- - vlan_id: 5
- - vlan_id: 6
- - vlan_id: 7
- - vlan_id: 8
- - vlan_id: 9
- - vlan_id: 10
- - vlan_id: 20
- provider: "{{ cli }}"
-
-- block:
- - name: Ensure interface is in its default switchport state
- cnos_l2_interface: &def_swi
- name: "{{ test_interface }}"
- state: unconfigured
- provider: "{{ cli }}"
-
- - name: Ensure interface is configured for access vlan 20
- cnos_l2_interface: &acc_vl
- name: "{{ test_interface }}"
- mode: access
- access_vlan: 20
- provider: "{{ cli }}"
- register: result
-
- - assert: &true
- that:
- - "result.changed == true"
-
- - name: "access vlan Idempotence"
- cnos_l2_interface: *acc_vl
- register: result
-
- - assert: &false
- that:
- - "result.changed == false"
-
- - name: Ensure interface only has vlans 5-10 as trunk vlans
- cnos_l2_interface: &tr_vl
- name: "{{ test_interface }}"
- mode: trunk
- native_vlan: 10
- trunk_allowed_vlans: 5-10
- provider: "{{ cli }}"
- register: result
-
- - assert: *true
-
- - name: "trunk vlan Idempotence"
- cnos_l2_interface: *tr_vl
- register: result
-
- - assert: *false
-
- - name: Ensure interface is a trunk port and ensure 2-50 are being tagged (doesn't mean others aren't also being tagged)
- cnos_l2_interface: &tag
- name: "{{ test_interface }}"
- mode: trunk
- native_vlan: 10
- trunk_vlans: 2-50
- provider: "{{ cli }}"
- register: result
-
- - assert: *true
-
- - name: "tag vlan Idempotence"
- cnos_l2_interface: *tag
- register: result
-
- - assert: *true
-
- - name: Remove full trunk vlan range 2-50
- cnos_l2_interface: &no_tag
- name: "{{ test_interface }}"
- mode: trunk
- trunk_vlans: 2-50
- state: absent
- provider: "{{ cli }}"
- register: result
-
- - assert: *true
-
- - name: Check Idempotence Remove full trunk vlan range 2-50
- cnos_l2_interface: *no_tag
- register: result
-
- - assert: *false
-
- - name: Reconfigure interface trunk port and ensure 2-50 are being tagged
- cnos_l2_interface: *tag
- register: result
-
- - assert: *true
-
- - name: Check Idempotence Reconfigure interface trunk port and ensure 2-50 are being tagged
- cnos_l2_interface: *tag
- register: result
-
- - assert: *true
-
- - name: Remove partial trunk vlan range 30-4094 are removed
- cnos_l2_interface: &partial
- name: "{{ test_interface }}"
- mode: trunk
- trunk_vlans: 30-4094
- state: absent
- provider: "{{ cli }}"
- register: result
-
- - assert: *false
-
- - name: Check Idempotence Remove partial trunk vlan range 30-4094 are removed
- cnos_l2_interface: *partial
- register: result
-
- - assert: *false
-
- - name: put interface default state
- cnos_l2_interface: *def_swi
- register: result
-
- - assert: *true
-
- - name: "default state idempotence"
- cnos_l2_interface: *def_swi
- register: result
-
- - assert: *true
-
- always:
- - name: "remove vlans"
- cnos_vlan:
- aggregate:
- - vlan_id: 5
- - vlan_id: 6
- - vlan_id: 7
- - vlan_id: 8
- - vlan_id: 9
- - vlan_id: 10
- - vlan_id: 20
- state: absent
- provider: "{{ cli }}"
- ignore_errors: yes
-
- - name: "default interface"
- cnos_config: *default
- ignore_errors: yes
-
-- debug: msg="END connection={{ ansible_connection }} cnos_l2_interface sanity test"
diff --git a/test/integration/targets/cnos_l2_interface/vars/main.yaml b/test/integration/targets/cnos_l2_interface/vars/main.yaml
deleted file mode 100644
index aa25153ec8..0000000000
--- a/test/integration/targets/cnos_l2_interface/vars/main.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-cli:
- host: "{{ inventory_hostname }}"
- port: 22
- username: admin
- password: admin
- timeout: 30
- authorize: True
- auth_pass:
diff --git a/test/integration/targets/cnos_l3_interface/aliases b/test/integration/targets/cnos_l3_interface/aliases
deleted file mode 100644
index cdb5033353..0000000000
--- a/test/integration/targets/cnos_l3_interface/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported \ No newline at end of file
diff --git a/test/integration/targets/cnos_l3_interface/cnos_l3_interface_sample_hosts b/test/integration/targets/cnos_l3_interface/cnos_l3_interface_sample_hosts
deleted file mode 100644
index d77dc686aa..0000000000
--- a/test/integration/targets/cnos_l3_interface/cnos_l3_interface_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_l3_interface_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_l3_interface_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=admin ansible_ssh_pass=admin deviceType=g8272_cnos test_interface=ethernet1/33 test_interface2=ethernet1/44
diff --git a/test/integration/targets/cnos_l3_interface/defaults/main.yaml b/test/integration/targets/cnos_l3_interface/defaults/main.yaml
deleted file mode 100644
index 5f709c5aac..0000000000
--- a/test/integration/targets/cnos_l3_interface/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/test/integration/targets/cnos_l3_interface/tasks/cli.yaml b/test/integration/targets/cnos_l3_interface/tasks/cli.yaml
deleted file mode 100644
index 303af40762..0000000000
--- a/test/integration/targets/cnos_l3_interface/tasks/cli.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-- name: run test case (connection=local)
- include: "{{ test_case_to_run }} ansible_connection=local"
- with_first_found: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_l3_interface/tasks/main.yaml b/test/integration/targets/cnos_l3_interface/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_l3_interface/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_l3_interface/tests/cli/basic.yaml b/test/integration/targets/cnos_l3_interface/tests/cli/basic.yaml
deleted file mode 100644
index 7035c65d53..0000000000
--- a/test/integration/targets/cnos_l3_interface/tests/cli/basic.yaml
+++ /dev/null
@@ -1,279 +0,0 @@
----
-- debug: msg="START cnos_l3_interface cli/basic.yaml on connection={{ ansible_connection }}"
-
-- name: Delete interface ipv4 and ipv6 address(setup)
- cnos_l3_interface:
- name: "{{ test_interface }}"
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- name: Delete interface ipv4 and ipv6 address 2 (setup)
- cnos_l3_interface:
- name: "{{ test_interface2 }}"
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- name: Setup - Ensure interfaces are switchport
- cnos_config:
- lines:
- - no shutdown
- - no switchport
- - no logging monitor
- parents:
- - "interface {{ item }}"
- provider: "{{ cli }}"
- loop:
- - "{{ test_interface }}"
- - "{{ test_interface2 }}"
-
-- name: Configure interface ipv4 address
- cnos_l3_interface:
- name: "{{ test_interface }}"
- ipv4: 10.241.113.1/24
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"ip address 10.241.113.1 255.255.255.0" in result.commands'
-
-- name: Configure interface ipv4 address (idempotent)
- cnos_l3_interface:
- name: "{{ test_interface }}"
- ipv4: 10.241.113.1/24
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert: &unchanged
- that:
- - 'result.changed == false'
-
-- name: Assign same ipv4 address to other interface (fail)
- cnos_l3_interface:
- name: "{{ test_interface2 }}"
- ipv4: 10.241.113.1/24
- state: present
- provider: "{{ cli }}"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - "result.failed == true"
- - "result.msg is defined"
-
-- name: Change interface ipv4 address
- cnos_l3_interface:
- name: "{{ test_interface }}"
- ipv4: dhcp
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"ip address dhcp" in result.commands'
-
-- name: Configure interface ipv6 address
- cnos_l3_interface: &ipv6-1
- name: "{{ test_interface }}"
- ipv6: fd5d:12c9:2201:1::1/64
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"ipv6 address fd5d:12c9:2201:1::1/64" in result.commands'
-
-- name: Configure interface ipv6 address (idempotent)
- cnos_l3_interface: *ipv6-1
- register: result
-
-- assert:
- that:
- - 'result.changed == false'
-
-- name: Configure second ipv6 address on interface
- cnos_l3_interface: &ipv6-2
- name: "{{ test_interface }}"
- ipv6: fd5d:12c9:2291:1::1/64
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"ipv6 address fd5d:12c9:2291:1::1/64" in result.commands'
-
-- name: Ensure first ipv6 address still associated with interface
- cnos_l3_interface: *ipv6-1
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: Ensure second ipv6 address still associated with interface
- cnos_l3_interface: *ipv6-2
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: Assign same ipv6 address to other interface (fail)
- cnos_l3_interface:
- name: "{{ test_interface2 }}"
- ipv6: fd5d:12c9:2201:1::1/64
- state: present
- provider: "{{ cli }}"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface2 }}" in result.commands'
- - '"ipv6 address fd5d:12c9:2201:1::1/64" in result.commands'
-
-- name: Change interface ipv6 address
- cnos_l3_interface:
- name: "{{ test_interface }}"
- ipv6: dhcp
- state: present
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"ipv6 address dhcp" in result.commands'
-
-- name: Delete interface ipv4 and ipv6 address
- cnos_l3_interface:
- name: "{{ test_interface }}"
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"no ip address" in result.commands'
- - '"no ipv6 address" in result.commands'
-
-- name: Delete interface ipv4 and ipv6 address (idempotent)
- cnos_l3_interface:
- name: "{{ test_interface }}"
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == false'
-
-- name: Delete second interface ipv4 and ipv6 address (setup)
- cnos_l3_interface:
- name: "{{ test_interface2 }}"
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- name: Configure ipv4 and ipv6 address using aggregate
- cnos_l3_interface:
- aggregate:
- - { name: "{{ test_interface }}", ipv4: 10.241.113.1/24, ipv6: "fd5d:12c9:2201:2::2/64" }
- - { name: "{{ test_interface2 }}", ipv4: 10.141.233.2/16, ipv6: "fd5e:12c9:2201:3::3/32" }
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"ip address 10.241.113.1 255.255.255.0" in result.commands'
- - '"ipv6 address fd5d:12c9:2201:2::2/64" in result.commands'
- - '"interface {{ test_interface2 }}" in result.commands'
- - '"ip address 10.141.233.2 255.255.0.0" in result.commands'
- - '"ipv6 address fd5e:12c9:2201:3::3/32" in result.commands'
-
-- name: Configure ipv4 and ipv6 address using aggregate (idempotent)
- cnos_l3_interface:
- aggregate:
- - { name: "{{ test_interface }}", ipv4: 10.241.113.1/24, ipv6: "fd5d:12c9:2201:2::2/64" }
- - { name: "{{ test_interface2 }}", ipv4: 10.141.233.2/16, ipv6: "fd5e:12c9:2201:3::3/32" }
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == false'
-
-- name: Change ipv4 and ipv6 address using aggregate
- cnos_l3_interface:
- aggregate:
- - { name: "{{ test_interface }}", ipv4: 10.241.113.1/16, ipv6: "fd5a:12c9:2201:4::4/32" }
- - { name: "{{ test_interface2 }}", ipv4: 10.141.233.2/24, ipv6: "fd5b:12c9:2201:5::5/90" }
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"ip address 10.241.113.1 255.255.0.0" in result.commands'
- - '"ipv6 address fd5a:12c9:2201:4::4/32" in result.commands'
- - '"interface {{ test_interface2 }}" in result.commands'
- - '"ip address 10.141.233.2 255.255.255.0" in result.commands'
- - '"ipv6 address fd5b:12c9:2201:5::5/90" in result.commands'
-
-
-- name: Delete ipv4 and ipv6 address using aggregate
- cnos_l3_interface:
- aggregate:
- - { name: "{{ test_interface }}" }
- - { name: "{{ test_interface2 }}" }
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"interface {{ test_interface }}" in result.commands'
- - '"no ip address" in result.commands'
- - '"no ipv6 address" in result.commands'
- - '"interface {{ test_interface2 }}" in result.commands'
- - '"no ip address" in result.commands'
- - '"no ipv6 address" in result.commands'
-
-- name: Delete ipv4 and ipv6 address using aggregate (idempotent)
- cnos_l3_interface:
- aggregate:
- - { name: "{{ test_interface }}" }
- - { name: "{{ test_interface2 }}" }
- state: absent
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - 'result.changed == false'
-
-- debug: msg="END cnos_l3_interface cli/basic.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/cnos_l3_interface/vars/main.yaml b/test/integration/targets/cnos_l3_interface/vars/main.yaml
deleted file mode 100644
index aa25153ec8..0000000000
--- a/test/integration/targets/cnos_l3_interface/vars/main.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-cli:
- host: "{{ inventory_hostname }}"
- port: 22
- username: admin
- password: admin
- timeout: 30
- authorize: True
- auth_pass:
diff --git a/test/integration/targets/cnos_linkagg/aliases b/test/integration/targets/cnos_linkagg/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_linkagg/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_linkagg/cnos_linkagg_sample_hosts b/test/integration/targets/cnos_linkagg/cnos_linkagg_sample_hosts
deleted file mode 100644
index 8c816da7e7..0000000000
--- a/test/integration/targets/cnos_linkagg/cnos_linkagg_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_linkagg_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_linkagg_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password>
diff --git a/test/integration/targets/cnos_linkagg/defaults/main.yaml b/test/integration/targets/cnos_linkagg/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/cnos_linkagg/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/cnos_linkagg/tasks/cli.yaml b/test/integration/targets/cnos_linkagg/tasks/cli.yaml
deleted file mode 100644
index 303af40762..0000000000
--- a/test/integration/targets/cnos_linkagg/tasks/cli.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-- name: run test case (connection=local)
- include: "{{ test_case_to_run }} ansible_connection=local"
- with_first_found: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_linkagg/tasks/main.yaml b/test/integration/targets/cnos_linkagg/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_linkagg/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_linkagg/tests/cli/basic.yaml b/test/integration/targets/cnos_linkagg/tests/cli/basic.yaml
deleted file mode 100644
index e801c7cbc3..0000000000
--- a/test/integration/targets/cnos_linkagg/tests/cli/basic.yaml
+++ /dev/null
@@ -1,169 +0,0 @@
----
-- debug: msg="START cli/basic.yaml on connection={{ ansible_connection }}"
-
-
-- block:
-
- - name: setup - remove config used in test(part1)
- cnos_config:
- lines:
- - no interface port-channel 20
- provider: "{{ cli }}"
- ignore_errors: yes
-
- - name: setup - remove config used in test(part2)
- cnos_config:
- lines:
- - no interface port-channel 5
- provider: "{{ cli }}"
- ignore_errors: yes
-
- - name: setup - remove config used in test(part3)
- cnos_config:
- lines:
- - no channel-group
- provider: "{{ cli }}"
- parents: "{{ item }}"
- loop:
- - interface Ethernet1/33
- - interface Ethernet1/44
-
- - name: create linkagg
- cnos_linkagg: &create
- group: 20
- state: present
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'interface port-channel 20' in result.commands"
-
- - name: create linkagg(Idempotence)
- cnos_linkagg: *create
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: set link aggregation group to members
- cnos_linkagg: &configure_member
- group: 20
- mode: active
- members:
- - Ethernet1/33
- - Ethernet1/44
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'interface Ethernet1/33' in result.commands"
- - "'channel-group 20 mode active' in result.commands"
- - "'interface Ethernet1/44' in result.commands"
- - "'channel-group 20 mode active' in result.commands"
-
- - name: set link aggregation group to members(Idempotence)
- cnos_linkagg: *configure_member
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: remove link aggregation group from member
- cnos_linkagg: &remove_member
- group: 20
- mode: active
- members:
- - Ethernet1/33
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'interface Ethernet1/44' in result.commands"
- - "'no channel-group' in result.commands"
-
- - name: remove link aggregation group from member(Idempotence)
- cnos_linkagg: *remove_member
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: remove linkagg
- cnos_linkagg: &remove
- group: 20
- state: absent
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'no interface port-channel 20' in result.commands"
-
- - name: remove linkagg(Idempotence)
- cnos_linkagg: *remove
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: create aggregate of linkagg definitions
- cnos_linkagg: &create_agg
- aggregate:
- - { group: 5 }
- - { group: 20, mode: active, members: ['Ethernet1/33'] }
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'interface port-channel 5' in result.commands"
- - "'interface port-channel 20' in result.commands"
- - "'interface Ethernet1/33' in result.commands"
- - "'channel-group 20 mode active' in result.commands"
-
- - name: create aggregate of linkagg definitions(Idempotence)
- cnos_linkagg: *create_agg
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: teardown(part1)
- cnos_config:
- lines:
- - no interface port-channel 20
- provider: "{{ cli }}"
- ignore_errors: yes
-
- - name: teardown(part2)
- cnos_config:
- lines:
- - no interface port-channel 5
- provider: "{{ cli }}"
- ignore_errors: yes
-
- - name: teardown(part3)
- cnos_config:
- lines:
- - no channel-group
- provider: "{{ cli }}"
- parents: "{{ item }}"
- loop:
- - interface Ethernet1/33
- - interface Ethernet1/44
-
-
-- debug: msg="END cli/basic.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/cnos_linkagg/vars/main.yaml b/test/integration/targets/cnos_linkagg/vars/main.yaml
deleted file mode 100644
index aa25153ec8..0000000000
--- a/test/integration/targets/cnos_linkagg/vars/main.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-cli:
- host: "{{ inventory_hostname }}"
- port: 22
- username: admin
- password: admin
- timeout: 30
- authorize: True
- auth_pass:
diff --git a/test/integration/targets/cnos_lldp/aliases b/test/integration/targets/cnos_lldp/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_lldp/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_lldp/cnos_lldp_sample_hosts b/test/integration/targets/cnos_lldp/cnos_lldp_sample_hosts
deleted file mode 100644
index 5ce9237918..0000000000
--- a/test/integration/targets/cnos_lldp/cnos_lldp_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_lldp_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_lldp_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_lldp/defaults/main.yaml b/test/integration/targets/cnos_lldp/defaults/main.yaml
deleted file mode 100644
index 5f709c5aac..0000000000
--- a/test/integration/targets/cnos_lldp/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/test/integration/targets/cnos_lldp/tasks/cli.yaml b/test/integration/targets/cnos_lldp/tasks/cli.yaml
deleted file mode 100644
index 303af40762..0000000000
--- a/test/integration/targets/cnos_lldp/tasks/cli.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-- name: run test case (connection=local)
- include: "{{ test_case_to_run }} ansible_connection=local"
- with_first_found: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_lldp/tasks/main.yaml b/test/integration/targets/cnos_lldp/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_lldp/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_lldp/tests/cli/basic.yaml b/test/integration/targets/cnos_lldp/tests/cli/basic.yaml
deleted file mode 100644
index f499ff43ac..0000000000
--- a/test/integration/targets/cnos_lldp/tests/cli/basic.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
----
-- debug: msg="START cnos_lldp cli/basic.yaml on connection={{ ansible_connection }}"
-
-- name: Enable LLDP service
- cnos_lldp:
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"lldp receive" in result.commands'
- - '"lldp transmit" in result.commands'
-
-- name: Enable LLDP service again (idempotent)
- cnos_lldp:
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: Disable LLDP service
- cnos_lldp:
- state: absent
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"no lldp receive" in result.commands'
- - '"no lldp transmit" in result.commands'
-
-- name: Disable LLDP service (idempotent)
- cnos_lldp:
- state: absent
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- debug: msg="END cnos_lldp cli/basic.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/cnos_logging/aliases b/test/integration/targets/cnos_logging/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_logging/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_logging/cnos_logging_sample_hosts b/test/integration/targets/cnos_logging/cnos_logging_sample_hosts
deleted file mode 100644
index e966047ae0..0000000000
--- a/test/integration/targets/cnos_logging/cnos_logging_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_logging_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_logging_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password>
diff --git a/test/integration/targets/cnos_logging/defaults/main.yaml b/test/integration/targets/cnos_logging/defaults/main.yaml
deleted file mode 100644
index 5f709c5aac..0000000000
--- a/test/integration/targets/cnos_logging/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/test/integration/targets/cnos_logging/tasks/cli.yaml b/test/integration/targets/cnos_logging/tasks/cli.yaml
deleted file mode 100644
index 1216a3d0be..0000000000
--- a/test/integration/targets/cnos_logging/tasks/cli.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-#- name: run test case (connection=local)
-# include: "{{ test_case_to_run }} ansible_connection=local"
-# with_first_found: "{{ test_items }}"
-# loop_control:
-# loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_logging/tasks/main.yaml b/test/integration/targets/cnos_logging/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_logging/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_logging/tests/cli/basic.yaml b/test/integration/targets/cnos_logging/tests/cli/basic.yaml
deleted file mode 100644
index b82b2ac368..0000000000
--- a/test/integration/targets/cnos_logging/tests/cli/basic.yaml
+++ /dev/null
@@ -1,136 +0,0 @@
----
-# ensure logging configs are empty
-- name: Remove server logging
- cnos_logging: &remove_server
- dest: server
- name: 10.241.107.224
- state: absent
-
-- name: Remove console
- cnos_logging:
- dest: console
- level: 4
- state: absent
-
-- name: Remove buffer
- cnos_logging:
- dest: logfile
- size: 8000
- state: absent
-
-# start tests
-- name: Set up server logging
- cnos_logging:
- dest: server
- name: 10.241.107.224
- facility: local7
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"logging server 10.241.107.224" in result.commands'
-
-- name: Set up server logging again (idempotent)
- cnos_logging:
- dest: server
- name: 10.241.107.224
- state: present
- register: result
-
-- assert: &unchanged
- that:
- - 'result.changed == true'
-
-- name: Delete/disable server logging
- cnos_logging: *remove_server
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"no logging server 10.241.107.224" in result.commands'
-
-- name: Delete/disable server logging (idempotent)
- cnos_logging: *remove_server
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: Console logging with level errors
- cnos_logging:
- dest: console
- level: 3
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"logging console 3" in result.commands'
-
-- name: Configure Buffer size
- cnos_logging:
- dest: logfile
- name: testfile
- level: 6
- size: 8000
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"logging logfile testfile 6 size 8000" in result.commands'
-
-
-- name: Change logging parameters using aggregate
- cnos_logging:
- aggregate:
- - { dest: console, level: 5 }
- - { dest: logfile, name: anil, level: 3, size: 9000 }
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"logging logfile anil 3 size 9000" in result.commands'
- - '"logging console 5" in result.commands'
-
-- name: Set both logging destination and facility
- cnos_logging: &set_both
- dest: logfile
- name: mylog
- level: 1
- size: 4096
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"logging logfile mylog 1 size 4096" in result.commands'
-
-- name: Set both logging destination and facility (idempotent)
- cnos_logging: *set_both
- register: result
-
-- assert:
- that:
- - 'result.changed == false'
-
-- name: remove logging as collection tearDown
- cnos_logging:
- aggregate:
- - { dest: console, level: 6 }
- - { dest: logfile, name: mylog, size: 4096, level: 1 }
- state: absent
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"no logging console" in result.commands'
- - '"no logging logfile" in result.commands'
diff --git a/test/integration/targets/cnos_rollback/README.md b/test/integration/targets/cnos_rollback/README.md
deleted file mode 100644
index 4e6764f910..0000000000
--- a/test/integration/targets/cnos_rollback/README.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# Ansible Role: cnos_rollback_sample - Rolls back the configuration of a switch from a remote server
----
-<add role description below>
-
-This role is an example of using the *cnos_rollback.py* Lenovo module in the context of CNOS switch configuration.This module allows you to work with switch configurations. It provides a way to roll back configurations of a switch from a remote server. This is achieved by using startup or running configurations of the target device that were previously backed up to a remote server using FTP, SFTP, TFTP, or SCP.
-
-The first step is to create a directory from where the remote server can be reached. The next step is to provide the full file path of the backup configurations location. Authentication details required by the remote server must be provided as well.
-
-By default, this method overwrites the switch's configuration file with the newly downloaded file.
-
-The results of the operation can be viewed in *results* directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_rollback](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_rollback.html&cp=0_3_1_0_4_5).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up (**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-
-The values of the variables used need to be modified to fit the specific scenario in which you are deploying the solution. To change the values of the variables, you need to visits the *vars* directory of each role and edit the *main.yml* file located there. The values stored in this file will be used by Ansible when the template is executed.
-
-The syntax of *main.yml* file for variables is the following:
-
-```
-<template variable>:<value>
-```
-
-You will need to replace the `<value>` field with the value that suits your topology. The `<template variable>` fields are taken from the template and it is recommended that you leave them unchanged.
-
-Variable | Description
---- | ---
-`configType` | Specifies the type of configuration which will be used for the rolling back process (**running-config** - running configuration, **startup-config** - startup configuration)
-`protocol` | Specifies the protocol used by the network device to interact with the remote server from where to download the backup configuration (**ftp** - FTP, **sftp** - SFTP, **tftp** - TFTP, **scp** - SCP)
-`serverip` | Specifies the IP Address of the remote server from where the backup configuration will be downloaded
-`rcpath` | Specifies the full file path where the configuration file located on the remote server (in case the relative path is used as the variable value, the root folder for the user of the server needs to be specified)
-`serverusername` | Configures the username for the server relating to the protocol used
-`serverpassword` | Configures the password for the server relating to the protocol used
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_rollback.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_rollback_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_rollback_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_rollback_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do rollback of configurations
- hosts: cnos_rollback_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_rollback_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
diff --git a/test/integration/targets/cnos_rollback/aliases b/test/integration/targets/cnos_rollback/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_rollback/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_rollback/cnos_rollback_sample_hosts b/test/integration/targets/cnos_rollback/cnos_rollback_sample_hosts
deleted file mode 100644
index 7865285c70..0000000000
--- a/test/integration/targets/cnos_rollback/cnos_rollback_sample_hosts
+++ /dev/null
@@ -1,17 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_rollback_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_rollback_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos rcpath=/root/cnos_config/G8272-running-config.txt
-
-#Use this in case its TFTP as tftpboot folder is the starting point for tftp
-#10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos rcpath=/anil/G8272-running-config.txt
diff --git a/test/integration/targets/cnos_rollback/tasks/main.yml b/test/integration/targets/cnos_rollback/tasks/main.yml
deleted file mode 100644
index d41b10ae87..0000000000
--- a/test/integration/targets/cnos_rollback/tasks/main.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# This contain sample config Roll Back execution tasks
----
-
-- name: Test Rollback of config - Running config
- cnos_rollback: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_rollback_{{ inventory_hostname }}_output.txt configType='{{item.configType}}' protocol='{{item.protocol}}' serverip='{{item.serverip}}' rcpath='{{item.rcpath}}' serverusername='{{item.serverusername}}' serverpassword='{{item.serverpassword}}'
- with_items: "{{test_rollback_data1}}"
-
-- name: Test Rollback of config - Startup config
- cnos_rollback: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_rollback_{{ inventory_hostname }}_output.txt configType='{{item.configType}}' protocol='{{item.protocol}}' serverip='{{item.serverip}}' rcpath='{{item.rcpath}}' serverusername='{{item.serverusername}}' serverpassword='{{item.serverpassword}}'
- with_items: "{{test_rollback_data2}}"
-
-#Root folder will be different for SFTP/SCP and TFTP
-#The following task is commented.
-#Before trying this, please change in /etc/ansible/hosts file
-#and place an config file with reference to your tftp-root folder
-
-#- name: Test Rollback of config - Running config - TFTP
-# cnos_rollback: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_rollback_{{ inventory_hostname }}_output.txt configType='{{item.configType}}' protocol='{{item.protocol}}' serverip='{{item.serverip}}' rcpath={{ hostvars[inventory_hostname]['rcpath']}}
-# with_items: "{{test_rollback_data3}}"
-
-#- name: Test Rollback of config - Startup config - TFTP
-# cnos_rollback: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_rollback_{{ inventory_hostname }}_output.txt configType='{{item.configType}}' protocol='{{item.protocol}}' serverip='{{item.serverip}}' rcpath={{ hostvars[inventory_hostname]['rcpath']}}
-# with_items: "{{test_rollback_data4}}"
-
-# Completed file
diff --git a/test/integration/targets/cnos_rollback/vars/main.yml b/test/integration/targets/cnos_rollback/vars/main.yml
deleted file mode 100644
index 55ac70c14c..0000000000
--- a/test/integration/targets/cnos_rollback/vars/main.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-test_rollback_data1:
- - {configType: running-config, protocol: "sftp", serverip: "10.241.106.118", rcpath: "/root/cnos_config/10.241.107.39_running-config.txt", serverusername: "root", serverpassword: "root123"}
-
-test_rollback_data2:
- - {configType: startup-config, protocol: "sftp", serverip: "10.241.106.118", rcpath: "/root/cnos_config/10.241.107.39_startup-config.txt", serverusername: "root", serverpassword: "root123"}
-
-test_rollback_data3:
- - {configType: running-config, protocol: "tftp", serverip: "10.241.106.118"}
-
-test_rollback_data4:
- - {configType: startup-config, protocol: "tftp", serverip: "10.241.106.118"}
diff --git a/test/integration/targets/cnos_save/README.md b/test/integration/targets/cnos_save/README.md
deleted file mode 100644
index b8aa35623d..0000000000
--- a/test/integration/targets/cnos_save/README.md
+++ /dev/null
@@ -1,96 +0,0 @@
-# Ansible Role: cnos_save_sample - Saving the switch running configuration
----
-<add role description below>
-
-This role is an example of using the *cnos_save.py* Lenovo module in the context of CNOS switch configuration. This module allows you to copy the running configuration of a switch over its startup configuration. It is recommended to use this module shortly after any major configuration changes so they persist after a switch restart.
-
-The results of the operation can be viewed in *results* directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_save](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_save.html&cp=0_3_1_0_4_3).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up (**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_save.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_save_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_save_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_save_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do save configurations
- hosts: cnos_save_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_save_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
diff --git a/test/integration/targets/cnos_save/aliases b/test/integration/targets/cnos_save/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_save/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_save/cnos_save_sample_hosts b/test/integration/targets/cnos_save/cnos_save_sample_hosts
deleted file mode 100644
index 3883f8c052..0000000000
--- a/test/integration/targets/cnos_save/cnos_save_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_save_sample] tag
-# Following you should specify IP Adresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_save_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_save/tasks/main.yml b/test/integration/targets/cnos_save/tasks/main.yml
deleted file mode 100644
index 6251d9eb6e..0000000000
--- a/test/integration/targets/cnos_save/tasks/main.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-# This contain sample template execution tasks
----
-- name: Test Save
- cnos_save: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_save_{{ inventory_hostname }}_output.txt
- with_items: "{{cnos_save_data1}}"
-
-- name: Test Reset to factory
- cnos_factory: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_save_{{ inventory_hostname }}_output.txt
- with_items: "{{cnos_save_data2}}"
-
-- name: Test Again save
- cnos_save: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_save_{{ inventory_hostname }}_output.txt
- with_items: "{{cnos_save_data3}}"
-
-- name: Test Reload
- cnos_reload: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_save_{{ inventory_hostname }}_output.txt
- with_items: "{{cnos_save_data4}}"
-# Completed file
diff --git a/test/integration/targets/cnos_save/vars/main.yml b/test/integration/targets/cnos_save/vars/main.yml
deleted file mode 100644
index e577a44753..0000000000
--- a/test/integration/targets/cnos_save/vars/main.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-cnos_save_data1:
- - {}
-cnos_save_data2:
- - {}
-cnos_save_data3:
- - {}
-cnos_save_data4:
- - {}
diff --git a/test/integration/targets/cnos_showrun/README.md b/test/integration/targets/cnos_showrun/README.md
deleted file mode 100644
index be09a8aeb4..0000000000
--- a/test/integration/targets/cnos_showrun/README.md
+++ /dev/null
@@ -1,96 +0,0 @@
-# Ansible Role: cnos_showrun_sample - Displays Running Configuration information
----
-<add role description below>
-
-This role is an example of using the *cnos_showrun.py* Lenovo module in the context of CNOS switch configuration. This module allows you to view the switch information. It executes the **display running-config** CLI command on a switch and returns a file containing all the system information of the target network device.
-
-The results of the operation can be viewed in results directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_showrun](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_showrun.html&cp=0_3_1_0_4_0).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up (**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_showrun.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_showrun_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The hosts file for the role is located in the main directory of the role.
-
-```
-[cnos_showrun_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_showrun_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do Show Sys Info
- hosts: cnos_showrun_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_showrun_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
diff --git a/test/integration/targets/cnos_showrun/aliases b/test/integration/targets/cnos_showrun/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_showrun/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_showrun/cnos_showrun_sample_hosts b/test/integration/targets/cnos_showrun/cnos_showrun_sample_hosts
deleted file mode 100644
index 8257765dc9..0000000000
--- a/test/integration/targets/cnos_showrun/cnos_showrun_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_showrun_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_showrun_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_showrun/tasks/main.yml b/test/integration/targets/cnos_showrun/tasks/main.yml
deleted file mode 100644
index b4d94d9ee6..0000000000
--- a/test/integration/targets/cnos_showrun/tasks/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-# This contain sample show rnunning config tasks
----
-- name: Test Running Configurations
- cnos_showrun: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} enablePassword='{{item.enablePassword}}' outputfile=./results/cnos_showrun_{{ inventory_hostname }}_output.txt
- with_items: "{{test_showrun_data}}"
-# Completed file
diff --git a/test/integration/targets/cnos_showrun/vars/main.yml b/test/integration/targets/cnos_showrun/vars/main.yml
deleted file mode 100644
index 892e75c5fb..0000000000
--- a/test/integration/targets/cnos_showrun/vars/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-test_showrun_data:
- - {enablePassword: "anil"}
diff --git a/test/integration/targets/cnos_static_route/aliases b/test/integration/targets/cnos_static_route/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_static_route/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_static_route/cnos_static_route_sample_hosts b/test/integration/targets/cnos_static_route/cnos_static_route_sample_hosts
deleted file mode 100644
index b67ecd3bf8..0000000000
--- a/test/integration/targets/cnos_static_route/cnos_static_route_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_static_route_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_static_route_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password>
diff --git a/test/integration/targets/cnos_static_route/defaults/main.yaml b/test/integration/targets/cnos_static_route/defaults/main.yaml
deleted file mode 100644
index 5f709c5aac..0000000000
--- a/test/integration/targets/cnos_static_route/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/test/integration/targets/cnos_static_route/tasks/cli.yaml b/test/integration/targets/cnos_static_route/tasks/cli.yaml
deleted file mode 100644
index 303af40762..0000000000
--- a/test/integration/targets/cnos_static_route/tasks/cli.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-- name: run test case (connection=local)
- include: "{{ test_case_to_run }} ansible_connection=local"
- with_first_found: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_static_route/tasks/main.yaml b/test/integration/targets/cnos_static_route/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_static_route/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_static_route/tests/cli/basic.yaml b/test/integration/targets/cnos_static_route/tests/cli/basic.yaml
deleted file mode 100644
index 3aa73c08e5..0000000000
--- a/test/integration/targets/cnos_static_route/tests/cli/basic.yaml
+++ /dev/null
@@ -1,136 +0,0 @@
----
-#- debug: msg="START cnos cli/cnos_static_route.yaml on connection={{ ansible_connection }}"
-
-- name: Clear all static routes
- cnos_static_route: &delete_all
- aggregate:
- - { prefix: 10.241.107.0 }
- - { prefix: 10.241.106.0 }
- - { prefix: 10.241.105.0 }
- - { prefix: 10.241.108.0 }
- mask: 255.255.255.0
- next_hop: 10.241.100.100
- state: absent
-
-- name: create static route
- cnos_static_route:
- prefix: 10.241.107.0
- mask: 255.255.255.0
- next_hop: 10.241.100.100
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - 'result.commands == ["ip route 10.241.107.0 255.255.255.0 10.241.100.100 1"]'
-
-- name: Verify idempotence with default admin_distance
- cnos_static_route:
- prefix: 10.241.107.0
- mask: 255.255.255.0
- next_hop: 10.241.100.100
- admin_distance: 1
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: modify admin distance of static route
- cnos_static_route: &admin2
- prefix: 10.241.107.0
- mask: 255.255.255.0
- next_hop: 10.241.100.100
- admin_distance: 2
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - 'result.commands == ["ip route 10.241.107.0 255.255.255.0 10.241.100.100 2"]'
-
-- name: modify admin distance of static route again (idempotent)
- cnos_static_route: *admin2
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: Verify idempotence with unspecified admin_distance
- cnos_static_route:
- prefix: 10.241.107.0
- mask: 255.255.255.0
- next_hop: 10.241.100.100
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: delete static route
- cnos_static_route: &delete
- prefix: 10.241.107.0
- mask: 255.255.255.0
- next_hop: 10.241.100.100
- state: absent
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - 'result.commands == ["no ip route 10.241.107.0 255.255.255.0 10.241.100.100 1"]'
-
-- name: delete static route again (idempotent)
- cnos_static_route: *delete
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: Add static route aggregates
- cnos_static_route:
- aggregate:
- - { prefix: 10.241.106.0 }
- - { prefix: 10.241.105.0 }
- mask: 255.255.255.0
- next_hop: 10.241.100.100
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - 'result.commands == ["ip route 10.241.106.0 255.255.255.0 10.241.100.100 1", "ip route 10.241.105.0 255.255.255.0 10.241.100.100 1"]'
-
-- name: Add and remove static route aggregates with overrides
- cnos_static_route:
- aggregate:
- - { prefix: 10.241.106.0 }
- - { prefix: 10.241.105.0, state: absent }
- - { prefix: 10.241.108.0 }
- mask: 255.255.255.0
- next_hop: 10.241.100.100
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - 'result.commands == ["ip route 10.241.106.0 255.255.255.0 10.241.100.100 1", "no ip route 10.241.105.0 255.255.255.0 10.241.100.100 1", "ip route 10.241.108.0 255.255.255.0 10.241.100.100 1"]'
-
-- name: Remove static route aggregates
- cnos_static_route: *delete_all
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - 'result.commands == ["no ip route 10.241.107.0 255.255.255.0 10.241.100.100 1","no ip route 10.241.106.0 255.255.255.0 10.241.100.100 1","no ip route 10.241.105.0 255.255.255.0 10.241.100.100 1" ,"no ip route 10.241.108.0 255.255.255.0 10.241.100.100 1"]'
-
-#- debug: msg="END cnos cli/cnos_static_route.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/cnos_system/aliases b/test/integration/targets/cnos_system/aliases
deleted file mode 100644
index cdb5033353..0000000000
--- a/test/integration/targets/cnos_system/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported \ No newline at end of file
diff --git a/test/integration/targets/cnos_system/cnos_system_sample_hosts b/test/integration/targets/cnos_system/cnos_system_sample_hosts
deleted file mode 100644
index a37a287015..0000000000
--- a/test/integration/targets/cnos_system/cnos_system_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_system_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_system_sample]
-<ip address> ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password>
diff --git a/test/integration/targets/cnos_system/defaults/main.yaml b/test/integration/targets/cnos_system/defaults/main.yaml
deleted file mode 100644
index 5f709c5aac..0000000000
--- a/test/integration/targets/cnos_system/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/test/integration/targets/cnos_system/tasks/cli.yaml b/test/integration/targets/cnos_system/tasks/cli.yaml
deleted file mode 100644
index b952553f22..0000000000
--- a/test/integration/targets/cnos_system/tasks/cli.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-- name: collect common test cases
- find:
- paths: "{{ role_path }}/tests/common"
- patterns: "{{ testcase }}.yaml"
- connection: local
- register: test_cases
-
-- name: collect cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- connection: local
- register: cli_cases
-
-- set_fact:
- test_cases:
- files: "{{ test_cases.files }} + {{ cli_cases.files }}"
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }} ansible_connection=network_cli connection={{ cli }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-- name: run test case (connection=local)
- include: "{{ test_case_to_run }} ansible_connection=local"
- with_first_found: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_system/tasks/main.yaml b/test/integration/targets/cnos_system/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_system/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_system/tests/cli/net_system.yaml b/test/integration/targets/cnos_system/tests/cli/net_system.yaml
deleted file mode 100644
index 9b1db3e040..0000000000
--- a/test/integration/targets/cnos_system/tests/cli/net_system.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
----
-- debug: msg="START cnos cli/net_system.yaml on connection={{ ansible_connection }}"
-
-# Add minimal testcase to check args are passed correctly to
-# implementation module and module run is successful.
-
-- name: setup
- cnos_config:
- lines:
- - no ip domain-list ansible.com vrf default
- - no ip domain-list redhat.com vrf default
- match: none
-
-- name: configure domain_list using platform agnostic module
- net_system:
- domain_search:
- - ansible.com
- - redhat.com
- register: result
-
-- assert:
- that:
- - result.changed == true
- - "'ip domain-list ansible.com vrf default' in result.commands"
- - "'ip domain-list redhat.com vrf default' in result.commands"
-
-- name: setup
- cnos_config:
- lines:
- - no ip domain-list ansible.com vrf default
- - no ip domain-list redhat.com vrf default
- match: none
-
-- debug: msg="END cnos cli/net_system.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/cnos_system/tests/cli/set_domain_list.yaml b/test/integration/targets/cnos_system/tests/cli/set_domain_list.yaml
deleted file mode 100644
index b35ae6b4fa..0000000000
--- a/test/integration/targets/cnos_system/tests/cli/set_domain_list.yaml
+++ /dev/null
@@ -1,111 +0,0 @@
----
-- debug: msg="START cli/set_domain_list.yaml"
-
-- name: setup
- cnos_config:
- lines:
- - no ip domain-list ansible.com vrf default
- - no ip domain-list redhat.com vrf default
- match: none
-
-- name: configure domain_list
- cnos_system:
- domain_search:
- - ansible.com
- - redhat.com
- register: result
-
-- assert:
- that:
- - result.changed == true
- - "'ip domain-list ansible.com vrf default' in result.commands"
- - "'ip domain-list redhat.com vrf default' in result.commands"
-
-- name: verify domain_list
- cnos_system:
- domain_search:
- - ansible.com
- - redhat.com
- register: result
-
-- assert:
- that:
- - result.changed == true
-
-- name: remove one entry
- cnos_system:
- domain_search:
- - ansible.com
- register: result
-
-- assert:
- that:
- - result.changed == true
- - "'no ip domain-list redhat.com vrf default' in result.commands"
-
-- name: verify remove one entry
- cnos_system:
- domain_search:
- - ansible.com
- register: result
-
-- assert:
- that:
- - result.changed == true
-
-- name: add one entry
- cnos_system:
- domain_search:
- - ansible.com
- - redhat.com
- register: result
-
-- assert:
- that:
- - result.changed == true
- - "'ip domain-list redhat.com vrf default' in result.commands"
-
-- name: verify add one entry
- cnos_system:
- domain_search:
- - ansible.com
- - redhat.com
- register: result
-
-- assert:
- that:
- - result.changed == true
-
-- name: add and remove one entry
- cnos_system:
- domain_search:
- - ansible.com
- - eng.ansible.com
- register: result
-
-- assert:
- that:
- - result.changed == true
- - "'no ip domain-list redhat.com vrf default' in result.commands"
- - "'ip domain-list eng.ansible.com vrf default' in result.commands"
-
-- name: verify add and remove one entry
- cnos_system:
- domain_search:
- - ansible.com
- - eng.ansible.com
- register: result
-
-- assert:
- that:
- - result.changed == true
-
-- name: teardown
- cnos_config:
- lines:
- - no ip domain-list ansible.com vrf default
- - no ip domain-list redhat.com vrf default
- - no ip domain-list eng.ansible.com vrf default
- match: none
-
-- debug: msg="END cli/set_domain_search.yaml"
diff --git a/test/integration/targets/cnos_system/tests/cli/set_domain_name.yaml b/test/integration/targets/cnos_system/tests/cli/set_domain_name.yaml
deleted file mode 100644
index d64dca527a..0000000000
--- a/test/integration/targets/cnos_system/tests/cli/set_domain_name.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-- debug: msg="START cli/set_domain_name.yaml"
-
-- name: setup
- cnos_config:
- lines: no ip domain-name eng.ansible.com vrf default
- match: none
-
-- name: configure domain_name
- cnos_system:
- domain_name: eng.ansible.com
- register: result
-
-- assert:
- that:
- - "result.changed == true"
-
-- name: verify domain_name
- cnos_system:
- domain_name: eng.ansible.com
- register: result
-
-- assert:
- that:
- - "result.changed == true"
-
-- name: teardown
- cnos_config:
- lines: no ip domain-name eng.ansible.com vrf default
- match: none
-
-- debug: msg="END cli/set_domain_name.yaml"
diff --git a/test/integration/targets/cnos_system/tests/cli/set_name_servers.yaml b/test/integration/targets/cnos_system/tests/cli/set_name_servers.yaml
deleted file mode 100644
index 1f29a51a88..0000000000
--- a/test/integration/targets/cnos_system/tests/cli/set_name_servers.yaml
+++ /dev/null
@@ -1,73 +0,0 @@
----
-- debug: msg="START cli/set_name_servers.yaml"
-
-- name: setup
- cnos_config: &reset
- lines:
- - no ip name-server 10.241.107.1 vrf default
- - no ip name-server 10.241.107.2 vrf default
- - no ip name-server 10.241.107.3 vrf default
- match: none
-
-- name: configure name_servers
- cnos_system:
- name_servers:
- - 10.241.107.1
- - 10.241.107.2
- - 10.241.107.3
- register: result
-
-- assert:
- that:
- - result.changed == true
- - "'ip name-server 10.241.107.1 vrf default' in result.commands"
- - "'ip name-server 10.241.107.2 vrf default' in result.commands"
- - "'ip name-server 10.241.107.3 vrf default' in result.commands"
-
-- name: verify name_servers
- cnos_system:
- name_servers:
- - 10.241.107.1
- - 10.241.107.2
- - 10.241.107.3
- register: result
-
-- assert:
- that:
- - result.changed == true
-
-- name: remove one
- cnos_system:
- name_servers:
- - 10.241.107.1
- - 10.241.107.2
- register: result
-
-- assert:
- that:
- - result.changed == true
-# - result.commands|length == 1
- - "'no ip name-server 10.241.107.3 vrf default' in result.commands"
-
-- name: default name server
- cnos_system: &defns
- name_servers: default
- register: result
-
-- assert:
- that:
- - result.changed == true
-
-- name: Idempotent check
- cnos_system: *defns
- register: result
-
-- assert:
- that:
- - result.changed == false
-
-- name: teardown
- cnos_config: *reset
- ignore_errors: yes
-
-- debug: msg="END cli/set_name_servers.yaml"
diff --git a/test/integration/targets/cnos_system/tests/common/sanity.yaml b/test/integration/targets/cnos_system/tests/common/sanity.yaml
deleted file mode 100644
index a97fb8bc1e..0000000000
--- a/test/integration/targets/cnos_system/tests/common/sanity.yaml
+++ /dev/null
@@ -1,122 +0,0 @@
----
-- debug: msg="START connection={{ ansible_connection }}/sanity.yaml"
-- debug: msg="Using provider={{ connection.transport }}"
- when: ansible_connection == "local"
-
-- block:
- - name: remove configuration
- cnos_system: &remove
- state: absent
- register: result
- ignore_errors: yes
-
- - name: configure lookup_enabled
- cnos_system: &dlo
- lookup_enabled: true
- state: present
- register: result
-
- - name: configure hostname and domain-name
- cnos_system: &hostname
- hostname: switch
- domain_name: test.example.com
- register: result
-
- - assert: &true
- that:
- - "result.changed == true"
-
- - name: Idempotence check
- cnos_system: *hostname
- register: result
-
- - assert: &false
- that:
- - "result.changed == true"
-
- - name: configure name servers
- cnos_system: &ns
- name_servers:
- - 8.8.8.8
- - 8.8.4.4
- register: result
-
- - assert: *true
-
- - name: Idempotence check
- cnos_system: *ns
- register: result
-
- - assert: *false
-
- - name: configure name servers with VRF support
- cnos_system: &nsv
- name_servers:
- - { server: 8.8.8.8, vrf: management }
- - { server: 8.8.4.4, vrf: management }
- register: result
-
- - assert: *true
-
- - name: Idempotence check
- cnos_system: *nsv
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: configure lookup_enabled1
- cnos_system: &ndlo
- lookup_enabled: false
- register: result
-
- - assert: *true
-
- - name: Idempotence check
- cnos_system: *ndlo
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: configure lookup_enabled2
- cnos_system: *dlo
- register: result
-
- - assert: *true
-
- - name: Idempotence check
- cnos_system: *dlo
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: default configuration
- cnos_system: &default
- hostname: default
- domain_name: default
- name_servers: default
- register: result
-
- - assert: *true
-
- - name: Idempotence check
- cnos_system: *default
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- always:
- - name: remove configuration
- cnos_system: *remove
-
- - name: Re-configure hostname
- cnos_system: *hostname
-
-- debug: msg="END connection={{ ansible_connection }}/sanity.yaml"
diff --git a/test/integration/targets/cnos_system/tests/common/set_hostname.yaml b/test/integration/targets/cnos_system/tests/common/set_hostname.yaml
deleted file mode 100644
index 67f52bf3ab..0000000000
--- a/test/integration/targets/cnos_system/tests/common/set_hostname.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
----
-- debug: msg="START connection={{ ansible_connection }}/set_hostname.yaml"
-- debug: msg="Using provider={{ connection.transport }}"
- when: ansible_connection == "local"
-
-- block:
- - name: setup
- cnos_config:
- lines: "hostname switch"
- match: none
-
- - name: configure hostname
- cnos_system:
- hostname: foo
- register: result
-
- - assert:
- that:
- - "result.changed == true"
-
- - name: verify hostname
- cnos_system:
- hostname: foo
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- always:
- - name: teardown
- cnos_config:
- lines: "hostname switch"
- match: none
-
-- debug: msg="END connection={{ ansible_connection }}/set_hostname.yaml"
diff --git a/test/integration/targets/cnos_template/README.md b/test/integration/targets/cnos_template/README.md
deleted file mode 100644
index 4532d5cdc3..0000000000
--- a/test/integration/targets/cnos_template/README.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# Ansible Role: cnos_template_sample - Manages switch configuration using templates
----
-<add role description below>
-
-This role is an example of using the *cnos_template.py* Lenovo module in the context of CNOS switch configuration. This module allows you to work with the running configuration of a switch. It provides a way to execute a set of CNOS commands on a switch by evaluating the current running configuration and executing the commands only if the specific settings have not been already configured.
-
-The configuration source can be a set of commands or a template written in the Jinja2 templating language.#
-
-The results of the operation can be viewed in *results* directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_template](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_template.html&cp=0_3_1_0_4_10).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up(**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-
-The values of the variables used need to be modified to fit the specific scenario in which you are deploying the solution. To change the values of the variables, you need to visits the *vars* directory of each role and edit the *main.yml* file located there. The values stored in this file will be used by Ansible when the template is executed.
-
-The syntax of *main.yml* file for variables is the following:
-
-```
-<template variable>:<value>
-```
-
-You will need to replace the `<value>` field with the value that suits your topology. The `<template variable>` fields are taken from the template and it is recommended that you leave them unchanged.
-
-Variable | Description
---- | ---
-`commandfile` | Specifies the path to the CNOS command file which needs to be applied
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_template.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_template_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_template_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_template_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do some template configurations
- hosts: cnos_template_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_template_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file
diff --git a/test/integration/targets/cnos_template/aliases b/test/integration/targets/cnos_template/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_template/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_template/cnos_template_sample_hosts b/test/integration/targets/cnos_template/cnos_template_sample_hosts
deleted file mode 100644
index 1e0296ec9a..0000000000
--- a/test/integration/targets/cnos_template/cnos_template_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_template_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_template_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_template/tasks/main.yml b/test/integration/targets/cnos_template/tasks/main.yml
deleted file mode 100644
index cad5818914..0000000000
--- a/test/integration/targets/cnos_template/tasks/main.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-# This contain sample template execution tasks
----
-- name: Creates directory
- file: path=./commands state=directory
-
-- name: Replace Config CLI command template with values
- template: src=demo_template.j2 dest=./commands/cnos_template_{{ inventory_hostname }}_commands.txt
- with_items: "{{cnos_template_data}}"
-
-- name: Applying CLI commands on Switches
- cnos_template: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} commandfile=./commands/cnos_template_{{ inventory_hostname }}_commands.txt outputfile=./results/cnos_template_{{ inventory_hostname }}_output.txt
- with_items: "{{cnos_template_data}}"
-# Completed file
diff --git a/test/integration/targets/cnos_template/templates/demo_template.j2 b/test/integration/targets/cnos_template/templates/demo_template.j2
deleted file mode 100644
index 63a47a6418..0000000000
--- a/test/integration/targets/cnos_template/templates/demo_template.j2
+++ /dev/null
@@ -1,13 +0,0 @@
-#Demo Template
-vlan {{item.vlanid1}}
-name anil
-exit
-interface ethernet {{item.slot_chassis_number1}}
-description anil
-mtu 600
-exit
-interface port-channel {{item.portchannel_interface_number1}}
-shut
-lacp suspend-individual
-no shut
-exit
diff --git a/test/integration/targets/cnos_template/vars/main.yml b/test/integration/targets/cnos_template/vars/main.yml
deleted file mode 100644
index 51223679f9..0000000000
--- a/test/integration/targets/cnos_template/vars/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-cnos_template_data:
- - {vlanid1: 13, slot_chassis_number1: "1/2", portchannel_interface_number1: 100, portchannel_mode1: "active"}
diff --git a/test/integration/targets/cnos_user/aliases b/test/integration/targets/cnos_user/aliases
deleted file mode 100644
index cdb5033353..0000000000
--- a/test/integration/targets/cnos_user/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported \ No newline at end of file
diff --git a/test/integration/targets/cnos_user/cnos_user_sample_hosts b/test/integration/targets/cnos_user/cnos_user_sample_hosts
deleted file mode 100644
index 0d18ec3063..0000000000
--- a/test/integration/targets/cnos_user/cnos_user_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_user_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_user_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=admin ansible_ssh_pass=admin
diff --git a/test/integration/targets/cnos_user/defaults/main.yaml b/test/integration/targets/cnos_user/defaults/main.yaml
deleted file mode 100644
index 5f709c5aac..0000000000
--- a/test/integration/targets/cnos_user/defaults/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-testcase: "*"
diff --git a/test/integration/targets/cnos_user/tasks/cli.yaml b/test/integration/targets/cnos_user/tasks/cli.yaml
deleted file mode 100644
index 9b62eaba65..0000000000
--- a/test/integration/targets/cnos_user/tasks/cli.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-- name: collect common test cases
- find:
- paths: "{{ role_path }}/tests/common"
- patterns: "{{ testcase }}.yaml"
- connection: local
- register: test_cases
-
-- name: collect cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- connection: local
- register: cli_cases
-
-- set_fact:
- test_cases:
- files: "{{ test_cases.files }} + {{ cli_cases.files }}"
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }} ansible_connection=network_cli connection={{ cli }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_user/tasks/main.yaml b/test/integration/targets/cnos_user/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_user/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_user/tests/common/basic.yaml b/test/integration/targets/cnos_user/tests/common/basic.yaml
deleted file mode 100644
index 601e888141..0000000000
--- a/test/integration/targets/cnos_user/tests/common/basic.yaml
+++ /dev/null
@@ -1,58 +0,0 @@
----
-- debug: msg="START connection={{ ansible_connection }} cnos_user basic test"
-
-- name: Remove old entries of user
- cnos_user:
- aggregate:
- - { name: ansibletest1 }
- - { name: ansibletest2 }
- - { name: ansibletest3 }
-# provider: "{{ connection }}"
- configured_password: admin
- state: absent
-
-# Start tests
-- name: Create user
- cnos_user:
- name: ansibletest1
- roles: network-operator
-# provider: "{{ connection }}"
- state: present
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"username" in result.commands[0]'
- - '"role network-operator" in result.commands[1]'
-
-- name: Collection of users
- cnos_user:
- aggregate:
- - { name: ansibletest2 }
- - { name: ansibletest3 }
-# provider: "{{ connection }}"
- state: present
- roles: network-admin
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
-
-- name: tearDown
- cnos_user:
- aggregate:
- - { name: ansibletest1 }
- - { name: ansibletest2 }
- - { name: ansibletest3 }
-# provider: "{{ connection }}"
- state: absent
- register: result
-
-- assert:
- that:
- - 'result.changed == true'
- - '"no username" in result.commands[0]'
-
-- debug: msg="END connection={{ ansible_connection }} cnos_user basic test"
diff --git a/test/integration/targets/cnos_user/tests/common/sanity.yaml b/test/integration/targets/cnos_user/tests/common/sanity.yaml
deleted file mode 100644
index 7e86e4faa7..0000000000
--- a/test/integration/targets/cnos_user/tests/common/sanity.yaml
+++ /dev/null
@@ -1,84 +0,0 @@
----
-- debug: msg="START connection={{ ansible_connection }} cnos_user parameter test"
-
-
-- block:
- - name: Create user
- cnos_user: &configure
- name: netend
- configured_password: Hello!234
- update_password: on_create
- roles: network-operator
- state: present
- register: result
-
- - assert: &true
- that:
- - 'result.changed == true'
-
- - block:
- - name: conf idempotency
- cnos_user: *configure
- register: result
-
- - assert: &false
- that:
- - 'result.changed == false'
-
- - name: Remove user
- cnos_user: &remove
- name: netend
- state: absent
- register: result
-
- - assert: *true
-
- - name: remove idempotency
- cnos_user: *remove
- register: result
-
- - assert: *false
-
- - name: Collection of users
- cnos_user: &coll
- users:
- - name: test1
- - name: test2
- configured_password: Hello!234
- update_password: on_create
- state: present
- roles:
- - network-admin
- - network-operator
- register: result
-
- - assert: *true
-
- - block:
- - name: users idempotency
- cnos_user: *coll
- register: result
-
- - assert: *true
-
- - name: tearDown
- cnos_user: &tear
- name: ansible
- purge: yes
- register: result
-
- - assert: *true
-
- - name: teardown idempotency
- cnos_user: *tear
- register: result
-
- - assert: *false
-
- always:
- - name: tearDown
- cnos_user: *tear
- register: result
- ignore_errors: yes
-
-- debug: msg="END connection={{ ansible_connection }} cnos_user parameter test"
diff --git a/test/integration/targets/cnos_vlag/README.md b/test/integration/targets/cnos_vlag/README.md
deleted file mode 100644
index 526d38fcbd..0000000000
--- a/test/integration/targets/cnos_vlag/README.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# Ansible Role: cnos_vlag_sample - Switch vLAG configuration
----
-<add role description below>
-
-This role is an example of using the *cnos_vlag.py* Lenovo module in the context of CNOS switch configuration. This module allows you to work with virtual Link Aggregation Groups (vLAG) related configurations. The operators used are overloaded to ensure control over switch vLAG configurations.
-
-Apart from the regular device connection related attributes, there are four vLAG arguments which are overloaded variables that will perform further configurations. They are *vlagArg1*, *vlagArg2*, *vlagArg3*, and *vlagArg4*.
-
-The results of the operation can be viewed in *results* directory.
-
-For more details, see [Lenovo modules for Ansible: cnos_vlag](http://systemx.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.switchmgt.ansible.doc%2Fcnos_vlag.html&cp=0_3_1_0_4_15).
-
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.2 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running CNOS version 10.2.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `cnos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-`enablePassword` | Configures the password used to enter Global Configuration command mode on the switch (this is an optional parameter)
-`hostname` | Searches the hosts file at */etc/ansible/hosts* and identifies the IP address of the switch on which the role is going to be applied
-`deviceType` | Specifies the type of device from where the configuration will be backed up (**g8272_cnos** - G8272, **g8296_cnos** - G8296, **g8332_cnos** - G8332, **NE10032** - NE10032, **NE1072T** - NE1072T, **NE1032** - NE1032, **NE1032T** - NE1032T, **NE2572** - NE2572, **NE0152T** - NE0152T)
-
-The values of the variables used need to be modified to fit the specific scenario in which you are deploying the solution. To change the values of the variables, you need to visits the *vars* directory of each role and edit the *main.yml* file located there. The values stored in this file will be used by Ansible when the template is executed.
-
-The syntax of *main.yml* file for variables is the following:
-
-```
-<template variable>:<value>
-```
-
-You will need to replace the `<value>` field with the value that suits your topology. The `<template variable>` fields are taken from the template and it is recommended that you leave them unchanged.
-
-Variable | Description
---- | ---
-`vlagArg1` | This is an overloaded BGP variable. Please refer to the [cnos_vlag module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_template.html?cp=0_3_1_0_2_10) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: **enable**, **auto-recovery**, **config-consistency**, **isl**, **mac-address-table**, **peer-gateway**, **priority**, **startup-delay**, **tier-id**, **vrrp**, **instance**, **hlthchk**.
-`vlagArg2` | This is an overloaded BGP variable. Please refer to the [cnos_vlag module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_template.html?cp=0_3_1_0_2_10) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: auto-recovery interval, **disabled**, **strict**, port aggregation number, vLAG priority, delay time, vLAG tier ID value, vLAG instance number, **keepalive-attempts**, **keepalive-interval**, **retry-interval**, **peer-ip**.
-`vlagArg3` | This is an overloaded BGP variable. Please refer to the [cnos_vlag module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_template.html?cp=0_3_1_0_2_10) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: **enable**, **port-aggregation**, number of Keep Alive attempts, Keep Alive interval, retry interval, vLAG Health Check peer IP address.
-`vlagArg4` | This is an overloaded BGP variable. Please refer to the [cnos_vlag module documentation](http://ralfss28.labs.lenovo.com:5555/help/topic/com.lenovo.switchmgt.ansible.doc/cnos_template.html?cp=0_3_1_0_2_10) for detailed information on usage. The values of these variables depend on the configuration context and the choices are the following: LAG Number, **default**, **management**.
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- cnos_vlag.py - This modules needs to be present in the *library* directory of the role.
-- cnos.py - This module needs to be present in the PYTHONPATH environment variable set in the Ansible system.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_vlag_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[cnos_vlag_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-10.241.107.40 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook cnos_vlag_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do VLAG configurations
- hosts: cnos_vlag_sample
- gather_facts: no
- connection: local
- roles:
- - cnos_vlag_sample
-```
-
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/cnos_vlag/aliases b/test/integration/targets/cnos_vlag/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_vlag/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_vlag/cnos_vlag_sample_hosts b/test/integration/targets/cnos_vlag/cnos_vlag_sample_hosts
deleted file mode 100644
index 73473d90e2..0000000000
--- a/test/integration/targets/cnos_vlag/cnos_vlag_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_vlag_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_vlag_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> deviceType=g8272_cnos
diff --git a/test/integration/targets/cnos_vlag/tasks/main.yml b/test/integration/targets/cnos_vlag/tasks/main.yml
deleted file mode 100644
index 75a59ec3dd..0000000000
--- a/test/integration/targets/cnos_vlag/tasks/main.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-# This contain sample template execution tasks
----
-- name: Test Vlag - enable
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}'
- with_items: "{{test_vlag_data1}}"
-- name: Test Vlag - autorecovery
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}'
- with_items: "{{test_vlag_data2}}"
-- name: Test Vlag - config-consistency
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}'
- with_items: "{{test_vlag_data3}}"
-- name: Test Vlag - isl
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}'
- with_items: "{{test_vlag_data4}}"
-- name: Test Vlag - mac-address-table
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}'
- with_items: "{{test_vlag_data5}}"
-- name: Test Vlag - peer-gateway
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}'
- with_items: "{{test_vlag_data6}}"
-- name: Test Vlag - priority
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}'
- with_items: "{{test_vlag_data7}}"
-- name: Test Vlag - startup-delay
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}'
- with_items: "{{test_vlag_data8}}"
-- name: Test Vlag - tier-id
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}'
- with_items: "{{test_vlag_data9}}"
-- name: Test Vlag - vrrp
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}'
- with_items: "{{test_vlag_data10}}"
-- name: Test Vlag - instance
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}' vlagArg3='{{item.vlagArg3}}'
- with_items: "{{test_vlag_data11}}"
-- name: Test Vlag - instance2
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}'
- with_items: "{{test_vlag_data12}}"
-- name: Test Vlag - keepalive-attempts
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}' vlagArg3='{{item.vlagArg3}}'
- with_items: "{{test_vlag_data13}}"
-- name: Test Vlag - keepalive-interval
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}' vlagArg3='{{item.vlagArg3}}'
- with_items: "{{test_vlag_data14}}"
-- name: Test Vlag - retry-interval
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}' vlagArg3='{{item.vlagArg3}}'
- with_items: "{{test_vlag_data15}}"
-- name: Test Vlag - peer ip
- cnos_vlag: host={{ inventory_hostname }} username={{ hostvars[inventory_hostname]['ansible_ssh_user']}} password={{ hostvars[inventory_hostname]['ansible_ssh_pass']}} deviceType={{ hostvars[inventory_hostname]['deviceType']}} outputfile=./results/cnos_vlag_{{ inventory_hostname }}_output.txt vlagArg1='{{item.vlagArg1}}' vlagArg2='{{item.vlagArg2}}' vlagArg3='{{item.vlagArg3}}'
- with_items: "{{test_vlag_data16}}"
-# Completed file \ No newline at end of file
diff --git a/test/integration/targets/cnos_vlag/vars/main.yml b/test/integration/targets/cnos_vlag/vars/main.yml
deleted file mode 100644
index e44a6758b8..0000000000
--- a/test/integration/targets/cnos_vlag/vars/main.yml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-test_vlag_data1:
- - {vlagArg1: "enable"}
-test_vlag_data2:
- - {vlagArg1: "auto-recovery", vlagArg2: 266}
-test_vlag_data3:
- - {vlagArg1: "config-consistency", vlagArg2: "strict"}
-test_vlag_data4:
- - {vlagArg1: "isl", vlagArg2: 33}
-test_vlag_data5:
- - {vlagArg1: "mac-address-table"}
-test_vlag_data6:
- - {vlagArg1: "peer-gateway"}
-test_vlag_data7:
- - {vlagArg1: "priority", vlagArg2: 1313}
-test_vlag_data8:
- - {vlagArg1: "startup-delay", vlagArg2: 323}
-test_vlag_data9:
- - {vlagArg1: "tier-id", vlagArg2: 313}
-test_vlag_data10:
- - {vlagArg1: "vrrp"}
-test_vlag_data11:
- - {vlagArg1: "instance", vlagArg2: 33, vlagArg3: 333}
-test_vlag_data12:
- - {vlagArg1: "instance", vlagArg2: "33"}
-test_vlag_data13:
- - {vlagArg1: "hlthchk", vlagArg2: "keepalive-attempts", vlagArg3: 13}
-test_vlag_data14:
- - {vlagArg1: "hlthchk", vlagArg2: "keepalive-interval", vlagArg3: 131}
-test_vlag_data15:
- - {vlagArg1: "hlthchk", vlagArg2: "retry-interval", vlagArg3: 133}
-test_vlag_data16:
- - {vlagArg1: "hlthchk", vlagArg2: "peer-ip", vlagArg3: "1.2.3.4"}
diff --git a/test/integration/targets/cnos_vlan/aliases b/test/integration/targets/cnos_vlan/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_vlan/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_vlan/cnos_vlan_sample_hosts b/test/integration/targets/cnos_vlan/cnos_vlan_sample_hosts
deleted file mode 100644
index be57bc951b..0000000000
--- a/test/integration/targets/cnos_vlan/cnos_vlan_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_vlan_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_vlan_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password>
diff --git a/test/integration/targets/cnos_vlan/defaults/main.yaml b/test/integration/targets/cnos_vlan/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/cnos_vlan/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/cnos_vlan/tasks/cli.yaml b/test/integration/targets/cnos_vlan/tasks/cli.yaml
deleted file mode 100644
index 303af40762..0000000000
--- a/test/integration/targets/cnos_vlan/tasks/cli.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
-
-- name: run test case (connection=local)
- include: "{{ test_case_to_run }} ansible_connection=local"
- with_first_found: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_vlan/tasks/main.yaml b/test/integration/targets/cnos_vlan/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_vlan/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_vlan/tests/cli/basic.yaml b/test/integration/targets/cnos_vlan/tests/cli/basic.yaml
deleted file mode 100644
index b5de97ecd5..0000000000
--- a/test/integration/targets/cnos_vlan/tests/cli/basic.yaml
+++ /dev/null
@@ -1,213 +0,0 @@
----
-- debug: msg="START cli/basic.yaml on connection={{ ansible_connection }}"
-
-#- set_fact: switch_type="{{ switch_type }}"
-
-- block:
-
- - name: setup - remove vlan used in test
- cnos_config:
- lines:
- - no vlan 100
- - no vlan 200
- - no vlan 300
- provider: "{{ cli }}"
-
- - name: setup - remove switchport settings on interfaces used in test
- cnos_config:
- lines:
- - switchport mode access
- - no switchport access vlan
- provider: "{{ cli }}"
- parents: "{{ item }}"
- loop:
- - interface ethernet1/33
- - interface ethernet1/44
-
- - name: create vlan
- cnos_vlan: &create
- vlan_id: 100
- name: test-vlan
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'vlan 100' in result.commands"
- - "'name test-vlan' in result.commands"
-
- - name: create vlan(idempotence)
- cnos_vlan: *create
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: Add interfaces to vlan
- cnos_vlan: &interfaces
- vlan_id: 100
- interfaces:
- - Ethernet1/33
- - Ethernet1/44
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'interface Ethernet1/33' in result.commands"
- - "'switchport mode access' in result.commands"
- - "'switchport access vlan 100' in result.commands"
- - "'interface Ethernet1/44' in result.commands"
- - "'switchport mode access' in result.commands"
- - "'switchport access vlan 100' in result.commands"
-
- - name: Add interfaces to vlan(idempotence)
- cnos_vlan: *interfaces
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: Remove interface from vlan
- cnos_vlan: &single_int
- vlan_id: 100
- interfaces:
- - Ethernet1/33
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'vlan 100' in result.commands"
-# - "'interface Ethernet1/33' in result.commands"
- - "'switchport mode access' in result.commands"
- - "'no switchport access vlan' in result.commands"
-
- - name: Remove interface from vlan(idempotence)
- cnos_vlan: *single_int
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: Suspend vlan
- cnos_vlan:
- vlan_id: 100
- state: suspend
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'vlan 100' in result.commands"
- - "'state suspend' in result.commands"
-
- - name: Unsuspend vlan
- cnos_vlan:
- vlan_id: 100
- state: active
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'vlan 100' in result.commands"
- - "'state active' in result.commands"
-
- - name: delete vlan
- cnos_vlan: &delete
- vlan_id: 100
- provider: "{{ cli }}"
- state: absent
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'no vlan 100' in result.commands"
-
- - name: delete vlan(idempotence)
- cnos_vlan: *delete
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: create vlans using aggregate
- cnos_vlan: &create_aggregate
- aggregate:
- - { vlan_id: 200, name: vlan-200 }
- - { vlan_id: 300, name: vlan-300 }
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'vlan 200' in result.commands"
- - "'name vlan-200' in result.commands"
- - "'vlan 300' in result.commands"
- - "'name vlan-300' in result.commands"
-
- - name: create vlans using aggregate(idempotence)
- cnos_vlan: *create_aggregate
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: delete vlans using aggregate
- cnos_vlan: &delete_aggregate
- aggregate:
- - { vlan_id: 200, name: vlan-200 }
- - { vlan_id: 300, name: vlan-300 }
- state: absent
- provider: "{{ cli }}"
- register: result
-
- - assert:
- that:
- - "result.changed == true"
- - "'no vlan 200' in result.commands"
- - "'no vlan 300' in result.commands"
-
- - name: delete vlans using aggregate(idempotence)
- cnos_vlan: *delete_aggregate
- register: result
-
- - assert:
- that:
- - "result.changed == false"
-
- - name: teardown(part1)
- cnos_config:
- lines:
- - no vlan 100
- - no vlan 200
- - no vlan 300
- provider: "{{ cli }}"
-
- - name: teardown(part2)
- cnos_config:
- lines:
- - switchport mode access
- - no switchport access vlan
- provider: "{{ cli }}"
- parents: "{{ item }}"
- loop:
- - interface Ethernet1/33
- - interface Ethernet1/44
-
-# when: switch_type == 'L2'
-
-- debug: msg="END cli/basic.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/cnos_vlan/vars/main.yaml b/test/integration/targets/cnos_vlan/vars/main.yaml
deleted file mode 100644
index aa25153ec8..0000000000
--- a/test/integration/targets/cnos_vlan/vars/main.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-cli:
- host: "{{ inventory_hostname }}"
- port: 22
- username: admin
- password: admin
- timeout: 30
- authorize: True
- auth_pass:
diff --git a/test/integration/targets/cnos_vrf/aliases b/test/integration/targets/cnos_vrf/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/cnos_vrf/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/cnos_vrf/cnos_vrf_sample_hosts b/test/integration/targets/cnos_vrf/cnos_vrf_sample_hosts
deleted file mode 100644
index 696911deca..0000000000
--- a/test/integration/targets/cnos_vrf/cnos_vrf_sample_hosts
+++ /dev/null
@@ -1,14 +0,0 @@
-# You have to paste this dummy information in /etc/ansible/hosts
-# Notes:
-# - Comments begin with the '#' character
-# - Blank lines are ignored
-# - Groups of hosts are delimited by [header] elements
-# - You can enter hostnames or ip Addresses
-# - A hostname/ip can be a member of multiple groups
-#
-# In the /etc/ansible/hosts file u have to enter [cnos_vrf_sample] tag
-# Following you should specify IP Addresses details
-# Please change <username> and <password> with appropriate value for your switch.
-
-[cnos_vrf_sample]
-10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> test_interface=ethernet1/33 test_interface2=ethernet1/44
diff --git a/test/integration/targets/cnos_vrf/defaults/main.yaml b/test/integration/targets/cnos_vrf/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/cnos_vrf/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/cnos_vrf/tasks/cli.yaml b/test/integration/targets/cnos_vrf/tasks/cli.yaml
deleted file mode 100644
index 87a42971bb..0000000000
--- a/test/integration/targets/cnos_vrf/tasks/cli.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }} ansible_connection=network_cli"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/cnos_vrf/tasks/main.yaml b/test/integration/targets/cnos_vrf/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/cnos_vrf/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/cnos_vrf/tests/cli/basic.yaml b/test/integration/targets/cnos_vrf/tests/cli/basic.yaml
deleted file mode 100644
index dbf964f098..0000000000
--- a/test/integration/targets/cnos_vrf/tests/cli/basic.yaml
+++ /dev/null
@@ -1,259 +0,0 @@
----
-- name: setup - remove vrf
- cnos_vrf:
- name: "{{ item }}"
- state: absent
- become: yes
- with_items:
- - test
- - test1
- - test2
- - test3
- - test4
- - test5
-
-- name: Setup - Ensure interfaces are not switchport
- cnos_config:
- lines:
- - no shutdown
- - no switchport
- - no logging monitor
- parents:
- - "interface ethernet1/33"
-
-- name: Create vrf
- cnos_vrf:
- name: test
- rd: 1:200
- state: present
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "'vrf context test' in result.commands"
- - "'rd 1:200' in result.commands"
-
-- name: Create vrf again (idempotent)
- cnos_vrf:
- name: test
- rd: 1:200
- state: present
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.commands | length == 0"
-
-- name: Modify rd
- cnos_vrf:
- name: test
- rd: 1:201
- state: present
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "'vrf context test' in result.commands"
- - "'rd 1:201' in result.commands"
-
-- name: Modify rd again (idempotent)
- cnos_vrf:
- name: test
- rd: 1:201
- state: present
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.commands | length == 0"
-
-- name: Add Ethernet1/33 to vrf and check interface assigned state
- cnos_vrf:
- name: test
- rd: 1:201
- state: present
- interfaces:
- - Ethernet1/33
- associated_interfaces:
- - Ethernet1/33
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "'interface ethernet1/33' in result.commands"
- - "'vrf member test' in result.commands"
-
-- name: Add Ethernet1/33 to vrf again (idempotent)
- cnos_vrf:
- name: test
- rd: 1:201
- state: present
- interfaces:
- - ethernet 1/33 # interface name modified to test case insensitive and space scenario
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.commands | length == 0"
-
-- name: Add multiple interfaces to vrf
- cnos_vrf:
- name: test1
- rd: 1:202
- state: present
- interfaces:
- - loopback 1
- - loopback 2
- - loopback 3
- - loopback 4
- - loopback 5
- - loopback 6
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "'interface loopback1' in result.commands"
- - "'vrf member test1' in result.commands"
- - "'interface loopback2' in result.commands"
- - "'vrf member test1' in result.commands"
- - "'interface loopback3' in result.commands"
- - "'vrf member test1' in result.commands"
- - "'interface loopback4' in result.commands"
- - "'vrf member test1' in result.commands"
- - "'interface loopback5' in result.commands"
- - "'vrf member test1' in result.commands"
- - "'interface loopback6' in result.commands"
- - "'vrf member test1' in result.commands"
-
-- name: Add multiple interfaces to vrf (idempotent)
- cnos_vrf:
- name: test1
- rd: 1:202
- state: present
- interfaces:
- - loopback 1
- - loopback 2
- - loopback 3
- - loopback 4
- - loopback 5
- - loopback 6
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.commands | length == 0"
-
-- name: setup - remove vrf
- cnos_vrf:
- name: "{{ item }}"
- state: absent
- become: yes
- with_items:
- - test1
- - test2
- - test3
-
-- name: Create aggregate of VRFs
- cnos_vrf:
- aggregate:
- - { name: test2, rd: "1:202" }
- - { name: test3, rd: "1:203" }
- state: present
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "'vrf context test2' in result.commands"
- - "'rd 1:202' in result.commands"
- - "'vrf context test3' in result.commands"
- - "'rd 1:203' in result.commands"
-
-- name: Create aggregate of VRFs again (idempotent)
- cnos_vrf:
- aggregate:
- - { name: test2, rd: "1:202" }
- - { name: test3, rd: "1:203" }
- state: present
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.commands | length == 0"
-
-- name: Create aggregate of VRFs with purge
- cnos_vrf:
- aggregate:
- - { name: test4, rd: "1:204" }
- - { name: test5, rd: "1:205" }
- state: present
- purge: yes
- become: yes
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "'vrf context test4' in result.commands"
- - "'rd 1:204' in result.commands"
- - "'vrf context test5' in result.commands"
- - "'rd 1:205' in result.commands"
- - "'no vrf context test' in result.commands"
- - "'no vrf context test2' in result.commands"
- - "'no vrf context test3' in result.commands"
-
-- name: Delete VRFs
- cnos_vrf:
- name: test
- state: absent
- become: yes
-
-- name: Delete VRFs again (idempotent)
- cnos_vrf:
- name: test
- state: absent
- become: yes
-
-- name: Delete aggregate of VRFs
- cnos_vrf:
- aggregate:
- - { name: test1 }
- - { name: test2 }
- - { name: test3 }
- - { name: test4 }
- - { name: test5 }
- state: absent
- become: yes
-
-- name: Delete VRFs again (idempotent)
- cnos_vrf:
- aggregate:
- - { name: test1 }
- - { name: test2 }
- - { name: test3 }
- - { name: test4 }
- - { name: test5 }
- state: absent
- become: yes
-
-- assert:
- that:
- - "result.changed == true"
diff --git a/test/integration/targets/connection_chroot/aliases b/test/integration/targets/connection_chroot/aliases
deleted file mode 100644
index bd318e6146..0000000000
--- a/test/integration/targets/connection_chroot/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-needs/root
-shippable/posix/group3
diff --git a/test/integration/targets/connection_chroot/runme.sh b/test/integration/targets/connection_chroot/runme.sh
deleted file mode 120000
index 70aa5dbdba..0000000000
--- a/test/integration/targets/connection_chroot/runme.sh
+++ /dev/null
@@ -1 +0,0 @@
-../connection_posix/test.sh \ No newline at end of file
diff --git a/test/integration/targets/connection_chroot/test_connection.inventory b/test/integration/targets/connection_chroot/test_connection.inventory
deleted file mode 100644
index 5f78393f21..0000000000
--- a/test/integration/targets/connection_chroot/test_connection.inventory
+++ /dev/null
@@ -1,7 +0,0 @@
-[chroot]
-chroot-pipelining ansible_ssh_pipelining=true
-chroot-no-pipelining ansible_ssh_pipelining=false
-[chroot:vars]
-ansible_host=/
-ansible_connection=chroot
-ansible_python_interpreter="{{ ansible_playbook_python }}"
diff --git a/test/integration/targets/connection_docker/aliases b/test/integration/targets/connection_docker/aliases
deleted file mode 100644
index 33b258daef..0000000000
--- a/test/integration/targets/connection_docker/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-non_local
-unsupported
diff --git a/test/integration/targets/connection_docker/runme.sh b/test/integration/targets/connection_docker/runme.sh
deleted file mode 120000
index 70aa5dbdba..0000000000
--- a/test/integration/targets/connection_docker/runme.sh
+++ /dev/null
@@ -1 +0,0 @@
-../connection_posix/test.sh \ No newline at end of file
diff --git a/test/integration/targets/connection_docker/test_connection.inventory b/test/integration/targets/connection_docker/test_connection.inventory
deleted file mode 100644
index 42940ac3b7..0000000000
--- a/test/integration/targets/connection_docker/test_connection.inventory
+++ /dev/null
@@ -1,6 +0,0 @@
-[docker]
-docker-pipelining ansible_ssh_pipelining=true
-docker-no-pipelining ansible_ssh_pipelining=false
-[docker:vars]
-ansible_host=ubuntu-latest
-ansible_connection=docker
diff --git a/test/integration/targets/connection_jail/aliases b/test/integration/targets/connection_jail/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/connection_jail/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/connection_jail/runme.sh b/test/integration/targets/connection_jail/runme.sh
deleted file mode 120000
index 70aa5dbdba..0000000000
--- a/test/integration/targets/connection_jail/runme.sh
+++ /dev/null
@@ -1 +0,0 @@
-../connection_posix/test.sh \ No newline at end of file
diff --git a/test/integration/targets/connection_jail/test_connection.inventory b/test/integration/targets/connection_jail/test_connection.inventory
deleted file mode 100644
index a525c72f43..0000000000
--- a/test/integration/targets/connection_jail/test_connection.inventory
+++ /dev/null
@@ -1,7 +0,0 @@
-[jail]
-jail-pipelining ansible_ssh_pipelining=true
-jail-no-pipelining ansible_ssh_pipelining=false
-[jail:vars]
-ansible_host=freebsd_10_2
-ansible_connection=jail
-ansible_python_interpreter=/usr/local/bin/python
diff --git a/test/integration/targets/connection_libvirt_lxc/aliases b/test/integration/targets/connection_libvirt_lxc/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/connection_libvirt_lxc/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/connection_libvirt_lxc/runme.sh b/test/integration/targets/connection_libvirt_lxc/runme.sh
deleted file mode 120000
index 70aa5dbdba..0000000000
--- a/test/integration/targets/connection_libvirt_lxc/runme.sh
+++ /dev/null
@@ -1 +0,0 @@
-../connection_posix/test.sh \ No newline at end of file
diff --git a/test/integration/targets/connection_libvirt_lxc/test_connection.inventory b/test/integration/targets/connection_libvirt_lxc/test_connection.inventory
deleted file mode 100644
index ff98a25542..0000000000
--- a/test/integration/targets/connection_libvirt_lxc/test_connection.inventory
+++ /dev/null
@@ -1,6 +0,0 @@
-[libvirt_lxc]
-libvirt_lxc-pipelining ansible_ssh_pipelining=true
-libvirt_lxc-no-pipelining ansible_ssh_pipelining=false
-[libvirt_lxc:vars]
-ansible_host=lv-ubuntu-wily-amd64
-ansible_connection=libvirt_lxc
diff --git a/test/integration/targets/connection_lxc/aliases b/test/integration/targets/connection_lxc/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/connection_lxc/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/connection_lxc/runme.sh b/test/integration/targets/connection_lxc/runme.sh
deleted file mode 120000
index 70aa5dbdba..0000000000
--- a/test/integration/targets/connection_lxc/runme.sh
+++ /dev/null
@@ -1 +0,0 @@
-../connection_posix/test.sh \ No newline at end of file
diff --git a/test/integration/targets/connection_lxc/test_connection.inventory b/test/integration/targets/connection_lxc/test_connection.inventory
deleted file mode 100644
index 8737a9e8f9..0000000000
--- a/test/integration/targets/connection_lxc/test_connection.inventory
+++ /dev/null
@@ -1,17 +0,0 @@
-[lxc]
-lxc-pipelining ansible_ssh_pipelining=true
-lxc-no-pipelining ansible_ssh_pipelining=false
-[lxc:vars]
-# 1. install lxc
-# 2. install python2-lxc
-# $ pip install git+https://github.com/lxc/python2-lxc.git
-# 3. create container:
-# $ sudo lxc-create -t download -n centos-7-amd64 -- -d centos -r 7 -a amd64
-# 4. start container:
-# $ sudo lxc-start -n centos-7-amd64 -d
-# 5. run test:
-# $ sudo -E make test_connection_lxc
-# 6. stop container
-# $ sudo lxc-stop -n centos-7-amd64
-ansible_host=centos-7-amd64
-ansible_connection=lxc
diff --git a/test/integration/targets/connection_lxd/aliases b/test/integration/targets/connection_lxd/aliases
deleted file mode 100644
index 33b258daef..0000000000
--- a/test/integration/targets/connection_lxd/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-non_local
-unsupported
diff --git a/test/integration/targets/connection_lxd/runme.sh b/test/integration/targets/connection_lxd/runme.sh
deleted file mode 120000
index 70aa5dbdba..0000000000
--- a/test/integration/targets/connection_lxd/runme.sh
+++ /dev/null
@@ -1 +0,0 @@
-../connection_posix/test.sh \ No newline at end of file
diff --git a/test/integration/targets/connection_lxd/test_connection.inventory b/test/integration/targets/connection_lxd/test_connection.inventory
deleted file mode 100644
index 9c5998eced..0000000000
--- a/test/integration/targets/connection_lxd/test_connection.inventory
+++ /dev/null
@@ -1,6 +0,0 @@
-[lxd]
-lxd-pipelining ansible_ssh_pipelining=true
-lxd-no-pipelining ansible_ssh_pipelining=false
-[lxd:vars]
-ansible_host=centos-7-amd64
-ansible_connection=lxd
diff --git a/test/integration/targets/consul/aliases b/test/integration/targets/consul/aliases
deleted file mode 100644
index dde62eec53..0000000000
--- a/test/integration/targets/consul/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group2
-destructive
-skip/aix
diff --git a/test/integration/targets/consul/meta/main.yml b/test/integration/targets/consul/meta/main.yml
deleted file mode 100644
index f5ea812bf8..0000000000
--- a/test/integration/targets/consul/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_openssl
diff --git a/test/integration/targets/consul/tasks/consul_session.yml b/test/integration/targets/consul/tasks/consul_session.yml
deleted file mode 100644
index a5490ec6c2..0000000000
--- a/test/integration/targets/consul/tasks/consul_session.yml
+++ /dev/null
@@ -1,162 +0,0 @@
-- name: list sessions
- consul_session:
- state: list
- register: result
-
-- assert:
- that:
- - result is changed
- - "'sessions' in result"
-
-- name: create a session
- consul_session:
- state: present
- name: testsession
- register: result
-
-- assert:
- that:
- - result is changed
- - result['name'] == 'testsession'
- - "'session_id' in result"
-
-- set_fact:
- session_id: "{{ result['session_id'] }}"
-
-- name: list sessions after creation
- consul_session:
- state: list
- register: result
-
-- set_fact:
- session_count: "{{ result['sessions'] | length }}"
-
-- assert:
- that:
- - result is changed
- # selectattr not available on Jinja 2.2 provided by CentOS 6
- # hence the two following tasks (set_fact/assert) are used
- # - (result['sessions'] | selectattr('ID', 'match', '^' ~ session_id ~ '$') | first)['Name'] == 'testsession'
-
-- name: search created session
- set_fact:
- test_session_found: True
- loop: "{{ result['sessions'] }}"
- when: "item.get('ID') == session_id and item.get('Name') == 'testsession'"
-
-- name: ensure session was created
- assert:
- that:
- - test_session_found|default(False)
-
-- name: fetch info about a session
- consul_session:
- state: info
- id: '{{ session_id }}'
- register: result
-
-- assert:
- that:
- - result is changed
-
-- name: ensure 'id' parameter is required when state=info
- consul_session:
- state: info
- name: test
- register: result
- ignore_errors: True
-
-- assert:
- that:
- - result is failed
-
-- name: ensure unknown scheme fails
- consul_session:
- state: info
- id: '{{ session_id }}'
- scheme: non_existent
- register: result
- ignore_errors: True
-
-- assert:
- that:
- - result is failed
-
-- when: pyopenssl_version.stdout is version('0.15', '>=')
- block:
- - name: ensure SSL certificate is checked
- consul_session:
- state: info
- id: '{{ session_id }}'
- port: 8501
- scheme: https
- register: result
- ignore_errors: True
-
- - name: previous task should fail since certificate is not known
- assert:
- that:
- - result is failed
- - "'certificate verify failed' in result.msg"
-
- - name: ensure SSL certificate isn't checked when validate_certs is disabled
- consul_session:
- state: info
- id: '{{ session_id }}'
- port: 8501
- scheme: https
- validate_certs: False
- register: result
-
- - name: previous task should succeed since certificate isn't checked
- assert:
- that:
- - result is changed
-
- - name: ensure a secure connection is possible
- consul_session:
- state: info
- id: '{{ session_id }}'
- port: 8501
- scheme: https
- environment:
- REQUESTS_CA_BUNDLE: '{{ remote_dir }}/cert.pem'
- register: result
-
- - assert:
- that:
- - result is changed
-
-- name: delete a session
- consul_session:
- state: absent
- id: '{{ session_id }}'
- register: result
-
-- assert:
- that:
- - result is changed
-
-- name: list sessions after deletion
- consul_session:
- state: list
- register: result
-
-- assert:
- that:
- - result is changed
- # selectattr and equalto not available on Jinja 2.2 provided by CentOS 6
- # hence the two following tasks (command/assert) are used
- # - (result['sessions'] | selectattr('ID', 'equalto', session_id) | list | length) == 0
-
-- name: search deleted session
- command: echo 'session found'
- loop: "{{ result['sessions'] }}"
- when: "item.get('ID') == session_id and item.get('Name') == 'testsession'"
- register: search_deleted
-
-- name: ensure session was deleted
- assert:
- that:
- - search_deleted is skipped # each iteration is skipped
- - search_deleted is not changed # and then unchanged
diff --git a/test/integration/targets/consul/tasks/main.yml b/test/integration/targets/consul/tasks/main.yml
deleted file mode 100644
index 575c2ed9fb..0000000000
--- a/test/integration/targets/consul/tasks/main.yml
+++ /dev/null
@@ -1,97 +0,0 @@
----
-- name: Install Consul and test
-
- vars:
- consul_version: '1.5.0'
- consul_uri: https://s3.amazonaws.com/ansible-ci-files/test/integration/targets/consul/consul_{{ consul_version }}_{{ ansible_system | lower }}_{{ consul_arch }}.zip
- consul_cmd: '{{ output_dir }}/consul'
-
- block:
- - name: register pyOpenSSL version
- command: "{{ ansible_python_interpreter }} -c 'import OpenSSL; print(OpenSSL.__version__)'"
- register: pyopenssl_version
-
- - name: Install requests<2.20 (CentOS/RHEL 6)
- pip:
- name: requests<2.20
- register: result
- until: result is success
- when: ansible_distribution_file_variety|default() == 'RedHat' and ansible_distribution_major_version is version('6', '<=')
-
- - name: Install python-consul
- pip:
- name: python-consul
- register: result
- until: result is success
-
- - when: pyopenssl_version.stdout is version('0.15', '>=')
- block:
- - name: Generate privatekey
- openssl_privatekey:
- path: '{{ output_dir }}/privatekey.pem'
-
- - name: Generate CSR
- openssl_csr:
- path: '{{ output_dir }}/csr.csr'
- privatekey_path: '{{ output_dir }}/privatekey.pem'
- subject:
- commonName: localhost
-
- - name: Generate selfsigned certificate
- openssl_certificate:
- path: '{{ output_dir }}/cert.pem'
- csr_path: '{{ output_dir }}/csr.csr'
- privatekey_path: '{{ output_dir }}/privatekey.pem'
- provider: selfsigned
- selfsigned_digest: sha256
- register: selfsigned_certificate
-
- - name: 'Install unzip'
- package:
- name: unzip
- register: result
- until: result is success
- when: ansible_distribution != "MacOSX" # unzip already installed
-
- - assert:
- # Linux: x86_64, FreeBSD: amd64
- that: ansible_architecture in ['i386', 'x86_64', 'amd64']
- - set_fact:
- consul_arch: '386'
- when: ansible_architecture == 'i386'
- - set_fact:
- consul_arch: amd64
- when: ansible_architecture in ['x86_64', 'amd64']
-
- - name: 'Download consul binary'
- unarchive:
- src: '{{ consul_uri }}'
- dest: '{{ output_dir }}'
- remote_src: true
- register: result
- until: result is success
-
- - vars:
- remote_dir: '{{ echo_output_dir.stdout }}'
- block:
- - command: 'echo {{ output_dir }}'
- register: echo_output_dir
-
- - name: 'Create configuration file'
- template:
- src: consul_config.hcl.j2
- dest: '{{ output_dir }}/consul_config.hcl'
-
- - name: 'Start Consul (dev mode enabled)'
- shell: 'nohup {{ consul_cmd }} agent -dev -config-file {{ output_dir }}/consul_config.hcl </dev/null >/dev/null 2>&1 &'
-
- - name: 'Create some data'
- command: '{{ consul_cmd }} kv put data/value{{ item }} foo{{ item }}'
- loop: [1, 2, 3]
-
- - import_tasks: consul_session.yml
-
- always:
- - name: 'Kill consul process'
- shell: "kill $(cat {{ output_dir }}/consul.pid)"
- ignore_errors: true
diff --git a/test/integration/targets/consul/templates/consul_config.hcl.j2 b/test/integration/targets/consul/templates/consul_config.hcl.j2
deleted file mode 100644
index 9af06f02e9..0000000000
--- a/test/integration/targets/consul/templates/consul_config.hcl.j2
+++ /dev/null
@@ -1,13 +0,0 @@
-# {{ ansible_managed }}
-server = true
-pid_file = "{{ remote_dir }}/consul.pid"
-ports {
- http = 8500
- {% if pyopenssl_version.stdout is version('0.15', '>=') %}
- https = 8501
- {% endif %}
-}
-{% if pyopenssl_version.stdout is version('0.15', '>=') %}
-key_file = "{{ remote_dir }}/privatekey.pem"
-cert_file = "{{ remote_dir }}/cert.pem"
-{% endif %}
diff --git a/test/integration/targets/cronvar/aliases b/test/integration/targets/cronvar/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/cronvar/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/cronvar/defaults/main.yml b/test/integration/targets/cronvar/defaults/main.yml
deleted file mode 100644
index a22230ab66..0000000000
--- a/test/integration/targets/cronvar/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-cron_config_path: /etc/cron.d
diff --git a/test/integration/targets/cronvar/meta/main.yml b/test/integration/targets/cronvar/meta/main.yml
deleted file mode 100644
index 2d2436a168..0000000000
--- a/test/integration/targets/cronvar/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_cron
diff --git a/test/integration/targets/cronvar/tasks/main.yml b/test/integration/targets/cronvar/tasks/main.yml
deleted file mode 100644
index e6fff1d9a9..0000000000
--- a/test/integration/targets/cronvar/tasks/main.yml
+++ /dev/null
@@ -1,109 +0,0 @@
-- name: Create EMAIL cron var
- cronvar:
- name: EMAIL
- value: doug@ansibmod.con.com
- register: create_cronvar1
-
-- name: Create EMAIL cron var again
- cronvar:
- name: EMAIL
- value: doug@ansibmod.con.com
- register: create_cronvar2
-
-- name: Check cron var value
- shell: crontab -l -u root | grep -c EMAIL=doug@ansibmod.con.com
- register: varcheck1
-
-- name: Modify EMAIL cron var
- cronvar:
- name: EMAIL
- value: jane@ansibmod.con.com
- register: create_cronvar3
-
-- name: Check cron var value again
- shell: crontab -l -u root | grep -c EMAIL=jane@ansibmod.con.com
- register: varcheck2
-
-- name: Remove EMAIL cron var
- cronvar:
- name: EMAIL
- state: absent
- register: remove_cronvar1
-
-- name: Remove EMAIL cron var again
- cronvar:
- name: EMAIL
- state: absent
- register: remove_cronvar2
-
-- name: Check cron var value again
- shell: crontab -l -u root | grep -c EMAIL
- register: varcheck3
- failed_when: varcheck3.rc == 0
-
-- name: Add cron var to custom file
- cronvar:
- name: TESTVAR
- value: somevalue
- cron_file: cronvar_test
- register: custom_cronfile1
-
-- name: Add cron var to custom file again
- cronvar:
- name: TESTVAR
- value: somevalue
- cron_file: cronvar_test
- register: custom_cronfile2
-
-- name: Check cron var value in custom file
- command: grep -c TESTVAR=somevalue {{ cron_config_path }}/cronvar_test
- register: custom_varcheck1
-
-- name: Change cron var in custom file
- cronvar:
- name: TESTVAR
- value: newvalue
- cron_file: cronvar_test
- register: custom_cronfile3
-
-- name: Check cron var value in custom file
- command: grep -c TESTVAR=newvalue {{ cron_config_path }}/cronvar_test
- register: custom_varcheck2
-
-- name: Remove cron var from custom file
- cronvar:
- name: TESTVAR
- value: newvalue
- cron_file: cronvar_test
- state: absent
- register: custom_remove_cronvar1
-
-- name: Remove cron var from custom file again
- cronvar:
- name: TESTVAR
- value: newvalue
- cron_file: cronvar_test
- state: absent
- register: custom_remove_cronvar2
-
-- name: Check cron var value
- command: grep -c TESTVAR=newvalue {{ cron_config_path }}/cronvar_test
- register: custom_varcheck3
- failed_when: custom_varcheck3.rc == 0
-
-- name: Esure cronvar tasks did the right thing
- assert:
- that:
- - create_cronvar1 is changed
- - create_cronvar2 is not changed
- - create_cronvar3 is changed
- - remove_cronvar1 is changed
- - remove_cronvar2 is not changed
- - varcheck1.stdout == '1'
- - varcheck2.stdout == '1'
- - varcheck3.stdout == '0'
- - custom_remove_cronvar1 is changed
- - custom_remove_cronvar2 is not changed
- - custom_varcheck1.stdout == '1'
- - custom_varcheck2.stdout == '1'
- - custom_varcheck3.stdout == '0'
diff --git a/test/integration/targets/cs_account/aliases b/test/integration/targets/cs_account/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_account/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_account/meta/main.yml b/test/integration/targets/cs_account/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_account/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_account/tasks/main.yml b/test/integration/targets/cs_account/tasks/main.yml
deleted file mode 100644
index 7b7798b815..0000000000
--- a/test/integration/targets/cs_account/tasks/main.yml
+++ /dev/null
@@ -1,442 +0,0 @@
----
-- name: setup
- cs_account: name={{ cs_resource_prefix }}_user state=absent
- register: acc
-- name: verify setup
- assert:
- that:
- - acc is successful
-
-- name: test fail if missing name
- action: cs_account
- register: acc
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - acc is failed
- - 'acc.msg == "missing required arguments: name"'
-
-- name: test fail if missing params if state=present
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- register: acc
- ignore_errors: true
-- name: verify results of fail if missing params if state=present
- assert:
- that:
- - acc is failed
- - 'acc.msg == "missing required arguments: email, username, password, first_name, last_name"'
-
-- name: test create user account in check mode
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- username: "{{ cs_resource_prefix }}_username"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- network_domain: "example.com"
- register: acc
- check_mode: true
-- name: verify results of create account in check mode
- assert:
- that:
- - acc is successful
- - acc is changed
-
-- name: test create user account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- username: "{{ cs_resource_prefix }}_username"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- network_domain: "example.com"
- register: acc
-- name: verify results of create account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
-
-- name: test create user account idempotence
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- username: "{{ cs_resource_prefix }}_username"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- network_domain: "example.com"
- register: acc
-- name: verify results of create account idempotence
- assert:
- that:
- - acc is successful
- - acc is not changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
-
-- name: test lock user account in check mode
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: locked
- register: acc
- check_mode: true
-- name: verify results of lock user account in check mode
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
-
-- name: test lock user account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: locked
- register: acc
-- name: verify results of lock user account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "locked"
- - acc.domain == "ROOT"
-
-- name: test lock user account idempotence
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: locked
- register: acc
-- name: verify results of lock user account idempotence
- assert:
- that:
- - acc is successful
- - acc is not changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "locked"
- - acc.domain == "ROOT"
-
-- name: test disable user account in check mode
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: disabled
- register: acc
- check_mode: true
-- name: verify results of disable user account in check mode
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "locked"
- - acc.domain == "ROOT"
-
-- name: test disable user account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: disabled
- register: acc
-- name: verify results of disable user account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "disabled"
- - acc.domain == "ROOT"
-
-- name: test disable user account idempotence
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: disabled
- register: acc
-- name: verify results of disable user account idempotence
- assert:
- that:
- - acc is successful
- - acc is not changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "disabled"
- - acc.domain == "ROOT"
-
-- name: test lock disabled user account in check mode
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: locked
- register: acc
- check_mode: true
-- name: verify results of lock disabled user account in check mode
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "disabled"
- - acc.domain == "ROOT"
-
-- name: test lock disabled user account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: locked
- register: acc
-- name: verify results of lock disabled user account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "locked"
- - acc.domain == "ROOT"
-
-- name: test lock disabled user account idempotence
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: locked
- register: acc
-- name: verify results of lock disabled user account idempotence
- assert:
- that:
- - acc is successful
- - acc is not changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "locked"
- - acc.domain == "ROOT"
-
-- name: test enable user account in check mode
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: enabled
- register: acc
- check_mode: true
-- name: verify results of enable user account in check mode
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "locked"
- - acc.domain == "ROOT"
-
-- name: test enable user account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: enabled
- register: acc
-- name: verify results of enable user account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
-
-- name: test enable user account idempotence
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: enabled
- register: acc
-- name: verify results of enable user account idempotence
- assert:
- that:
- - acc is successful
- - acc is not changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
-
-- name: test remove user account in check mode
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: absent
- register: acc
- check_mode: true
-- name: verify results of remove user account in check mode
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
-
-- name: test remove user account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: absent
- register: acc
-- name: verify results of remove user account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
-
-- name: test remove user account idempotence
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: absent
- register: acc
-- name: verify results of remove user account idempotence
- assert:
- that:
- - acc is successful
- - acc is not changed
-
-- name: test create user disabled account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- username: "{{ cs_resource_prefix }}_username"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- network_domain: "example.com"
- state: disabled
- register: acc
-- name: verify results of create disabled account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "disabled"
- - acc.domain == "ROOT"
-
-- name: test remove disabled user account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: absent
- register: acc
-- name: verify results of remove disabled user account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "disabled"
- - acc.domain == "ROOT"
-
-- name: test create user locked account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- username: "{{ cs_resource_prefix }}_username"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- network_domain: "example.com"
- state: locked
- register: acc
-- name: verify results of create locked account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "locked"
- - acc.domain == "ROOT"
-
-- name: test remove locked user account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: absent
- register: acc
-- name: verify results of remove locked user account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "locked"
- - acc.domain == "ROOT"
-
-- name: test create user unlocked/enabled account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- username: "{{ cs_resource_prefix }}_username"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- network_domain: "example.com"
- state: unlocked
- register: acc
-- name: verify results of create unlocked/enabled account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
-
-- name: test remove unlocked/enabled user account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- state: absent
- register: acc
-- name: verify results of remove unlocked/enabled user account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_user"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
diff --git a/test/integration/targets/cs_affinitygroup/aliases b/test/integration/targets/cs_affinitygroup/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_affinitygroup/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_affinitygroup/meta/main.yml b/test/integration/targets/cs_affinitygroup/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_affinitygroup/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_affinitygroup/tasks/main.yml b/test/integration/targets/cs_affinitygroup/tasks/main.yml
deleted file mode 100644
index 994f21a1a5..0000000000
--- a/test/integration/targets/cs_affinitygroup/tasks/main.yml
+++ /dev/null
@@ -1,93 +0,0 @@
----
-- name: setup
- cs_affinitygroup:
- name: "{{ cs_resource_prefix }}_ag"
- state: absent
- register: ag
-- name: verify setup
- assert:
- that:
- - ag is successful
-
-- name: test fail if missing name
- cs_affinitygroup:
- register: ag
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - ag is failed
- - "ag.msg == 'missing required arguments: name'"
-
-- name: test fail unknown affinity type
- cs_affinitygroup:
- name: "{{ cs_resource_prefix }}_ag"
- affinity_type: unexistent affinity type
- register: ag
- ignore_errors: true
-- name: verify test fail unknown affinity type
- assert:
- that:
- - ag is failed
- - "ag.msg == 'affinity group type not found: unexistent affinity type'"
-
-- name: test present affinity group in check mode
- cs_affinitygroup: name={{ cs_resource_prefix }}_ag
- register: ag
- check_mode: true
-- name: verify results of create affinity group in check mode
- assert:
- that:
- - ag is successful
- - ag is changed
-
-- name: test present affinity group
- cs_affinitygroup: name={{ cs_resource_prefix }}_ag
- register: ag
-- name: verify results of create affinity group
- assert:
- that:
- - ag is successful
- - ag is changed
- - ag.name == "{{ cs_resource_prefix }}_ag"
-
-- name: test present affinity group is idempotence
- cs_affinitygroup: name={{ cs_resource_prefix }}_ag
- register: ag
-- name: verify results present affinity group is idempotence
- assert:
- that:
- - ag is successful
- - ag is not changed
- - ag.name == "{{ cs_resource_prefix }}_ag"
-
-- name: test absent affinity group in check mode
- cs_affinitygroup: name={{ cs_resource_prefix }}_ag state=absent
- register: ag
- check_mode: true
-- name: verify results of absent affinity group in check mode
- assert:
- that:
- - ag is successful
- - ag is changed
- - ag.name == "{{ cs_resource_prefix }}_ag"
-
-- name: test absent affinity group
- cs_affinitygroup: name={{ cs_resource_prefix }}_ag state=absent
- register: ag
-- name: verify results of absent affinity group
- assert:
- that:
- - ag is successful
- - ag is changed
- - ag.name == "{{ cs_resource_prefix }}_ag"
-
-- name: test absent affinity group is idempotence
- cs_affinitygroup: name={{ cs_resource_prefix }}_ag state=absent
- register: ag
-- name: verify results of absent affinity group is idempotence
- assert:
- that:
- - ag is successful
- - ag is not changed
- - ag.name is undefined
diff --git a/test/integration/targets/cs_cluster/aliases b/test/integration/targets/cs_cluster/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_cluster/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_cluster/meta/main.yml b/test/integration/targets/cs_cluster/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_cluster/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_cluster/tasks/main.yml b/test/integration/targets/cs_cluster/tasks/main.yml
deleted file mode 100644
index 59c1a2a092..0000000000
--- a/test/integration/targets/cs_cluster/tasks/main.yml
+++ /dev/null
@@ -1,306 +0,0 @@
----
-- name: setup cluster is absent
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- state: absent
- register: cluster
-- name: verify setup cluster is absent
- assert:
- that:
- - cluster is successful
-
-- name: setup zone is present
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- dns1: 8.8.8.8
- dns2: 8.8.4.4
- network_type: Basic
- register: zone
-- name: verify setup zone is present
- assert:
- that:
- - zone is successful
-
-- name: setup pod is present
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- start_ip: 10.100.10.101
- gateway: 10.100.10.1
- netmask: 255.255.255.0
- register: pod
-- name: verify setup pod is present
- assert:
- that:
- - pod is successful
-
-- name: test fail if missing name
- cs_cluster:
- register: cluster
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - cluster is failed
- - "cluster.msg == 'missing required arguments: name'"
-
-- name: test fail if pod not found
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- zone: "{{ cs_resource_prefix }}-zone"
- hypervisor: Simulator
- cluster_type: CloudManaged
- pod: unexistent
- register: cluster
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - cluster is failed
- - "cluster.msg == 'Pod unexistent not found in zone {{ cs_resource_prefix }}-zone'"
-
-- name: test create cluster in check mode
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- zone: "{{ cs_resource_prefix }}-zone"
- hypervisor: Simulator
- cluster_type: CloudManaged
- register: cluster_origin
- check_mode: true
- tags: disable
-- name: verify test create cluster in check mode
- assert:
- that:
- - cluster_origin is changed
-
-- name: test create cluster
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- zone: "{{ cs_resource_prefix }}-zone"
- hypervisor: Simulator
- cluster_type: CloudManaged
- register: cluster_origin
- tags: disable
-- name: verify test create cluster
- assert:
- that:
- - cluster_origin is changed
- - cluster_origin.name == "{{ cs_resource_prefix }}-cluster"
- - cluster_origin.zone == "{{ cs_resource_prefix }}-zone"
- - cluster_origin.allocation_state == "Enabled"
- - cluster_origin.hypervisor == "Simulator"
- - cluster_origin.cluster_type == "CloudManaged"
-
-- name: test create cluster idempotence
- cs_cluster:
- name: "{{ cs_resource_prefix }}-Cluster"
- zone: "{{ cs_resource_prefix }}-Zone"
- hypervisor: Simulator
- cluster_type: CloudManaged
- register: cluster
-- name: verify test create cluster idempotence
- assert:
- that:
- - cluster.id == cluster_origin.id
- - cluster is not changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Enabled"
- - cluster_origin.hypervisor == "Simulator"
- - cluster.cluster_type == "CloudManaged"
-
-- name: test update cluster in check mode
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- zone: "{{ cs_resource_prefix }}-zone"
- hypervisor: Simulator
- cluster_type: ExternalManaged
- register: cluster
- check_mode: true
-- name: verify test update cluster in check mode
- assert:
- that:
- - cluster is changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Enabled"
- - cluster.hypervisor == "Simulator"
- - cluster.cluster_type == "CloudManaged"
- - cluster.id == cluster_origin.id
-
-- name: test update cluster
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- zone: "{{ cs_resource_prefix }}-zone"
- hypervisor: Simulator
- cluster_type: ExternalManaged
- register: cluster
-- name: verify test update cluster
- assert:
- that:
- - cluster is changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Enabled"
- - cluster.hypervisor == "Simulator"
- - cluster.cluster_type == "ExternalManaged"
- - cluster.id == cluster_origin.id
-
-- name: test update cluster idempotence
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- zone: "{{ cs_resource_prefix }}-zone"
- hypervisor: Simulator
- cluster_type: ExternalManaged
- register: cluster
-- name: verify test update cluster idempotence
- assert:
- that:
- - cluster is not changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Enabled"
- - cluster.hypervisor == "Simulator"
- - cluster.cluster_type == "ExternalManaged"
- - cluster.id == cluster_origin.id
-
-- name: test disable cluster in check mode
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- state: disabled
- register: cluster
- check_mode: true
-- name: verify test disable cluster in check mode
- assert:
- that:
- - cluster is changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Enabled"
- - cluster.hypervisor == "Simulator"
- - cluster.cluster_type == "ExternalManaged"
- - cluster.id == cluster_origin.id
-
-- name: test disable cluster
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- state: disabled
- register: cluster
-- name: verify test disable cluster
- assert:
- that:
- - cluster is changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Disabled"
- - cluster.hypervisor == "Simulator"
- - cluster.cluster_type == "ExternalManaged"
- - cluster.id == cluster_origin.id
-
-- name: test disable cluster idempotence
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- state: disabled
- register: cluster
-- name: verify test disable cluster idempotence
- assert:
- that:
- - cluster is not changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Disabled"
- - cluster.hypervisor == "Simulator"
- - cluster.cluster_type == "ExternalManaged"
-
-- name: test enable cluster in check mode
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- state: enabled
- register: cluster
- check_mode: true
-- name: verify test enable cluster in check mode
- assert:
- that:
- - cluster is changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Disabled"
- - cluster.hypervisor == "Simulator"
- - cluster.cluster_type == "ExternalManaged"
- - cluster.id == cluster_origin.id
-
-- name: test enable cluster
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- state: enabled
- register: cluster
-- name: verify test enable cluster
- assert:
- that:
- - cluster is changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Enabled"
- - cluster.hypervisor == "Simulator"
- - cluster.cluster_type == "ExternalManaged"
- - cluster.id == cluster_origin.id
-
-- name: test enable cluster idempotence
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- state: enabled
- register: cluster
-- name: verify test enable cluster idempotence
- assert:
- that:
- - cluster is not changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Enabled"
- - cluster.hypervisor == "Simulator"
- - cluster.cluster_type == "ExternalManaged"
- - cluster.id == cluster_origin.id
-
-- name: test remove cluster in check mode
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- zone: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: cluster
- check_mode: true
-- name: verify test remove cluster in check mode
- assert:
- that:
- - cluster.id == cluster_origin.id
- - cluster is changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Enabled"
- - cluster_origin.hypervisor == "Simulator"
-
-- name: test remove cluster
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- zone: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: cluster
-- name: verify test remove cluster
- assert:
- that:
- - cluster.id == cluster_origin.id
- - cluster is changed
- - cluster.name == "{{ cs_resource_prefix }}-cluster"
- - cluster.zone == "{{ cs_resource_prefix }}-zone"
- - cluster.allocation_state == "Enabled"
- - cluster_origin.hypervisor == "Simulator"
-
-- name: test remove cluster idempotence
- cs_cluster:
- name: "{{ cs_resource_prefix }}-cluster"
- zone: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: cluster
-- name: verify test remove cluster idempotence
- assert:
- that:
- - cluster is not changed
diff --git a/test/integration/targets/cs_configuration/aliases b/test/integration/targets/cs_configuration/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_configuration/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_configuration/defaults/main.yml b/test/integration/targets/cs_configuration/defaults/main.yml
deleted file mode 100644
index 3cf304cad0..0000000000
--- a/test/integration/targets/cs_configuration/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-test_cs_configuration_storage: PS0-adv
-test_cs_configuration_cluster: C0-basic
-test_cs_configuration_account: admin
-test_cs_configuration_zone: Sandbox-simulator-basic
diff --git a/test/integration/targets/cs_configuration/meta/main.yml b/test/integration/targets/cs_configuration/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_configuration/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_configuration/tasks/account.yml b/test/integration/targets/cs_configuration/tasks/account.yml
deleted file mode 100644
index 8b20918f47..0000000000
--- a/test/integration/targets/cs_configuration/tasks/account.yml
+++ /dev/null
@@ -1,76 +0,0 @@
----
-- name: test configuration account
- cs_configuration:
- name: allow.public.user.templates
- account: "{{ test_cs_configuration_account }}"
- value: true
- register: config
-- name: verify test configuration storage
- assert:
- that:
- - config is successful
-
-- name: test update configuration account in check mode
- cs_configuration:
- name: allow.public.user.templates
- account: "{{ test_cs_configuration_account }}"
- value: false
- register: config
- check_mode: true
-- name: verify update configuration account in check mode
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "true"
- - config.name == "allow.public.user.templates"
- - config.scope == "account"
- - config.account == "{{ test_cs_configuration_account }}"
-
-- name: test update configuration account
- cs_configuration:
- name: allow.public.user.templates
- account: "{{ test_cs_configuration_account }}"
- value: false
- register: config
-- name: verify update configuration account
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "false"
- - config.name == "allow.public.user.templates"
- - config.scope == "account"
- - config.account == "{{ test_cs_configuration_account }}"
-
-- name: test update configuration account idempotence
- cs_configuration:
- name: allow.public.user.templates
- account: "{{ test_cs_configuration_account }}"
- value: false
- register: config
-- name: verify update configuration account idempotence
- assert:
- that:
- - config is successful
- - config is not changed
- - config.value == "false"
- - config.name == "allow.public.user.templates"
- - config.scope == "account"
- - config.account == "{{ test_cs_configuration_account }}"
-
-- name: test reset configuration account
- cs_configuration:
- name: allow.public.user.templates
- account: "{{ test_cs_configuration_account }}"
- value: true
- register: config
-- name: verify update configuration account
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "true"
- - config.name == "allow.public.user.templates"
- - config.scope == "account"
- - config.account == "{{ test_cs_configuration_account }}"
diff --git a/test/integration/targets/cs_configuration/tasks/cluster.yml b/test/integration/targets/cs_configuration/tasks/cluster.yml
deleted file mode 100644
index b8cb2b9442..0000000000
--- a/test/integration/targets/cs_configuration/tasks/cluster.yml
+++ /dev/null
@@ -1,76 +0,0 @@
----
-- name: test configuration cluster
- cs_configuration:
- name: cpu.overprovisioning.factor
- cluster: "{{ test_cs_configuration_cluster }}"
- value: 1.0
- register: config
-- name: verify test configuration cluster
- assert:
- that:
- - config is successful
-
-- name: test update configuration cluster in check mode
- cs_configuration:
- name: cpu.overprovisioning.factor
- cluster: "{{ test_cs_configuration_cluster }}"
- value: 2.0
- register: config
- check_mode: true
-- name: verify update configuration cluster in check mode
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "1.0"
- - config.name == "cpu.overprovisioning.factor"
- - config.scope == "cluster"
- - config.cluster == "{{ test_cs_configuration_cluster }}"
-
-- name: test update configuration cluster
- cs_configuration:
- name: cpu.overprovisioning.factor
- cluster: "{{ test_cs_configuration_cluster }}"
- value: 2.0
- register: config
-- name: verify update configuration cluster
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "2.0"
- - config.name == "cpu.overprovisioning.factor"
- - config.scope == "cluster"
- - config.cluster == "{{ test_cs_configuration_cluster }}"
-
-- name: test update configuration cluster idempotence
- cs_configuration:
- name: cpu.overprovisioning.factor
- cluster: "{{ test_cs_configuration_cluster }}"
- value: 2.0
- register: config
-- name: verify update configuration cluster idempotence
- assert:
- that:
- - config is successful
- - config is not changed
- - config.value == "2.0"
- - config.name == "cpu.overprovisioning.factor"
- - config.scope == "cluster"
- - config.cluster == "{{ test_cs_configuration_cluster }}"
-
-- name: test reset configuration cluster
- cs_configuration:
- name: cpu.overprovisioning.factor
- cluster: "{{ test_cs_configuration_cluster }}"
- value: 1.0
- register: config
-- name: verify reset configuration cluster
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "1.0"
- - config.name == "cpu.overprovisioning.factor"
- - config.scope == "cluster"
- - config.cluster == "{{ test_cs_configuration_cluster }}"
diff --git a/test/integration/targets/cs_configuration/tasks/main.yml b/test/integration/targets/cs_configuration/tasks/main.yml
deleted file mode 100644
index e80c85f9f9..0000000000
--- a/test/integration/targets/cs_configuration/tasks/main.yml
+++ /dev/null
@@ -1,204 +0,0 @@
----
-- name: test fail if missing name
- cs_configuration:
- register: config
- ignore_errors: true
-- name: verify results of fail if missing arguments
- assert:
- that:
- - config is failed
- - "config.msg.startswith('missing required arguments: ')"
-
-- name: test configuration
- cs_configuration:
- name: network.loadbalancer.haproxy.stats.visibility
- value: global
- register: config
-- name: verify test configuration
- assert:
- that:
- - config is successful
-
-- name: test update configuration string in check mode
- cs_configuration:
- name: network.loadbalancer.haproxy.stats.visibility
- value: all
- register: config
- check_mode: true
-- name: verify test update configuration string in check mode
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "global"
- - config.name == "network.loadbalancer.haproxy.stats.visibility"
-
-- name: test update configuration string
- cs_configuration:
- name: network.loadbalancer.haproxy.stats.visibility
- value: all
- register: config
-- name: verify test update configuration string
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "all"
- - config.name == "network.loadbalancer.haproxy.stats.visibility"
-
-- name: test update configuration string idempotence
- cs_configuration:
- name: network.loadbalancer.haproxy.stats.visibility
- value: all
- register: config
-- name: verify test update configuration string idempotence
- assert:
- that:
- - config is successful
- - config is not changed
- - config.value == "all"
- - config.name == "network.loadbalancer.haproxy.stats.visibility"
-
-- name: test reset configuration string
- cs_configuration:
- name: network.loadbalancer.haproxy.stats.visibility
- value: global
- register: config
-- name: verify test reset configuration string
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "global"
- - config.name == "network.loadbalancer.haproxy.stats.visibility"
-
-- name: test configuration
- cs_configuration:
- name: vmware.recycle.hung.wokervm
- value: false
- register: config
-- name: verify test configuration
- assert:
- that:
- - config is successful
-
-- name: test update configuration bool in check mode
- cs_configuration:
- name: vmware.recycle.hung.wokervm
- value: true
- register: config
- check_mode: true
-- name: verify test update configuration bool in check mode
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "false"
- - config.name == "vmware.recycle.hung.wokervm"
-
-- name: test update configuration bool
- cs_configuration:
- name: vmware.recycle.hung.wokervm
- value: true
- register: config
-- name: verify test update configuration bool
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "true"
- - config.name == "vmware.recycle.hung.wokervm"
-
-- name: test update configuration bool idempotence
- cs_configuration:
- name: vmware.recycle.hung.wokervm
- value: true
- register: config
-- name: verify test update configuration bool idempotence
- assert:
- that:
- - config is successful
- - config is not changed
- - config.value == "true"
- - config.name == "vmware.recycle.hung.wokervm"
-
-- name: test reset configuration bool
- cs_configuration:
- name: vmware.recycle.hung.wokervm
- value: false
- register: config
-- name: verify test reset configuration bool
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "false"
- - config.name == "vmware.recycle.hung.wokervm"
-
-- name: test configuration
- cs_configuration:
- name: agent.load.threshold
- value: 0.7
- register: config
-- name: verify test configuration
- assert:
- that:
- - config is successful
-
-- name: test update configuration float in check mode
- cs_configuration:
- name: agent.load.threshold
- value: 0.81
- register: config
- check_mode: true
-- name: verify update configuration float in check mode
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "0.7"
- - config.name == "agent.load.threshold"
-
-- name: test update configuration float
- cs_configuration:
- name: agent.load.threshold
- value: 0.81
- register: config
-- name: verify update configuration float
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "0.81"
- - config.name == "agent.load.threshold"
-
-- name: test update configuration float idempotence
- cs_configuration:
- name: agent.load.threshold
- value: 0.81
- register: config
-- name: verify update configuration float idempotence
- assert:
- that:
- - config is successful
- - config is not changed
- - config.value == "0.81"
- - config.name == "agent.load.threshold"
-
-- name: reset configuration float
- cs_configuration:
- name: agent.load.threshold
- value: 0.7
- register: config
-- name: verify reset configuration float
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "0.7"
- - config.name == "agent.load.threshold"
-
-- include: storage.yml
-- include: account.yml
-- include: zone.yml
-- include: cluster.yml
diff --git a/test/integration/targets/cs_configuration/tasks/storage.yml b/test/integration/targets/cs_configuration/tasks/storage.yml
deleted file mode 100644
index e376dcf19f..0000000000
--- a/test/integration/targets/cs_configuration/tasks/storage.yml
+++ /dev/null
@@ -1,76 +0,0 @@
----
-- name: test configuration storage
- cs_configuration:
- name: storage.overprovisioning.factor
- storage: "{{ test_cs_configuration_storage }}"
- value: 2.0
- register: config
-- name: verify test configuration storage
- assert:
- that:
- - config is successful
-
-- name: test update configuration storage in check mode
- cs_configuration:
- name: storage.overprovisioning.factor
- storage: "{{ test_cs_configuration_storage }}"
- value: 3.0
- register: config
- check_mode: true
-- name: verify update configuration storage in check mode
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "2.0"
- - config.name == "storage.overprovisioning.factor"
- - config.scope == "storagepool"
- - config.storage == "{{ test_cs_configuration_storage }}"
-
-- name: test update configuration storage
- cs_configuration:
- name: storage.overprovisioning.factor
- storage: "{{ test_cs_configuration_storage }}"
- value: 3.0
- register: config
-- name: verify update configuration storage
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "3.0"
- - config.name == "storage.overprovisioning.factor"
- - config.scope == "storagepool"
- - config.storage == "{{ test_cs_configuration_storage }}"
-
-- name: test update configuration storage idempotence
- cs_configuration:
- name: storage.overprovisioning.factor
- storage: "{{ test_cs_configuration_storage }}"
- value: 3.0
- register: config
-- name: verify update configuration storage idempotence
- assert:
- that:
- - config is successful
- - config is not changed
- - config.value == "3.0"
- - config.name == "storage.overprovisioning.factor"
- - config.scope == "storagepool"
- - config.storage == "{{ test_cs_configuration_storage }}"
-
-- name: test reset configuration storage
- cs_configuration:
- name: storage.overprovisioning.factor
- storage: "{{ test_cs_configuration_storage }}"
- value: 2.0
- register: config
-- name: verify reset configuration storage
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "2.0"
- - config.name == "storage.overprovisioning.factor"
- - config.scope == "storagepool"
- - config.storage == "{{ test_cs_configuration_storage }}"
diff --git a/test/integration/targets/cs_configuration/tasks/zone.yml b/test/integration/targets/cs_configuration/tasks/zone.yml
deleted file mode 100644
index cd9333fa3c..0000000000
--- a/test/integration/targets/cs_configuration/tasks/zone.yml
+++ /dev/null
@@ -1,59 +0,0 @@
----
-- name: test configuration zone
- cs_configuration:
- name: use.external.dns
- zone: "{{ test_cs_configuration_zone }}"
- value: false
- register: config
-- name: verify test configuration zone
- assert:
- that:
- - config is successful
-
-- name: test update configuration zone
- cs_configuration:
- name: use.external.dns
- zone: "{{ test_cs_configuration_zone }}"
- value: true
- register: config
-- name: verify update configuration zone
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "true"
- - config.name == "use.external.dns"
- - config.scope == "zone"
- - config.zone == "{{ test_cs_configuration_zone }}"
-
-- name: test update configuration zone idempotence
- cs_configuration:
- name: use.external.dns
- zone: "{{ test_cs_configuration_zone }}"
- value: true
- register: config
-- name: verify update configuration zone idempotence
- assert:
- that:
- - config is successful
- - config is not changed
- - config.value == "true"
- - config.name == "use.external.dns"
- - config.scope == "zone"
- - config.zone == "{{ test_cs_configuration_zone }}"
-
-- name: test reset configuration zone
- cs_configuration:
- name: use.external.dns
- zone: "{{ test_cs_configuration_zone }}"
- value: false
- register: config
-- name: verify reset configuration zone
- assert:
- that:
- - config is successful
- - config is changed
- - config.value == "false"
- - config.name == "use.external.dns"
- - config.scope == "zone"
- - config.zone == "{{ test_cs_configuration_zone }}"
diff --git a/test/integration/targets/cs_disk_offering/aliases b/test/integration/targets/cs_disk_offering/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_disk_offering/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_disk_offering/meta/main.yml b/test/integration/targets/cs_disk_offering/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_disk_offering/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_disk_offering/tasks/main.yml b/test/integration/targets/cs_disk_offering/tasks/main.yml
deleted file mode 100644
index fd55788c68..0000000000
--- a/test/integration/targets/cs_disk_offering/tasks/main.yml
+++ /dev/null
@@ -1,143 +0,0 @@
----
-- name: setup disk offering
- cs_disk_offering:
- name: Small
- state: absent
- register: do
-- name: verify setup disk offering
- assert:
- that:
- - do is successful
-
-- name: create disk offering in check mode
- cs_disk_offering:
- name: Small
- disk_size: 10
- storage_tags:
- - eco
- - backup
- storage_type: local
- register: do
- check_mode: true
-- name: verify create disk offering in check mode
- assert:
- that:
- - do is changed
-
-- name: create disk offering
- cs_disk_offering:
- name: Small
- disk_size: 10
- storage_tags:
- - eco
- - backup
- storage_type: local
- register: do
-- name: verify create disk offering
- assert:
- that:
- - do is changed
- - do.name == "Small"
- - do.storage_tags == ['eco', 'backup']
- - do.storage_type == "local"
-
-- name: create disk offering idempotence
- cs_disk_offering:
- name: Small
- disk_size: 10
- storage_tags:
- - eco
- - backup
- storage_type: local
- register: do
-- name: verify create disk offering idempotence
- assert:
- that:
- - do is not changed
- - do.name == "Small"
- - do.storage_tags == ['eco', 'backup']
- - do.storage_type == "local"
-
-- name: update disk offering in check mode
- cs_disk_offering:
- name: Small
- disk_size: 10
- display_text: Small 10GB
- register: do
- check_mode: true
-- name: verify create update offering in check mode
- assert:
- that:
- - do is changed
- - do.name == "Small"
- - do.storage_tags == ['eco', 'backup']
- - do.storage_type == "local"
-
-- name: update disk offering
- cs_disk_offering:
- name: Small
- disk_size: 10
- display_text: Small 10GB
- register: do
-- name: verify update disk offerin
- assert:
- that:
- - do is changed
- - do.name == "Small"
- - do.display_text == "Small 10GB"
- - do.storage_tags == ['eco', 'backup']
- - do.storage_type == "local"
-
-- name: update disk offering idempotence
- cs_disk_offering:
- name: Small
- disk_size: 10
- display_text: Small 10GB
- register: do
-- name: verify update disk offering idempotence
- assert:
- that:
- - do is not changed
- - do.name == "Small"
- - do.display_text == "Small 10GB"
- - do.storage_tags == ['eco', 'backup']
- - do.storage_type == "local"
-
-- name: remove disk offering in check mode
- cs_disk_offering:
- name: Small
- state: absent
- check_mode: true
- register: do
-- name: verify remove disk offering in check mode
- assert:
- that:
- - do is changed
- - do.name == "Small"
- - do.display_text == "Small 10GB"
- - do.storage_tags == ['eco', 'backup']
- - do.storage_type == "local"
-
-- name: remove disk offering
- cs_disk_offering:
- name: Small
- state: absent
- register: do
-- name: verify remove disk offering
- assert:
- that:
- - do is changed
- - do.name == "Small"
- - do.display_text == "Small 10GB"
- - do.storage_tags == ['eco', 'backup']
- - do.storage_type == "local"
-
-- name: remove disk offering idempotence
- cs_disk_offering:
- name: Small
- state: absent
- register: do
-- name: verify remove disk offering idempotence
- assert:
- that:
- - do is not changed
diff --git a/test/integration/targets/cs_domain/aliases b/test/integration/targets/cs_domain/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_domain/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_domain/meta/main.yml b/test/integration/targets/cs_domain/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_domain/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_domain/tasks/main.yml b/test/integration/targets/cs_domain/tasks/main.yml
deleted file mode 100644
index e51ca0d442..0000000000
--- a/test/integration/targets/cs_domain/tasks/main.yml
+++ /dev/null
@@ -1,241 +0,0 @@
----
-- name: setup
- cs_domain:
- path: "{{ cs_resource_prefix }}_domain"
- state: absent
- register: dom
-- name: verify setup
- assert:
- that:
- - dom is successful
-
-- name: test fail if missing name
- action: cs_domain
- register: dom
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - dom is failed
- - 'dom.msg == "missing required arguments: path"'
-
-- name: test fail if ends with /
- cs_domain:
- path: "{{ cs_resource_prefix }}_domain/"
- register: dom
- ignore_errors: true
-- name: verify results of fail if ends with /
- assert:
- that:
- - dom is failed
- - dom.msg == "Path '{{ cs_resource_prefix }}_domain/' must not end with /"
-
-- name: test create a domain in check mode
- cs_domain:
- path: "{{ cs_resource_prefix }}_domain"
- register: dom
- check_mode: true
-- name: verify results of test create a domain in check mode
- assert:
- that:
- - dom is changed
-
-- name: test create a domain
- cs_domain:
- path: "{{ cs_resource_prefix }}_domain"
- register: dom
-- name: verify results of test create a domain
- assert:
- that:
- - dom is changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain"
- - dom.name == "{{ cs_resource_prefix }}_domain"
-
-- name: test create a domain idempotence
- cs_domain:
- path: "{{ cs_resource_prefix }}_domain"
- register: dom
-- name: verify results of test create a domain idempotence
- assert:
- that:
- - dom is not changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain"
- - dom.name == "{{ cs_resource_prefix }}_domain"
-
-- name: test create a domain idempotence2
- cs_domain:
- path: "/{{ cs_resource_prefix }}_domain"
- register: dom
-- name: verify results of test create a domain idempotence2
- assert:
- that:
- - dom is not changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain"
- - dom.name == "{{ cs_resource_prefix }}_domain"
-
-- name: test fail to create a subdomain for inexistent domain
- cs_domain:
- path: ROOT/inexistent/{{ cs_resource_prefix }}_subdomain
- register: dom
- ignore_errors: true
-- name: test fail to create a subdomain for inexistent domain
- assert:
- that:
- - dom is failed
- - dom.msg == "Parent domain path ROOT/inexistent does not exist"
-
-- name: test create a subdomain in check mode
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- register: dom
- check_mode: true
-- name: verify results of test create a domain in check mode
- assert:
- that:
- - dom is changed
-
-- name: test create a subdomain
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- register: dom
-- name: verify results of test create a domain
- assert:
- that:
- - dom is changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain"
- - dom.name == "{{ cs_resource_prefix }}_subdomain"
-
-- name: test create a subdomain idempotence
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- register: dom
-- name: verify results of test create a subdomain idempotence
- assert:
- that:
- - dom is not changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain"
- - dom.name == "{{ cs_resource_prefix }}_subdomain"
-
-- name: test update a subdomain in check mode
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- network_domain: domain.example.com
- register: dom
- check_mode: true
-- name: verify results of test update a subdomain in check mode
- assert:
- that:
- - dom is changed
- - dom.network_domain is undefined
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain"
- - dom.name == "{{ cs_resource_prefix }}_subdomain"
-
-- name: test update a subdomain
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- network_domain: domain.example.com
- register: dom
-- name: verify results of test update a subdomain
- assert:
- that:
- - dom is changed
- - dom.network_domain == "domain.example.com"
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain"
- - dom.name == "{{ cs_resource_prefix }}_subdomain"
-
-- name: test update a subdomain idempotence
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- network_domain: domain.example.com
- register: dom
-- name: verify results of test update a subdomain idempotence
- assert:
- that:
- - dom is not changed
- - dom.network_domain == "domain.example.com"
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain"
- - dom.name == "{{ cs_resource_prefix }}_subdomain"
-
-- name: test delete a subdomain in check mode
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- state: absent
- register: dom
- check_mode: true
-- name: verify results of test delete a subdomain in check mode
- assert:
- that:
- - dom is changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain"
- - dom.name == "{{ cs_resource_prefix }}_subdomain"
-
-- name: test delete a subdomain
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- state: absent
- register: dom
-- name: verify results of test delete a subdomain
- assert:
- that:
- - dom is changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain"
- - dom.name == "{{ cs_resource_prefix }}_subdomain"
-
-- name: test delete a subdomain idempotence
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- state: absent
- register: dom
-- name: verify results of test delete a subdomain idempotence
- assert:
- that:
- - dom is not changed
-
-- name: test create a subdomain 2
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain
- register: dom
-- name: verify results of test create a subdomain 2
- assert:
- that:
- - dom is changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain/{{ cs_resource_prefix }}_subdomain"
- - dom.name == "{{ cs_resource_prefix }}_subdomain"
-
-- name: test delete a domain with clean up in check mode
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain
- state: absent
- clean_up: true
- register: dom
- check_mode: true
-- name: verify results of test delete a domain with clean up in check mode
- assert:
- that:
- - dom is changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain"
- - dom.name == "{{ cs_resource_prefix }}_domain"
-
-- name: test delete a domain with clean up
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain
- state: absent
- clean_up: true
- register: dom
-- name: verify results of test delete a domain with clean up
- assert:
- that:
- - dom is changed
- - dom.path == "ROOT/{{ cs_resource_prefix }}_domain"
- - dom.name == "{{ cs_resource_prefix }}_domain"
-
-- name: test delete a domain with clean up idempotence
- cs_domain:
- path: ROOT/{{ cs_resource_prefix }}_domain
- state: absent
- clean_up: true
- register: dom
-- name: verify results of test delete a domain with clean up idempotence
- assert:
- that:
- - dom is not changed
diff --git a/test/integration/targets/cs_firewall/aliases b/test/integration/targets/cs_firewall/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_firewall/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_firewall/defaults/main.yml b/test/integration/targets/cs_firewall/defaults/main.yml
deleted file mode 100644
index f5999305c9..0000000000
--- a/test/integration/targets/cs_firewall/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-cs_firewall_ip_address: 10.100.212.5
-cs_firewall_network: ansible test
diff --git a/test/integration/targets/cs_firewall/meta/main.yml b/test/integration/targets/cs_firewall/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_firewall/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_firewall/tasks/main.yml b/test/integration/targets/cs_firewall/tasks/main.yml
deleted file mode 100644
index a303a9e8d9..0000000000
--- a/test/integration/targets/cs_firewall/tasks/main.yml
+++ /dev/null
@@ -1,484 +0,0 @@
----
-- name: network setup
- cs_network:
- name: "{{ cs_firewall_network }}"
- network_offering: DefaultIsolatedNetworkOfferingWithSourceNatService
- network_domain: example.com
- zone: "{{ cs_common_zone_adv }}"
- register: net
-- name: verify network setup
- assert:
- that:
- - net is successful
-
-- name: setup instance to get network in implementation state
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-cs-firewall"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- networks:
- - "{{ net.name }}"
- register: instance
- until: instance is success
- retries: 20
- delay: 5
-- name: verify instance setup
- assert:
- that:
- - instance is successful
-
-- name: public ip address setup
- cs_ip_address:
- network: ansible test
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify public ip address setup
- assert:
- that:
- - ip_address is successful
-
-- name: set ip address as fact
- set_fact:
- cs_firewall_ip_address: "{{ ip_address.ip_address }}"
-
-- name: setup 80
- cs_firewall:
- port: 80
- ip_address: "{{ cs_firewall_ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
-- name: verify setup
- assert:
- that:
- - fw is successful
-
-- name: setup 5300
- cs_firewall:
- ip_address: "{{ cs_firewall_ip_address }}"
- protocol: udp
- start_port: 5300
- end_port: 5333
- cidrs:
- - 1.2.3.0/24
- - 4.5.6.0/24
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
-- name: verify setup
- assert:
- that:
- - fw is successful
-
-- name: setup all
- cs_firewall:
- network: "{{ cs_firewall_network }}"
- protocol: all
- type: egress
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
-- name: verify setup
- assert:
- that:
- - fw is successful
-
-- name: test fail if missing params
- action: cs_firewall
- register: fw
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - fw is failed
- - "fw.msg == 'one of the following is required: ip_address, network'"
-
-- name: test fail if missing params
- cs_firewall:
- ip_address: "{{ cs_firewall_ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- register: fw
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - fw is failed
- - "fw.msg == \"missing required argument for protocol 'tcp': start_port or end_port\""
-
-- name: test fail if missing params network egress
- cs_firewall:
- type: egress
- zone: "{{ cs_common_zone_adv }}"
- register: fw
- ignore_errors: true
-- name: verify results of fail if missing params ip_address
- assert:
- that:
- - fw is failed
- - "fw.msg == 'one of the following is required: ip_address, network'"
-
-- name: test present firewall rule ingress 80 in check mode
- cs_firewall:
- port: 80
- ip_address: "{{ cs_firewall_ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- register: fw
- check_mode: true
-- name: verify results of present firewall rule ingress 80 in check mode
- assert:
- that:
- - fw is successful
- - fw is changed
-
-- name: test present firewall rule ingress 80
- cs_firewall:
- port: 80
- ip_address: "{{ cs_firewall_ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- register: fw
-- name: verify results of present firewall rule ingress 80
- assert:
- that:
- - fw is successful
- - fw is changed
- - fw.cidr == "0.0.0.0/0"
- - fw.cidrs == [ '0.0.0.0/0' ]
- - fw.ip_address == "{{ cs_firewall_ip_address }}"
- - fw.protocol == "tcp"
- - fw.start_port == 80
- - fw.end_port == 80
- - fw.type == "ingress"
-
-- name: test present firewall rule ingress 80 idempotence
- cs_firewall:
- port: 80
- ip_address: "{{ cs_firewall_ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- register: fw
-- name: verify results of present firewall rule ingress 80 idempotence
- assert:
- that:
- - fw is successful
- - fw is not changed
- - fw.cidr == "0.0.0.0/0"
- - fw.cidrs == [ '0.0.0.0/0' ]
- - fw.ip_address == "{{ cs_firewall_ip_address }}"
- - fw.protocol == "tcp"
- - fw.start_port == 80
- - fw.end_port == 80
- - fw.type == "ingress"
-
-- name: test present firewall rule ingress 5300 in check mode
- cs_firewall:
- ip_address: "{{ cs_firewall_ip_address }}"
- protocol: udp
- start_port: 5300
- end_port: 5333
- cidrs:
- - 1.2.3.0/24
- - 4.5.6.0/24
- zone: "{{ cs_common_zone_adv }}"
- register: fw
- check_mode: true
-- name: verify results of present firewall rule ingress 5300 in check mode
- assert:
- that:
- - fw is successful
- - fw is changed
-
-- name: test present firewall rule ingress 5300
- cs_firewall:
- ip_address: "{{ cs_firewall_ip_address }}"
- protocol: udp
- start_port: 5300
- end_port: 5333
- cidrs:
- - 1.2.3.0/24
- - 4.5.6.0/24
- zone: "{{ cs_common_zone_adv }}"
- register: fw
-- name: verify results of present firewall rule ingress 5300
- assert:
- that:
- - fw is successful
- - fw is changed
- - fw.cidr == "1.2.3.0/24,4.5.6.0/24"
- - fw.cidrs == [ '1.2.3.0/24', '4.5.6.0/24' ]
- - fw.ip_address == "{{ cs_firewall_ip_address }}"
- - fw.protocol == "udp"
- - fw.start_port == 5300
- - fw.end_port == 5333
- - fw.type == "ingress"
-
-- name: test present firewall rule ingress 5300 idempotence
- cs_firewall:
- ip_address: "{{ cs_firewall_ip_address }}"
- protocol: udp
- start_port: 5300
- end_port: 5333
- cidrs:
- - 1.2.3.0/24
- - 4.5.6.0/24
- zone: "{{ cs_common_zone_adv }}"
- register: fw
-- name: verify results of present firewall rule ingress 5300 idempotence
- assert:
- that:
- - fw is successful
- - fw is not changed
- - fw.cidr == "1.2.3.0/24,4.5.6.0/24"
- - fw.cidrs == [ '1.2.3.0/24', '4.5.6.0/24' ]
- - fw.ip_address == "{{ cs_firewall_ip_address }}"
- - fw.protocol == "udp"
- - fw.start_port == 5300
- - fw.end_port == 5333
- - fw.type == "ingress"
-
-- name: test present firewall rule egress all in check mode
- cs_firewall:
- network: "{{ cs_firewall_network }}"
- protocol: all
- type: egress
- zone: "{{ cs_common_zone_adv }}"
- register: fw
- check_mode: true
-- name: verify results of present firewall rule egress all in check mode
- assert:
- that:
- - fw is successful
- - fw is changed
-
-- name: test present firewall rule egress all
- cs_firewall:
- network: "{{ cs_firewall_network }}"
- protocol: all
- type: egress
- zone: "{{ cs_common_zone_adv }}"
- register: fw
-- name: verify results of present firewall rule egress all
- assert:
- that:
- - fw is successful
- - fw is changed
- - fw.cidr == "0.0.0.0/0" or fw.cidr == "10.1.1.0/24"
- - fw.cidrs == [ '0.0.0.0/0' ] or fw.cidrs == [ '10.1.1.0/24' ]
- - fw.network == "{{ cs_firewall_network }}"
- - fw.protocol == "all"
- - fw.type == "egress"
-
-- name: test present firewall rule egress all idempotence
- cs_firewall:
- network: "{{ cs_firewall_network }}"
- protocol: all
- type: egress
- zone: "{{ cs_common_zone_adv }}"
- register: fw
-- name: verify results of present firewall rule egress all idempotence
- assert:
- that:
- - fw is successful
- - fw is not changed
- - fw.cidr == "0.0.0.0/0" or fw.cidr == "10.1.1.0/24"
- - fw.cidrs == [ '0.0.0.0/0' ] or fw.cidrs == [ '10.1.1.0/24' ]
- - fw.network == "{{ cs_firewall_network }}"
- - fw.protocol == "all"
- - fw.type == "egress"
-
-- name: test absent firewall rule ingress 80 in check mode
- cs_firewall:
- port: 80
- ip_address: "{{ cs_firewall_ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
- check_mode: true
-- name: verify results of absent firewall rule ingress 80 in check mode
- assert:
- that:
- - fw is successful
- - fw is changed
- - fw.cidr == "0.0.0.0/0"
- - fw.cidrs == [ '0.0.0.0/0' ]
- - fw.ip_address == "{{ cs_firewall_ip_address }}"
- - fw.protocol == "tcp"
- - fw.start_port == 80
- - fw.end_port == 80
- - fw.type == "ingress"
-
-- name: test absent firewall rule ingress 80
- cs_firewall:
- port: 80
- ip_address: "{{ cs_firewall_ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
-- name: verify results of absent firewall rule ingress 80
- assert:
- that:
- - fw is successful
- - fw is changed
- - fw.cidr == "0.0.0.0/0"
- - fw.cidrs == [ '0.0.0.0/0' ]
- - fw.ip_address == "{{ cs_firewall_ip_address }}"
- - fw.protocol == "tcp"
- - fw.start_port == 80
- - fw.end_port == 80
- - fw.type == "ingress"
-
-- name: test absent firewall rule ingress 80 idempotence
- cs_firewall:
- port: 80
- ip_address: "{{ cs_firewall_ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
-- name: verify results of absent firewall rule ingress 80 idempotence
- assert:
- that:
- - fw is successful
- - fw is not changed
-
-- name: test absent firewall rule ingress 5300 in check mode
- cs_firewall:
- ip_address: "{{ cs_firewall_ip_address }}"
- protocol: udp
- start_port: 5300
- end_port: 5333
- cidrs:
- - 1.2.3.0/24
- - 4.5.6.0/24
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
- check_mode: true
-- name: verify results of absent firewall rule ingress 5300 in check mode
- assert:
- that:
- - fw is successful
- - fw is changed
- - fw.cidr == "1.2.3.0/24,4.5.6.0/24"
- - fw.cidrs == [ '1.2.3.0/24', '4.5.6.0/24' ]
- - fw.ip_address == "{{ cs_firewall_ip_address }}"
- - fw.protocol == "udp"
- - fw.start_port == 5300
- - fw.end_port == 5333
- - fw.type == "ingress"
-
-- name: test absent firewall rule ingress 5300
- cs_firewall:
- ip_address: "{{ cs_firewall_ip_address }}"
- protocol: udp
- start_port: 5300
- end_port: 5333
- cidrs:
- - 1.2.3.0/24
- - 4.5.6.0/24
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
-- name: verify results of absent firewall rule ingress 5300
- assert:
- that:
- - fw is successful
- - fw is changed
- - fw.cidr == "1.2.3.0/24,4.5.6.0/24"
- - fw.cidrs == [ '1.2.3.0/24', '4.5.6.0/24' ]
- - fw.ip_address == "{{ cs_firewall_ip_address }}"
- - fw.protocol == "udp"
- - fw.start_port == 5300
- - fw.end_port == 5333
- - fw.type == "ingress"
-
-- name: test absent firewall rule ingress 5300 idempotence
- cs_firewall:
- ip_address: "{{ cs_firewall_ip_address }}"
- protocol: udp
- start_port: 5300
- end_port: 5333
- cidrs:
- - 1.2.3.0/24
- - 4.5.6.0/24
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
-- name: verify results of absent firewall rule ingress 5300 idempotence
- assert:
- that:
- - fw is successful
- - fw is not changed
-
-- name: test absent firewall rule egress all in check mode
- cs_firewall:
- network: "{{ cs_firewall_network }}"
- protocol: all
- type: egress
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: fw
- check_mode: true
-- name: verify results of absent firewall rule egress all in check mode
- assert:
- that:
- - fw is successful
- - fw is changed
- - fw.cidr == "0.0.0.0/0" or fw.cidr == "10.1.1.0/24"
- - fw.cidrs == [ '0.0.0.0/0' ] or fw.cidrs == [ '10.1.1.0/24' ]
- - fw.network == "{{ cs_firewall_network }}"
- - fw.protocol == "all"
- - fw.type == "egress"
-
-- name: test absent firewall rule egress all
- cs_firewall:
- network: "{{ cs_firewall_network }}"
- protocol: all
- type: egress
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: fw
-- name: verify results of absent firewall rule egress all
- assert:
- that:
- - fw is successful
- - fw is changed
- - fw.cidr == "0.0.0.0/0" or fw.cidr == "10.1.1.0/24"
- - fw.cidrs == [ '0.0.0.0/0' ] or fw.cidrs == [ '10.1.1.0/24' ]
- - fw.network == "{{ cs_firewall_network }}"
- - fw.protocol == "all"
- - fw.type == "egress"
-
-- name: test absent firewall rule egress all idempotence
- cs_firewall:
- network: "{{ cs_firewall_network }}"
- protocol: all
- type: egress
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: fw
-- name: verify results of absent firewall rule egress all idempotence
- assert:
- that:
- - fw is successful
- - fw is not changed
-
-- name: cleanup instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-cs-firewall"
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
- register: instance
-- name: verify instance cleanup
- assert:
- that:
- - instance is successful
-
-- name: network cleanup
- cs_network:
- name: "{{ cs_firewall_network }}"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: net
-- name: verify network cleanup
- assert:
- that:
- - net is successful
diff --git a/test/integration/targets/cs_host/aliases b/test/integration/targets/cs_host/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_host/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_host/meta/main.yml b/test/integration/targets/cs_host/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_host/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_host/tasks/main.yml b/test/integration/targets/cs_host/tasks/main.yml
deleted file mode 100644
index f7855889b0..0000000000
--- a/test/integration/targets/cs_host/tasks/main.yml
+++ /dev/null
@@ -1,419 +0,0 @@
----
-- name: test fail missing params
- cs_host:
- register: host
- ignore_errors: true
-- name: verify test fail missing url if host is not existent
- assert:
- that:
- - host is failed
- - 'host.msg == "missing required arguments: name"'
-
-- name: test fail missing params if host is not existent
- cs_host:
- name: sim
- register: host
- ignore_errors: true
-- name: verify test fail missing params if host is not existent
- assert:
- that:
- - host is failed
- - 'host.msg == "missing required arguments: password, username, hypervisor, pod"'
-
-- name: test create a host in check mode
- cs_host:
- name: sim
- url: "http://sim/c0-basic/h2"
- cluster: C0-basic
- pod: POD0-basic
- username: root
- password: password
- hypervisor: Simulator
- allocation_state: enabled
- host_tags:
- - perf
- - gpu
- register: host
- check_mode: true
-- name: verify test create a host in check mode
- assert:
- that:
- - host is changed
-
-- name: test create a host
- cs_host:
- name: sim
- url: "http://sim/c0-basic/h2"
- cluster: C0-basic
- pod: POD0-basic
- username: root
- password: password
- hypervisor: Simulator
- allocation_state: enabled
- host_tags:
- - perf
- - gpu
- register: host
-- name: verify test create a host
- assert:
- that:
- - host is changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - "host.name.startswith('SimulatedAgent.')"
- - host.host_tags == ['perf', 'gpu']
-
-# This is special in simulator mode, we can not predict the full hostname.
-# That is why we gather the infos from the returns and use a fact.
-- name: assume the sim would resolve to the IP address
- set_fact:
- host_hostname: "{{ host.name }}"
- host_ip_address: "{{ host.ip_address }}"
-
-- name: test create a host idempotence
- cs_host:
- name: "{{ host_hostname }}"
- url: "http://sim/c0-basic/h2"
- cluster: C0-basic
- pod: POD0-basic
- username: admin
- password: password
- hypervisor: Simulator
- allocation_state: enabled
- host_tags:
- - perf
- - gpu
- register: host
-- name: verify test create a host idempotence
- assert:
- that:
- - host is not changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu']
-
-- name: test update host in check mode
- cs_host:
- name: "{{ host_hostname }}"
- url: "http://sim/c0-basic/h2"
- cluster: C0-basic
- pod: POD0-basic
- username: admin
- password: password
- hypervisor: Simulator
- allocation_state: enabled
- host_tags:
- - perf
- - gpu
- - x2
- register: host
- check_mode: true
-- name: verify test update a host in check mode
- assert:
- that:
- - host is changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu']
-
-- name: test update host
- cs_host:
- name: "{{ host_hostname }}"
- url: "http://sim/c0-basic/h2"
- cluster: C0-basic
- pod: POD0-basic
- username: admin
- password: password
- hypervisor: Simulator
- allocation_state: enabled
- host_tags:
- - perf
- - gpu
- - x2
- register: host
-- name: verify test update a host in check mode
- assert:
- that:
- - host is changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-- name: test update host idempotence
- cs_host:
- name: "{{ host_hostname }}"
- url: "http://sim/c0-basic/h2"
- cluster: C0-basic
- pod: POD0-basic
- username: admin
- password: password
- hypervisor: Simulator
- allocation_state: enabled
- host_tags:
- - perf
- - gpu
- - x2
- register: host
-- name: verify test update a host idempotence
- assert:
- that:
- - host is not changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-# FIXME: Removing by empty list seems to be an issue in the used lib cs underneath, disabled
-- name: test update host remove host_tags
- cs_host:
- name: "{{ host_hostname }}"
- url: "http://sim/c0-basic/h2"
- cluster: C0-basic
- pod: POD0-basic
- username: admin
- password: password
- hypervisor: Simulator
- allocation_state: enabled
- host_tags: []
- register: host
- when: false
-- name: verify test update host remove host_tags
- assert:
- that:
- - host is changed
- - host.host_tags|length == 0
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- when: false
-
-# FIXME: Removing by empty list seems to be an issue in the used lib cs underneath, disabled
-- name: test update host remove host_tags idempotence
- cs_host:
- name: "{{ host_hostname }}"
- url: "http://sim/c0-basic/h2"
- cluster: C0-basic
- pod: POD0-basic
- username: admin
- password: password
- hypervisor: Simulator
- allocation_state: enabled
- host_tags: []
- register: host
- when: false
-- name: verify test update host remove host_tags idempotence
- assert:
- that:
- - host is not changed
- - len(host.host_tags) == 0
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- when: false
-
-
-- name: test put host in maintenance in check mode
- cs_host:
- name: "{{ host_hostname }}"
- cluster: C0-basic
- pod: POD0-basic
- allocation_state: maintenance
- check_mode: true
- register: host
-- name: verify test put host in maintenance in check mode
- assert:
- that:
- - host is changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-- name: test put host in maintenance
- cs_host:
- name: "{{ host_hostname }}"
- cluster: C0-basic
- pod: POD0-basic
- allocation_state: maintenance
- register: host
-- name: verify test put host in maintenance
- assert:
- that:
- - host is changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'maintenance'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-- name: test put host in maintenance idempotence
- cs_host:
- name: "{{ host_hostname }}"
- cluster: C0-basic
- pod: POD0-basic
- allocation_state: maintenance
- register: host
-- name: verify test put host in maintenance idempotence
- assert:
- that:
- - host is not changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'maintenance'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-- name: test put host out of maintenance in check mode
- cs_host:
- name: "{{ host_hostname }}"
- cluster: C0-basic
- pod: POD0-basic
- allocation_state: enabled
- check_mode: true
- register: host
-- name: verify test put host out of maintenance in check mode
- assert:
- that:
- - host is changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'maintenance'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-- name: test put host out of maintenance
- cs_host:
- name: "{{ host_hostname }}"
- cluster: C0-basic
- pod: POD0-basic
- allocation_state: enabled
- register: host
-- name: verify test put host out of maintenance
- assert:
- that:
- - host is changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-- name: test put host out of maintenance idempotence
- cs_host:
- name: "{{ host_hostname }}"
- cluster: C0-basic
- pod: POD0-basic
- allocation_state: enabled
- register: host
-- name: verify test put host out of maintenance idempotence
- assert:
- that:
- - host is not changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-- name: test remove host in check mode
- cs_host:
- name: "{{ host_hostname }}"
- cluster: C0-basic
- pod: POD0-basic
- state: absent
- check_mode: true
- register: host
-- name: verify test remove a host in check mode
- assert:
- that:
- - host is changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-- name: test remove host
- cs_host:
- name: "{{ host_hostname }}"
- cluster: C0-basic
- pod: POD0-basic
- state: absent
- register: host
-- name: verify test remove a host
- assert:
- that:
- - host is changed
- - host.cluster == 'C0-basic'
- - host.pod == 'POD0-basic'
- - host.hypervisor == 'Simulator'
- - host.allocation_state == 'enabled'
- - host.zone == 'Sandbox-simulator-basic'
- - host.state == 'Up'
- - host.name == '{{ host_hostname }}'
- - host.host_tags == ['perf', 'gpu', 'x2']
-
-- name: test remove host idempotence
- cs_host:
- name: "{{ host_hostname }}"
- cluster: C0-basic
- pod: POD0-basic
- state: absent
- register: host
-- name: verify test remove a host idempotenc
- assert:
- that:
- - host is not changed
diff --git a/test/integration/targets/cs_image_store/aliases b/test/integration/targets/cs_image_store/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_image_store/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_image_store/meta/main.yml b/test/integration/targets/cs_image_store/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_image_store/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_image_store/tasks/main.yml b/test/integration/targets/cs_image_store/tasks/main.yml
deleted file mode 100644
index 8d1eaa0706..0000000000
--- a/test/integration/targets/cs_image_store/tasks/main.yml
+++ /dev/null
@@ -1,166 +0,0 @@
----
-- name: setup image store is absent
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sp
-- name: verify setup image store is absent
- assert:
- that:
- - sp is successful
-
-- name: test fail if missing params
- cs_image_store:
- register: ss
- ignore_errors: true
-- name: verify test fail if missing params
- assert:
- that:
- - ss is failed
- - "'name' in ss.msg"
- - "'zone' in ss.msg"
- - "'missing required arguments: ' in ss.msg"
-
-- name: setup image store with wrong parameters
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: present
- ignore_errors: true
- register: ss
-- name: verify setup image store with wrong parameters
- assert:
- that:
- - ss is failed
- - "ss.msg == 'state is present but all of the following are missing: url, provider'"
-
-- name: setup image store in check mode
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- url: "nfs://nfs-mount.domain/share/images/"
- provider: "NFS"
- state: present
- check_mode: true
- register: ss
-- name: verify setup image store in check mode
- assert:
- that:
- - ss is successful
- - ss is changed
-
-- name: setup image store
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- url: "nfs://nfs-mount.domain/share/images/"
- provider: "NFS"
- state: present
- register: ss
-- name: verify setup image store
- assert:
- that:
- - ss is successful
- - ss is changed
- - "ss.url == 'nfs://nfs-mount.domain/share/images/'"
- - "ss.provider_name == 'NFS'"
- - "ss.zone == cs_common_zone_adv"
- - "ss.protocol == 'nfs'"
-
-- name: setup image store idempotence
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- url: "nfs://nfs-mount.domain/share/images/"
- provider: "NFS"
- state: present
- register: ss
-- name: verify setup image store idempotence
- assert:
- that:
- - ss is successful
- - ss is not changed
- - "ss.url == 'nfs://nfs-mount.domain/share/images/'"
- - "ss.provider_name == 'NFS'"
- - "ss.zone == cs_common_zone_adv"
- - "ss.protocol == 'nfs'"
- - "ss.name == 'storage_pool_adv'"
-
-- name: image store not recreated
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- url: "nfs://nfs-mount.domain/share2/images/"
- provider: "NFS"
- state: present
- register: ss
-- name: verify image store not recreated
- assert:
- that:
- - ss is successful
- - ss is not changed
- - "ss.url == 'nfs://nfs-mount.domain/share/images/'"
- - "ss.name == 'storage_pool_adv'"
- - "ss.zone == cs_common_zone_adv"
-
-- name: recreate image store
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- url: "nfs://nfs-mount.domain/share2/images/"
- provider: "NFS"
- force_recreate: yes
- state: present
- register: ss
-- name: verify setup image store idempotence
- assert:
- that:
- - ss is successful
- - ss is changed
- - "ss.url == 'nfs://nfs-mount.domain/share2/images/'"
- - "ss.name == 'storage_pool_adv'"
- - "ss.zone == cs_common_zone_adv"
-
-- name: delete the image store in check_mode
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: ss
- check_mode: yes
-- name: verify results for delete the image store in check_mode
- assert:
- that:
- - ss is successful
- - ss is changed
- - "ss.name == 'storage_pool_adv'"
- - "ss.zone == cs_common_zone_adv"
-
-- name: delete the image store
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: ss
-- name: verify results for delete the image store
- assert:
- that:
- - ss is successful
- - ss is changed
- - "ss.name == 'storage_pool_adv'"
- - "ss.zone == cs_common_zone_adv"
-
-- name: delete the image store idempotence
- cs_image_store:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: ss
-- name: verify delete the image store idempotence
- assert:
- that:
- - ss is successful
- - ss is not changed
- - ss.name is undefined
- - "ss.zone == cs_common_zone_adv" \ No newline at end of file
diff --git a/test/integration/targets/cs_instance/aliases b/test/integration/targets/cs_instance/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_instance/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_instance/defaults/main.yml b/test/integration/targets/cs_instance/defaults/main.yml
deleted file mode 100644
index 4db5c7c9e3..0000000000
--- a/test/integration/targets/cs_instance/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-instance_number: 1
-test_cs_instance_template: "{{ cs_common_template }}"
-test_cs_instance_offering_1: Small Instance
-test_cs_instance_offering_2: Medium Instance
diff --git a/test/integration/targets/cs_instance/meta/main.yml b/test/integration/targets/cs_instance/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_instance/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_instance/tasks/absent.yml b/test/integration/targets/cs_instance/tasks/absent.yml
deleted file mode 100644
index 0ecb134219..0000000000
--- a/test/integration/targets/cs_instance/tasks/absent.yml
+++ /dev/null
@@ -1,115 +0,0 @@
----
-- name: test destroy instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: absent
- register: instance
- check_mode: true
-- name: verify destroy instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state != "Destroyed"
-
-- name: test destroy instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: absent
- register: instance
-- name: verify destroy instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Destroyed"
-
-- name: test destroy instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: absent
- register: instance
-- name: verify destroy instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
-
-- name: test recover to stopped state and update a deleted instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- state: stopped
- register: instance
- check_mode: true
-- name: verify test recover to stopped state and update a deleted instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
-
-- name: test recover to stopped state and update a deleted instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- state: stopped
- register: instance
-- name: verify test recover to stopped state and update a deleted instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Stopped"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test recover to stopped state and update a deleted instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- state: stopped
- register: instance
-- name: verify test recover to stopped state and update a deleted instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.state == "Stopped"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test expunge instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: expunged
- register: instance
- check_mode: true
-- name: verify test expunge instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Stopped"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test expunge instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: expunged
- register: instance
-- name: verify test expunge instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Stopped"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test expunge instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: expunged
- register: instance
-- name: verify test expunge instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
diff --git a/test/integration/targets/cs_instance/tasks/absent_display_name.yml b/test/integration/targets/cs_instance/tasks/absent_display_name.yml
deleted file mode 100644
index 561897d8fe..0000000000
--- a/test/integration/targets/cs_instance/tasks/absent_display_name.yml
+++ /dev/null
@@ -1,43 +0,0 @@
----
-- name: test destroy instance with display_name
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: absent
- register: instance
-- name: verify destroy instance with display_name
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Destroyed"
-
-- name: test destroy instance with display_name idempotence
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: absent
- register: instance
-- name: verify destroy instance with display_name idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
-
-- name: test recover to stopped state and update a deleted instance with display_name
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- state: stopped
- register: instance
-- name: verify test recover to stopped state and update a deleted instance with display_name
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Stopped"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-# force expunge, only works with admin permissions
-- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: expunged
- failed_when: false
diff --git a/test/integration/targets/cs_instance/tasks/cleanup.yml b/test/integration/targets/cs_instance/tasks/cleanup.yml
deleted file mode 100644
index c1be72178f..0000000000
--- a/test/integration/targets/cs_instance/tasks/cleanup.yml
+++ /dev/null
@@ -1,30 +0,0 @@
----
-- name: cleanup ssh key
- cs_sshkeypair: name={{ cs_resource_prefix }}-sshkey state=absent
- register: sshkey
-- name: verify cleanup ssh key
- assert:
- that:
- - sshkey is successful
-
-- name: cleanup affinity group
- cs_affinitygroup: name={{ cs_resource_prefix }}-ag state=absent
- register: ag
- until: ag is successful
- retries: 20
- delay: 5
-- name: verify cleanup affinity group
- assert:
- that:
- - ag is successful
-
-- name: cleanup security group ...take a while unless instance is expunged
- cs_securitygroup: name={{ cs_resource_prefix }}-sg state=absent
- register: sg
- until: sg is successful
- retries: 100
- delay: 10
-- name: verify cleanup security group
- assert:
- that:
- - sg is successful
diff --git a/test/integration/targets/cs_instance/tasks/host.yml b/test/integration/targets/cs_instance/tasks/host.yml
deleted file mode 100644
index 051448f264..0000000000
--- a/test/integration/targets/cs_instance/tasks/host.yml
+++ /dev/null
@@ -1,135 +0,0 @@
----
-- name: setup ensure running instance to get host infos
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- state: started
- register: running_instance
-
-- name: setup ensure stopped instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: stopped
-
-- name: setup zone facts
- cs_zone_info:
- name: "{{ cs_common_zone_basic }}"
- register: zone_info
-
-- name: setup find the host name
- shell: cs listHosts type=routing zoneid="{{ zone_info.zones[0].id }}"
- args:
- chdir: "{{ playbook_dir }}"
- register: host
-
-- name: host convert from json
- set_fact:
- host_json: "{{ host.stdout | from_json }}"
-
-- name: select a host on which the instance was not running on
- set_fact:
- host: "{{ host_json | json_query('host[?name!=`' + running_instance.host + '`] | [0]') }}"
-
-- debug:
- msg: "from current host {{ running_instance.host }} to new host {{ host.name }}"
-
-- name: test starting instance on new host in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- host: "{{ host.name }}"
- state: started
- register: instance
- check_mode: true
-- name: verify test starting instance on new host in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.host is not defined
- - instance.state == "Stopped"
-
-- name: test starting instance on new host
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- host: "{{ host.name }}"
- state: started
- register: instance
-- name: verify test starting instance on new host
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.host == "{{ host.name }}"
- - instance.state == "Running"
-
-- name: test starting instance on new host idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- host: "{{ host.name }}"
- state: started
- register: instance
-- name: verify test starting instance on new host idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.host == "{{ host.name }}"
- - instance.state == "Running"
-
-- name: select a host on which the instance is not running on
- set_fact:
- host: "{{ host_json | json_query('host[?name!=`' + instance.host + '`] | [0]') }}"
-
-- debug:
- msg: "from current host {{ instance.host }} to new host {{ host.name }}"
-
-- name: test force update running instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- host: "{{ host.name }}"
- force: true
- register: instance
- check_mode: true
-- name: verify force update running instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.host != "{{ host.name }}"
- - instance.state == "Running"
-
-- name: test force update running instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- host: "{{ host.name }}"
- force: true
- register: instance
-- name: verify force update running instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.host == "{{ host.name }}"
- - instance.state == "Running"
-
-- name: test force update running instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- host: "{{ host.name }}"
- force: true
- register: instance
-- name: verify force update running instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.host == "{{ host.name }}"
- - instance.state == "Running"
diff --git a/test/integration/targets/cs_instance/tasks/main.yml b/test/integration/targets/cs_instance/tasks/main.yml
deleted file mode 100644
index 43e22127ba..0000000000
--- a/test/integration/targets/cs_instance/tasks/main.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- include_tasks: setup.yml
-
-- include_tasks: present.yml
-- include_tasks: tags.yml
-- include_tasks: absent.yml
-
-- include_tasks: present_display_name.yml
-- include_tasks: absent_display_name.yml
-
-# TODO: These tests randomly fail in all kinds of unexpected states.
-# This needs to be verified by the cloudstack community.
-# - include_tasks: host.yml
-
-- include_tasks: sshkeys.yml
-
-- include_tasks: project.yml
-
-- include_tasks: cleanup.yml
diff --git a/test/integration/targets/cs_instance/tasks/present.yml b/test/integration/targets/cs_instance/tasks/present.yml
deleted file mode 100644
index 81b770331d..0000000000
--- a/test/integration/targets/cs_instance/tasks/present.yml
+++ /dev/null
@@ -1,323 +0,0 @@
----
-- name: setup instance to be absent
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: expunged
- register: instance
-- name: verify instance to be absent
- assert:
- that:
- - instance is successful
-
-- name: test create instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- affinity_group: "{{ cs_resource_prefix }}-ag"
- security_group: "{{ cs_resource_prefix }}-sg"
- ssh_key: "{{ cs_resource_prefix }}-sshkey"
- user_data: |
- #cloud-config
- package_upgrade: true
- packages:
- - tmux
- tags: []
- register: instance
- check_mode: true
-- name: verify create instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
-
-- name: test create instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- affinity_group: "{{ cs_resource_prefix }}-ag"
- security_group: "{{ cs_resource_prefix }}-sg"
- ssh_key: "{{ cs_resource_prefix }}-sshkey"
- user_data: |
- #cloud-config
- package_upgrade: true
- packages:
- - tmux
- tags: []
- register: instance
-- name: verify create instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey"
- - not instance.tags
-
-- name: test create instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- affinity_group: "{{ cs_resource_prefix }}-ag"
- security_group: "{{ cs_resource_prefix }}-sg"
- ssh_key: "{{ cs_resource_prefix }}-sshkey"
- user_data: |
- #cloud-config
- package_upgrade: true
- packages:
- - tmux
- tags: []
- register: instance
-- name: verify create instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey"
- - not instance.tags
-
-- name: gather host infos of running instance
- cs_instance_info:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
-
-- name: test running instance not updated in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
- check_mode: true
-- name: verify running instance not updated in check mode
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test running instance not updated
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
-- name: verify running instance not updated
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test stopping instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: stopped
- register: instance
- check_mode: true
-- name: verify stopping instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test stopping instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: stopped
- register: instance
-- name: verify stopping instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Stopped"
-
-- name: test stopping instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: stopped
- register: instance
-- name: verify stopping instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.state == "Stopped"
-
-- name: test updating stopped instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- display_name: "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
- check_mode: true
-- name: verify updating stopped instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Stopped"
-
-- name: test updating stopped instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- display_name: "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
-- name: verify updating stopped instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Stopped"
-
-- name: test updating stopped instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- display_name: "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
-- name: verify updating stopped instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Stopped"
-
-- name: test starting instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: started
- register: instance
-- name: verify starting instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Running"
-
-- name: test starting instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: started
- register: instance
-- name: verify starting instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Running"
-
-- name: test force update running instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- force: true
- register: instance
- check_mode: true
-- name: verify force update running instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Running"
-
-- name: test force update running instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- force: true
- register: instance
-- name: verify force update running instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test force update running instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- force: true
- register: instance
-- name: verify force update running instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test restore instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- state: restored
- register: instance
- check_mode: true
-- name: verify restore instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test restore instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- state: restored
- register: instance
-- name: verify restore instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
diff --git a/test/integration/targets/cs_instance/tasks/present_display_name.yml b/test/integration/targets/cs_instance/tasks/present_display_name.yml
deleted file mode 100644
index 41cd097fba..0000000000
--- a/test/integration/targets/cs_instance/tasks/present_display_name.yml
+++ /dev/null
@@ -1,178 +0,0 @@
----
-- name: setup instance with display_name to be absent
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: expunged
- register: instance
-- name: verify instance with display_name to be absent
- assert:
- that:
- - instance is successful
-
-- name: test create instance with display_name
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- affinity_group: "{{ cs_resource_prefix }}-ag"
- security_group: "{{ cs_resource_prefix }}-sg"
- ssh_key: "{{ cs_resource_prefix }}-sshkey"
- tags: []
- register: instance
-- name: verify create instance with display_name
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey"
- - not instance.tags
-
-- name: test create instance with display_name idempotence
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- affinity_group: "{{ cs_resource_prefix }}-ag"
- security_group: "{{ cs_resource_prefix }}-sg"
- ssh_key: "{{ cs_resource_prefix }}-sshkey"
- tags: []
- register: instance
-- name: verify create instance with display_name idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey"
- - not instance.tags
-
-- name: test running instance with display_name not updated
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
-- name: verify running instance with display_name not updated
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test stopping instance with display_name
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: stopped
- register: instance
-- name: verify stopping instance with display_name
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Stopped"
-
-- name: test stopping instance with display_name idempotence
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: stopped
- register: instance
-- name: verify stopping instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.state == "Stopped"
-
-- name: test updating stopped instance with display_name
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
-- name: verify updating stopped instance with display_name
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Stopped"
-
-- name: test starting instance with display_name
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: started
- register: instance
-- name: verify starting instance with display_name
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Running"
-
-- name: test starting instance with display_name idempotence
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- state: started
- register: instance
-- name: verify starting instance with display_name idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Running"
-
-- name: test force update running instance with display_name
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- force: true
- register: instance
-- name: verify force update running instance with display_name
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test force update running instance with display_name idempotence
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- force: true
- register: instance
-- name: verify force update running instance with display_name idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test restore instance with display_name
- cs_instance:
- display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- state: restored
- register: instance
-- name: verify restore instance with display_name
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
diff --git a/test/integration/targets/cs_instance/tasks/project.yml b/test/integration/targets/cs_instance/tasks/project.yml
deleted file mode 100644
index 9b4c7b07d1..0000000000
--- a/test/integration/targets/cs_instance/tasks/project.yml
+++ /dev/null
@@ -1,560 +0,0 @@
----
-- name: setup create project
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- register: prj
-- name: verify test create project
- assert:
- that:
- - prj is successful
-
-- name: setup instance in project to be absent
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: instance
-- name: verify instance in project to be absent
- assert:
- that:
- - instance is successful
-
-- name: setup ssh key in project
- cs_sshkeypair:
- name: "{{ cs_resource_prefix }}-sshkey-prj"
- project: "{{ cs_resource_prefix }}-prj"
- register: sshkey
-- name: verify setup ssh key in project
- assert:
- that:
- - sshkey is successful
-
-- name: setup affinity group in project
- cs_affinitygroup:
- name: "{{ cs_resource_prefix }}-ag-prj"
- project: "{{ cs_resource_prefix }}-prj"
- register: ag
-- name: verify setup affinity group in project
- assert:
- that:
- - ag is successful
-
-- name: setup security group in project
- cs_securitygroup:
- name: "{{ cs_resource_prefix }}-sg-prj"
- project: "{{ cs_resource_prefix }}-prj"
- register: sg
-- name: verify setup security group in project
- assert:
- that:
- - sg is successful
-
-- name: test create instance in project in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- affinity_group: "{{ cs_resource_prefix }}-ag-prj"
- security_group: "{{ cs_resource_prefix }}-sg-prj"
- project: "{{ cs_resource_prefix }}-prj"
- ssh_key: "{{ cs_resource_prefix }}-sshkey-prj"
- tags: []
- register: instance
- check_mode: true
-- name: verify create instance in project in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
-
-- name: test create instance in project
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- affinity_group: "{{ cs_resource_prefix }}-ag-prj"
- security_group: "{{ cs_resource_prefix }}-sg-prj"
- project: "{{ cs_resource_prefix }}-prj"
- ssh_key: "{{ cs_resource_prefix }}-sshkey-prj"
- tags: []
- register: instance
-- name: verify create instance in project
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey-prj"
- - not instance.tags
-
-- name: test create instance in project idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- affinity_group: "{{ cs_resource_prefix }}-ag-prj"
- security_group: "{{ cs_resource_prefix }}-sg-prj"
- project: "{{ cs_resource_prefix }}-prj"
- ssh_key: "{{ cs_resource_prefix }}-sshkey-prj"
- tags: []
- register: instance
-- name: verify create instance in project idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey-prj"
- - not instance.tags
-
-- name: test running instance in project not updated in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- project: "{{ cs_resource_prefix }}-prj"
- register: instance
- check_mode: true
-- name: verify running instance in project not updated in check mode
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-
-- name: test running instance in project not updated
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- project: "{{ cs_resource_prefix }}-prj"
- register: instance
-- name: verify running instance in project not updated
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test stopping instance in project in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: stopped
- register: instance
- check_mode: true
-- name: verify stopping instance in project in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test stopping instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: stopped
- register: instance
-- name: verify stopping instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Stopped"
-
-- name: test stopping instance in project idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: stopped
- register: instance
-- name: verify stopping instance in project idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.state == "Stopped"
-
-- name: test updating stopped instance in project in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- display_name: "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
- check_mode: true
-- name: verify updating stopped instance in project in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Stopped"
-
-- name: test updating stopped instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- display_name: "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
-- name: verify updating stopped instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Stopped"
-
-- name: test updating stopped instance in project idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- display_name: "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- service_offering: "{{ test_cs_instance_offering_2 }}"
- register: instance
-- name: verify updating stopped instance in project idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Stopped"
-
-- name: test starting instance in project in check mdoe
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: started
- register: instance
- check_mode: true
-- name: verify starting instance in project in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Stopped"
-
-- name: test starting instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: started
- register: instance
-- name: verify starting instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Running"
-
-- name: test starting instance in project idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: started
- register: instance
-- name: verify starting instance in project idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Running"
-
-- name: test force update running instance in project in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- project: "{{ cs_resource_prefix }}-prj"
- force: true
- register: instance
- check_mode: true
-- name: verify force update running instance in project in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
- - instance.state == "Running"
-
-- name: test force update running instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- project: "{{ cs_resource_prefix }}-prj"
- force: true
- register: instance
-- name: verify force update running instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test force update running instance in project idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- project: "{{ cs_resource_prefix }}-prj"
- force: true
- register: instance
-- name: verify force update running instance in project idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
- - instance.state == "Running"
-
-- name: test restore instance in project in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: restored
- register: instance
- check_mode: true
-- name: verify restore instance in project in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test restore instance in project
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: restored
- register: instance
-- name: verify restore instance in project
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- - instance.project == "{{ cs_resource_prefix }}-prj"
- - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test destroy instance in project in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: instance
- check_mode: true
-- name: verify destroy instance in project in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state != "Destroyed"
-
-- name: test destroy instance in project
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: instance
-- name: verify destroy instance in project
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Destroyed"
-
-- name: test destroy instance in project idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: instance
-- name: verify destroy instance in project idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
-
-- name: test recover in project to stopped state and update a deleted instance in project in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- state: stopped
- register: instance
- check_mode: true
-- name: verify test recover to stopped state and update a deleted instance in project in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
-
-- name: test recover to stopped state and update a deleted instance in project
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- state: stopped
- register: instance
-- name: verify test recover to stopped state and update a deleted instance in project
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Stopped"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test recover to stopped state and update a deleted instance in project idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- state: stopped
- register: instance
-- name: verify test recover to stopped state and update a deleted instance in project idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.state == "Stopped"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test expunge instance in project in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: expunged
- register: instance
- check_mode: true
-- name: verify test expunge instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Stopped"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test expunge instance in project
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: expunged
- register: instance
-- name: verify test expunge instance in project
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.state == "Stopped"
- - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
-
-- name: test expunge instance in project idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- project: "{{ cs_resource_prefix }}-prj"
- state: expunged
- register: instance
-- name: verify test expunge instance in project idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
-
-- name: cleanup ssh key in project
- cs_sshkeypair:
- name: "{{ cs_resource_prefix }}-sshkey-prj"
- project: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: sshkey
-- name: verify cleanup ssh key in project
- assert:
- that:
- - sshkey is successful
-
-- name: cleanup affinity group in project
- cs_affinitygroup:
- name: "{{ cs_resource_prefix }}-ag-prj"
- project: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: ag
- until: ag is successful
- retries: 20
- delay: 5
-- name: verify cleanup affinity group in project
- assert:
- that:
- - ag is successful
-
-- name: cleanup security group in project ...take a while unless instance in project is expunged
- cs_securitygroup:
- name: "{{ cs_resource_prefix }}-sg-prj"
- project: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: sg
- until: sg is successful
- retries: 100
- delay: 10
-- name: verify cleanup security group in project
- assert:
- that:
- - sg is successful
diff --git a/test/integration/targets/cs_instance/tasks/setup.yml b/test/integration/targets/cs_instance/tasks/setup.yml
deleted file mode 100644
index 1d16114b3c..0000000000
--- a/test/integration/targets/cs_instance/tasks/setup.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-- name: setup ssh key
- cs_sshkeypair: name={{ cs_resource_prefix }}-sshkey
- register: sshkey
-- name: verify setup ssh key
- assert:
- that:
- - sshkey is successful
-
-- name: setup affinity group
- cs_affinitygroup: name={{ cs_resource_prefix }}-ag
- register: ag
-- name: verify setup affinity group
- assert:
- that:
- - ag is successful
-
-- name: setup security group
- cs_securitygroup: name={{ cs_resource_prefix }}-sg
- register: sg
-- name: verify setup security group
- assert:
- that:
- - sg is successful
diff --git a/test/integration/targets/cs_instance/tasks/sshkeys.yml b/test/integration/targets/cs_instance/tasks/sshkeys.yml
deleted file mode 100644
index ec11182a50..0000000000
--- a/test/integration/targets/cs_instance/tasks/sshkeys.yml
+++ /dev/null
@@ -1,168 +0,0 @@
----
-- name: test update instance ssh key non existent
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- ssh_key: "{{ cs_resource_prefix }}-sshkey2"
- template: "{{ test_cs_instance_template }}"
- force: true
- register: instance
- ignore_errors: true
-- name: verify update instance ssh key non existent
- assert:
- that:
- - instance is failed
- - 'instance.msg == "SSH key not found: {{ cs_resource_prefix }}-sshkey2"'
-
-- name: test create instance without keypair in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- check_mode: true
- register: instance
-- name: verify create instance without keypair in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
-
-- name: test create instance without keypair
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- register: instance
-- name: verify create instance without keypair
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.ssh_key is not defined
-
-- name: test create instance without keypair idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- register: instance
-- name: verify create instance without keypair idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.ssh_key is not defined
-
-- name: setup ssh key2
- cs_sshkeypair: name={{ cs_resource_prefix }}-sshkey2
- register: sshkey
-- name: verify setup ssh key2
- assert:
- that:
- - sshkey is successful
-
-- name: test update instance ssh key2 in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- ssh_key: "{{ cs_resource_prefix }}-sshkey2"
- force: true
- check_mode: true
- register: instance
-- name: verify update instance ssh key2 in check mode
- assert:
- that:
- - instance is changed
- - instance.ssh_key is not defined
-
-- name: test update instance ssh key2
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- ssh_key: "{{ cs_resource_prefix }}-sshkey2"
- force: true
- register: instance
-- name: verify update instance ssh key2
- assert:
- that:
- - instance is changed
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey2"
-
-- name: test update instance ssh key2 idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- ssh_key: "{{ cs_resource_prefix }}-sshkey2"
- force: true
- register: instance
-- name: verify update instance ssh key2 idempotence
- assert:
- that:
- - instance is not changed
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey2"
-
-- name: cleanup ssh key2
- cs_sshkeypair:
- name: "{{ cs_resource_prefix }}-sshkey2"
- state: absent
- register: sshkey2
-- name: verify cleanup ssh key2
- assert:
- that:
- - sshkey2 is successful
-
-- name: test update instance ssh key2 idempotence2
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- ssh_key: "{{ cs_resource_prefix }}-sshkey2"
- force: true
- register: instance
- ignore_errors: true
-- name: verify update instance ssh key2 idempotence2
- assert:
- that:
- - instance is failed
- - 'instance.msg == "SSH key not found: {{ cs_resource_prefix }}-sshkey2"'
-
-- name: test update instance ssh key in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- ssh_key: "{{ cs_resource_prefix }}-sshkey"
- force: true
- check_mode: true
- register: instance
-- name: verify update instance ssh key in check mode
- assert:
- that:
- - instance is changed
- - instance.ssh_key is not defined
-
-- name: test update instance ssh key
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- ssh_key: "{{ cs_resource_prefix }}-sshkey"
- force: true
- register: instance
-- name: verify update instance ssh key
- assert:
- that:
- - instance is changed
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey"
-
-- name: test update instance ssh key idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- ssh_key: "{{ cs_resource_prefix }}-sshkey"
- force: true
- register: instance
-- name: verify update instance ssh key idempotence
- assert:
- that:
- - instance is not changed
- - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey"
-
-- name: cleanup expunge instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-sshkey"
- state: expunged
- register: instance
-- name: verify cleanup expunge instance
- assert:
- that:
- - instance is successful
diff --git a/test/integration/targets/cs_instance/tasks/tags.yml b/test/integration/targets/cs_instance/tasks/tags.yml
deleted file mode 100644
index f7ff99bd87..0000000000
--- a/test/integration/targets/cs_instance/tasks/tags.yml
+++ /dev/null
@@ -1,132 +0,0 @@
----
-- name: test add tags to instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- tags:
- - { key: "{{ cs_resource_prefix }}-tag1", value: "{{ cs_resource_prefix }}-value1" }
- - { key: "{{ cs_resource_prefix }}-tag2", value: "{{ cs_resource_prefix }}-value2" }
- register: instance
- check_mode: true
-- name: verify add tags to instance in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - not instance.tags
-
-- name: test add tags to instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- tags:
- - { key: "{{ cs_resource_prefix }}-tag1", value: "{{ cs_resource_prefix }}-value1" }
- - { key: "{{ cs_resource_prefix }}-tag2", value: "{{ cs_resource_prefix }}-value2" }
- register: instance
-- name: verify add tags to instance
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.tags|length == 2
- - "instance.tags[0]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag1' ]"
- - "instance.tags[1]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag1' ]"
- - "instance.tags[0]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value1' ]"
- - "instance.tags[1]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value1' ]"
-
-- name: test tags to instance idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- tags:
- - { key: "{{ cs_resource_prefix }}-tag1", value: "{{ cs_resource_prefix }}-value1" }
- - { key: "{{ cs_resource_prefix }}-tag2", value: "{{ cs_resource_prefix }}-value2" }
- register: instance
-- name: verify tags to instance idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.tags|length == 2
- - "instance.tags[0]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag1' ]"
- - "instance.tags[1]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag1' ]"
- - "instance.tags[0]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value1' ]"
- - "instance.tags[1]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value1' ]"
-
-- name: test change tags of instance in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- tags:
- - { key: "{{ cs_resource_prefix }}-tag2", value: "{{ cs_resource_prefix }}-value2" }
- - { key: "{{ cs_resource_prefix }}-tag3", value: "{{ cs_resource_prefix }}-value3" }
- register: instance
- check_mode: true
-- name: verify tags to instance idempotence in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.tags|length == 2
- - "instance.tags[0]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag1' ]"
- - "instance.tags[1]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag1' ]"
- - "instance.tags[0]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value1' ]"
- - "instance.tags[1]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value1' ]"
-
-- name: test change tags of instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- tags:
- - { key: "{{ cs_resource_prefix }}-tag2", value: "{{ cs_resource_prefix }}-value2" }
- - { key: "{{ cs_resource_prefix }}-tag3", value: "{{ cs_resource_prefix }}-value3" }
- register: instance
-- name: verify tags to instance idempotence
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.tags|length == 2
- - "instance.tags[0]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag3' ]"
- - "instance.tags[1]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag3' ]"
- - "instance.tags[0]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value3' ]"
- - "instance.tags[1]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value3' ]"
-
-- name: test not touch tags of instance if no param tags
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- register: instance
-- name: verify not touch tags of instance if no param tags
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.tags|length == 2
- - "instance.tags[0]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag3' ]"
- - "instance.tags[1]['key'] in [ '{{ cs_resource_prefix }}-tag2', '{{ cs_resource_prefix }}-tag3' ]"
- - "instance.tags[0]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value3' ]"
- - "instance.tags[1]['value'] in [ '{{ cs_resource_prefix }}-value2', '{{ cs_resource_prefix }}-value3' ]"
-
-- name: test remove tags in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- tags: []
- register: instance
- check_mode: true
-- name: verify remove tags in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.tags|length != 0
-
-- name: test remove tags
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
- tags: []
- register: instance
-- name: verify remove tags
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.tags|length == 0
diff --git a/test/integration/targets/cs_instance_info/aliases b/test/integration/targets/cs_instance_info/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_instance_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_instance_info/defaults/main.yml b/test/integration/targets/cs_instance_info/defaults/main.yml
deleted file mode 100644
index 490c6c14e2..0000000000
--- a/test/integration/targets/cs_instance_info/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-test_cs_instance_template: "{{ cs_common_template }}"
-test_cs_instance_offering_1: Small Instance
diff --git a/test/integration/targets/cs_instance_info/meta/main.yml b/test/integration/targets/cs_instance_info/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_instance_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_instance_info/tasks/main.yml b/test/integration/targets/cs_instance_info/tasks/main.yml
deleted file mode 100644
index d041ffe0d7..0000000000
--- a/test/integration/targets/cs_instance_info/tasks/main.yml
+++ /dev/null
@@ -1,91 +0,0 @@
----
-- name: setup ssh key
- cs_sshkeypair: name={{ cs_resource_prefix }}-sshkey
- register: sshkey
-- name: verify setup ssh key
- assert:
- that:
- - sshkey is successful
-
-- name: setup affinity group
- cs_affinitygroup: name={{ cs_resource_prefix }}-ag
- register: ag
-- name: verify setup affinity group
- assert:
- that:
- - ag is successful
-
-- name: setup security group
- cs_securitygroup: name={{ cs_resource_prefix }}-sg
- register: sg
-- name: verify setup security group
- assert:
- that:
- - sg is successful
-
-- name: setup instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- affinity_group: "{{ cs_resource_prefix }}-ag"
- security_group: "{{ cs_resource_prefix }}-sg"
- ssh_key: "{{ cs_resource_prefix }}-sshkey"
- tags: []
- register: instance
-- name: verify create instance
- assert:
- that:
- - instance is successful
-
-- name: test instance info in check mode
- cs_instance_info:
- name: "{{ cs_resource_prefix }}-vm"
- register: instance_info
- check_mode: true
-- name: verify test instance info in check mode
- assert:
- that:
- - instance_info is successful
- - instance_info is not changed
- - instance_info.instances[0].id == instance.id
- - instance_info.instances[0].domain == instance.domain
- - instance_info.instances[0].account == instance.account
- - instance_info.instances[0].zone == instance.zone
- - instance_info.instances[0].name == instance.name
- - instance_info.instances[0].service_offering == instance.service_offering
- - instance_info.instances[0].host != ""
-
-- name: test instance info
- cs_instance_info:
- name: "{{ cs_resource_prefix }}-vm"
- register: instance_info
-- name: verify test instance info
- assert:
- that:
- - instance_info is successful
- - instance_info is not changed
- - instance_info.instances[0].id == instance.id
- - instance_info.instances[0].domain == instance.domain
- - instance_info.instances[0].account == instance.account
- - instance_info.instances[0].zone == instance.zone
- - instance_info.instances[0].name == instance.name
- - instance_info.instances[0].service_offering == instance.service_offering
- - instance_info.instances[0].host != ""
-
-- name: test instance info for all instances
- cs_instance_info:
- register: instance_info
-- name: verify test instance info
- assert:
- that:
- - instance_info is successful
- - instance_info is not changed
- - instance_info.instances | length > 0
- - '"id" in instance_info.instances[0]'
- - '"domain" in instance_info.instances[0]'
- - '"account" in instance_info.instances[0]'
- - '"zone" in instance_info.instances[0]'
- - '"name" in instance_info.instances[0]'
- - '"service_offering" in instance_info.instances[0]'
- - '"host" in instance_info.instances[0]'
diff --git a/test/integration/targets/cs_instance_nic/aliases b/test/integration/targets/cs_instance_nic/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_instance_nic/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_instance_nic/meta/main.yml b/test/integration/targets/cs_instance_nic/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_instance_nic/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_instance_nic/tasks/main.yml b/test/integration/targets/cs_instance_nic/tasks/main.yml
deleted file mode 100644
index 83b564e1cb..0000000000
--- a/test/integration/targets/cs_instance_nic/tasks/main.yml
+++ /dev/null
@@ -1,306 +0,0 @@
----
-- name: setup network
- cs_network:
- name: "net_nic"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: DefaultSharedNetworkOffering
- network_domain: example.com
- vlan: 1234
- start_ip: 10.100.123.11
- end_ip: 10.100.123.250
- gateway: 10.100.123.1
- netmask: 255.255.255.0
- register: net
-- name: verify setup network
- assert:
- that:
- - net is successful
- - net.name == "net_nic"
-
-- name: setup instance
- cs_instance:
- name: "instance-nic-vm"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- network: "net_nic"
- state: stopped
- register: instance
-- name: verify setup instance
- assert:
- that:
- - instance is successful
- - instance.name == "instance-nic-vm"
- - instance.state == "Stopped"
-
-- name: setup network 2
- cs_network:
- name: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: DefaultSharedNetworkOffering
- network_domain: example.com
- vlan: 1235
- start_ip: 10.100.124.11
- end_ip: 10.100.124.250
- gateway: 10.100.124.1
- netmask: 255.255.255.0
- register: net
-- name: verify setup network 2
- assert:
- that:
- - net is successful
- - net.name == "net_nic2"
-
-- name: setup absent nic
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: nic
-- name: verify setup absent nic
- assert:
- that:
- - nic is successful
-
-- name: test fail missing params
- cs_instance_nic:
- ignore_errors: true
- register: nic
-- name: verify test fail missing params
- assert:
- that:
- - nic is failed
- - "nic.msg.startswith('missing required arguments: ')"
-
-- name: test create nic in check mode
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- check_mode: yes
- register: nic
-- name: verify test create nic in check mode
- assert:
- that:
- - nic is successful
- - nic is changed
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
-
-- name: test create nic
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- ip_address: 10.100.124.42
- zone: "{{ cs_common_zone_adv }}"
- register: nic
-- name: verify test create nic
- assert:
- that:
- - nic is successful
- - nic is changed
- - nic.ip_address == "10.100.124.42"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: test create nic idempotence
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- ip_address: 10.100.124.42
- zone: "{{ cs_common_zone_adv }}"
- register: nic
-- name: verify test create nic idempotence
- assert:
- that:
- - nic is successful
- - nic is not changed
- - nic.ip_address == "10.100.124.42"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: test create nic without ip address idempotence
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- register: nic
-- name: verify test create nic without ip address idempotence
- assert:
- that:
- - nic is successful
- - nic is not changed
- - nic.ip_address == "10.100.124.42"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: test update nic in check mode
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- ip_address: 10.100.124.23
- zone: "{{ cs_common_zone_adv }}"
- check_mode: yes
- register: nic
-- name: verify test update nic in check mode
- assert:
- that:
- - nic is successful
- - nic is changed
- - nic.ip_address == "10.100.124.42"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: test update nic
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- ip_address: 10.100.124.23
- zone: "{{ cs_common_zone_adv }}"
- register: nic
-- name: verify test update nic
- assert:
- that:
- - nic is successful
- - nic is changed
- - nic.ip_address == "10.100.124.23"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: test update nic idempotence
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- ip_address: 10.100.124.23
- zone: "{{ cs_common_zone_adv }}"
- register: nic
-- name: verify test update nic idempotence
- assert:
- that:
- - nic is successful
- - nic is not changed
- - nic.ip_address == "10.100.124.23"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: test update nic without ip address idempotence
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- register: nic
-- name: verify test update nic without ip address idempotence
- assert:
- that:
- - nic is successful
- - nic is not changed
- - nic.ip_address == "10.100.124.23"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: test remove nic in check mode
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- check_mode: yes
- register: nic
-- name: verify test remove nic in check mode
- assert:
- that:
- - nic is successful
- - nic is changed
- - nic.ip_address == "10.100.124.23"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: test remove nic
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: nic
-- name: verify test remove nic
- assert:
- that:
- - nic is successful
- - nic is changed
- - nic.ip_address == "10.100.124.23"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: test remove nic idempotence
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: nic
-- name: verify test remove nic idempotence
- assert:
- that:
- - nic is successful
- - nic is not changed
-
-- name: cleanup instance
- cs_instance:
- name: "instance-nic-vm"
- state: expunged
- register: instance
-- name: verify cleanup instance
- assert:
- that:
- - instance is successful
-
-- name: cleanup network
- cs_network:
- name: "net_nic"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: net
-- name: verify cleanup network
- assert:
- that:
- - net is successful
-
-- name: cleanup network 2
- cs_network:
- name: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: net
-- name: verify cleanup network 2
- assert:
- that:
- - net is successful
diff --git a/test/integration/targets/cs_instance_nic_secondaryip/aliases b/test/integration/targets/cs_instance_nic_secondaryip/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_instance_nic_secondaryip/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_instance_nic_secondaryip/meta/main.yml b/test/integration/targets/cs_instance_nic_secondaryip/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_instance_nic_secondaryip/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_instance_nic_secondaryip/tasks/main.yml b/test/integration/targets/cs_instance_nic_secondaryip/tasks/main.yml
deleted file mode 100644
index 740e949d28..0000000000
--- a/test/integration/targets/cs_instance_nic_secondaryip/tasks/main.yml
+++ /dev/null
@@ -1,220 +0,0 @@
----
-- name: setup network
- cs_network:
- name: "net_nic"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: DefaultSharedNetworkOffering
- network_domain: example.com
- vlan: 1234
- start_ip: 10.100.123.11
- end_ip: 10.100.123.250
- gateway: 10.100.123.1
- netmask: 255.255.255.0
- register: net
-- name: verify setup network
- assert:
- that:
- - net is successful
- - net.name == "net_nic"
-
-- name: setup instance
- cs_instance:
- name: "instance-nic-vm"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- network: "net_nic"
- state: stopped
- register: instance
-- name: verify setup instance
- assert:
- that:
- - instance is successful
- - instance.name == "instance-nic-vm"
- - instance.state == "Stopped"
-
-- name: setup network 2
- cs_network:
- name: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: DefaultSharedNetworkOffering
- network_domain: example.com
- vlan: 1235
- start_ip: 10.100.124.11
- end_ip: 10.100.124.250
- gateway: 10.100.124.1
- netmask: 255.255.255.0
- register: net
-- name: verify setup network 2
- assert:
- that:
- - net is successful
- - net.name == "net_nic2"
-
-- name: setup nic
- cs_instance_nic:
- vm: "instance-nic-vm"
- network: "net_nic2"
- ip_address: 10.100.124.42
- zone: "{{ cs_common_zone_adv }}"
- register: nic
-- name: verify test create nic
- assert:
- that:
- - nic is successful
- - nic.ip_address == "10.100.124.42"
- - nic.netmask == "255.255.255.0"
- - nic.network == "net_nic2"
- - nic.vm == "instance-nic-vm"
- - nic.zone == "{{ cs_common_zone_adv }}"
- - nic.mac_address is defined
-
-- name: setup remove secondary ip
- cs_instance_nic_secondaryip:
- vm: "instance-nic-vm"
- network: "net_nic2"
- vm_guest_ip: 10.100.124.43
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sip
-- name: verify setup remove secondary ip
- assert:
- that:
- - sip is successful
-
-- name: test add secondary ip in check mode
- cs_instance_nic_secondaryip:
- vm: "instance-nic-vm"
- network: "net_nic2"
- vm_guest_ip: 10.100.124.43
- zone: "{{ cs_common_zone_adv }}"
- check_mode: true
- register: sip
-- name: verify test add secondary ip in check mode
- assert:
- that:
- - sip is successful
- - sip is changed
- - sip.network == "net_nic2"
- - sip.vm == "instance-nic-vm"
- - sip.zone == "{{ cs_common_zone_adv }}"
-
-- name: test add secondary ip
- cs_instance_nic_secondaryip:
- vm: "instance-nic-vm"
- network: "net_nic2"
- vm_guest_ip: 10.100.124.43
- zone: "{{ cs_common_zone_adv }}"
- register: sip
-- name: verify test add secondary ip
- assert:
- that:
- - sip is successful
- - sip is changed
- - sip.vm_guest_ip == "10.100.124.43"
- - sip.network == "net_nic2"
- - sip.vm == "instance-nic-vm"
- - sip.zone == "{{ cs_common_zone_adv }}"
-
-- name: test add secondary ip idempotence
- cs_instance_nic_secondaryip:
- vm: "instance-nic-vm"
- network: "net_nic2"
- vm_guest_ip: 10.100.124.43
- zone: "{{ cs_common_zone_adv }}"
- register: sip
-- name: verify test add secondary ip idempotence
- assert:
- that:
- - sip is successful
- - sip is not changed
- - sip.vm_guest_ip == "10.100.124.43"
- - sip.network == "net_nic2"
- - sip.vm == "instance-nic-vm"
- - sip.zone == "{{ cs_common_zone_adv }}"
-
-- name: test remove secondary ip in check mode
- cs_instance_nic_secondaryip:
- vm: "instance-nic-vm"
- network: "net_nic2"
- vm_guest_ip: 10.100.124.43
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- check_mode: true
- register: sip
-- name: verify test remove secondary ip in check mode
- assert:
- that:
- - sip is successful
- - sip is changed
- - sip.vm_guest_ip == "10.100.124.43"
- - sip.network == "net_nic2"
- - sip.vm == "instance-nic-vm"
- - sip.zone == "{{ cs_common_zone_adv }}"
-
-- name: test remove secondary ip
- cs_instance_nic_secondaryip:
- vm: "instance-nic-vm"
- network: "net_nic2"
- vm_guest_ip: 10.100.124.43
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sip
-- name: verify test remove secondary ip
- assert:
- that:
- - sip is successful
- - sip is changed
- - sip.vm_guest_ip == "10.100.124.43"
- - sip.network == "net_nic2"
- - sip.vm == "instance-nic-vm"
- - sip.zone == "{{ cs_common_zone_adv }}"
-
-- name: test remove secondary ip idempotence
- cs_instance_nic_secondaryip:
- vm: "instance-nic-vm"
- network: "net_nic2"
- vm_guest_ip: 10.100.124.43
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sip
-- name: verify test remove secondary ip idempotence
- assert:
- that:
- - sip is successful
- - sip is not changed
- - sip.network == "net_nic2"
- - sip.vm == "instance-nic-vm"
- - sip.zone == "{{ cs_common_zone_adv }}"
-
-- name: cleanup instance
- cs_instance:
- name: "instance-nic-vm"
- state: expunged
- register: instance
-- name: verify cleanup instance
- assert:
- that:
- - instance is successful
-
-- name: cleanup network
- cs_network:
- name: "net_nic"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: net
-- name: verify cleanup network
- assert:
- that:
- - net is successful
-
-- name: cleanup network 2
- cs_network:
- name: "net_nic2"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: net
-- name: verify cleanup network 2
- assert:
- that:
- - net is successful
diff --git a/test/integration/targets/cs_instance_password_reset/aliases b/test/integration/targets/cs_instance_password_reset/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_instance_password_reset/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_instance_password_reset/meta/main.yml b/test/integration/targets/cs_instance_password_reset/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_instance_password_reset/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_instance_password_reset/tasks/main.yml b/test/integration/targets/cs_instance_password_reset/tasks/main.yml
deleted file mode 100644
index 543c8f59e7..0000000000
--- a/test/integration/targets/cs_instance_password_reset/tasks/main.yml
+++ /dev/null
@@ -1,85 +0,0 @@
----
-- name: reset without giving a VM
- action: cs_instance_password_reset
- ignore_errors: yes
- register: reset1
-- name: verify that the argument was missing
- assert:
- that:
- - reset1 is failed
- - "reset1.msg == 'missing required arguments: vm'"
-
-- name: disable password_enabled on default template
- cs_template:
- name: "{{ cs_common_template }}"
- template_filter: all
- password_enabled: no
-
-- name: cleanup test VM
- cs_instance:
- name: test-nopassword
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
-- name: create test VM
- cs_instance:
- name: test-nopassword
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- state: started
- register: testvm_nopass
- until: testvm_nopass is success
- retries: 12
- delay: 10
-- name: stop test VM
- cs_instance:
- name: test-nopassword
- zone: "{{ cs_common_zone_adv }}"
- state: stopped
-- name: reset nopassword
- cs_instance_password_reset:
- vm: test-nopassword
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: yes
- register: reset2
-- name: verify that template was not pw enabled
- assert:
- that:
- - reset2 is failed
- - reset2.msg.endswith("the template is not password enabled'")
-
-- name: enable password_enabled on default template
- cs_template:
- name: "{{ cs_common_template }}"
- template_filter: all
- password_enabled: yes
-
-- name: cleanup test VM
- cs_instance:
- name: test-password
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
-- name: create test VM
- cs_instance:
- name: test-password
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- state: started
-- name: stop test VM
- cs_instance:
- name: test-password
- zone: "{{ cs_common_zone_adv }}"
- state: stopped
-- name: reset password
- cs_instance_password_reset:
- vm: test-password
- zone: "{{ cs_common_zone_adv }}"
- register: reset3
-- debug:
- var: reset3.password
-- name: verify that a password was set
- assert:
- that:
- - reset3 is success
- - reset3.password != ''
diff --git a/test/integration/targets/cs_instancegroup/aliases b/test/integration/targets/cs_instancegroup/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_instancegroup/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_instancegroup/meta/main.yml b/test/integration/targets/cs_instancegroup/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_instancegroup/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_instancegroup/tasks/main.yml b/test/integration/targets/cs_instancegroup/tasks/main.yml
deleted file mode 100644
index 6ba31751be..0000000000
--- a/test/integration/targets/cs_instancegroup/tasks/main.yml
+++ /dev/null
@@ -1,79 +0,0 @@
----
-- name: setup
- cs_instancegroup: name={{ cs_resource_prefix }}_ig state=absent
- register: ig
-- name: verify setup
- assert:
- that:
- - ig is successful
-
-- name: test fail if missing name
- action: cs_instancegroup
- register: ig
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - ig is failed
- - "ig.msg == 'missing required arguments: name'"
-
-- name: test present instance group in check mode
- cs_instancegroup: name={{ cs_resource_prefix }}_ig
- register: ig
- check_mode: true
-- name: verify results of create instance group in check mode
- assert:
- that:
- - ig is successful
- - ig is changed
-
-- name: test present instance group
- cs_instancegroup: name={{ cs_resource_prefix }}_ig
- register: ig
-- name: verify results of create instance group
- assert:
- that:
- - ig is successful
- - ig is changed
- - ig.name == "{{ cs_resource_prefix }}_ig"
-
-- name: test present instance group is idempotence
- cs_instancegroup: name={{ cs_resource_prefix }}_ig
- register: ig
-- name: verify results present instance group is idempotence
- assert:
- that:
- - ig is successful
- - ig is not changed
- - ig.name == "{{ cs_resource_prefix }}_ig"
-
-- name: test absent instance group in check mode
- cs_instancegroup: name={{ cs_resource_prefix }}_ig state=absent
- register: ig
- check_mode: true
-- name: verify results of absent instance group in check mode
- assert:
- that:
- - ig is successful
- - ig is changed
- - ig.name == "{{ cs_resource_prefix }}_ig"
-
-- name: test absent instance group
- cs_instancegroup: name={{ cs_resource_prefix }}_ig state=absent
- register: ig
-- name: verify results of absent instance group
- assert:
- that:
- - ig is successful
- - ig is changed
- - ig.name == "{{ cs_resource_prefix }}_ig"
-
-- name: test absent instance group is idempotence
- cs_instancegroup: name={{ cs_resource_prefix }}_ig state=absent
- register: ig
-- name: verify results of absent instance group is idempotence
- assert:
- that:
- - ig is successful
- - ig is not changed
- - ig.name is undefined
diff --git a/test/integration/targets/cs_ip_address/aliases b/test/integration/targets/cs_ip_address/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_ip_address/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_ip_address/meta/main.yml b/test/integration/targets/cs_ip_address/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_ip_address/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_ip_address/tasks/main.yml b/test/integration/targets/cs_ip_address/tasks/main.yml
deleted file mode 100644
index 48ccd0239a..0000000000
--- a/test/integration/targets/cs_ip_address/tasks/main.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- name: test fail vpc and network mutually exclusive
- cs_ip_address:
- network: "{{ cs_resource_prefix }}_net_vpc"
- vpc: "foobar"
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: yes
- register: ip_address
-- name: verify test fail vpc and network mutually exclusive
- assert:
- that:
- - ip_address is failed
- - 'ip_address.msg == "parameters are mutually exclusive: vpc|network"'
-
-- name: run test for network setup
- import_tasks: network.yml
-
-- name: run test for vpc setup
- import_tasks: vpc.yml
diff --git a/test/integration/targets/cs_ip_address/tasks/network.yml b/test/integration/targets/cs_ip_address/tasks/network.yml
deleted file mode 100644
index e87ff972c1..0000000000
--- a/test/integration/targets/cs_ip_address/tasks/network.yml
+++ /dev/null
@@ -1,240 +0,0 @@
----
-- name: setup ensure the test network is absent
- cs_network:
- name: ipaddr_test_network
- state: absent
- zone: "{{ cs_common_zone_adv }}"
-
-- name: setup create the test network
- cs_network:
- name: ipaddr_test_network
- network_offering: DefaultIsolatedNetworkOfferingWithSourceNatService
- state: present
- zone: "{{ cs_common_zone_adv }}"
- register: base_network
-- name: setup verify create the test network
- assert:
- that:
- - base_network is successful
-
-- name: setup instance to get network in implementation state
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-cs-ip-address"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- networks:
- - "{{ base_network.name }}"
- register: instance
- until: instance is success
- retries: 20
- delay: 5
-- name: verify instance setup
- assert:
- that:
- - instance is successful
-
-- name: setup clean ip_address with tags
- cs_ip_address:
- state: absent
- tags:
- - key: unique_id
- value: "adacd65e-7868-5ebf-9f8b-e6e0ea779861"
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
-
-- name: setup associate ip_address for SNAT
- cs_ip_address:
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address_snat
-
-- name: test associate ip_address in check mode
- cs_ip_address:
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- check_mode: true
- register: ip_address
-- name: verify test associate ip_address in check mode
- assert:
- that:
- - ip_address is successful
- - ip_address is changed
-
-- name: test associate ip_address
- cs_ip_address:
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify test associate ip_address
- assert:
- that:
- - ip_address is successful
- - ip_address is changed
- - ip_address.ip_address is defined
-
-- name: test associate ip_address with tags in check mode
- cs_ip_address:
- network: ipaddr_test_network
- tags:
- - key: unique_id
- value: "adacd65e-7868-5ebf-9f8b-e6e0ea779861"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address_tag
- check_mode: true
-- name: verify test associate ip_address with tags in check mode
- assert:
- that:
- - ip_address_tag is successful
- - ip_address_tag is changed
-
-- name: test associate ip_address with tags
- cs_ip_address:
- network: ipaddr_test_network
- tags:
- - key: unique_id
- value: "adacd65e-7868-5ebf-9f8b-e6e0ea779861"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address_tag
-- name: verify test associate ip_address with tags
- assert:
- that:
- - ip_address_tag is successful
- - ip_address_tag is changed
- - ip_address_tag.ip_address is defined
- - ip_address_tag.tags.0.key == "unique_id"
- - ip_address_tag.tags.0.value == "adacd65e-7868-5ebf-9f8b-e6e0ea779861"
-
-- name: test associate ip_address with tags idempotence
- cs_ip_address:
- network: ipaddr_test_network
- tags:
- - key: unique_id
- value: "adacd65e-7868-5ebf-9f8b-e6e0ea779861"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address_tag
-- name: verify test associate ip_address with tags idempotence
- assert:
- that:
- - ip_address_tag is successful
- - ip_address_tag is not changed
- - ip_address_tag.ip_address is defined
- - ip_address_tag.state == "Allocated"
- - ip_address_tag.tags.0.key == "unique_id"
- - ip_address_tag.tags.0.value == "adacd65e-7868-5ebf-9f8b-e6e0ea779861"
-
-- name: test disassiociate ip_address with missing param ip_address
- cs_ip_address:
- state: absent
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: true
- register: ip_address_err
-- name: verify test disassiociate ip_address with missing param ip_address
- assert:
- that:
- - ip_address_err is failed
- - 'ip_address_err.msg == "state is absent but any of the following are missing: ip_address, tags"'
-
-- name: test disassociate ip_address in check mode
- cs_ip_address:
- state: absent
- ip_address: "{{ ip_address.ip_address }}"
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- check_mode: true
- register: ip_address
-- name: verify test disassociate ip_address in check mode
- assert:
- that:
- - ip_address is successful
- - ip_address is changed
-
-- name: test disassociate ip_address
- cs_ip_address:
- state: absent
- ip_address: "{{ ip_address.ip_address }}"
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify test disassociate ip_address
- assert:
- that:
- - ip_address is successful
- - ip_address is changed
-
-- name: test disassociate ip_address idempotence
- cs_ip_address:
- state: absent
- ip_address: "{{ ip_address.ip_address }}"
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify test disassociate ip_address idempotence
- assert:
- that:
- - ip_address is successful
- - ip_address is not changed
-
-- name: test disassociate ip_address with tags with check mode
- cs_ip_address:
- state: absent
- tags:
- - key: unique_id
- value: "adacd65e-7868-5ebf-9f8b-e6e0ea779861"
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- check_mode: true
- register: ip_address
-- name: verify test disassociate ip_address with tags in check mode
- assert:
- that:
- - ip_address is successful
- - ip_address is changed
-
-- name: test disassociate ip_address with tags
- cs_ip_address:
- state: absent
- tags:
- - key: unique_id
- value: "adacd65e-7868-5ebf-9f8b-e6e0ea779861"
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify test disassociate ip_address with tags
- assert:
- that:
- - ip_address is successful
- - ip_address is changed
-
-- name: test disassociate ip_address with tags idempotence
- cs_ip_address:
- state: absent
- tags:
- - key: unique_id
- value: "adacd65e-7868-5ebf-9f8b-e6e0ea779861"
- network: ipaddr_test_network
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify test disassociate ip_address with tags idempotence
- assert:
- that:
- - ip_address is successful
- - ip_address is not changed
-
-- name: cleanup instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-cs-ip-address"
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
- register: instance
-- name: verify instance cleanup
- assert:
- that:
- - instance is successful
-
-- name: clean the test network
- cs_network:
- name: ipaddr_test_network
- state: absent
- zone: "{{ cs_common_zone_adv }}"
diff --git a/test/integration/targets/cs_ip_address/tasks/vpc.yml b/test/integration/targets/cs_ip_address/tasks/vpc.yml
deleted file mode 100644
index 3a089ebd3e..0000000000
--- a/test/integration/targets/cs_ip_address/tasks/vpc.yml
+++ /dev/null
@@ -1,121 +0,0 @@
----
-- name: setup vpc
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc_ip_address"
- cidr: 10.10.111.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify setup vpc
- assert:
- that:
- - vpc is successful
-
-- name: setup clean ip_address with tags
- cs_ip_address:
- state: absent
- vpc: "{{ cs_resource_prefix }}_vpc_ip_address"
- tags:
- - key: unique_id
- value: "86cdce4c-dce7-11e8-8394-00262df3bf70"
- zone: "{{ cs_common_zone_adv }}"
-
-- name: test associate ip_address in vpc with tags in check mode
- cs_ip_address:
- vpc: "{{ cs_resource_prefix }}_vpc_ip_address"
- tags:
- - key: unique_id
- value: "86cdce4c-dce7-11e8-8394-00262df3bf70"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address_tag
- check_mode: yes
-- name: verify test associate ip_address in vpc with tags in check mode
- assert:
- that:
- - ip_address_tag is successful
- - ip_address_tag is changed
-
-- name: test associate ip_address in vpc with tags
- cs_ip_address:
- vpc: "{{ cs_resource_prefix }}_vpc_ip_address"
- tags:
- - key: unique_id
- value: "86cdce4c-dce7-11e8-8394-00262df3bf70"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address_tag
-- name: verify test associate ip_address in vpc with tags
- assert:
- that:
- - ip_address_tag is successful
- - ip_address_tag is changed
- - ip_address_tag.ip_address is defined
- - ip_address_tag.tags.0.key == "unique_id"
- - ip_address_tag.tags.0.value == "86cdce4c-dce7-11e8-8394-00262df3bf70"
-
-- name: test associate ip_address in vpc with tags idempotence
- cs_ip_address:
- vpc: "{{ cs_resource_prefix }}_vpc_ip_address"
- tags:
- - key: unique_id
- value: "86cdce4c-dce7-11e8-8394-00262df3bf70"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address_tag
-- name: verify test associate ip_address in vpc with tags idempotence
- assert:
- that:
- - ip_address_tag is successful
- - ip_address_tag is not changed
- - ip_address_tag.ip_address is defined
- - ip_address_tag.state == "Allocated"
- - ip_address_tag.tags.0.key == "unique_id"
- - ip_address_tag.tags.0.value == "86cdce4c-dce7-11e8-8394-00262df3bf70"
-
-- name: test disassociate ip_address in vpc in check mode
- cs_ip_address:
- state: absent
- ip_address: "{{ ip_address_tag.ip_address }}"
- vpc: "{{ cs_resource_prefix }}_vpc_ip_address"
- zone: "{{ cs_common_zone_adv }}"
- check_mode: true
- register: ip_address
-- name: verify test disassociate ip_address in vpc in check mode
- assert:
- that:
- - ip_address is successful
- - ip_address is changed
-
-- name: test disassociate ip_address in vpc
- cs_ip_address:
- state: absent
- ip_address: "{{ ip_address_tag.ip_address }}"
- vpc: "{{ cs_resource_prefix }}_vpc_ip_address"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify test disassociate ip_address in vpc
- assert:
- that:
- - ip_address is successful
- - ip_address is changed
-
-- name: test disassociate ip_address in vpc idempotence
- cs_ip_address:
- state: absent
- ip_address: "{{ ip_address_tag.ip_address }}"
- vpc: "{{ cs_resource_prefix }}_vpc_ip_address"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify test disassociate ip_address in vpc idempotence
- assert:
- that:
- - ip_address is successful
- - ip_address is not changed
-
-- name: cleanup vpc
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc_ip_address"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpc
-- name: verify cleanup vpc
- assert:
- that:
- - vpc is successful
diff --git a/test/integration/targets/cs_iso/aliases b/test/integration/targets/cs_iso/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_iso/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_iso/meta/main.yml b/test/integration/targets/cs_iso/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_iso/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_iso/tasks/main.yml b/test/integration/targets/cs_iso/tasks/main.yml
deleted file mode 100644
index c767256c0c..0000000000
--- a/test/integration/targets/cs_iso/tasks/main.yml
+++ /dev/null
@@ -1,142 +0,0 @@
----
-- name: setup iso
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- state: absent
- register: iso
-- name: verify setup iso
- assert:
- that:
- - iso is successful
-
-- name: test download iso in check mode
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- url: http://mirror.switch.ch/ftp/mirror/debian-cd/current/amd64/iso-cd/debian-7.7.0-amd64-netinst.iso
- os_type: Debian GNU/Linux 7(64-bit)
- cross_zones: true
- register: iso
- check_mode: true
-- name: verify test download iso in check mode
- assert:
- that:
- - iso is changed
-
-- name: test download iso
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- url: http://mirror.switch.ch/ftp/mirror/debian-cd/current/amd64/iso-cd/debian-7.7.0-amd64-netinst.iso
- os_type: Debian GNU/Linux 7(64-bit)
- cross_zones: true
- register: iso
-- name: verify test download iso
- assert:
- that:
- - iso is changed
- - iso.name == "{{ cs_resource_prefix }}-iso"
- - iso.display_text == "{{ cs_resource_prefix }}-iso"
- - iso.cross_zones == true
-
-- name: test download iso idempotence
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- url: http://mirror.switch.ch/ftp/mirror/debian-cd/current/amd64/iso-cd/debian-7.7.0-amd64-netinst.iso
- os_type: Debian GNU/Linux 7(64-bit)
- cross_zones: true
- register: iso
-- name: verify test download iso idempotence
- assert:
- that:
- - iso is not changed
- - iso.name == "{{ cs_resource_prefix }}-iso"
- - iso.display_text == "{{ cs_resource_prefix }}-iso"
- - iso.cross_zones == true
-
-- name: test update iso in check mdoe
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- display_text: "{{ cs_resource_prefix }}-iso display_text"
- url: http://mirror.switch.ch/ftp/mirror/debian-cd/current/amd64/iso-cd/debian-7.7.0-amd64-netinst.iso
- os_type: CentOS 7
- cross_zones: true
- register: iso
- check_mode: true
-- name: verify test update iso in check mode
- assert:
- that:
- - iso is changed
- - iso.name == "{{ cs_resource_prefix }}-iso"
- - iso.display_text == "{{ cs_resource_prefix }}-iso"
- - iso.cross_zones == true
-
-- name: test update iso
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- display_text: "{{ cs_resource_prefix }}-iso display_text"
- url: http://mirror.switch.ch/ftp/mirror/debian-cd/current/amd64/iso-cd/debian-7.7.0-amd64-netinst.iso
- os_type: CentOS 7
- cross_zones: true
- register: iso
-- name: verify test update iso
- assert:
- that:
- - iso is changed
- - iso.name == "{{ cs_resource_prefix }}-iso"
- - iso.display_text == "{{ cs_resource_prefix }}-iso display_text"
- - iso.cross_zones == true
-
-- name: test update iso idempotence
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- display_text: "{{ cs_resource_prefix }}-iso display_text"
- url: http://mirror.switch.ch/ftp/mirror/debian-cd/current/amd64/iso-cd/debian-7.7.0-amd64-netinst.iso
- os_type: CentOS 7
- cross_zones: true
- register: iso
-- name: verify test update iso idempotence
- assert:
- that:
- - iso is not changed
- - iso.name == "{{ cs_resource_prefix }}-iso"
- - iso.display_text == "{{ cs_resource_prefix }}-iso display_text"
- - iso.cross_zones == true
-
-- name: test remove iso in check mode
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- state: absent
- cross_zones: true
- register: iso
- check_mode: true
-- name: verify test remove iso in check mode
- assert:
- that:
- - iso is changed
- - iso.name == "{{ cs_resource_prefix }}-iso"
- - iso.display_text == "{{ cs_resource_prefix }}-iso display_text"
- - iso.cross_zones == true
-
-- name: test remove iso
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- state: absent
- cross_zones: true
- register: iso
-- name: verify test remove iso
- assert:
- that:
- - iso is changed
- - iso.name == "{{ cs_resource_prefix }}-iso"
- - iso.display_text == "{{ cs_resource_prefix }}-iso display_text"
- - iso.cross_zones == true
-
-- name: test remove iso idempotence
- cs_iso:
- name: "{{ cs_resource_prefix }}-iso"
- state: absent
- cross_zones: true
- register: iso
-- name: verify test remove iso idempotence
- assert:
- that:
- - iso is not changed
diff --git a/test/integration/targets/cs_loadbalancer_rule/aliases b/test/integration/targets/cs_loadbalancer_rule/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_loadbalancer_rule/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_loadbalancer_rule/meta/main.yml b/test/integration/targets/cs_loadbalancer_rule/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_loadbalancer_rule/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_loadbalancer_rule/tasks/main.yml b/test/integration/targets/cs_loadbalancer_rule/tasks/main.yml
deleted file mode 100644
index 13d2f005bc..0000000000
--- a/test/integration/targets/cs_loadbalancer_rule/tasks/main.yml
+++ /dev/null
@@ -1,392 +0,0 @@
----
-- name: ensure instance is expunged
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-lb"
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
- register: instance
-- name: verify ensure instance is expunged
- assert:
- that:
- - instance is successful
-
-- name: ensure network is absent
- cs_network:
- name: "{{ cs_resource_prefix }}_net_lb"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: lb_net
-- name: verify ensure network is absent
- assert:
- that:
- - lb_net is successful
-
-- name: test create network for lb
- cs_network:
- name: "{{ cs_resource_prefix }}_net_lb"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: Offering for Isolated networks with Source Nat service enabled
- register: lb_net
-- name: verify test create network for lb
- assert:
- that:
- - lb_net is successful
- - lb_net is changed
- - lb_net.name == "{{ cs_resource_prefix }}_net_lb"
-
-- name: setup instance in lb
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-lb"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- network: "{{ cs_resource_prefix }}_net_lb"
- register: instance
- until: instance is success
- retries: 20
- delay: 5
-- name: verify setup instance in lb
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-lb"
- - instance.state == "Running"
-
-- name: setup get ip address for lb
- cs_ip_address:
- network: "{{ cs_resource_prefix }}_net_lb"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify setup get ip address in lb
- assert:
- that:
- - ip_address is successful
-
-- name: setup lb rule absent
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- state: absent
- register: lb
-- name: verify setup lb rule absent
- assert:
- that:
- - lb is successful
-
-- name: test rule requires params
- cs_loadbalancer_rule:
- ignore_errors: true
- register: lb
-- name: verify test rule requires params
- assert:
- that:
- - lb is failed
- - "lb.msg.startswith('missing required arguments: ')"
-
-
-- name: test create rule in check mode
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- algorithm: roundrobin
- public_port: 80
- private_port: 8080
- register: lb
- check_mode: true
-- name: verify test create rule in check mode
- assert:
- that:
- - lb is successful
- - lb is changed
-
-- name: test create rule
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- algorithm: roundrobin
- public_port: 80
- private_port: 8080
- register: lb
-- name: verify test create rule
- assert:
- that:
- - lb is successful
- - lb is changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "roundrobin"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
-
-- name: test create rule idempotence
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- algorithm: roundrobin
- public_port: 80
- private_port: 8080
- register: lb
-- name: verify test create rule idempotence
- assert:
- that:
- - lb is successful
- - lb is not changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "roundrobin"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
-
-- name: test update rule in check mode
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- algorithm: source
- public_port: 80
- private_port: 8080
- register: lb
- check_mode: true
-- name: verify test update rule in check mode
- assert:
- that:
- - lb is successful
- - lb is changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "roundrobin"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
-
-- name: test update rule
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- algorithm: source
- public_port: 80
- private_port: 8080
- register: lb
-- name: verify test update rule
- assert:
- that:
- - lb is successful
- - lb is changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "source"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
-
-- name: test update rule idempotence
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- algorithm: source
- public_port: 80
- private_port: 8080
- register: lb
-- name: verify test update rule idempotence
- assert:
- that:
- - lb is successful
- - lb is not changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "source"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
-
-- name: test rule member requires params
- cs_loadbalancer_rule_member:
- ignore_errors: true
- register: lb
-- name: verify test rule requires params
- assert:
- that:
- - lb is failed
- - "lb.msg.startswith('missing required arguments: ')"
-
-- name: test add members to rule in check mode
- cs_loadbalancer_rule_member:
- name: "{{ cs_resource_prefix }}_lb"
- vm: "{{ cs_resource_prefix }}-vm-lb"
- register: lb
- check_mode: true
-- name: verify add members to rule in check mode
- assert:
- that:
- - lb is successful
- - lb is changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "source"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
- - "'{{ cs_resource_prefix }}-vm-lb' not in lb.vms"
-
-- name: test add members to rule
- cs_loadbalancer_rule_member:
- name: "{{ cs_resource_prefix }}_lb"
- vm: "{{ cs_resource_prefix }}-vm-lb"
- register: lb
-- name: verify add members to rule
- assert:
- that:
- - lb is successful
- - lb is changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "source"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
- - "'{{ cs_resource_prefix }}-vm-lb' in lb.vms"
-
-- name: test add members to rule idempotence
- cs_loadbalancer_rule_member:
- name: "{{ cs_resource_prefix }}_lb"
- vm: "{{ cs_resource_prefix }}-vm-lb"
- register: lb
-- name: verify add members to rule idempotence
- assert:
- that:
- - lb is successful
- - lb is not changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "source"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
- - "'{{ cs_resource_prefix }}-vm-lb' in lb.vms"
-
-- name: test remove members to rule in check mode
- cs_loadbalancer_rule_member:
- name: "{{ cs_resource_prefix }}_lb"
- vm: "{{ cs_resource_prefix }}-vm-lb"
- state: absent
- register: lb
- check_mode: true
-- name: verify remove members to rule in check mode
- assert:
- that:
- - lb is successful
- - lb is changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "source"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
- - "'{{ cs_resource_prefix }}-vm-lb' in lb.vms"
-
-- name: test remove members to rule
- cs_loadbalancer_rule_member:
- name: "{{ cs_resource_prefix }}_lb"
- vm: "{{ cs_resource_prefix }}-vm-lb"
- state: absent
- register: lb
-- name: verify remove members to rule
- assert:
- that:
- - lb is successful
- - lb is changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "source"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
- - "'{{ cs_resource_prefix }}-vm-lb' not in lb.vms"
-
-- name: test remove members to rule idempotence
- cs_loadbalancer_rule_member:
- name: "{{ cs_resource_prefix }}_lb"
- vm: "{{ cs_resource_prefix }}-vm-lb"
- state: absent
- register: lb
-- name: verify remove members to rule
- assert:
- that:
- - lb is successful
- - lb is not changed
-
-- name: test remove rule in check mode
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- state: absent
- register: lb
- check_mode: true
-- name: verify remove rule in check mode
- assert:
- that:
- - lb is successful
- - lb is changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "source"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
-
-- name: test remove rule
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- state: absent
- register: lb
-- name: verify remove rule
- assert:
- that:
- - lb is successful
- - lb is changed
- - lb.name == "{{ cs_resource_prefix }}_lb"
- - lb.algorithm == "source"
- - lb.public_ip == "{{ ip_address.ip_address }}"
- - lb.public_port == 80
- - lb.private_port == 8080
-
-- name: test remove rule idempotence
- cs_loadbalancer_rule:
- name: "{{ cs_resource_prefix }}_lb"
- public_ip: "{{ ip_address.ip_address }}"
- state: absent
- register: lb
-- name: verify remove rule idempotence
- assert:
- that:
- - lb is successful
- - lb is not changed
-
-- name: cleanup ip address
- cs_ip_address:
- network: "{{ cs_resource_prefix }}_net_lb"
- zone: "{{ cs_common_zone_adv }}"
- ip_address: "{{ ip_address.ip_address }}"
- state: absent
- register: ip_address
-- name: verify cleanup ip address
- assert:
- that:
- - ip_address is successful
- - instance is changed
-
-- name: cleanup instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-lb"
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
- register: instance
-- name: verify cleanup instance
- assert:
- that:
- - instance is successful
- - instance is changed
-
-- name: cleanup network
- cs_network:
- name: "{{ cs_resource_prefix }}_net_lb"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: lb_net
-- name: verify cleanup network
- assert:
- that:
- - lb_net is successful
- - lb_net is changed
diff --git a/test/integration/targets/cs_network/aliases b/test/integration/targets/cs_network/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_network/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_network/meta/main.yml b/test/integration/targets/cs_network/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_network/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_network/tasks/main.yml b/test/integration/targets/cs_network/tasks/main.yml
deleted file mode 100644
index cfe24c41fb..0000000000
--- a/test/integration/targets/cs_network/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-
-- include_tasks: vpc_network_tier.yml
diff --git a/test/integration/targets/cs_network/tasks/vpc_network_tier.yml b/test/integration/targets/cs_network/tasks/vpc_network_tier.yml
deleted file mode 100644
index 4854cae97f..0000000000
--- a/test/integration/targets/cs_network/tasks/vpc_network_tier.yml
+++ /dev/null
@@ -1,299 +0,0 @@
----
-- name: setup cleanup vpc network tier
- cs_network:
- name: vpc tier 1
- zone: "{{ cs_common_zone_adv }}"
- vpc: vpc_network_test
- state: absent
- ignore_errors: yes
-
-- name: setup cleanup existing vpc
- cs_vpc:
- name: vpc_network_test
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpc
-- name: verify cleanup existing vpc
- assert:
- that:
- - vpc is successful
-
-- name: setup vpc
- cs_vpc:
- name: vpc_network_test
- cidr: 10.43.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- vpc_offering: Redundant VPC offering
- network_domain: cs2sandbox.simulator.example.com
- register: vpc
-- name: verify setup vpc
- assert:
- that:
- - vpc is successful
-
-- name: setup network acl
- cs_network_acl:
- name: my_network_acl1
- vpc: vpc_network_test
- zone: "{{ cs_common_zone_adv }}"
- register: acl
-- name: verify setup network acl
- assert:
- that:
- - acl is successful
-
-- name: setup network acl rule
- cs_network_acl_rule:
- network_acl: my_network_acl1
- rule_position: 1
- vpc: vpc_network_test
- traffic_type: ingress
- action_policy: allow
- port: 80
- cidr: 0.0.0.0/0
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
-- name: verify setup network acl rule
- assert:
- that:
- - acl_rule is successful
-
-- name: setup vpc network tier
- cs_network:
- name: vpc tier 1
- zone: "{{ cs_common_zone_adv }}"
- vpc: vpc_network_test
- state: absent
- register: network
-- name: verify setup vpc network tier
- assert:
- that:
- - network is successful
-
-- name: test fail vpc network tier if vpc not given
- cs_network:
- name: vpc tier 1
- zone: "{{ cs_common_zone_adv }}"
- network_domain: cs2sandbox.simulator.example.com
- network_offering: DefaultIsolatedNetworkOfferingForVpcNetworks
- gateway: 10.43.0.1
- netmask: 255.255.255.0
- acl: my_network_acl1
- check_mode: yes
- register: network
- ignore_errors: yes
-- name: verify test fail vpc network tier if vpc not given
- assert:
- that:
- - network is failed
- - "network.msg == 'Missing required params: vpc'"
-
-- name: test create a vpc network tier in check mode
- cs_network:
- name: vpc tier 1
- zone: "{{ cs_common_zone_adv }}"
- network_domain: cs2sandbox.simulator.example.com
- vpc: vpc_network_test
- network_offering: DefaultIsolatedNetworkOfferingForVpcNetworks
- gateway: 10.43.0.1
- netmask: 255.255.255.0
- check_mode: yes
- register: network
-- name: verify test create a vpc network tier in check mode
- assert:
- that:
- - network is changed
-
-- name: test create a vpc network tier
- cs_network:
- name: vpc tier 1
- zone: "{{ cs_common_zone_adv }}"
- network_domain: cs2sandbox.simulator.example.com
- vpc: vpc_network_test
- network_offering: DefaultIsolatedNetworkOfferingForVpcNetworks
- gateway: 10.43.0.1
- netmask: 255.255.255.0
- register: network
-- name: verify test create a vpc network tier
- assert:
- that:
- - network is changed
- - network.acl_type == 'Account'
- - not network.acl
- - network.broadcast_domain_type == 'Vlan'
- - network.cidr == '10.43.0.0/24'
- - network.gateway == '10.43.0.1'
- - network.display_text == 'vpc tier 1'
- - network.network_offering == 'DefaultIsolatedNetworkOfferingForVpcNetworks'
- - network.vpc == 'vpc_network_test'
- - network.network_domain == 'cs2sandbox.simulator.example.com'
-
-- name: test create a vpc network tier idempotence
- cs_network:
- name: vpc tier 1
- zone: "{{ cs_common_zone_adv }}"
- network_domain: cs2sandbox.simulator.example.com
- vpc: vpc_network_test
- network_offering: DefaultIsolatedNetworkOfferingForVpcNetworks
- gateway: 10.43.0.1
- netmask: 255.255.255.0
- register: network
-- name: verify test create a vpc network tier idempotence
- assert:
- that:
- - network is not changed
- - network.acl_type == 'Account'
- - not network.acl
- - network.broadcast_domain_type == 'Vlan'
- - network.cidr == '10.43.0.0/24'
- - network.gateway == '10.43.0.1'
- - network.display_text == 'vpc tier 1'
- - network.network_offering == 'DefaultIsolatedNetworkOfferingForVpcNetworks'
- - network.vpc == 'vpc_network_test'
- - network.network_domain == 'cs2sandbox.simulator.example.com'
-
-- name: test update a vpc network tier in check mode
- cs_network:
- name: vpc tier 1
- display_text: vpc tier 1 description
- zone: "{{ cs_common_zone_adv }}"
- network_domain: cs2sandbox.simulator.example.com
- vpc: vpc_network_test
- network_offering: DefaultIsolatedNetworkOfferingForVpcNetworks
- gateway: 10.43.0.1
- netmask: 255.255.255.0
- acl: my_network_acl1
- check_mode: yes
- register: network
-- name: verify test update a vpc network tier in check mode
- assert:
- that:
- - network is changed
- - network.acl_type == 'Account'
- - network.acl == 'my_network_acl1'
- - network.broadcast_domain_type == 'Vlan'
- - network.cidr == '10.43.0.0/24'
- - network.gateway == '10.43.0.1'
- - network.display_text == 'vpc tier 1'
- - network.network_offering == 'DefaultIsolatedNetworkOfferingForVpcNetworks'
- - network.vpc == 'vpc_network_test'
- - network.network_domain == 'cs2sandbox.simulator.example.com'
-
-- name: test update a vpc network tier
- cs_network:
- name: vpc tier 1
- display_text: vpc tier 1 description
- zone: "{{ cs_common_zone_adv }}"
- network_domain: cs2sandbox.simulator.example.com
- vpc: vpc_network_test
- network_offering: DefaultIsolatedNetworkOfferingForVpcNetworks
- gateway: 10.43.0.1
- netmask: 255.255.255.0
- acl: my_network_acl1
- register: network
-- name: verify test update a vpc network tier
- assert:
- that:
- - network is changed
- - network.acl_type == 'Account'
- - network.acl == 'my_network_acl1'
- - network.broadcast_domain_type == 'Vlan'
- - network.cidr == '10.43.0.0/24'
- - network.gateway == '10.43.0.1'
- - network.display_text == 'vpc tier 1 description'
- - network.network_offering == 'DefaultIsolatedNetworkOfferingForVpcNetworks'
- - network.vpc == 'vpc_network_test'
- - network.network_domain == 'cs2sandbox.simulator.example.com'
-
-- name: test update a vpc network tier idempotence
- cs_network:
- name: vpc tier 1
- display_text: vpc tier 1 description
- zone: "{{ cs_common_zone_adv }}"
- network_domain: cs2sandbox.simulator.example.com
- vpc: vpc_network_test
- network_offering: DefaultIsolatedNetworkOfferingForVpcNetworks
- gateway: 10.43.0.1
- netmask: 255.255.255.0
- acl: my_network_acl1
- register: network
-- name: verify test update a vpc network tier idempotence
- assert:
- that:
- - network is not changed
- - network.acl_type == 'Account'
- - network.acl == 'my_network_acl1'
- - network.broadcast_domain_type == 'Vlan'
- - network.cidr == '10.43.0.0/24'
- - network.gateway == '10.43.0.1'
- - network.display_text == 'vpc tier 1 description'
- - network.network_offering == 'DefaultIsolatedNetworkOfferingForVpcNetworks'
- - network.vpc == 'vpc_network_test'
- - network.network_domain == 'cs2sandbox.simulator.example.com'
-
-- name: test absent a vpc network tier in check mode
- cs_network:
- name: vpc tier 1
- zone: "{{ cs_common_zone_adv }}"
- vpc: vpc_network_test
- state: absent
- register: network
- check_mode: yes
-- name: verify test absent a vpc network tier in check mode
- assert:
- that:
- - network is changed
- - network.acl_type == 'Account'
- - network.acl == 'my_network_acl1'
- - network.broadcast_domain_type == 'Vlan'
- - network.cidr == '10.43.0.0/24'
- - network.gateway == '10.43.0.1'
- - network.display_text == 'vpc tier 1 description'
- - network.network_offering == 'DefaultIsolatedNetworkOfferingForVpcNetworks'
- - network.vpc == 'vpc_network_test'
- - network.network_domain == 'cs2sandbox.simulator.example.com'
-
-- name: test absent a vpc network tier
- cs_network:
- name: vpc tier 1
- zone: "{{ cs_common_zone_adv }}"
- vpc: vpc_network_test
- state: absent
- register: network
-- name: verify test absent a vpc network tier
- assert:
- that:
- - network is changed
- - network.acl_type == 'Account'
- - network.acl == 'my_network_acl1'
- - network.broadcast_domain_type == 'Vlan'
- - network.cidr == '10.43.0.0/24'
- - network.gateway == '10.43.0.1'
- - network.display_text == 'vpc tier 1 description'
- - network.network_offering == 'DefaultIsolatedNetworkOfferingForVpcNetworks'
- - network.vpc == 'vpc_network_test'
- - network.network_domain == 'cs2sandbox.simulator.example.com'
-
-- name: test absent a vpc network tier idempotence
- cs_network:
- name: vpc tier 1
- zone: "{{ cs_common_zone_adv }}"
- vpc: vpc_network_test
- state: absent
- register: network
-- name: verify test absent a vpc network tier idempotence
- assert:
- that:
- - network is not changed
-
-- name: cleanup vpc
- cs_vpc:
- name: vpc_network_test
- cidr: 10.43.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpc
-- name: verify cleanup vpc
- assert:
- that:
- - vpc is successful
diff --git a/test/integration/targets/cs_network_acl/aliases b/test/integration/targets/cs_network_acl/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_network_acl/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_network_acl/meta/main.yml b/test/integration/targets/cs_network_acl/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_network_acl/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_network_acl/tasks/main.yml b/test/integration/targets/cs_network_acl/tasks/main.yml
deleted file mode 100644
index 7104a7cbf3..0000000000
--- a/test/integration/targets/cs_network_acl/tasks/main.yml
+++ /dev/null
@@ -1,120 +0,0 @@
----
-- name: setup vpc
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text"
- cidr: 10.10.0.0/16
- vpc_offering: Redundant VPC offering
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify setup vpc
- assert:
- that:
- - vpc is successful
-
-- name: setup network acl absent
- cs_network_acl:
- name: "{{ cs_resource_prefix }}_acl"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: acl
-- name: verify setup network acl absent
- assert:
- that:
- - acl is successful
-
-- name: test fail missing param name and vpc for network acl
- cs_network_acl:
- ignore_errors: true
- register: acl
-- name: verify test fail missing param name and vpc for network acl
- assert:
- that:
- - acl is failed
- - "acl.msg.startswith('missing required arguments: ')"
-
-- name: test create network acl in check mode
- cs_network_acl:
- name: "{{ cs_resource_prefix }}_acl"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: acl
- check_mode: true
-- name: verify test create network acl in check mode
- assert:
- that:
- - acl is successful
- - acl is changed
-
-- name: test create network acl
- cs_network_acl:
- name: "{{ cs_resource_prefix }}_acl"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: acl
-- name: verify test create network acl
- assert:
- that:
- - acl is successful
- - acl is changed
- - acl.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl.name == "{{ cs_resource_prefix }}_acl"
-
-- name: test create network acl idempotence
- cs_network_acl:
- name: "{{ cs_resource_prefix }}_acl"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: acl
-- name: verify test create network acl idempotence
- assert:
- that:
- - acl is successful
- - acl is not changed
- - acl.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl.name == "{{ cs_resource_prefix }}_acl"
-
-- name: test remove network acl in check mode
- cs_network_acl:
- name: "{{ cs_resource_prefix }}_acl"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: acl
- check_mode: true
-- name: verify test remove network acl in check mode
- assert:
- that:
- - acl is successful
- - acl is changed
- - acl.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl.name == "{{ cs_resource_prefix }}_acl"
-
-- name: test remove network acl
- cs_network_acl:
- name: "{{ cs_resource_prefix }}_acl"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: acl
-- name: verify test remove network acl
- assert:
- that:
- - acl is successful
- - acl is changed
- - acl.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl.name == "{{ cs_resource_prefix }}_acl"
-
-- name: test remove network acl idempotence
- cs_network_acl:
- name: "{{ cs_resource_prefix }}_acl"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: acl
-- name: verify test remove network acl idempotence
- assert:
- that:
- - acl is successful
- - acl is not changed
diff --git a/test/integration/targets/cs_network_acl_rule/aliases b/test/integration/targets/cs_network_acl_rule/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_network_acl_rule/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_network_acl_rule/meta/main.yml b/test/integration/targets/cs_network_acl_rule/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_network_acl_rule/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_network_acl_rule/tasks/main.yml b/test/integration/targets/cs_network_acl_rule/tasks/main.yml
deleted file mode 100644
index 06f5f5ae73..0000000000
--- a/test/integration/targets/cs_network_acl_rule/tasks/main.yml
+++ /dev/null
@@ -1,548 +0,0 @@
----
-- name: setup vpc
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify setup vpc
- assert:
- that:
- - vpc is successful
-
-- name: setup network acl
- cs_network_acl:
- name: "{{ cs_resource_prefix }}_acl"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: acl
-- name: verify setup network acl
- assert:
- that:
- - acl is successful
-
-- name: setup network acl rule
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: acl_rule
-- name: verify setup network acl rule
- assert:
- that:
- - acl_rule is successful
-
-- name: test fail missing params
- cs_network_acl_rule:
- ignore_errors: true
- register: acl_rule
-- name: verify test fail missing param
- assert:
- that:
- - acl_rule is failed
- - "acl_rule.msg.startswith('missing required arguments: ')"
-
-- name: test fail missing params for tcp
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: ingress
- action_policy: allow
- cidr: 0.0.0.0/0
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: true
- register: acl_rule
-- name: verify test fail missing param for tcp
- assert:
- that:
- - acl_rule is failed
- - "acl_rule.msg == 'protocol is tcp but the following are missing: start_port, end_port'"
-
-- name: test fail missing params for icmp
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: ingress
- action_policy: allow
- cidr: 0.0.0.0/0
- protocol: icmp
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: true
- register: acl_rule
-- name: verify test fail missing param for icmp
- assert:
- that:
- - acl_rule is failed
- - "acl_rule.msg == 'protocol is icmp but the following are missing: icmp_type, icmp_code'"
-
-- name: test fail missing params for by number
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: ingress
- action_policy: allow
- cidr: 0.0.0.0/0
- protocol: by_number
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: true
- register: acl_rule
-- name: verify test fail missing param for by number
- assert:
- that:
- - acl_rule is failed
- - "acl_rule.msg == 'protocol is by_number but the following are missing: protocol_number'"
-
-- name: test create network acl rule in check mode
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: ingress
- action_policy: allow
- port: 80
- cidr: 0.0.0.0/0
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
- check_mode: true
-- name: verify test create network acl rule in check mode
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
-
-- name: test create network acl rule
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: ingress
- action_policy: allow
- port: 80
- cidr: 0.0.0.0/0
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
-- name: verify test create network acl rule
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 80
- - acl_rule.end_port == 80
- - acl_rule.action_policy == "allow"
- - acl_rule.cidr == "0.0.0.0/0"
- - acl_rule.traffic_type == "ingress"
- - acl_rule.rule_position == 1
-
-- name: test create network acl rule idempotence
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: ingress
- action_policy: allow
- port: 80
- cidr: 0.0.0.0/0
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
-- name: verify test create network acl idempotence
- assert:
- that:
- - acl_rule is successful
- - acl_rule is not changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 80
- - acl_rule.end_port == 80
- - acl_rule.action_policy == "allow"
- - acl_rule.cidr == "0.0.0.0/0"
- - acl_rule.traffic_type == "ingress"
- - acl_rule.rule_position == 1
-
-- name: test change network acl rule in check mode
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: deny
- port: 81
- cidrs:
- - 1.2.3.0/24
- - 3.2.1.0/24
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
- check_mode: true
-- name: verify test change network acl rule in check mode
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 80
- - acl_rule.end_port == 80
- - acl_rule.action_policy == "allow"
- - acl_rule.cidr == "0.0.0.0/0"
- - acl_rule.cidrs == [ "0.0.0.0/0" ]
- - acl_rule.traffic_type == "ingress"
- - acl_rule.rule_position == 1
-
-- name: test change network acl rule
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: deny
- port: 81
- protocol: udp
- cidrs:
- - 1.2.3.0/24
- - 3.2.1.0/24
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
-- name: verify test change network acl rule
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 81
- - acl_rule.end_port == 81
- - acl_rule.action_policy == "deny"
- - acl_rule.cidr == "1.2.3.0/24,3.2.1.0/24"
- - acl_rule.cidrs == [ "1.2.3.0/24", "3.2.1.0/24" ]
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "udp"
- - acl_rule.rule_position == 1
-
-- name: test change network acl rule idempotence
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: deny
- port: 81
- protocol: udp
- cidrs:
- - 1.2.3.0/24
- - 3.2.1.0/24
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
-- name: verify test change network acl idempotence
- assert:
- that:
- - acl_rule is successful
- - acl_rule is not changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 81
- - acl_rule.end_port == 81
- - acl_rule.action_policy == "deny"
- - acl_rule.cidr == "1.2.3.0/24,3.2.1.0/24"
- - acl_rule.cidrs == [ "1.2.3.0/24", "3.2.1.0/24" ]
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "udp"
- - acl_rule.rule_position == 1
-
-- name: test change network acl by protocol number in check mode
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: deny
- protocol: by_number
- protocol_number: 8
- port: 81
- cidr: 0.0.0.0/0
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
- check_mode: true
-- name: verify test change network acl by protocol number in check mode
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 81
- - acl_rule.end_port == 81
- - acl_rule.action_policy == "deny"
- - acl_rule.cidr == "1.2.3.0/24,3.2.1.0/24"
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "udp"
- - acl_rule.rule_position == 1
-
-- name: test change network acl by protocol number
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: deny
- protocol: by_number
- protocol_number: 8
- port: 81
- cidr: 0.0.0.0/0
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
-- name: verify test change network acl by protocol number
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 81
- - acl_rule.end_port == 81
- - acl_rule.action_policy == "deny"
- - acl_rule.cidr == "0.0.0.0/0"
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "by_number"
- - acl_rule.protocol_number == 8
- - acl_rule.rule_position == 1
-
-- name: test change network acl by protocol number idempotence
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: deny
- protocol: by_number
- protocol_number: 8
- port: 81
- cidr: 0.0.0.0/0
- zone: "{{ cs_common_zone_adv }}"
- register: acl_rule
-- name: verify test change network acl by protocol number idempotence
- assert:
- that:
- - acl_rule is successful
- - acl_rule is not changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 81
- - acl_rule.end_port == 81
- - acl_rule.action_policy == "deny"
- - acl_rule.cidr == "0.0.0.0/0"
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "by_number"
- - acl_rule.protocol_number == 8
- - acl_rule.rule_position == 1
-
-
-- name: test create 2nd network acl rule in check mode
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 2
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: allow
- cidr: 10.23.12.0/24
- zone: "{{ cs_common_zone_adv }}"
- protocol: all
- register: acl_rule
- check_mode: true
-- name: verify test create 2nd network acl rule in check mode
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
-
-- name: test create 2nd network acl rule
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 2
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: allow
- cidr: 10.23.12.0/24
- zone: "{{ cs_common_zone_adv }}"
- protocol: all
- register: acl_rule
-- name: verify test create 2nd network acl rule
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.action_policy == "allow"
- - acl_rule.cidr == "10.23.12.0/24"
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "all"
- - acl_rule.rule_position == 2
-
-- name: test create 2nd network acl rule idempotence
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 2
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: allow
- cidr: 10.23.12.0/24
- zone: "{{ cs_common_zone_adv }}"
- protocol: all
- register: acl_rule
-- name: verify test create 2nd network acl rule idempotence
- assert:
- that:
- - acl_rule is successful
- - acl_rule is not changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.action_policy == "allow"
- - acl_rule.cidr == "10.23.12.0/24"
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "all"
- - acl_rule.rule_position == 2
-
-- name: test update 2nd network acl rule to icmp
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 2
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: allow
- cidr: 10.23.12.0/24
- zone: "{{ cs_common_zone_adv }}"
- protocol: icmp
- icmp_type: 0
- icmp_code: 8
- register: acl_rule
-- name: verify test create 2nd network acl rule
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.action_policy == "allow"
- - acl_rule.cidr == "10.23.12.0/24"
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "icmp"
- - acl_rule.icmp_type == 0
- - acl_rule.icmp_code == 8
- - acl_rule.rule_position == 2
-
-- name: test update 2nd network acl rule to icmp idempotence
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 2
- vpc: "{{ cs_resource_prefix }}_vpc"
- traffic_type: egress
- action_policy: allow
- cidr: 10.23.12.0/24
- zone: "{{ cs_common_zone_adv }}"
- protocol: icmp
- icmp_type: 0
- icmp_code: 8
- register: acl_rule
-- name: verify test create 2nd network acl rule idempotence
- assert:
- that:
- - acl_rule is successful
- - acl_rule is not changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.action_policy == "allow"
- - acl_rule.cidr == "10.23.12.0/24"
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "icmp"
- - acl_rule.icmp_type == 0
- - acl_rule.icmp_code == 8
- - acl_rule.rule_position == 2
-
-- name: test absent network acl rule in check mode
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: acl_rule
- check_mode: true
-- name: verify test absent network acl rule in check mode
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 81
- - acl_rule.end_port == 81
- - acl_rule.action_policy == "deny"
- - acl_rule.cidr == "0.0.0.0/0"
- - acl_rule.traffic_type == "egress"
- - acl_rule.rule_position == 1
-
-- name: test absent network acl rule
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: acl_rule
-- name: verify test absent network acl rule
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.start_port == 81
- - acl_rule.end_port == 81
- - acl_rule.action_policy == "deny"
- - acl_rule.cidr == "0.0.0.0/0"
- - acl_rule.traffic_type == "egress"
- - acl_rule.rule_position == 1
-
-- name: test absent network acl rule idempotence
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 1
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: acl_rule
-- name: verify test absent network acl rule idempotence
- assert:
- that:
- - acl_rule is successful
- - acl_rule is not changed
-
-- name: test absent 2nd network acl rule
- cs_network_acl_rule:
- network_acl: "{{ cs_resource_prefix }}_acl"
- rule_position: 2
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: acl_rule
-- name: verify test absent 2nd network acl rule
- assert:
- that:
- - acl_rule is successful
- - acl_rule is changed
- - acl_rule.vpc == "{{ cs_resource_prefix }}_vpc"
- - acl_rule.network_acl == "{{ cs_resource_prefix }}_acl"
- - acl_rule.action_policy == "allow"
- - acl_rule.cidr == "10.23.12.0/24"
- - acl_rule.traffic_type == "egress"
- - acl_rule.protocol == "icmp"
- - acl_rule.icmp_type == 0
- - acl_rule.icmp_code == 8
- - acl_rule.rule_position == 2
diff --git a/test/integration/targets/cs_network_offering/aliases b/test/integration/targets/cs_network_offering/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_network_offering/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_network_offering/meta/main.yml b/test/integration/targets/cs_network_offering/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_network_offering/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_network_offering/tasks/main.yml b/test/integration/targets/cs_network_offering/tasks/main.yml
deleted file mode 100644
index 62d9d3e9bf..0000000000
--- a/test/integration/targets/cs_network_offering/tasks/main.yml
+++ /dev/null
@@ -1,434 +0,0 @@
----
-- name: setup
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- state: absent
- register: netoffer
-- name: verify setup
- assert:
- that:
- - netoffer is successful
-
-- name: test fail if missing name
- action: cs_network_offering
- register: netoffer
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - netoffer is failed
- - 'netoffer.msg == "missing required arguments: name"'
-
-- name: test fail if missing params
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- register: netoffer
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - netoffer is failed
- - 'netoffer.msg == "missing required arguments: display_text, guest_ip_type, supported_services, service_providers"'
-
-- name: test create network offer in check mode
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description"
- guest_ip_type: Isolated
- max_connections: 300
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- register: netoffer
- check_mode: yes
-- name: verify results of network offer in check mode
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
-
-- name: test create network offer
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description"
- guest_ip_type: Isolated
- max_connections: 300
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- register: netoffer
-- name: verify results of network offer
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description"
-
-- name: test create network offer idempotence
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description"
- guest_ip_type: Isolated
- max_connections: 300
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- register: netoffer
-- name: verify results of create network offer idempotence
- assert:
- that:
- - netoffer is successful
- - netoffer is not changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description"
-
-- name: test enabling existing network offer in check_mode
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- state: enabled
- register: netoffer
- check_mode: yes
-- name: verify results of enabling existing network offer in check_mode
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description"
-
-- name: test enabling existing network offer
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- state: enabled
- register: netoffer
-- name: verify results of enabling existing network offer
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Enabled"
- - netoffer.display_text == "network offering description"
-
-- name: test enabling existing network offer idempotence
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- state: enabled
- register: netoffer
-- name: verify results of enabling existing network idempotence
- assert:
- that:
- - netoffer is successful
- - netoffer is not changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Enabled"
- - netoffer.display_text == "network offering description"
-
-- name: test disabling network offer in check_mode
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description"
- guest_ip_type: Isolated
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: netoffer
- check_mode: yes
-- name: verify results of disabling network offer in check_mode
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Enabled"
- - netoffer.display_text == "network offering description"
-
-- name: test disabling network offer
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description"
- guest_ip_type: Isolated
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: netoffer
-- name: verify results of disabling network offer
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description"
-
-- name: test disabling network offer idempotence
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description"
- guest_ip_type: Isolated
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: netoffer
-- name: verify results of disabling network idempotence
- assert:
- that:
- - netoffer is successful
- - netoffer is not changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description"
-
-- name: test rename network offer in check_mode
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description renamed"
- guest_ip_type: Isolated
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: netoffer
- check_mode: yes
-- name: verify results of rename network offer in check_mode
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description"
-
-- name: test rename network offer
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description renamed"
- guest_ip_type: Isolated
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: netoffer
-- name: verify results of rename network offer
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description renamed"
-
-- name: test rename network offer idempotence
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description renamed"
- guest_ip_type: Isolated
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: netoffer
-- name: verify results of rename network offer idempotence
- assert:
- that:
- - netoffer is successful
- - netoffer is not changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description renamed"
-
-- name: test update offer with minimal params in check_mode
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description update"
- max_connections: 400
- register: netoffer
- check_mode: yes
-- name: verify results of update offer with minimal params in check_mode
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description renamed"
- - netoffer.max_connections == 300
-
-- name: test update offer with minimal params
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description update"
- max_connections: 400
- register: netoffer
-- name: verify results of update offer with minimal params
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description update"
- - netoffer.max_connections == 400
-
-- name: test update offer with minimal params idempotency
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description update"
- max_connections: 400
- register: netoffer
-- name: verify results of update offer with minimal params idempotency
- assert:
- that:
- - netoffer is successful
- - netoffer is not changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description update"
- - netoffer.max_connections == 400
-
-- name: test remove network offer in check_mode
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- state: absent
- register: netoffer
- check_mode: yes
-- name: verify results of rename network offer in check_mode
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description update"
-
-- name: test remove network offer
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- state: absent
- register: netoffer
-- name: verify results of rename network offer
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Disabled"
- - netoffer.display_text == "network offering description update"
-
-- name: test remove network offer idempotence
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- state: absent
- register: netoffer
-- name: verify results of rename network offer idempotence
- assert:
- that:
- - netoffer is successful
- - netoffer is not changed
-
-- name: test create enabled network offer in check mode
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description"
- guest_ip_type: Isolated
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: enabled
- register: netoffer
- check_mode: yes
-- name: verify results of create enabled network offer in check mode
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
-
-- name: test create enabled network offer
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description"
- guest_ip_type: Isolated
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: enabled
- register: netoffer
-- name: verify results of create enabled network offer
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Enabled"
- - netoffer.display_text == "network offering description"
-
-- name: test create enabled network offer idempotence
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- display_text: "network offering description"
- guest_ip_type: Isolated
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, Firewall, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: enabled
- register: netoffer
-- name: verify results of create enabled network offer idempotence
- assert:
- that:
- - netoffer is successful
- - netoffer is not changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Enabled"
- - netoffer.display_text == "network offering description"
-
-- name: remove network offer
- cs_network_offering:
- name: "{{ cs_resource_prefix }}_name"
- state: absent
- register: netoffer
-- name: verify results of remove network offer
- assert:
- that:
- - netoffer is successful
- - netoffer is changed
- - netoffer.name == "{{ cs_resource_prefix }}_name"
- - netoffer.guest_ip_type == "Isolated"
- - netoffer.state == "Enabled"
- - netoffer.display_text == "network offering description"
diff --git a/test/integration/targets/cs_physical_network/aliases b/test/integration/targets/cs_physical_network/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_physical_network/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_physical_network/meta/main.yml b/test/integration/targets/cs_physical_network/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_physical_network/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_physical_network/tasks/main.yml b/test/integration/targets/cs_physical_network/tasks/main.yml
deleted file mode 100644
index 173fba8ac0..0000000000
--- a/test/integration/targets/cs_physical_network/tasks/main.yml
+++ /dev/null
@@ -1,238 +0,0 @@
----
-# Create a new zone - the default one is enabled
-- name: assure zone for tests
- cs_zone:
- name: cs-test-zone
- state: present
- dns1: 8.8.8.8
- network_type: Advanced
- register: cszone
-
-- name: ensure the zone is disabled
- cs_zone:
- name: "{{ cszone.name }}"
- state: disabled
- register: cszone
-
-- name: setup a network in check_mode
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- isolation_method: VLAN
- broadcast_domain_range: ZONE
- check_mode: yes
- register: pn
-- name: validate setup a network
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.zone == cszone.name
-
-- name: setup a network
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- isolation_method: VLAN
- broadcast_domain_range: ZONE
- register: pn
-- name: validate setup a network
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.name == 'net01'
- - pn.broadcast_domain_range == 'ZONE'
- - pn.isolation_method == 'VLAN'
- - pn.zone == cszone.name
- - pn.state == 'Disabled'
-
-- name: setup a network idempotence
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- isolation_method: VLAN
- broadcast_domain_range: ZONE
- register: pn
-- name: validate setup a network idempotence
- assert:
- that:
- - pn is successful
- - pn is not changed
- - pn.name == 'net01'
- - pn.broadcast_domain_range == 'ZONE'
- - pn.isolation_method == 'VLAN'
- - pn.zone == cszone.name
- - pn.state == 'Disabled'
-
-- name: set a tag on a network
- cs_physical_network:
- name: net01
- tag: overlay
- zone: "{{ cszone.name }}"
- ignore_errors: true
- register: pn
-- name: validate set a tag on a network
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.name == 'net01'
- - pn.broadcast_domain_range == 'ZONE'
- - pn.isolation_method == 'VLAN'
- - pn.zone == cszone.name
- - pn.tags == 'overlay'
- - pn.state == 'Disabled'
-
-- name: Remove tag on a network
- cs_physical_network:
- name: net01
- tag: ""
- zone: "{{ cszone.name }}"
- register: pn
-- name: validate remove tag on a network
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.name == 'net01'
- - pn.broadcast_domain_range == 'ZONE'
- - pn.isolation_method == 'VLAN'
- - pn.zone == cszone.name
- - pn.tags is undefined
- - pn.state == 'Disabled'
-
-- name: ensure a network is enabled with specific nsps enabled in check mode
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- isolation_method: VLAN
- vlan: 100-200,300-400
- broadcast_domain_range: ZONE
- state: enabled
- nsps_enabled:
- - virtualrouter
- - internallbvm
- - vpcvirtualrouter
- check_mode: yes
- register: pn
-- name: validate ensure a network is enabled with specific nsps enabled
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.name == 'net01'
- - pn.zone == cszone.name
- - "'internallbvm' in pn.nsps_enabled"
- - "'virtualrouter' in pn.nsps_enabled"
- - "'vpcvirtualrouter' in pn.nsps_enabled"
-
-- name: ensure a network is enabled with specific nsps enabled
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- isolation_method: VLAN
- vlan: 100-200,300-400
- broadcast_domain_range: ZONE
- state: enabled
- nsps_enabled:
- - virtualrouter
- - internallbvm
- - vpcvirtualrouter
- register: pn
-- name: validate ensure a network is enabled with specific nsps enabled
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.name == 'net01'
- - pn.broadcast_domain_range == 'ZONE'
- - pn.isolation_method == 'VLAN'
- - pn.zone == cszone.name
- - pn.vlan == '100-200,300-400'
- - pn.state == 'Enabled'
- - "'internallbvm' in pn.nsps_enabled"
- - "'virtualrouter' in pn.nsps_enabled"
- - "'vpcvirtualrouter' in pn.nsps_enabled"
-
-- name: ensure a network is disabled
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- state: disabled
- register: pn
-- name: validate ensure a network is disabled
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.name == 'net01'
- - pn.broadcast_domain_range == 'ZONE'
- - pn.isolation_method == 'VLAN'
- - pn.zone == cszone.name
- - pn.tags is undefined
- - pn.state == 'Disabled'
-
-- name: ensure a network is enabled
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- state: enabled
- register: pn
-- name: validate ensure a network is enabled
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.name == 'net01'
- - pn.broadcast_domain_range == 'ZONE'
- - pn.isolation_method == 'VLAN'
- - pn.zone == cszone.name
- - pn.tags is undefined
- - pn.state == 'Enabled'
-
-- name: ensure a network is not absent in check mode
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- state: absent
- check_mode: yes
- register: pn
-- name: validate ensure a network is absent
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.zone == cszone.name
-
-- name: ensure a network is absent
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- state: absent
- register: pn
-- name: validate ensure a network is absent
- assert:
- that:
- - pn is successful
- - pn is changed
- - pn.zone == cszone.name
- - pn.name == 'net01'
-
-- name: ensure a network is absent idempotence
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- state: absent
- register: pn
-- name: validate ensure a network is absent idempotence
- assert:
- that:
- - pn is successful
- - pn is not changed
- - pn.zone == cszone.name
-
-- name: cleanup zone
- cs_zone:
- name: "{{ cszone.name }}"
- state: absent \ No newline at end of file
diff --git a/test/integration/targets/cs_pod/aliases b/test/integration/targets/cs_pod/aliases
deleted file mode 100644
index c89c86d7d2..0000000000
--- a/test/integration/targets/cs_pod/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group1
diff --git a/test/integration/targets/cs_pod/meta/main.yml b/test/integration/targets/cs_pod/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_pod/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_pod/tasks/main.yml b/test/integration/targets/cs_pod/tasks/main.yml
deleted file mode 100644
index 600bc22be0..0000000000
--- a/test/integration/targets/cs_pod/tasks/main.yml
+++ /dev/null
@@ -1,301 +0,0 @@
----
-- name: setup zone is present
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- dns1: 8.8.8.8
- dns2: 8.8.4.4
- network_type: Basic
- register: zone
-- name: verify setup zone is present
- assert:
- that:
- - zone is successful
-
-- name: setup pod is absent
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: pod
-- name: verify setup pod is absent
- assert:
- that:
- - pod is successful
-
-- name: test fail if missing name
- cs_pod:
- register: pod
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - pod is failed
- - "pod.msg == 'missing required arguments: name'"
-
-
-- name: test create pod in check mode
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- start_ip: 10.100.10.101
- gateway: 10.100.10.1
- netmask: 255.255.255.0
- register: pod_origin
- check_mode: true
-- name: verify test create pod in check mode
- assert:
- that:
- - pod_origin is changed
- - pod_origin.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test create pod
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- start_ip: 10.100.10.101
- gateway: 10.100.10.1
- netmask: 255.255.255.0
- register: pod_origin
-- name: verify test create pod
- assert:
- that:
- - pod_origin is changed
- - pod_origin.allocation_state == "Enabled"
- - pod_origin.start_ip == "10.100.10.101"
- - pod_origin.end_ip == "10.100.10.254"
- - pod_origin.gateway == "10.100.10.1"
- - pod_origin.netmask == "255.255.255.0"
- - pod_origin.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test create pod idempotence
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- start_ip: 10.100.10.101
- gateway: 10.100.10.1
- netmask: 255.255.255.0
- register: pod
-- name: verify test create pod idempotence
- assert:
- that:
- - pod is not changed
- - pod.allocation_state == "Enabled"
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.1"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test update pod in check mode
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- gateway: 10.100.10.2
- netmask: 255.255.255.0
- register: pod
- check_mode: true
-- name: verify test update pod in check mode
- assert:
- that:
- - pod is changed
- - pod.allocation_state == "Enabled"
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.1"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test update pod
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- gateway: 10.100.10.2
- netmask: 255.255.255.0
- register: pod
-- name: verify test update pod
- assert:
- that:
- - pod is changed
- - pod.allocation_state == "Enabled"
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test update pod idempotence
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- gateway: 10.100.10.2
- netmask: 255.255.255.0
- register: pod
-- name: verify test update pod idempotence
- assert:
- that:
- - pod is not changed
- - pod.allocation_state == "Enabled"
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test disable pod in check mode
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: disabled
- register: pod
- check_mode: true
-- name: verify test enable pod in check mode
- assert:
- that:
- - pod is changed
- - pod.allocation_state == "Enabled"
- - pod.id == pod_origin.id
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test disable pod
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: disabled
- register: pod
-- name: verify test enable pod
- assert:
- that:
- - pod is changed
- - pod.allocation_state == "Disabled"
- - pod.id == pod_origin.id
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test disable pod idempotence
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: disabled
- register: pod
-- name: verify test enable pod idempotence
- assert:
- that:
- - pod is not changed
- - pod.allocation_state == "Disabled"
- - pod.id == pod_origin.id
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test enable pod in check mode
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: enabled
- register: pod
- check_mode: true
-- name: verify test disable pod in check mode
- assert:
- that:
- - pod is changed
- - pod.allocation_state == "Disabled"
- - pod.id == pod_origin.id
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test enable pod
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: enabled
- register: pod
-- name: verify test disable pod
- assert:
- that:
- - pod is changed
- - pod.allocation_state == "Enabled"
- - pod.id == pod_origin.id
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-
-- name: test enable pod idempotence
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: enabled
- register: pod
-- name: verify test enabled pod idempotence
- assert:
- that:
- - pod is not changed
- - pod.allocation_state == "Enabled"
- - pod.id == pod_origin.id
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test absent pod in check mode
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: pod
- check_mode: true
-- name: verify test create pod in check mode
- assert:
- that:
- - pod is changed
- - pod.id == pod_origin.id
- - pod.allocation_state == "Enabled"
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test absent pod
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: pod
-- name: verify test create pod
- assert:
- that:
- - pod is changed
- - pod.id == pod_origin.id
- - pod.allocation_state == "Enabled"
- - pod.start_ip == "10.100.10.101"
- - pod.end_ip == "10.100.10.254"
- - pod.gateway == "10.100.10.2"
- - pod.netmask == "255.255.255.0"
- - pod.zone == "{{ cs_resource_prefix }}-zone"
-
-- name: test absent pod idempotence
- cs_pod:
- name: "{{ cs_resource_prefix }}-pod"
- zone: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: pod
-- name: verify test absent pod idempotence
- assert:
- that:
- - pod is not changed
diff --git a/test/integration/targets/cs_portforward/aliases b/test/integration/targets/cs_portforward/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_portforward/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_portforward/defaults/main.yml b/test/integration/targets/cs_portforward/defaults/main.yml
deleted file mode 100644
index 89842c5573..0000000000
--- a/test/integration/targets/cs_portforward/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-cs_portforward_public_ip: "10.100.212.5"
-cs_portforward_vm: "cs-{{ cs_resource_prefix }}-pf-vm"
diff --git a/test/integration/targets/cs_portforward/meta/main.yml b/test/integration/targets/cs_portforward/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_portforward/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_portforward/tasks/main.yml b/test/integration/targets/cs_portforward/tasks/main.yml
deleted file mode 100644
index d1b6946e3a..0000000000
--- a/test/integration/targets/cs_portforward/tasks/main.yml
+++ /dev/null
@@ -1,255 +0,0 @@
----
-- name: network setup
- cs_network:
- name: ansible test
- network_offering: DefaultIsolatedNetworkOfferingWithSourceNatService
- network_domain: example.com
- zone: "{{ cs_common_zone_adv }}"
- register: net
-- name: verify network setup
- assert:
- that:
- - net is successful
-
-- name: instance setup
- cs_instance:
- name: "{{ cs_portforward_vm }}"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- network: "ansible test"
- register: instance
-- name: verify instance setup
- assert:
- that:
- - instance is successful
-
-- name: public ip address setup
- cs_ip_address:
- network: ansible test
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
-- name: verify public ip address setup
- assert:
- that:
- - ip_address is successful
-
-- name: set ip address as fact
- set_fact:
- cs_portforward_public_ip: "{{ ip_address.ip_address }}"
-
-- name: clear existing port forwarding
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- private_port: 8080
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: pf
-- name: verify clear existing port forwarding
- assert:
- that:
- - pf is successful
-
-- name: test fail if missing params
- action: cs_portforward
- register: pf
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - pf is failed
- - 'pf.msg.startswith("missing required arguments: ")'
-
-- name: test present port forwarding in check mode
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- vm: "{{ cs_portforward_vm }}"
- private_port: 8080
- zone: "{{ cs_common_zone_adv }}"
- register: pf
- check_mode: true
-- name: verify results of present port forwarding in check mode
- assert:
- that:
- - pf is successful
- - pf is changed
-
-- name: test present port forwarding
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- vm: "{{ cs_portforward_vm }}"
- private_port: 8080
- zone: "{{ cs_common_zone_adv }}"
- register: pf
-- name: verify results of present port forwarding
- assert:
- that:
- - pf is successful
- - pf is changed
- - pf.vm_name == "{{ cs_portforward_vm }}"
- - pf.ip_address == "{{ cs_portforward_public_ip }}"
- - pf.public_port == 80
- - pf.public_end_port == 80
- - pf.private_port == 8080
- - pf.private_end_port == 8080
-
-- name: test present port forwarding idempotence
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- vm: "{{ cs_portforward_vm }}"
- private_port: 8080
- zone: "{{ cs_common_zone_adv }}"
- register: pf
-- name: verify results of present port forwarding idempotence
- assert:
- that:
- - pf is successful
- - pf is not changed
- - pf.vm_name == "{{ cs_portforward_vm }}"
- - pf.ip_address == "{{ cs_portforward_public_ip }}"
- - pf.public_port == 80
- - pf.public_end_port == 80
- - pf.private_port == 8080
- - pf.private_end_port == 8080
-
-- name: test change port forwarding in check mode
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- vm: "{{ cs_portforward_vm }}"
- private_port: 8888
- zone: "{{ cs_common_zone_adv }}"
- register: pf
- check_mode: true
-- name: verify results of change port forwarding in check mode
- assert:
- that:
- - pf is successful
- - pf is changed
- - pf.vm_name == "{{ cs_portforward_vm }}"
- - pf.ip_address == "{{ cs_portforward_public_ip }}"
- - pf.public_port == 80
- - pf.public_end_port == 80
- - pf.private_port == 8080
- - pf.private_end_port == 8080
-
-- name: test change port forwarding
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- vm: "{{ cs_portforward_vm }}"
- private_port: 8888
- zone: "{{ cs_common_zone_adv }}"
- register: pf
-- name: verify results of change port forwarding
- assert:
- that:
- - pf is successful
- - pf is changed
- - pf.vm_name == "{{ cs_portforward_vm }}"
- - pf.ip_address == "{{ cs_portforward_public_ip }}"
- - pf.public_port == 80
- - pf.public_end_port == 80
- - pf.private_port == 8888
- - pf.private_end_port == 8888
-
-- name: test change port forwarding idempotence
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- vm: "{{ cs_portforward_vm }}"
- private_port: 8888
- zone: "{{ cs_common_zone_adv }}"
- register: pf
-- name: verify results of change port forwarding idempotence
- assert:
- that:
- - pf is successful
- - pf is not changed
- - pf.vm_name == "{{ cs_portforward_vm }}"
- - pf.ip_address == "{{ cs_portforward_public_ip }}"
- - pf.public_port == 80
- - pf.public_end_port == 80
- - pf.private_port == 8888
- - pf.private_end_port == 8888
-
-- name: test absent port forwarding in check mode
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- private_port: 8888
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: pf
- check_mode: true
-- name: verify results of absent port forwarding in check mode
- assert:
- that:
- - pf is successful
- - pf is changed
- - pf.vm_name == "{{ cs_portforward_vm }}"
- - pf.ip_address == "{{ cs_portforward_public_ip }}"
- - pf.public_port == 80
- - pf.public_end_port == 80
- - pf.private_port == 8888
- - pf.private_end_port == 8888
-
-- name: test absent port forwarding
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- private_port: 8888
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: pf
-- name: verify results of absent port forwarding
- assert:
- that:
- - pf is successful
- - pf is changed
- - pf.vm_name == "{{ cs_portforward_vm }}"
- - pf.ip_address == "{{ cs_portforward_public_ip }}"
- - pf.public_port == 80
- - pf.public_end_port == 80
- - pf.private_port == 8888
- - pf.private_end_port == 8888
-
-- name: test absent port forwarding idempotence
- cs_portforward:
- ip_address: "{{ cs_portforward_public_ip }}"
- public_port: 80
- private_port: 8888
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: pf
-- name: verify results of absent port forwarding idempotence
- assert:
- that:
- - pf is successful
- - pf is not changed
-
-- name: instance cleanup
- cs_instance:
- name: "{{ cs_portforward_vm }}"
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
- register: instance
-- name: verify instance cleanup
- assert:
- that:
- - instance is successful
-
-- name: network cleanup
- cs_network:
- name: ansible test
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: net
-- name: verify network cleanup
- assert:
- that:
- - net is successful
diff --git a/test/integration/targets/cs_project/aliases b/test/integration/targets/cs_project/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_project/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_project/meta/main.yml b/test/integration/targets/cs_project/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_project/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_project/tasks/main.yml b/test/integration/targets/cs_project/tasks/main.yml
deleted file mode 100644
index 7ece89d4bf..0000000000
--- a/test/integration/targets/cs_project/tasks/main.yml
+++ /dev/null
@@ -1,149 +0,0 @@
----
-- name: ensure project does not exist
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: prj
-- name: verify project did not exist
- assert:
- that:
- - prj is successful
-
-- name: test create project in check mode
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- register: prj
- check_mode: true
-- name: verify test create project in check mode
- assert:
- that:
- - prj is changed
-
-- name: test create project
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- register: prj
-- name: verify test create project
- assert:
- that:
- - prj is changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
-
-- name: test create project idempotence
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- register: prj
-- name: verify test create project idempotence
- assert:
- that:
- - prj is not changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
-
-- name: test suspend project in check mode
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: suspended
- register: prj
- check_mode: true
-- name: verify test suspend project in check mode
- assert:
- that:
- - prj is changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
- - prj.state != "Suspended"
-
-- name: test suspend project
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: suspended
- register: prj
-- name: verify test suspend project
- assert:
- that:
- - prj is changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
- - prj.state == "Suspended"
-
-- name: test suspend project idempotence
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: suspended
- register: prj
-- name: verify test suspend project idempotence
- assert:
- that:
- - prj is not changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
- - prj.state == "Suspended"
-
-- name: test activate project in check mode
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: active
- register: prj
- check_mode: true
-- name: verify test activate project in check mode
- assert:
- that:
- - prj is changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
- - prj.state != "Active"
-
-- name: test activate project
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: active
- register: prj
-- name: verify test activate project
- assert:
- that:
- - prj is changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
- - prj.state == "Active"
-
-- name: test activate project idempotence
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: active
- register: prj
-- name: verify test activate project idempotence
- assert:
- that:
- - prj is not changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
- - prj.state == "Active"
-
-- name: test delete project in check mode
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: prj
- check_mode: true
-- name: verify test delete project in check mode
- assert:
- that:
- - prj is changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
- - prj.state == "Active"
-
-- name: test delete project
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: prj
-- name: verify test delete project
- assert:
- that:
- - prj is changed
- - prj.name == "{{ cs_resource_prefix }}-prj"
- - prj.state == "Active"
-
-- name: test delete project idempotence
- cs_project:
- name: "{{ cs_resource_prefix }}-prj"
- state: absent
- register: prj
-- name: verify test delete project idempotence
- assert:
- that:
- - prj is not changed
diff --git a/test/integration/targets/cs_region/aliases b/test/integration/targets/cs_region/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_region/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_region/meta/main.yml b/test/integration/targets/cs_region/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_region/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_region/tasks/main.yml b/test/integration/targets/cs_region/tasks/main.yml
deleted file mode 100644
index d728308354..0000000000
--- a/test/integration/targets/cs_region/tasks/main.yml
+++ /dev/null
@@ -1,154 +0,0 @@
----
-- name: setup
- cs_region:
- id: 2
- state: absent
- register: region
-- name: verify setup
- assert:
- that:
- - region is successful
-
-- name: test fail if missing params
- cs_region:
- register: region
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - region is failed
- - "region.msg.startswith('missing required arguments: ')"
-
-- name: test create region in check mode
- cs_region:
- id: 2
- name: geneva
- endpoint: https://cloud.gva.example.com
- register: region
- check_mode: true
-- name: verify test create region in check mode
- assert:
- that:
- - region is changed
-
-- name: test create region in check mode
- cs_region:
- id: 2
- name: geneva
- endpoint: https://cloud.gva.example.com
- register: region
-- name: verify test create region in check mode
- assert:
- that:
- - region is changed
- - region.name == 'geneva'
- - region.id == 2
- - region.endpoint == 'https://cloud.gva.example.com'
- - region.gslb_service_enabled == true
- - region.portable_ip_service_enabled == false
-
-- name: test create region idempotence
- cs_region:
- id: 2
- name: geneva
- endpoint: https://cloud.gva.example.com
- register: region
-- name: verify test create region idempotence
- assert:
- that:
- - region is not changed
- - region.name == 'geneva'
- - region.id == 2
- - region.endpoint == 'https://cloud.gva.example.com'
- - region.gslb_service_enabled == true
- - region.portable_ip_service_enabled == false
-
-- name: test update region in check mode
- cs_region:
- id: 2
- name: zuerich
- endpoint: https://cloud.zrh.example.com
- register: region
- check_mode: true
-- name: verify test update region in check mode
- assert:
- that:
- - region is changed
- - region.name == 'geneva'
- - region.id == 2
- - region.endpoint == 'https://cloud.gva.example.com'
- - region.gslb_service_enabled == true
- - region.portable_ip_service_enabled == false
-
-- name: test update region
- cs_region:
- id: 2
- name: zuerich
- endpoint: https://cloud.zrh.example.com
- register: region
-- name: verify test update region
- assert:
- that:
- - region is changed
- - region.name == 'zuerich'
- - region.id == 2
- - region.endpoint == 'https://cloud.zrh.example.com'
- - region.gslb_service_enabled == true
- - region.portable_ip_service_enabled == false
-
-- name: test update region idempotence
- cs_region:
- id: 2
- name: zuerich
- endpoint: https://cloud.zrh.example.com
- register: region
-- name: verify test update region idempotence
- assert:
- that:
- - region is not changed
- - region.name == 'zuerich'
- - region.id == 2
- - region.endpoint == 'https://cloud.zrh.example.com'
- - region.gslb_service_enabled == true
- - region.portable_ip_service_enabled == false
-
-- name: test remove region in check mdoe
- cs_region:
- id: 2
- state: absent
- register: region
- check_mode: true
-- name: verify test remove region in check mode
- assert:
- that:
- - region is changed
- - region.name == 'zuerich'
- - region.id == 2
- - region.endpoint == 'https://cloud.zrh.example.com'
- - region.gslb_service_enabled == true
- - region.portable_ip_service_enabled == false
-
-- name: test remove region
- cs_region:
- id: 2
- state: absent
- register: region
-- name: verify test remove region
- assert:
- that:
- - region is changed
- - region.name == 'zuerich'
- - region.id == 2
- - region.endpoint == 'https://cloud.zrh.example.com'
- - region.gslb_service_enabled == true
- - region.portable_ip_service_enabled == false
-
-- name: test remove region idempotence
- cs_region:
- id: 2
- state: absent
- register: region
-- name: verify test remove region idempotence
- assert:
- that:
- - region is not changed
diff --git a/test/integration/targets/cs_resourcelimit/aliases b/test/integration/targets/cs_resourcelimit/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_resourcelimit/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_resourcelimit/meta/main.yml b/test/integration/targets/cs_resourcelimit/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_resourcelimit/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_resourcelimit/tasks/cpu.yml b/test/integration/targets/cs_resourcelimit/tasks/cpu.yml
deleted file mode 100644
index baa736b40d..0000000000
--- a/test/integration/targets/cs_resourcelimit/tasks/cpu.yml
+++ /dev/null
@@ -1,122 +0,0 @@
----
-- name: setup cpu limits account
- cs_resourcelimit:
- type: cpu
- limit: 20
- account: "{{ cs_resource_prefix }}_user"
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify setup cpu limits account
- assert:
- that:
- - rl is successful
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.account == "{{ cs_resource_prefix }}_user"
- - rl.limit == 20
- - rl.resource_type == "cpu"
-
-- name: setup cpu limits for domain
- cs_resourcelimit:
- type: cpu
- limit: -1
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify setup cpu limits for domain
- assert:
- that:
- - rl is successful
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == -1
- - rl.resource_type == "cpu"
-
-- name: set cpu limits for domain in check mode
- cs_resourcelimit:
- type: cpu
- limit: 12
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
- check_mode: true
-- name: verify set cpu limits for domain in check mode
- assert:
- that:
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == -1
- - rl.resource_type == "cpu"
-
-- name: set cpu limits for domain
- cs_resourcelimit:
- type: cpu
- limit: 12
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify set cpu limits for domain
- assert:
- that:
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == 12
- - rl.resource_type == "cpu"
-
-- name: set cpu limits for domain idempotence
- cs_resourcelimit:
- type: cpu
- limit: 12
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify set cpu limits for domain
- assert:
- that:
- - rl is not changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == 12
- - rl.resource_type == "cpu"
-
-- name: set cpu limits for account in check mode
- cs_resourcelimit:
- type: cpu
- limit: 10
- account: "{{ cs_resource_prefix }}_user"
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
- check_mode: true
-- name: verify set cpu limits for account in check mode
- assert:
- that:
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.account == "{{ cs_resource_prefix }}_user"
- - rl.limit == 20
- - rl.resource_type == "cpu"
-
-- name: set cpu limits for account
- cs_resourcelimit:
- type: cpu
- limit: 10
- account: "{{ cs_resource_prefix }}_user"
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify set cpu limits for account
- assert:
- that:
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.account == "{{ cs_resource_prefix }}_user"
- - rl.limit == 10
- - rl.resource_type == "cpu"
-
-- name: set cpu limits for account idempotence
- cs_resourcelimit:
- type: cpu
- limit: 10
- account: "{{ cs_resource_prefix }}_user"
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify set cpu limits for account idempotence
- assert:
- that:
- - rl is not changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.account == "{{ cs_resource_prefix }}_user"
- - rl.limit == 10
- - rl.resource_type == "cpu"
diff --git a/test/integration/targets/cs_resourcelimit/tasks/instance.yml b/test/integration/targets/cs_resourcelimit/tasks/instance.yml
deleted file mode 100644
index 11a1fe0721..0000000000
--- a/test/integration/targets/cs_resourcelimit/tasks/instance.yml
+++ /dev/null
@@ -1,108 +0,0 @@
----
-- name: setup instance limits account
- cs_resourcelimit:
- type: instance
- limit: 20
- account: "{{ cs_resource_prefix }}_user"
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify setup instance limits account
- assert:
- that:
- - rl is successful
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.account == "{{ cs_resource_prefix }}_user"
- - rl.limit == 20
- - rl.resource_type == "instance"
-
-- name: set instance limits for domain in check mode
- cs_resourcelimit:
- type: instance
- limit: 12
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
- check_mode: true
-- name: verify set instance limits for domain in check mode
- assert:
- that:
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == 20
- - rl.resource_type == "instance"
-
-- name: set instance limits for domain
- cs_resourcelimit:
- type: instance
- limit: 12
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify set instance limits for domain
- assert:
- that:
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == 12
- - rl.resource_type == "instance"
-
-- name: set instance limits for domain idempotence
- cs_resourcelimit:
- type: instance
- limit: 12
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify set instance limits for domain
- assert:
- that:
- - rl is not changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == 12
- - rl.resource_type == "instance"
-
-- name: set instance limits for account in check mode
- cs_resourcelimit:
- type: instance
- limit: 10
- account: "{{ cs_resource_prefix }}_user"
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
- check_mode: true
-- name: verify set instance limits for account in check mode
- assert:
- that:
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.account == "{{ cs_resource_prefix }}_user"
- - rl.limit != 10
- - rl.resource_type == "instance"
-
-- name: set instance limits for account
- cs_resourcelimit:
- type: instance
- limit: 10
- account: "{{ cs_resource_prefix }}_user"
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify set instance limits for account
- assert:
- that:
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.account == "{{ cs_resource_prefix }}_user"
- - rl.limit == 10
- - rl.resource_type == "instance"
-
-- name: set instance limits for account idempotence
- cs_resourcelimit:
- type: instance
- limit: 10
- account: "{{ cs_resource_prefix }}_user"
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify set instance limits for account idempotence
- assert:
- that:
- - rl is not changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.account == "{{ cs_resource_prefix }}_user"
- - rl.limit == 10
- - rl.resource_type == "instance"
diff --git a/test/integration/targets/cs_resourcelimit/tasks/main.yml b/test/integration/targets/cs_resourcelimit/tasks/main.yml
deleted file mode 100644
index fcf9279f9f..0000000000
--- a/test/integration/targets/cs_resourcelimit/tasks/main.yml
+++ /dev/null
@@ -1,104 +0,0 @@
----
-- name: setup domain
- cs_domain: path={{ cs_resource_prefix }}-domain
- register: dom
-- name: verify setup domain
- assert:
- that:
- - dom is successful
-
-- name: setup account
- cs_account:
- name: "{{ cs_resource_prefix }}_user"
- username: "{{ cs_resource_prefix }}_username"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- network_domain: "{{ cs_resource_prefix }}-local"
- domain: "{{ cs_resource_prefix }}-domain"
- register: acc
-- name: verify setup account
- assert:
- that:
- - acc is successful
-
-- name: test failed unkonwn type
- cs_resourcelimit:
- type: unkonwn
- limit: 20
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
- ignore_errors: yes
-- name: verify test failed unkonwn type
- assert:
- that:
- - rl is failed
-
-- name: test failed missing type
- cs_resourcelimit:
- register: rl
- ignore_errors: yes
-- name: verify test failed missing type
- assert:
- that:
- - rl is failed
-
-- name: setup resource limits domain
- cs_resourcelimit:
- type: instance
- limit: 10
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify setup resource limits domain
- assert:
- that:
- - rl is successful
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == 10
-
-- name: set resource limits domain to 20 in check mode
- cs_resourcelimit:
- type: instance
- limit: 20
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
- check_mode: true
-- name: verify setup resource limits domain to 20 in check mode
- assert:
- that:
- - rl is successful
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == 10
-
-- name: set resource limits domain to 20
- cs_resourcelimit:
- type: instance
- limit: 20
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify setup resource limits domain to 20
- assert:
- that:
- - rl is successful
- - rl is changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == 20
-
-- name: set resource limits domain to 20 idempotence
- cs_resourcelimit:
- type: instance
- limit: 20
- domain: "{{ cs_resource_prefix }}-domain"
- register: rl
-- name: verify setup resource limits domain to 20 idempotence
- assert:
- that:
- - rl is successful
- - rl is not changed
- - rl.domain == "{{ cs_resource_prefix }}-domain"
- - rl.limit == 20
-
-- include: instance.yml
-- include: cpu.yml
diff --git a/test/integration/targets/cs_role/aliases b/test/integration/targets/cs_role/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_role/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_role/meta/main.yml b/test/integration/targets/cs_role/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_role/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_role/tasks/main.yml b/test/integration/targets/cs_role/tasks/main.yml
deleted file mode 100644
index 11c1653db7..0000000000
--- a/test/integration/targets/cs_role/tasks/main.yml
+++ /dev/null
@@ -1,130 +0,0 @@
----
-- name: setup
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- state: absent
- register: role
-- name: verify setup
- assert:
- that:
- - role is successful
-
-- name: test fail if missing params
- cs_role:
- register: role
- ignore_errors: true
-- name: verifytest fail if missing params
- assert:
- that:
- - role is failed
- - "role.msg.startswith('missing required arguments: ')"
-
-- name: test create role in check mode
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- role_type: DomainAdmin
- register: role
- check_mode: true
-- name: verify test create role in check mode
- assert:
- that:
- - role is changed
-
-- name: test create role
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- role_type: DomainAdmin
- register: role
-- name: verify test create role
- assert:
- that:
- - role is changed
- - role.name == '{{ cs_resource_prefix }}-role'
- - role.role_type == 'DomainAdmin'
-
-- name: test create role idempotence
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- role_type: DomainAdmin
- register: role
-- name: verify test create role idempotence
- assert:
- that:
- - role is not changed
- - role.name == '{{ cs_resource_prefix }}-role'
- - role.role_type == 'DomainAdmin'
-
-- name: test update role in check mode
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- description: "{{ cs_resource_prefix }}-role-description"
- role_type: DomainAdmin
- register: role
- check_mode: true
-- name: verify test update role in check mode
- assert:
- that:
- - role is changed
- - role.name == '{{ cs_resource_prefix }}-role'
- - "role.description is not defined"
- - role.role_type == 'DomainAdmin'
-
-- name: test update role
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- description: "{{ cs_resource_prefix }}-role-description"
- role_type: DomainAdmin
- register: role
-- name: verify test update role
- assert:
- that:
- - role is changed
- - role.name == '{{ cs_resource_prefix }}-role'
- - role.description == '{{ cs_resource_prefix }}-role-description'
- - role.role_type == 'DomainAdmin'
-
-- name: test update role idempotence
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- description: "{{ cs_resource_prefix }}-role-description"
- register: role
-- name: verify test update role idempotence
- assert:
- that:
- - role is not changed
- - role.name == '{{ cs_resource_prefix }}-role'
- - role.description == '{{ cs_resource_prefix }}-role-description'
- - role.role_type == 'DomainAdmin'
-
-- name: test remove role in check mdoe
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- state: absent
- register: role
- check_mode: true
-- name: verify test remove role in check mode
- assert:
- that:
- - role is changed
- - role.name == '{{ cs_resource_prefix }}-role'
- - role.role_type == 'DomainAdmin'
-
-- name: test remove role
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- state: absent
- register: role
-- name: verify test remove role
- assert:
- that:
- - role is changed
-
-- name: test remove role idempotence
- cs_role:
- name: "{{ cs_resource_prefix }}-role"
- state: absent
- register: role
-- name: verify test remove role idempotence
- assert:
- that:
- - role is not changed
diff --git a/test/integration/targets/cs_role_permission/aliases b/test/integration/targets/cs_role_permission/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_role_permission/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_role_permission/meta/main.yml b/test/integration/targets/cs_role_permission/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_role_permission/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_role_permission/tasks/main.yml b/test/integration/targets/cs_role_permission/tasks/main.yml
deleted file mode 100644
index 95e2df84d9..0000000000
--- a/test/integration/targets/cs_role_permission/tasks/main.yml
+++ /dev/null
@@ -1,303 +0,0 @@
-- name: pre-setup
- cs_role:
- name: "testRole"
- register: testRole
-- name: verify pre-setup
- assert:
- that:
- - testRole is successful
-
-- name: setup
- cs_role_permission:
- name: "fakeRolePerm"
- role: "{{ testRole.id }}"
- state: absent
- register: roleperm
-- name: verify setup
- assert:
- that:
- - roleperm is successful
-
-- name: setup2
- cs_role_permission:
- name: "fakeRolePerm2"
- role: "{{ testRole.id }}"
- state: absent
- register: roleperm2
-- name: verify setup2
- assert:
- that:
- - roleperm2 is successful
-
-- name: test fail if missing name
- cs_role_permission:
- role: "{{ testRole.id }}"
- register: roleperm
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - roleperm is failed
- - 'roleperm.msg == "missing required arguments: name"'
-
-- name: test fail if missing role
- cs_role_permission:
- name: "fakeRolePerm"
- register: roleperm
- ignore_errors: true
-- name: verify results of fail if missing role
- assert:
- that:
- - roleperm is failed
- - 'roleperm.msg == "missing required arguments: role"'
-
-- name: test fail if role does not exist
- cs_role_permission:
- name: "fakeRolePerm"
- role: "testtest"
- register: roleperm
- ignore_errors: true
-- name: verify results of fail if role does not exist
- assert:
- that:
- - roleperm is failed
- - roleperm.msg == "Role 'testtest' not found"
-
-- name: test fail if state is incorrcect
- cs_role_permission:
- state: badstate
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- permission: allow
- register: roleperm
- ignore_errors: true
-- name: verify results of fail if state is incorrcect
- assert:
- that:
- - roleperm is failed
- - 'roleperm.msg == "value of state must be one of: present, absent, got: badstate"'
-
-- name: test create role permission in check mode
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- permission: allow
- description: "fakeRolePerm description"
- register: roleperm
- check_mode: yes
-- name: verify results of role permission in check mode
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
-
-- name: test create role permission
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- permission: allow
- description: "fakeRolePerm description"
- register: roleperm
-- name: verify results of role permission
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
- - roleperm.name == "fakeRolePerm"
- - roleperm.permission == "allow"
- - roleperm.description == "fakeRolePerm description"
-
-- name: test create role permission idempotency
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- permission: allow
- description: "fakeRolePerm description"
- register: roleperm
-- name: verify results of role permission idempotency
- assert:
- that:
- - roleperm is successful
- - roleperm is not changed
- - roleperm.name == "fakeRolePerm"
- - roleperm.permission == "allow"
- - roleperm.description == "fakeRolePerm description"
-
-- name: test update role permission in check_mode
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- permission: deny
- description: "fakeRolePerm description"
- register: roleperm
- check_mode: yes
-- name: verify results of update role permission in check mode
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
- - roleperm.name == "fakeRolePerm"
- - roleperm.permission == "allow"
- - roleperm.description == "fakeRolePerm description"
-
-- name: test update role permission
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- permission: deny
- description: "fakeRolePerm description"
- register: roleperm
-- name: verify results of update role permission
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
- - roleperm.name == "fakeRolePerm"
- - roleperm.permission == "deny"
- - roleperm.description == "fakeRolePerm description"
-
-- name: test update role permission idempotency
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- permission: deny
- description: "fakeRolePerm description"
- register: roleperm
-- name: verify results of update role permission idempotency
- assert:
- that:
- - roleperm is successful
- - roleperm is not changed
- - roleperm.name == "fakeRolePerm"
- - roleperm.permission == "deny"
- - roleperm.description == "fakeRolePerm description"
-
-- name: test create a second role permission
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm2"
- permission: allow
- register: roleperm2
-- name: verify results of create a second role permission
- assert:
- that:
- - roleperm2 is successful
- - roleperm2 is changed
- - roleperm2.name == "fakeRolePerm2"
-
-- name: test update rules order in check_mode
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- parent: "{{ roleperm2.id }}"
- register: roleperm
- check_mode: yes
-- name: verify results of update rule order check mode
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
- - roleperm.name == "fakeRolePerm"
-
-- name: test update rules order
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- parent: "{{ roleperm2.id }}"
- register: roleperm
-- name: verify results of update rule order
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
- - roleperm.name == "fakeRolePerm"
-
-- name: test update rules order to the top of the list
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- parent: 0
- register: roleperm
-- name: verify results of update rule order to the top of the list
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
- - roleperm.name == "fakeRolePerm"
-
-- name: test update rules order with parent NAME
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- parent: "{{ roleperm2.name }}"
- register: roleperm
-- name: verify results of update rule order with parent NAME
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
- - roleperm.name == "fakeRolePerm"
-
-- name: test fail if permission AND parent args are present
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- permission: allow
- parent: 0
- register: roleperm
- ignore_errors: true
-- name: verify results of fail if permission AND parent args are present
- assert:
- that:
- - roleperm is failed
- - 'roleperm.msg == "parameters are mutually exclusive: permission|parent"'
-
-- name: test fail if parent does not exist
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- parent: "badParent"
- register: roleperm
- ignore_errors: true
-- name: verify results of fail if parent does not exist
- assert:
- that:
- - roleperm is failed
- - roleperm.msg == "Parent rule 'badParent' not found"
-
-- name: test remove role permission in check_mode
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- state: absent
- register: roleperm
- check_mode: yes
-- name: verify results of rename role permission in check_mode
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
-
-- name: test remove role permission
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm"
- state: absent
- register: roleperm
-- name: verify results of remove role permission
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
-
-- name: remove second role permission
- cs_role_permission:
- role: "{{ testRole.id }}"
- name: "fakeRolePerm2"
- state: absent
- register: roleperm
-- name: verify results of remove second role permission
- assert:
- that:
- - roleperm is successful
- - roleperm is changed
diff --git a/test/integration/targets/cs_router/aliases b/test/integration/targets/cs_router/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_router/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_router/meta/main.yml b/test/integration/targets/cs_router/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_router/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_router/tasks/main.yml b/test/integration/targets/cs_router/tasks/main.yml
deleted file mode 100644
index 9adaa4de84..0000000000
--- a/test/integration/targets/cs_router/tasks/main.yml
+++ /dev/null
@@ -1,183 +0,0 @@
----
-- name: setup network
- cs_network:
- name: "net_router"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: DefaultSharedNetworkOffering
- network_domain: example.com
- vlan: 1234
- start_ip: 10.100.12.11
- end_ip: 10.100.12.250
- gateway: 10.100.12.1
- netmask: 255.255.255.0
- register: net
-- name: verify setup network
- assert:
- that:
- - net is successful
- - net.name == "net_router"
-
-- name: setup instance
- cs_instance:
- name: "instance-vm"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- network: "net_router"
- state: started
- register: instance
-- name: verify setup instance
- assert:
- that:
- - instance is successful
- - instance.name == "instance-vm"
- - instance.state == "Running"
-
-- name: setup instance starts a router
- cs_instance:
- name: "instance-vm"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- network: "net_router"
- state: started
- register: instance
-- name: verify setup instance
- assert:
- that:
- - instance is successful
- - instance.name == "instance-vm"
- - instance.state == "Running"
-
-- name: setup find the routers name
- shell: cs listRouters listall=true networkid="{{ net.id }}" zone="{{ cs_common_zone_adv }}"
- args:
- chdir: "{{ playbook_dir }}"
- register: router
-
-- debug:
- var: router.stdout
-
-- set_fact:
- router_json: "{{ router.stdout | from_json }}"
-
-- set_fact:
- router_name: "{{ router_json.router[0].name }}"
-
-- name: test router started
- cs_router:
- name: "{{ router_name }}"
- zone: "{{ cs_common_zone_adv }}"
- state: started
- register: router
-- name: verify test router started
- assert:
- that:
- - router is successful
-
-- name: test stop router in check mode
- cs_router:
- name: "{{ router_name }}"
- zone: "{{ cs_common_zone_adv }}"
- state: stopped
- check_mode: true
- register: router
-- name: verify test stop router in check mode
- assert:
- that:
- - router is changed
- - router.state == "Running"
- - router.service_offering == "System Offering For Software Router"
-
-- name: test stop router
- cs_router:
- name: "{{ router_name }}"
- zone: "{{ cs_common_zone_adv }}"
- state: stopped
- register: router
-- name: verify test stop router
- assert:
- that:
- - router is changed
- - router.state == "Stopped"
- - router.service_offering == "System Offering For Software Router"
-
-- name: test stop router idempotence
- cs_router:
- name: "{{ router_name }}"
- zone: "{{ cs_common_zone_adv }}"
- state: stopped
- register: router
-- name: verify test stop router idempotence
- assert:
- that:
- - router is not changed
- - router.state == "Stopped"
- - router.service_offering == "System Offering For Software Router"
-
-- name: test start router in check mode
- cs_router:
- name: "{{ router_name }}"
- zone: "{{ cs_common_zone_adv }}"
- state: started
- register: router
- check_mode: true
-- name: verify test start router in check mode
- assert:
- that:
- - router is changed
- - router.state == "Stopped"
- - router.service_offering == "System Offering For Software Router"
-
-- name: test start router
- cs_router:
- name: "{{ router_name }}"
- zone: "{{ cs_common_zone_adv }}"
- state: started
- register: router
-- name: verify test start router
- assert:
- that:
- - router is changed
- - router.state == "Running"
- - router.service_offering == "System Offering For Software Router"
-
-- name: test start router idempotence
- cs_router:
- name: "{{ router_name }}"
- zone: "{{ cs_common_zone_adv }}"
- state: started
- register: router
-- name: verify test start router idempotence
- assert:
- that:
- - router is not changed
- - router.state == "Running"
- - router.service_offering == "System Offering For Software Router"
-
-- name: test restart router in check mode
- cs_router:
- name: "{{ router_name }}"
- zone: "{{ cs_common_zone_adv }}"
- state: restarted
- register: router
- check_mode: true
-- name: verify test restart router in check mode
- assert:
- that:
- - router is changed
- - router.state == "Running"
- - router.service_offering == "System Offering For Software Router"
-
-- name: test restart router
- cs_router:
- name: "{{ router_name }}"
- zone: "{{ cs_common_zone_adv }}"
- state: restarted
- register: router
-- name: verify test restart router
- assert:
- that:
- - router is changed
- - router.state == "Running"
- - router.service_offering == "System Offering For Software Router"
diff --git a/test/integration/targets/cs_securitygroup/aliases b/test/integration/targets/cs_securitygroup/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_securitygroup/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_securitygroup/meta/main.yml b/test/integration/targets/cs_securitygroup/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_securitygroup/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_securitygroup/tasks/main.yml b/test/integration/targets/cs_securitygroup/tasks/main.yml
deleted file mode 100644
index 1d32d28075..0000000000
--- a/test/integration/targets/cs_securitygroup/tasks/main.yml
+++ /dev/null
@@ -1,79 +0,0 @@
----
-- name: setup
- cs_securitygroup: name={{ cs_resource_prefix }}_sg state=absent
- register: sg
-- name: verify setup
- assert:
- that:
- - sg is successful
-
-- name: test fail if missing name
- action: cs_securitygroup
- register: sg
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - sg is failed
- - "sg.msg == 'missing required arguments: name'"
-
-- name: test present security group in check mode
- cs_securitygroup: name={{ cs_resource_prefix }}_sg
- register: sg
- check_mode: true
-- name: verify results of create security group in check mode
- assert:
- that:
- - sg is successful
- - sg is changed
-
-- name: test present security group
- cs_securitygroup: name={{ cs_resource_prefix }}_sg
- register: sg
-- name: verify results of create security group
- assert:
- that:
- - sg is successful
- - sg is changed
- - sg.name == "{{ cs_resource_prefix }}_sg"
-
-- name: test present security group is idempotence
- cs_securitygroup: name={{ cs_resource_prefix }}_sg
- register: sg
-- name: verify results present security group is idempotence
- assert:
- that:
- - sg is successful
- - sg is not changed
- - sg.name == "{{ cs_resource_prefix }}_sg"
-
-- name: test absent security group in check mode
- cs_securitygroup: name={{ cs_resource_prefix }}_sg state=absent
- register: sg
- check_mode: true
-- name: verify results of absent security group in check mode
- assert:
- that:
- - sg is successful
- - sg is changed
- - sg.name == "{{ cs_resource_prefix }}_sg"
-
-- name: test absent security group
- cs_securitygroup: name={{ cs_resource_prefix }}_sg state=absent
- register: sg
-- name: verify results of absent security group
- assert:
- that:
- - sg is successful
- - sg is changed
- - sg.name == "{{ cs_resource_prefix }}_sg"
-
-- name: test absent security group is idempotence
- cs_securitygroup: name={{ cs_resource_prefix }}_sg state=absent
- register: sg
-- name: verify results of absent security group is idempotence
- assert:
- that:
- - sg is successful
- - sg is not changed
- - sg.name is undefined
diff --git a/test/integration/targets/cs_securitygroup_rule/aliases b/test/integration/targets/cs_securitygroup_rule/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_securitygroup_rule/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_securitygroup_rule/meta/main.yml b/test/integration/targets/cs_securitygroup_rule/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_securitygroup_rule/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_securitygroup_rule/tasks/absent.yml b/test/integration/targets/cs_securitygroup_rule/tasks/absent.yml
deleted file mode 100644
index 8f1378e61c..0000000000
--- a/test/integration/targets/cs_securitygroup_rule/tasks/absent.yml
+++ /dev/null
@@ -1,171 +0,0 @@
----
-- name: test remove http range rule in check mode
- cs_securitygroup_rule:
- security_group: default
- start_port: 8000
- end_port: 8888
- cidr: 1.2.3.4/32
- state: absent
- register: sg_rule
- check_mode: true
-- name: verify create http range rule in check mode
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
- - sg_rule.type == 'ingress'
- - sg_rule.security_group == 'default'
- - sg_rule.protocol == 'tcp'
- - sg_rule.start_port == 8000
- - sg_rule.end_port == 8888
- - sg_rule.cidr == '1.2.3.4/32'
-
-- name: test remove http range rule
- cs_securitygroup_rule:
- security_group: default
- start_port: 8000
- end_port: 8888
- cidr: 1.2.3.4/32
- state: absent
- register: sg_rule
-- name: verify create http range rule
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
- - sg_rule.type == 'ingress'
- - sg_rule.security_group == 'default'
- - sg_rule.protocol == 'tcp'
- - sg_rule.start_port == 8000
- - sg_rule.end_port == 8888
- - sg_rule.cidr == '1.2.3.4/32'
-
-- name: test remove http range rule idempotence
- cs_securitygroup_rule:
- security_group: default
- start_port: 8000
- end_port: 8888
- cidr: 1.2.3.4/32
- state: absent
- register: sg_rule
-- name: verify create http range rule idempotence
- assert:
- that:
- - sg_rule is successful
- - sg_rule is not changed
-
-- name: test remove single port udp rule in check mode
- cs_securitygroup_rule:
- security_group: default
- port: 5353
- protocol: udp
- type: egress
- user_security_group: '{{ cs_resource_prefix }}_sg'
- state: absent
- register: sg_rule
- check_mode: true
-- name: verify remove single port udp rule in check mode
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
- - sg_rule.type == 'egress'
- - sg_rule.security_group == 'default'
- - sg_rule.protocol == 'udp'
- - sg_rule.start_port == 5353
- - sg_rule.end_port == 5353
- - sg_rule.user_security_group == '{{ cs_resource_prefix }}_sg'
-
-- name: test remove single port udp rule
- cs_securitygroup_rule:
- security_group: default
- port: 5353
- protocol: udp
- type: egress
- user_security_group: '{{ cs_resource_prefix }}_sg'
- state: absent
- register: sg_rule
-- name: verify remove single port udp rule
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
- - sg_rule.type == 'egress'
- - sg_rule.security_group == 'default'
- - sg_rule.protocol == 'udp'
- - sg_rule.start_port == 5353
- - sg_rule.end_port == 5353
- - sg_rule.user_security_group == '{{ cs_resource_prefix }}_sg'
-
-- name: test remove single port udp rule idempotence
- cs_securitygroup_rule:
- security_group: default
- port: 5353
- protocol: udp
- type: egress
- user_security_group: '{{ cs_resource_prefix }}_sg'
- state: absent
- register: sg_rule
-- name: verify remove single port udp rule idempotence
- assert:
- that:
- - sg_rule is successful
- - sg_rule is not changed
-
-- name: test remove icmp rule in check mode
- cs_securitygroup_rule:
- security_group: default
- protocol: icmp
- type: ingress
- icmp_type: -1
- icmp_code: -1
- state: absent
- register: sg_rule
- check_mode: true
-- name: verify icmp rule in check mode
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
- - sg_rule.type == 'ingress'
- - sg_rule.security_group == 'default'
- - sg_rule.cidr == '0.0.0.0/0'
- - sg_rule.protocol == 'icmp'
- - sg_rule.icmp_code == -1
- - sg_rule.icmp_type == -1
-
-- name: test remove icmp rule
- cs_securitygroup_rule:
- security_group: default
- protocol: icmp
- type: ingress
- icmp_type: -1
- icmp_code: -1
- state: absent
- register: sg_rule
-- name: verify icmp rule
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
- - sg_rule.type == 'ingress'
- - sg_rule.security_group == 'default'
- - sg_rule.cidr == '0.0.0.0/0'
- - sg_rule.protocol == 'icmp'
- - sg_rule.icmp_code == -1
- - sg_rule.icmp_type == -1
-
-- name: test remove icmp rule idempotence
- cs_securitygroup_rule:
- security_group: default
- protocol: icmp
- type: ingress
- icmp_type: -1
- icmp_code: -1
- state: absent
- register: sg_rule
-- name: verify icmp rule idempotence
- assert:
- that:
- - sg_rule is successful
- - sg_rule is not changed
diff --git a/test/integration/targets/cs_securitygroup_rule/tasks/cleanup.yml b/test/integration/targets/cs_securitygroup_rule/tasks/cleanup.yml
deleted file mode 100644
index 0fce532837..0000000000
--- a/test/integration/targets/cs_securitygroup_rule/tasks/cleanup.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-- name: cleanup custom security group
- cs_securitygroup: name={{ cs_resource_prefix }}_sg state=absent
- register: sg
-- name: verify setup
- assert:
- that:
- - sg is successful
diff --git a/test/integration/targets/cs_securitygroup_rule/tasks/main.yml b/test/integration/targets/cs_securitygroup_rule/tasks/main.yml
deleted file mode 100644
index e76745cb54..0000000000
--- a/test/integration/targets/cs_securitygroup_rule/tasks/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- include: setup.yml
-- include: present.yml
-- include: absent.yml
-- include: cleanup.yml
diff --git a/test/integration/targets/cs_securitygroup_rule/tasks/present.yml b/test/integration/targets/cs_securitygroup_rule/tasks/present.yml
deleted file mode 100644
index a2a4e03c85..0000000000
--- a/test/integration/targets/cs_securitygroup_rule/tasks/present.yml
+++ /dev/null
@@ -1,163 +0,0 @@
----
-- name: test create http range rule in check mode
- cs_securitygroup_rule:
- security_group: default
- start_port: 8000
- end_port: 8888
- cidr: 1.2.3.4/32
- register: sg_rule
- check_mode: true
-- name: verify create http range rule in check mode
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
-
-- name: test create http range rule
- cs_securitygroup_rule:
- security_group: default
- start_port: 8000
- end_port: 8888
- cidr: 1.2.3.4/32
- register: sg_rule
-- name: verify create http range rule
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
- - sg_rule.type == 'ingress'
- - sg_rule.security_group == 'default'
- - sg_rule.protocol == 'tcp'
- - sg_rule.start_port == 8000
- - sg_rule.end_port == 8888
- - sg_rule.cidr == '1.2.3.4/32'
-
-- name: test create http range rule idempotence
- cs_securitygroup_rule:
- security_group: default
- start_port: 8000
- end_port: 8888
- cidr: 1.2.3.4/32
- register: sg_rule
-- name: verify create http range rule idempotence
- assert:
- that:
- - sg_rule is successful
- - sg_rule is not changed
- - sg_rule.type == 'ingress'
- - sg_rule.security_group == 'default'
- - sg_rule.protocol == 'tcp'
- - sg_rule.start_port == 8000
- - sg_rule.end_port == 8888
- - sg_rule.cidr == '1.2.3.4/32'
-
-- name: test create single port udp rule in check mode
- cs_securitygroup_rule:
- security_group: default
- port: 5353
- protocol: udp
- type: egress
- user_security_group: '{{ cs_resource_prefix }}_sg'
- register: sg_rule
- check_mode: true
-- name: verify create single port udp rule in check mode
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
-
-- name: test create single port udp rule
- cs_securitygroup_rule:
- security_group: default
- port: 5353
- protocol: udp
- type: egress
- user_security_group: '{{ cs_resource_prefix }}_sg'
- register: sg_rule
-- name: verify create single port udp rule
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
- - sg_rule.type == 'egress'
- - sg_rule.security_group == 'default'
- - sg_rule.protocol == 'udp'
- - sg_rule.start_port == 5353
- - sg_rule.end_port == 5353
- - sg_rule.user_security_group == '{{ cs_resource_prefix }}_sg'
-
-
-- name: test single port udp rule idempotence
- cs_securitygroup_rule:
- security_group: default
- port: 5353
- protocol: udp
- type: egress
- user_security_group: '{{ cs_resource_prefix }}_sg'
- register: sg_rule
-- name: verify single port udp rule idempotence
- assert:
- that:
- - sg_rule is successful
- - sg_rule is not changed
- - sg_rule.type == 'egress'
- - sg_rule.security_group == 'default'
- - sg_rule.protocol == 'udp'
- - sg_rule.start_port == 5353
- - sg_rule.end_port == 5353
- - sg_rule.user_security_group == '{{ cs_resource_prefix }}_sg'
-
-- name: test icmp rule in check mode
- cs_securitygroup_rule:
- security_group: default
- protocol: icmp
- type: ingress
- icmp_type: -1
- icmp_code: -1
- register: sg_rule
- check_mode: true
-- name: verify icmp rule in check mode
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
-
-- name: test icmp rule
- cs_securitygroup_rule:
- security_group: default
- protocol: icmp
- type: ingress
- icmp_type: -1
- icmp_code: -1
- register: sg_rule
-- name: verify icmp rule
- assert:
- that:
- - sg_rule is successful
- - sg_rule is changed
- - sg_rule.type == 'ingress'
- - sg_rule.security_group == 'default'
- - sg_rule.cidr == '0.0.0.0/0'
- - sg_rule.protocol == 'icmp'
- - sg_rule.icmp_code == -1
- - sg_rule.icmp_type == -1
-
-- name: test icmp rule idempotence
- cs_securitygroup_rule:
- security_group: default
- protocol: icmp
- type: ingress
- icmp_type: -1
- icmp_code: -1
- register: sg_rule
-- name: verify icmp rule idempotence
- assert:
- that:
- - sg_rule is successful
- - sg_rule is not changed
- - sg_rule.type == 'ingress'
- - sg_rule.security_group == 'default'
- - sg_rule.cidr == '0.0.0.0/0'
- - sg_rule.protocol == 'icmp'
- - sg_rule.icmp_code == -1
- - sg_rule.icmp_type == -1
diff --git a/test/integration/targets/cs_securitygroup_rule/tasks/setup.yml b/test/integration/targets/cs_securitygroup_rule/tasks/setup.yml
deleted file mode 100644
index 8562520510..0000000000
--- a/test/integration/targets/cs_securitygroup_rule/tasks/setup.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-- name: setup custom security group
- cs_securitygroup: name={{ cs_resource_prefix }}_sg
- register: sg
-- name: verify setup
- assert:
- that:
- - sg is successful
-
-- name: setup default security group
- cs_securitygroup: name=default
- register: sg
-- name: verify setup
- assert:
- that:
- - sg is successful
-
-- name: setup remove icmp rule
- cs_securitygroup_rule:
- security_group: default
- protocol: icmp
- type: ingress
- icmp_type: -1
- icmp_code: -1
- state: absent
- register: sg_rule
-- name: verify remove icmp rule
- assert:
- that:
- - sg_rule is successful
-
-- name: setup remove http range rule
- cs_securitygroup_rule:
- security_group: default
- start_port: 8000
- end_port: 8888
- cidr: 1.2.3.4/32
- state: absent
- register: sg_rule
-- name: verify remove http range rule
- assert:
- that:
- - sg_rule is successful
-
-- name: setup remove single port udp rule
- cs_securitygroup_rule:
- security_group: default
- port: 5353
- protocol: udp
- type: egress
- user_security_group: '{{ cs_resource_prefix }}-user-sg'
- state: absent
- register: sg_rule
-- name: verify remove single port udp rule
- assert:
- that:
- - sg_rule is successful
diff --git a/test/integration/targets/cs_service_offering/aliases b/test/integration/targets/cs_service_offering/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_service_offering/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_service_offering/meta/main.yml b/test/integration/targets/cs_service_offering/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_service_offering/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_service_offering/tasks/guest_vm_service_offering.yml b/test/integration/targets/cs_service_offering/tasks/guest_vm_service_offering.yml
deleted file mode 100644
index f7aee3c8a2..0000000000
--- a/test/integration/targets/cs_service_offering/tasks/guest_vm_service_offering.yml
+++ /dev/null
@@ -1,223 +0,0 @@
----
-- name: setup service offering
- cs_service_offering:
- name: Micro
- state: absent
- register: so
-- name: verify setup service offering
- assert:
- that:
- - so is successful
-
-- name: create service offering in check mode
- cs_service_offering:
- name: Micro
- display_text: Micro 512mb 1cpu
- cpu_number: 1
- cpu_speed: 2198
- memory: 512
- host_tags: eco
- storage_tags:
- - eco
- - backup
- storage_type: local
- register: so
- check_mode: true
-- name: verify create service offering in check mode
- assert:
- that:
- - so is changed
-
-- name: create service offering
- cs_service_offering:
- name: Micro
- display_text: Micro 512mb 1cpu
- cpu_number: 1
- cpu_speed: 2198
- memory: 512
- host_tags: eco
- storage_tags:
- - eco
- - backup
- storage_type: local
- register: so
-- name: verify create service offering
- assert:
- that:
- - so is changed
- - so.name == "Micro"
- - so.display_text == "Micro 512mb 1cpu"
- - so.cpu_number == 1
- - so.cpu_speed == 2198
- - so.memory == 512
- - so.host_tags == ['eco']
- - so.storage_tags == ['eco', 'backup']
- - so.storage_type == "local"
-
-- name: create service offering idempotence
- cs_service_offering:
- name: Micro
- display_text: Micro 512mb 1cpu
- cpu_number: 1
- cpu_speed: 2198
- memory: 512
- host_tags: eco
- storage_tags:
- - eco
- - backup
- storage_type: local
- register: so
-- name: verify create service offering idempotence
- assert:
- that:
- - so is not changed
- - so.name == "Micro"
- - so.display_text == "Micro 512mb 1cpu"
- - so.cpu_number == 1
- - so.cpu_speed == 2198
- - so.memory == 512
- - so.host_tags == ['eco']
- - so.storage_tags == ['eco', 'backup']
- - so.storage_type == "local"
-
-- name: update service offering in check mode
- cs_service_offering:
- name: Micro
- display_text: Micro RAM 512MB 1vCPU
- register: so
- check_mode: true
-- name: verify create update offering in check mode
- assert:
- that:
- - so is changed
- - so.name == "Micro"
- - so.display_text == "Micro 512mb 1cpu"
- - so.cpu_number == 1
- - so.cpu_speed == 2198
- - so.memory == 512
- - so.host_tags == ['eco']
- - so.storage_tags == ['eco', 'backup']
- - so.storage_type == "local"
-
-- name: update service offering
- cs_service_offering:
- name: Micro
- display_text: Micro RAM 512MB 1vCPU
- register: so
-- name: verify update service offerin
- assert:
- that:
- - so is changed
- - so.name == "Micro"
- - so.display_text == "Micro RAM 512MB 1vCPU"
- - so.cpu_number == 1
- - so.cpu_speed == 2198
- - so.memory == 512
- - so.host_tags == ['eco']
- - so.storage_tags == ['eco', 'backup']
- - so.storage_type == "local"
-
-- name: update service offering idempotence
- cs_service_offering:
- name: Micro
- display_text: Micro RAM 512MB 1vCPU
- register: so
-- name: verify update service offering idempotence
- assert:
- that:
- - so is not changed
- - so.name == "Micro"
- - so.display_text == "Micro RAM 512MB 1vCPU"
- - so.cpu_number == 1
- - so.cpu_speed == 2198
- - so.memory == 512
- - so.host_tags == ['eco']
- - so.storage_tags == ['eco', 'backup']
- - so.storage_type == "local"
-
-- name: remove service offering in check mode
- cs_service_offering:
- name: Micro
- state: absent
- check_mode: true
- register: so
-- name: verify remove service offering in check mode
- assert:
- that:
- - so is changed
- - so.name == "Micro"
- - so.display_text == "Micro RAM 512MB 1vCPU"
- - so.cpu_number == 1
- - so.cpu_speed == 2198
- - so.memory == 512
- - so.host_tags == ['eco']
- - so.storage_tags == ['eco', 'backup']
- - so.storage_type == "local"
-
-- name: remove service offering
- cs_service_offering:
- name: Micro
- state: absent
- register: so
-- name: verify remove service offering
- assert:
- that:
- - so is changed
- - so.name == "Micro"
- - so.display_text == "Micro RAM 512MB 1vCPU"
- - so.cpu_number == 1
- - so.cpu_speed == 2198
- - so.memory == 512
- - so.host_tags == ['eco']
- - so.storage_tags == ['eco', 'backup']
- - so.storage_type == "local"
-
-- name: remove service offering idempotence
- cs_service_offering:
- name: Micro
- state: absent
- register: so
-- name: verify remove service offering idempotence
- assert:
- that:
- - so is not changed
-
-- name: create custom service offering
- cs_service_offering:
- name: custom
- display_text: custom offer
- is_customized: yes
- host_tags: eco
- storage_tags:
- - eco
- - backup
- storage_type: local
- register: so
-- name: verify create custom service offering
- assert:
- that:
- - so is changed
- - so.name == "custom"
- - so.display_text == "custom offer"
- - so.is_customized == True
- - so.cpu_number is not defined
- - so.cpu_speed is not defined
- - so.memory is not defined
- - so.host_tags == ['eco']
- - so.storage_tags == ['eco', 'backup']
- - so.storage_type == "local"
-
-- name: remove custom service offering
- cs_service_offering:
- name: custom
- state: absent
- register: so
-- name: verify remove service offering
- assert:
- that:
- - so is changed
- - so.name == "custom"
- - so.display_text == "custom offer"
- - so.host_tags == ['eco']
- - so.storage_tags == ['eco', 'backup']
- - so.storage_type == "local"
diff --git a/test/integration/targets/cs_service_offering/tasks/main.yml b/test/integration/targets/cs_service_offering/tasks/main.yml
deleted file mode 100644
index 581f7d74de..0000000000
--- a/test/integration/targets/cs_service_offering/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- import_tasks: guest_vm_service_offering.yml
-- import_tasks: system_vm_service_offering.yml \ No newline at end of file
diff --git a/test/integration/targets/cs_service_offering/tasks/system_vm_service_offering.yml b/test/integration/targets/cs_service_offering/tasks/system_vm_service_offering.yml
deleted file mode 100644
index 4c63a4b9c8..0000000000
--- a/test/integration/targets/cs_service_offering/tasks/system_vm_service_offering.yml
+++ /dev/null
@@ -1,151 +0,0 @@
----
-- name: setup system offering
- cs_service_offering:
- name: System Offering for Ansible
- is_system: true
- state: absent
- register: so
-- name: verify setup system offering
- assert:
- that:
- - so is successful
-
-- name: fail missing storage type and is_system
- cs_service_offering:
- name: System Offering for Ansible
- cpu_number: 1
- cpu_speed: 500
- memory: 512
- host_tag: perf
- storage_tag: perf
- storage_type: shared
- offer_ha: true
- limit_cpu_usage: false
- is_system: true
- register: so
- ignore_errors: true
-- name: verify create system service offering in check mode
- assert:
- that:
- - so is failed
- - so.msg.startswith('missing required arguments:')
-
-- name: create system service offering in check mode
- cs_service_offering:
- name: System Offering for Ansible
- cpu_number: 1
- cpu_speed: 500
- memory: 512
- host_tag: perf
- storage_tag: perf
- storage_type: shared
- offer_ha: true
- limit_cpu_usage: false
- system_vm_type: domainrouter
- is_system: true
- register: so
- check_mode: true
-- name: verify create system service offering in check mode
- assert:
- that:
- - so is changed
-
-- name: create system service offering
- cs_service_offering:
- name: System Offering for Ansible
- cpu_number: 1
- cpu_speed: 500
- memory: 512
- host_tag: perf
- storage_tag: perf
- storage_type: shared
- offer_ha: true
- limit_cpu_usage: false
- system_vm_type: domainrouter
- is_system: true
- register: so
-- name: verify create system service offering
- assert:
- that:
- - so is changed
- - so.name == "System Offering for Ansible"
- - so.display_text == "System Offering for Ansible"
- - so.cpu_number == 1
- - so.cpu_speed == 500
- - so.memory == 512
- - so.host_tags == ['perf']
- - so.storage_tags == ['perf']
- - so.storage_type == "shared"
- - so.offer_ha == true
- - so.limit_cpu_usage == false
- - so.system_vm_type == "domainrouter"
- - so.is_system == true
-
-- name: create system service offering idempotence
- cs_service_offering:
- name: System Offering for Ansible
- cpu_number: 1
- cpu_speed: 500
- memory: 512
- host_tag: perf
- storage_tag: perf
- storage_type: shared
- offer_ha: true
- limit_cpu_usage: false
- system_vm_type: domainrouter
- is_system: true
- register: so
-- name: verify create system service offering idempotence
- assert:
- that:
- - so is not changed
- - so.name == "System Offering for Ansible"
- - so.display_text == "System Offering for Ansible"
- - so.cpu_number == 1
- - so.cpu_speed == 500
- - so.memory == 512
- - so.host_tags == ['perf']
- - so.storage_tags == ['perf']
- - so.storage_type == "shared"
- - so.offer_ha == true
- - so.limit_cpu_usage == false
- - so.system_vm_type == "domainrouter"
- - so.is_system == true
-
-- name: remove system service offering in check mode
- cs_service_offering:
- name: System Offering for Ansible
- is_system: true
- state: absent
- check_mode: true
- register: so
-- name: verify remove system service offering in check mode
- assert:
- that:
- - so is changed
- - so.name == "System Offering for Ansible"
- - so.is_system == true
-
-- name: remove system service offering
- cs_service_offering:
- name: System Offering for Ansible
- is_system: true
- state: absent
- register: so
-- name: verify remove system service offering
- assert:
- that:
- - so is changed
- - so.name == "System Offering for Ansible"
- - so.is_system == true
-
-- name: remove system service offering idempotence
- cs_service_offering:
- name: System Offering for Ansible
- is_system: true
- state: absent
- register: so
-- name: verify remove system service offering idempotence
- assert:
- that:
- - so is not changed
diff --git a/test/integration/targets/cs_snapshot_policy/aliases b/test/integration/targets/cs_snapshot_policy/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_snapshot_policy/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_snapshot_policy/meta/main.yml b/test/integration/targets/cs_snapshot_policy/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_snapshot_policy/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_snapshot_policy/tasks/main.yml b/test/integration/targets/cs_snapshot_policy/tasks/main.yml
deleted file mode 100644
index d5ba1bdc81..0000000000
--- a/test/integration/targets/cs_snapshot_policy/tasks/main.yml
+++ /dev/null
@@ -1,176 +0,0 @@
----
-- name: setup instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- register: instance
-- name: verify setup instance
- assert:
- that:
- - instance is successful
-
-- name: setup snapshot policy absent
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- state: absent
- register: snapshot
-- name: verify setup snapshot policy absent
- assert:
- that:
- - snapshot is successful
-
-- name: create snapshot policy in check mode
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- schedule: 5
- check_mode: true
- register: snapshot
-- name: verify create snapshot policy in check mode
- assert:
- that:
- - snapshot is changed
-
-- name: create snapshot policy
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- schedule: 5
- register: snapshot
-- name: verify create snapshot policy
- assert:
- that:
- - snapshot is changed
- - snapshot.schedule == "5"
- - snapshot.interval_type == "hourly"
- - snapshot.volume != ""
-
-- name: create snapshot policy idempotence
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- schedule: 5
- register: snapshot
-- name: verify create snapshot policy idempotence
- assert:
- that:
- - snapshot is not changed
- - snapshot.schedule == "5"
- - snapshot.interval_type == "hourly"
- - snapshot.volume != ""
-
-- name: update snapshot policy
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- schedule: 6
- check_mode: true
- register: snapshot
-- name: verify update snapshot policy
- assert:
- that:
- - snapshot is changed
- - snapshot.schedule == "5"
- - snapshot.interval_type == "hourly"
- - snapshot.volume != ""
-
-- name: update snapshot policy in check mode
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- schedule: 6
- max_snaps: 3
- time_zone: "Europe/Zurich"
- check_mode: true
- register: snapshot
-- name: verify update snapshot policy in check mode
- assert:
- that:
- - snapshot is changed
- - snapshot.schedule == "5"
- - snapshot.interval_type == "hourly"
- - snapshot.volume != ""
- - snapshot.max_snaps == 8
- - snapshot.time_zone == "UTC"
-
-- name: update snapshot policy
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- schedule: 6
- max_snaps: 3
- time_zone: "Europe/Zurich"
- register: snapshot
-- name: verify update snapshot policy
- assert:
- that:
- - snapshot is changed
- - snapshot.schedule == "6"
- - snapshot.interval_type == "hourly"
- - snapshot.volume != ""
- - snapshot.max_snaps == 3
- - snapshot.time_zone == "Europe/Zurich"
-
-- name: update snapshot policy idempotence
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- schedule: 6
- max_snaps: 3
- time_zone: "Europe/Zurich"
- register: snapshot
-- name: verify update snapshot policy idempotence
- assert:
- that:
- - snapshot is not changed
- - snapshot.schedule == "6"
- - snapshot.interval_type == "hourly"
- - snapshot.volume != ""
- - snapshot.max_snaps == 3
- - snapshot.time_zone == "Europe/Zurich"
-
-- name: remove snapshot policy in check mode
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- state: absent
- check_mode: true
- register: snapshot
-- name: verify remove snapshot policy in check mode
- assert:
- that:
- - snapshot is changed
- - snapshot.schedule == "6"
- - snapshot.interval_type == "hourly"
- - snapshot.volume != ""
- - snapshot.max_snaps == 3
- - snapshot.time_zone == "Europe/Zurich"
-
-- name: remove snapshot policy
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- state: absent
- register: snapshot
-- name: verify remove snapshot policy
- assert:
- that:
- - snapshot is changed
- - snapshot.schedule == "6"
- - snapshot.interval_type == "hourly"
- - snapshot.volume != ""
- - snapshot.max_snaps == 3
- - snapshot.time_zone == "Europe/Zurich"
-
-- name: remove snapshot policy idempotence
- cs_snapshot_policy:
- vm: "{{ cs_resource_prefix }}-vm-snapshot-policy"
- interval_type: hourly
- state: absent
- register: snapshot
-- name: verify remove snapshot policy idempotence
- assert:
- that:
- - snapshot is not changed
diff --git a/test/integration/targets/cs_sshkeypair/aliases b/test/integration/targets/cs_sshkeypair/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_sshkeypair/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_sshkeypair/meta/main.yml b/test/integration/targets/cs_sshkeypair/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_sshkeypair/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_sshkeypair/tasks/main.yml b/test/integration/targets/cs_sshkeypair/tasks/main.yml
deleted file mode 100644
index 89aa2522d9..0000000000
--- a/test/integration/targets/cs_sshkeypair/tasks/main.yml
+++ /dev/null
@@ -1,197 +0,0 @@
----
-- name: setup cleanup
- cs_sshkeypair:
- name: "{{ item }}"
- state: absent
- register: sshkey
- with_items:
- - first-sshkey
- - first-sshkey-renamed
- - second-sshkey
-- name: verify setup cleanup
- assert:
- that:
- - sshkey is success
-
-- name: test fail on missing name
- action: cs_sshkeypair
- ignore_errors: true
- register: sshkey
-- name: verify results of fail on missing name
- assert:
- that:
- - sshkey is failed
- - "sshkey.msg == 'missing required arguments: name'"
-
-- name: test ssh key creation in check mode
- cs_sshkeypair:
- name: first-sshkey
- register: sshkey
- check_mode: true
-- name: verify results of ssh key creation in check mode
- assert:
- that:
- - sshkey is successful
- - sshkey is changed
-
-- name: test ssh key creation
- cs_sshkeypair:
- name: first-sshkey
- register: sshkey
-- name: verify results of ssh key creation
- assert:
- that:
- - sshkey is successful
- - sshkey is changed
- - sshkey.fingerprint is defined and sshkey.fingerprint != ""
- - sshkey.private_key is defined and sshkey.private_key != ""
- - sshkey.name == "first-sshkey"
-
-- name: test ssh key creation idempotence
- cs_sshkeypair:
- name: first-sshkey
- register: sshkey2
-- name: verify results of ssh key creation idempotence
- assert:
- that:
- - sshkey2 is successful
- - sshkey2 is not changed
- - sshkey2.fingerprint is defined and sshkey2.fingerprint == sshkey.fingerprint
- - sshkey2.private_key is not defined
- - sshkey2.name == "first-sshkey"
-
-- name: test replace ssh public key in check mode
- cs_sshkeypair:
- name: first-sshkey
- public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsTI7KJZ8tz/CwQIrSol41c6s3vzkGYCMI8o7P9Et48UG9eRoGaMaGYaTvBTj/VQrD7cfurI6Bn0HTT3FLK3OHOweyelm9rIiQ2hjkSl+2lIKWHu992GO58E5Gcy9yYW4sHGgGLNZkPBKrrj0w7lhmiHjPtVnf+2+7Ix1WOO2/HXPcAHhsX/AlyItDewIL4mr/BT83vq0202sPCiM2cFQJl+5WGwS1wYYK8d167cspsmdyX7OyAFCUB0vueuqjE8MFqJvyIJR9y8Lj9Ny71pSV5/QWrXUgELxMYOKSby3gHkxcIXgYBMFLl4DipRTO74OWQlRRaOlqXlOOQbikcY4T rene.moser@swisstxt.ch"
- register: sshkey2
- check_mode: true
-- name: verify results of replace ssh public key in check mode
- assert:
- that:
- - sshkey2 is successful
- - sshkey2 is changed
- - sshkey2.fingerprint is defined and sshkey2.fingerprint == sshkey.fingerprint
- - sshkey2.private_key is not defined
- - sshkey2.name == "first-sshkey"
-
-- name: test replace ssh public key
- cs_sshkeypair:
- name: first-sshkey
- public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsTI7KJZ8tz/CwQIrSol41c6s3vzkGYCMI8o7P9Et48UG9eRoGaMaGYaTvBTj/VQrD7cfurI6Bn0HTT3FLK3OHOweyelm9rIiQ2hjkSl+2lIKWHu992GO58E5Gcy9yYW4sHGgGLNZkPBKrrj0w7lhmiHjPtVnf+2+7Ix1WOO2/HXPcAHhsX/AlyItDewIL4mr/BT83vq0202sPCiM2cFQJl+5WGwS1wYYK8d167cspsmdyX7OyAFCUB0vueuqjE8MFqJvyIJR9y8Lj9Ny71pSV5/QWrXUgELxMYOKSby3gHkxcIXgYBMFLl4DipRTO74OWQlRRaOlqXlOOQbikcY4T rene.moser@swisstxt.ch"
- register: sshkey3
-- name: verify results of replace ssh public key
- assert:
- that:
- - sshkey3 is changed
- - sshkey3.fingerprint is defined and sshkey3.fingerprint != sshkey2.fingerprint
- - sshkey3.private_key is not defined
- - sshkey3.name == "first-sshkey"
-
-- name: test replace ssh public key idempotence
- cs_sshkeypair:
- name: first-sshkey
- public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsTI7KJZ8tz/CwQIrSol41c6s3vzkGYCMI8o7P9Et48UG9eRoGaMaGYaTvBTj/VQrD7cfurI6Bn0HTT3FLK3OHOweyelm9rIiQ2hjkSl+2lIKWHu992GO58E5Gcy9yYW4sHGgGLNZkPBKrrj0w7lhmiHjPtVnf+2+7Ix1WOO2/HXPcAHhsX/AlyItDewIL4mr/BT83vq0202sPCiM2cFQJl+5WGwS1wYYK8d167cspsmdyX7OyAFCUB0vueuqjE8MFqJvyIJR9y8Lj9Ny71pSV5/QWrXUgELxMYOKSby3gHkxcIXgYBMFLl4DipRTO74OWQlRRaOlqXlOOQbikcY4T rene.moser@swisstxt.ch"
- register: sshkey4
-- name: verify results of ssh public key idempotence
- assert:
- that:
- - sshkey4 is not changed
- - sshkey4.fingerprint is defined and sshkey4.fingerprint == sshkey3.fingerprint
- - sshkey4.private_key is not defined
- - sshkey4.name == "first-sshkey"
-
-- name: test rename ssh key in check mode
- cs_sshkeypair:
- name: first-sshkey-renamed
- public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsTI7KJZ8tz/CwQIrSol41c6s3vzkGYCMI8o7P9Et48UG9eRoGaMaGYaTvBTj/VQrD7cfurI6Bn0HTT3FLK3OHOweyelm9rIiQ2hjkSl+2lIKWHu992GO58E5Gcy9yYW4sHGgGLNZkPBKrrj0w7lhmiHjPtVnf+2+7Ix1WOO2/HXPcAHhsX/AlyItDewIL4mr/BT83vq0202sPCiM2cFQJl+5WGwS1wYYK8d167cspsmdyX7OyAFCUB0vueuqjE8MFqJvyIJR9y8Lj9Ny71pSV5/QWrXUgELxMYOKSby3gHkxcIXgYBMFLl4DipRTO74OWQlRRaOlqXlOOQbikcY4T rene.moser@swisstxt.ch"
- register: sshkey4
- check_mode: true
-- name: verify test rename ssh key in check mode
- assert:
- that:
- - sshkey4 is changed
- - sshkey4.fingerprint is defined and sshkey4.fingerprint == sshkey3.fingerprint
- - sshkey4.private_key is not defined
- - sshkey4.name == "first-sshkey"
-
-- name: test rename ssh key
- cs_sshkeypair:
- name: first-sshkey-renamed
- public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsTI7KJZ8tz/CwQIrSol41c6s3vzkGYCMI8o7P9Et48UG9eRoGaMaGYaTvBTj/VQrD7cfurI6Bn0HTT3FLK3OHOweyelm9rIiQ2hjkSl+2lIKWHu992GO58E5Gcy9yYW4sHGgGLNZkPBKrrj0w7lhmiHjPtVnf+2+7Ix1WOO2/HXPcAHhsX/AlyItDewIL4mr/BT83vq0202sPCiM2cFQJl+5WGwS1wYYK8d167cspsmdyX7OyAFCUB0vueuqjE8MFqJvyIJR9y8Lj9Ny71pSV5/QWrXUgELxMYOKSby3gHkxcIXgYBMFLl4DipRTO74OWQlRRaOlqXlOOQbikcY4T rene.moser@swisstxt.ch"
- register: sshkey4
-- name: verify test rename ssh key
- assert:
- that:
- - sshkey4 is changed
- - sshkey4.fingerprint is defined and sshkey4.fingerprint == sshkey3.fingerprint
- - sshkey4.private_key is not defined
- - sshkey4.name == "first-sshkey-renamed"
-
-- name: test rename ssh key idempotence
- cs_sshkeypair:
- name: first-sshkey-renamed
- public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsTI7KJZ8tz/CwQIrSol41c6s3vzkGYCMI8o7P9Et48UG9eRoGaMaGYaTvBTj/VQrD7cfurI6Bn0HTT3FLK3OHOweyelm9rIiQ2hjkSl+2lIKWHu992GO58E5Gcy9yYW4sHGgGLNZkPBKrrj0w7lhmiHjPtVnf+2+7Ix1WOO2/HXPcAHhsX/AlyItDewIL4mr/BT83vq0202sPCiM2cFQJl+5WGwS1wYYK8d167cspsmdyX7OyAFCUB0vueuqjE8MFqJvyIJR9y8Lj9Ny71pSV5/QWrXUgELxMYOKSby3gHkxcIXgYBMFLl4DipRTO74OWQlRRaOlqXlOOQbikcY4T rene.moser@swisstxt.ch"
- register: sshkey4
-- name: verify test rename ssh key idempotence
- assert:
- that:
- - sshkey4 is not changed
- - sshkey4.fingerprint is defined and sshkey4.fingerprint == sshkey3.fingerprint
- - sshkey4.private_key is not defined
- - sshkey4.name == "first-sshkey-renamed"
-
-- name: setup ssh key with name "second-sshkey"
- cs_sshkeypair:
- name: second-sshkey
-
-- name: test different but exisitng name but same ssh public key as first-sshkey
- cs_sshkeypair:
- name: second-sshkey
- public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsTI7KJZ8tz/CwQIrSol41c6s3vzkGYCMI8o7P9Et48UG9eRoGaMaGYaTvBTj/VQrD7cfurI6Bn0HTT3FLK3OHOweyelm9rIiQ2hjkSl+2lIKWHu992GO58E5Gcy9yYW4sHGgGLNZkPBKrrj0w7lhmiHjPtVnf+2+7Ix1WOO2/HXPcAHhsX/AlyItDewIL4mr/BT83vq0202sPCiM2cFQJl+5WGwS1wYYK8d167cspsmdyX7OyAFCUB0vueuqjE8MFqJvyIJR9y8Lj9Ny71pSV5/QWrXUgELxMYOKSby3gHkxcIXgYBMFLl4DipRTO74OWQlRRaOlqXlOOQbikcY4T rene.moser@swisstxt.ch"
- register: sshkey
-- name: verify test different but exisitng name but same ssh public key as first-sshkey
- assert:
- that:
- - sshkey is changed
- - sshkey.fingerprint is defined and sshkey.fingerprint == sshkey4.fingerprint
- - sshkey.private_key is not defined
- - sshkey.name == "second-sshkey"
-
-- name: test ssh key absent in check mode
- cs_sshkeypair: name=second-sshkey state=absent
- register: sshkey5
- check_mode: true
-- name: verify result of key absent in check mode
- assert:
- that:
- - sshkey5 is changed
- - sshkey5.fingerprint is defined and sshkey5.fingerprint == sshkey3.fingerprint
- - sshkey5.private_key is not defined
- - sshkey5.name == "second-sshkey"
-
-- name: test ssh key absent
- cs_sshkeypair:
- name: second-sshkey
- state: absent
- register: sshkey5
-- name: verify result of key absent
- assert:
- that:
- - sshkey5 is changed
- - sshkey5.fingerprint is defined and sshkey5.fingerprint == sshkey3.fingerprint
- - sshkey5.private_key is not defined
- - sshkey5.name == "second-sshkey"
-
-- name: test ssh key absent idempotence
- cs_sshkeypair:
- name: second-sshkey
- state: absent
- register: sshkey6
-- name: verify result of ssh key absent idempotence
- assert:
- that:
- - sshkey6 is not changed
- - sshkey6.fingerprint is not defined
- - sshkey6.private_key is not defined
- - sshkey6.name is not defined
diff --git a/test/integration/targets/cs_storage_pool/aliases b/test/integration/targets/cs_storage_pool/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_storage_pool/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_storage_pool/meta/main.yml b/test/integration/targets/cs_storage_pool/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_storage_pool/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_storage_pool/tasks/main.yml b/test/integration/targets/cs_storage_pool/tasks/main.yml
deleted file mode 100644
index bc623eecb2..0000000000
--- a/test/integration/targets/cs_storage_pool/tasks/main.yml
+++ /dev/null
@@ -1,465 +0,0 @@
----
-- name: setup host is present
- cs_host:
- name: sim
- url: "http://sim/c0-basic/h2"
- cluster: C0-adv
- pod: POD0-adv
- username: root
- password: password
- hypervisor: Simulator
- allocation_state: enabled
- zone: "{{ cs_common_zone_adv }}"
- register: host
-- name: verify setup host is present
- assert:
- that:
- - host is successful
-
-- name: setup storage pool is absent
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sp
-- name: verify setup storage pool is absent
- assert:
- that:
- - sp is successful
-
-- name: test fail if missing params
- cs_storage_pool:
- register: sp
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - sp is failed
- - "sp.msg == 'missing required arguments: name'"
-
-- name: test fail if provider unknown
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- provider: DNE
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- register: sp
- ignore_errors: true
-- name: verify test fail if provider unknown
- assert:
- that:
- - sp is failed
- - "sp.msg == 'Storage provider DNE not found'"
-
-- name: test fail if cluster unknown
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: DNE
- pod: POD0-adv
- register: sp
- ignore_errors: true
-- name: verify test fail if cluster unknown
- assert:
- that:
- - sp is failed
- - "sp.msg == 'Cluster DNE not found'"
-
-- name: test fail if pod unknown
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: DNE
- register: sp
- ignore_errors: true
-- name: verify test fail if pod unknown
- assert:
- that:
- - sp is failed
- - "sp.msg == 'Pod DNE not found'"
-
-- name: create storage pool in check mode
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- register: sp
- check_mode: true
-- name: verify create storage pool in check mode
- assert:
- that:
- - sp is successful
- - sp is changed
-
-- name: create storage pool
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- register: sp
-- name: verify create storage pool
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: create storage pool idempotence
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- cluster: C0-adv
- pod: POD0-adv
- register: sp
-- name: verify create storage pool idempotence
- assert:
- that:
- - sp is successful
- - sp is not changed
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: disable storage pool in check mode
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- cluster: C0-adv
- pod: POD0-adv
- allocation_state: disabled
- check_mode: true
- register: sp
-- name: verify disable storage pool in check mode
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'enabled'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: disable storage pool
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- allocation_state: disabled
- register: sp
-- name: verify disable storage pool
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'disabled'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: disable storage pool idempotence
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- allocation_state: disabled
- register: sp
-- name: verify disable storage pool idempotence
- assert:
- that:
- - sp is successful
- - sp is not changed
- - sp.allocation_state == 'disabled'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: update while storage pool disabled in check mode
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- storage_tags:
- - eco
- - ssd
- check_mode: true
- register: sp
-- name: verify update while storage pool disabled in check mode
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'disabled'
- - sp.storage_tags == []
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: update while storage pool disabled
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- storage_tags:
- - eco
- - ssd
- register: sp
-- name: verify update while storage pool disabled
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'disabled'
- - sp.storage_tags == ['eco', 'ssd']
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: update while storage pool disabled idempotence
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- storage_tags:
- - eco
- - ssd
- register: sp
-- name: verify update while storage pool disabled idempotence
- assert:
- that:
- - sp is successful
- - sp is not changed
- - sp.allocation_state == 'disabled'
- - sp.storage_tags == ['eco', 'ssd']
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: put storage in maintenance pool in check mode
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- allocation_state: maintenance
- check_mode: true
- register: sp
-- name: verify put storage in maintenance pool in check mode
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'disabled'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: put storage in maintenance pool
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- allocation_state: maintenance
- register: sp
-- name: verify put storage in maintenance pool
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'maintenance'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: put storage in maintenance pool idempotence
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- allocation_state: maintenance
- register: sp
-- name: verify put storage in maintenance pool idempotence
- assert:
- that:
- - sp is successful
- - sp is not changed
- - sp.allocation_state == 'maintenance'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: update while in maintenance pool
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- storage_tag: perf
- register: sp
-- name: verify update while in maintenance pool
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'maintenance'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
- - sp.storage_tags == ['perf']
-
-- name: remove storage pool in check mode
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sp
- check_mode: true
-- name: verify remove storage pool in check mode
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: remove storage pool
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sp
-- name: verify remove storage pool
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: remove storage pool idempotence
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sp
-- name: verify remove storage pool idempotence
- assert:
- that:
- - sp is successful
- - sp is not changed
-
-- name: create storage pool in maintenance
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- allocation_state: maintenance
- register: sp
-- name: verify create storage pool in maintenance
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'maintenance'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: remove storage pool in maintenance
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sp
-- name: verify storage pool in maintenance
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'maintenance'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: create storage pool disabled
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- storage_url: rbd://admin:SECRET@ceph-mons.domain/poolname
- scope: cluster
- cluster: C0-adv
- pod: POD0-adv
- allocation_state: disabled
- register: sp
-- name: verify create storage pool in disabled
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'disabled'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
-
-- name: verify remove disabled storag e pool
- cs_storage_pool:
- name: "storage_pool_adv"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: sp
-- name: verify remove disabled storage pool
- assert:
- that:
- - sp is successful
- - sp is changed
- - sp.allocation_state == 'disabled'
- - sp.cluster == "C0-adv"
- - sp.pod == "POD0-adv"
- - sp.storage_url == "RBD://ceph-mons.domain/poolname"
diff --git a/test/integration/targets/cs_template/aliases b/test/integration/targets/cs_template/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_template/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_template/defaults/main.yml b/test/integration/targets/cs_template/defaults/main.yml
deleted file mode 100644
index 80f67305ec..0000000000
--- a/test/integration/targets/cs_template/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-cs_template_hypervisor: Simulator
-cs_template_os_type: Other Linux (64-bit)
-cs_template_url: http://dl.openvm.eu/cloudstack/macchinina/x86_64/macchinina-vmware.ova
-cs_template_format: OVA
diff --git a/test/integration/targets/cs_template/meta/main.yml b/test/integration/targets/cs_template/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_template/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_template/tasks/main.yml b/test/integration/targets/cs_template/tasks/main.yml
deleted file mode 100644
index ffeaa8a08e..0000000000
--- a/test/integration/targets/cs_template/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- import_tasks: test1.yml
-- import_tasks: test2.yml
diff --git a/test/integration/targets/cs_template/tasks/test1.yml b/test/integration/targets/cs_template/tasks/test1.yml
deleted file mode 100644
index 755394fad4..0000000000
--- a/test/integration/targets/cs_template/tasks/test1.yml
+++ /dev/null
@@ -1,160 +0,0 @@
----
-- name: setup template
- cs_template:
- name: "ansible-template-test1"
- state: absent
- register: template
-- name: verify setup template
- assert:
- that:
- - template is successful
-
-- name: test download template in check mode
- cs_template:
- name: "ansible-template-test1"
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- cross_zones: yes
- register: template
- check_mode: yes
-- name: verify test download template in check mode
- assert:
- that:
- - template is changed
-
-- name: test download template
- cs_template:
- name: "ansible-template-test1"
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- cross_zones: yes
- register: template
-- name: verify test download template
- assert:
- that:
- - template is changed
- - template.name == "ansible-template-test1"
- - template.display_text == "ansible-template-test1"
- - template.cross_zones == true
-
-- name: test download template idempotence
- cs_template:
- name: "ansible-template-test1"
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- cross_zones: yes
- register: template
-- name: verify test download template idempotence
- assert:
- that:
- - template is not changed
- - template.name == "ansible-template-test1"
- - template.display_text == "ansible-template-test1"
- - template.cross_zones == true
-
-- name: test update template in check mode
- cs_template:
- name: "ansible-template-test1"
- display_text: "{{ cs_resource_prefix }}-template display_text"
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- is_featured: yes
- cross_zones: yes
- register: template
- check_mode: yes
-- name: verify test update template in check mode
- assert:
- that:
- - template is changed
- - template.name == "ansible-template-test1"
- - template.display_text == "ansible-template-test1"
- - template.cross_zones == true
- - template.is_featured == false
-
-- name: test update template
- cs_template:
- name: "ansible-template-test1"
- display_text: "{{ cs_resource_prefix }}-template display_text"
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- is_featured: yes
- cross_zones: yes
- register: template
-- name: verify test update template
- assert:
- that:
- - template is changed
- - template.name == "ansible-template-test1"
- - template.display_text == "{{ cs_resource_prefix }}-template display_text"
- - template.cross_zones == true
- - template.is_featured == true
-
-- name: test update template idempotence
- cs_template:
- name: "ansible-template-test1"
- display_text: "{{ cs_resource_prefix }}-template display_text"
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- is_featured: yes
- cross_zones: yes
- register: template
-- name: verify test update template idempotence
- assert:
- that:
- - template is not changed
- - template.name == "ansible-template-test1"
- - template.display_text == "{{ cs_resource_prefix }}-template display_text"
- - template.cross_zones == true
- - template.is_featured == true
-
-- name: test remove template in check mode
- cs_template:
- name: "ansible-template-test1"
- state: absent
- cross_zones: yes
- register: template
- check_mode: yes
-- name: verify test remove template in check mode
- assert:
- that:
- - template is changed
- - template.name == "ansible-template-test1"
- - template.display_text == "{{ cs_resource_prefix }}-template display_text"
- - template.cross_zones == true
-
-- name: test remove template
- cs_template:
- name: "ansible-template-test1"
- state: absent
- cross_zones: yes
- register: template
-- name: verify test remove template
- assert:
- that:
- - template is changed
- - template.name == "ansible-template-test1"
- - template.display_text == "{{ cs_resource_prefix }}-template display_text"
- - template.cross_zones == true
-
-- name: test remove template idempotence
- cs_template:
- name: "ansible-template-test1"
- state: absent
- cross_zones: yes
- register: template
-- name: verify test remove template idempotence
- assert:
- that:
- - template is not changed
diff --git a/test/integration/targets/cs_template/tasks/test2.yml b/test/integration/targets/cs_template/tasks/test2.yml
deleted file mode 100644
index d5d44453b6..0000000000
--- a/test/integration/targets/cs_template/tasks/test2.yml
+++ /dev/null
@@ -1,181 +0,0 @@
----
-- name: setup template first template
- cs_template:
- name: ansible-template-test2
- display_text: first template
- state: absent
- cross_zones: yes
- template_find_options: display_text
- register: template
-- name: verify setup template first template
- assert:
- that:
- - template is successful
-
-- name: setup template second template
- cs_template:
- name: ansible-template-test2
- display_text: second template
- state: absent
- cross_zones: yes
- template_find_options: display_text
- register: template
-- name: verify setup template second template
- assert:
- that:
- - template is successful
-
-- name: test register first template
- cs_template:
- name: ansible-template-test2
- display_text: first template
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- cross_zones: yes
- template_find_options: display_text
- register: template_first
-- name: verify test register first template
- assert:
- that:
- - template_first is changed
- - template_first.name == "ansible-template-test2"
- - template_first.display_text == "first template"
- - template_first.cross_zones == true
-
-- name: test register second template
- cs_template:
- name: ansible-template-test2
- display_text: second template
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- cross_zones: yes
- template_find_options: display_text
- register: template_second
-- name: verify test register second template
- assert:
- that:
- - template_second is changed
- - template_second.name == "ansible-template-test2"
- - template_second.display_text == "second template"
- - template_second.cross_zones == true
- - template_second.id != template_first.id
-
-- name: test multiple template same name absent without find options
- cs_template:
- name: ansible-template-test2
- state: absent
- cross_zones: yes
- register: template
- ignore_errors: yes
-- name: verify test multiple template same name absent without find options
- assert:
- that:
- - template is failed
- - template.msg.startswith('Multiple templates found')
-
-- name: test update second template
- cs_template:
- name: ansible-template-test2
- display_text: second template
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- is_featured: yes
- is_public: yes
- cross_zones: yes
- template_find_options: display_text
- register: template
-- name: verify test update second template
- assert:
- that:
- - template is changed
- - template.name == "ansible-template-test2"
- - template.display_text == "second template"
- - template.cross_zones == true
- - template.id == template_second.id
- - template.is_featured == true
- - template.is_public == true
-
-- name: test update second template idempotence
- cs_template:
- name: ansible-template-test2
- display_text: second template
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- is_featured: yes
- is_public: yes
- cross_zones: yes
- template_find_options: display_text
- register: template
-- name: verify test update second template idempotence
- assert:
- that:
- - template is not changed
- - template.name == "ansible-template-test2"
- - template.display_text == "second template"
- - template.cross_zones == true
- - template.id == template_second.id
- - template.is_featured == true
-
-- name: test update second template idempotence 2
- cs_template:
- name: ansible-template-test2
- display_text: second template
- url: "{{ cs_template_url }}"
- format: "{{ cs_template_format }}"
- hypervisor: "{{ cs_template_hypervisor }}"
- os_type: "{{ cs_template_os_type }}"
- cross_zones: yes
- template_find_options: display_text
- register: template
-- name: verify test update second template idempotence
- assert:
- that:
- - template is not changed
- - template.name == "ansible-template-test2"
- - template.display_text == "second template"
- - template.cross_zones == true
- - template.id == template_second.id
-
-- name: test delete first template
- cs_template:
- name: ansible-template-test2
- display_text: first template
- state: absent
- cross_zones: yes
- template_find_options: display_text
- register: template
-- name: verify test delete first template
- assert:
- that:
- - template is changed
- - template.name == "ansible-template-test2"
- - template.display_text == "first template"
- - template.cross_zones == true
- - template.id == template_first.id
- - template.is_featured == false
-
-- name: test delete second template
- cs_template:
- name: ansible-template-test2
- display_text: second template
- state: absent
- cross_zones: yes
- template_find_options: display_text
- register: template
-- name: verify test delete second template
- assert:
- that:
- - template is changed
- - template.name == "ansible-template-test2"
- - template.display_text == "second template"
- - template.cross_zones == true
- - template.id == template_second.id
- - template.is_featured == true
diff --git a/test/integration/targets/cs_traffic_type/aliases b/test/integration/targets/cs_traffic_type/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_traffic_type/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_traffic_type/meta/main.yml b/test/integration/targets/cs_traffic_type/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_traffic_type/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_traffic_type/tasks/main.yml b/test/integration/targets/cs_traffic_type/tasks/main.yml
deleted file mode 100644
index cc2d52b1c4..0000000000
--- a/test/integration/targets/cs_traffic_type/tasks/main.yml
+++ /dev/null
@@ -1,173 +0,0 @@
----
-# Create a new zone - the default one is enabled
-- name: assure zone for tests
- cs_zone:
- name: cs-test-zone
- state: present
- dns1: 8.8.8.8
- network_type: Advanced
- register: cszone
-
-- name: ensure the zone is disabled
- cs_zone:
- name: "{{ cszone.name }}"
- state: disabled
- register: cszone
-
-- name: setup a network
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- isolation_method: VLAN
- broadcast_domain_range: ZONE
- ignore_errors: true
- register: pn
-
-
-- name: fail on missing params
- cs_traffic_type:
- ignore_errors: true
- register: tt
-- name: validate fail on missing params
- assert:
- that:
- - tt is failed
- - 'tt.msg == "missing required arguments: physical_network, traffic_type"'
-
-- name: add a traffic type in check mode
- cs_traffic_type:
- physical_network: "{{ pn.name }}"
- traffic_type: Guest
- zone: "{{ pn.zone }}"
- register: tt
- check_mode: yes
-- name: validate add a traffic type in check mode
- assert:
- that:
- - tt is changed
- - tt.zone == pn.zone
-
-- name: add a traffic type
- cs_traffic_type:
- physical_network: "{{ pn.name }}"
- traffic_type: Guest
- zone: "{{ pn.zone }}"
- register: tt
-- name: validate add a traffic type
- assert:
- that:
- - tt is changed
- - tt.physical_network == pn.id
- - tt.traffic_type == 'Guest'
- - tt.zone == pn.zone
-
-- name: add a traffic type idempotence
- cs_traffic_type:
- physical_network: "{{ pn.name }}"
- traffic_type: Guest
- zone: "{{ pn.zone }}"
- register: tt
-- name: validate add a traffic type idempotence
- assert:
- that:
- - tt is not changed
- - tt.physical_network == pn.id
- - tt.traffic_type == 'Guest'
- - tt.zone == pn.zone
-
-- name: update traffic type
- cs_traffic_type:
- physical_network: "{{ pn.name }}"
- traffic_type: Guest
- kvm_networklabel: cloudbr0
- zone: "{{ pn.zone }}"
- register: tt
-- name: validate update traffic type
- assert:
- that:
- - tt is changed
- - tt.physical_network == pn.id
- - tt.traffic_type == 'Guest'
- - tt.zone == pn.zone
- - tt.kvm_networklabel == 'cloudbr0'
-
-- name: update traffic type idempotence
- cs_traffic_type:
- physical_network: "{{ pn.name }}"
- traffic_type: Guest
- kvm_networklabel: cloudbr0
- zone: "{{ pn.zone }}"
- register: tt
-- name: validate update traffic type idempotence
- assert:
- that:
- - tt is not changed
- - tt.physical_network == pn.id
- - tt.traffic_type == 'Guest'
- - tt.zone == pn.zone
- - tt.kvm_networklabel == 'cloudbr0'
-
-- name: add a removable traffic type
- cs_traffic_type:
- physical_network: "{{ pn.name }}"
- traffic_type: Public
- kvm_networklabel: cloudbr1
- zone: "{{ pn.zone }}"
- register: tt
-- name: validate add a removable traffic type
- assert:
- that:
- - tt is changed
- - tt.physical_network == pn.id
- - tt.traffic_type == 'Public'
- - tt.zone == pn.zone
- - tt.kvm_networklabel == 'cloudbr1'
-
-- name: remove traffic type in check mode
- cs_traffic_type:
- physical_network: "{{ pn.name }}"
- traffic_type: Public
- state: absent
- zone: "{{ pn.zone }}"
- check_mode: yes
- register: tt
-- name: validate remove traffic type in check mode
- assert:
- that:
- - tt is changed
-
-- name: remove traffic type
- cs_traffic_type:
- physical_network: "{{ pn.name }}"
- traffic_type: Public
- state: absent
- zone: "{{ pn.zone }}"
- register: tt
-- name: validate remove traffic type
- assert:
- that:
- - tt is changed
- - tt.zone == pn.zone
-
-- name: remove traffic type idempotence
- cs_traffic_type:
- physical_network: "{{ pn.name }}"
- traffic_type: Public
- state: absent
- zone: "{{ pn.zone }}"
- register: tt
-- name: validate
- assert:
- that:
- - tt is not changed
- - tt.zone == pn.zone
-
-- name: cleanup
- block:
- - cs_physical_network:
- name: "{{ pn.name }}"
- zone: "{{ cszone.name }}"
- state: absent
- - cs_zone:
- name: "{{ cszone.name }}"
- state: absent \ No newline at end of file
diff --git a/test/integration/targets/cs_user/aliases b/test/integration/targets/cs_user/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_user/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_user/meta/main.yml b/test/integration/targets/cs_user/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_user/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_user/tasks/main.yml b/test/integration/targets/cs_user/tasks/main.yml
deleted file mode 100644
index f48588da44..0000000000
--- a/test/integration/targets/cs_user/tasks/main.yml
+++ /dev/null
@@ -1,618 +0,0 @@
----
-- name: setup
- cs_user: username={{ cs_resource_prefix }}_user state=absent
- register: user
-- name: verify setup
- assert:
- that:
- - user is successful
-
-- name: test fail if missing username
- action: cs_user
- register: user
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - user is failed
- - 'user.msg == "missing required arguments: username"'
-
-- name: test fail if missing params if state=present
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- register: user
- ignore_errors: true
-- name: verify results of fail if missing params if state=present
- assert:
- that:
- - user is failed
- - 'user.msg == "missing required arguments: account, email, password, first_name, last_name"'
-
-- name: test create user in check mode
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- account: "admin"
- register: user
- check_mode: true
-- name: verify results of create user in check mode
- assert:
- that:
- - user is successful
- - user is changed
-
-- name: test create user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- account: "admin"
- register: user
-- name: verify results of create user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.first_name == "{{ cs_resource_prefix }}_first_name"
- - user.last_name == "{{ cs_resource_prefix }}_last_name"
- - user.email == "{{ cs_resource_prefix }}@example.com"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
- - user.user_api_key is not defined
-
-- name: test create user idempotence
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- account: "admin"
- register: user
-- name: verify results of create user idempotence
- assert:
- that:
- - user is successful
- - user is not changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.first_name == "{{ cs_resource_prefix }}_first_name"
- - user.last_name == "{{ cs_resource_prefix }}_last_name"
- - user.email == "{{ cs_resource_prefix }}@example.com"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
- - user.user_api_key is not defined
-
-- name: test create account
- cs_account:
- name: "{{ cs_resource_prefix }}_acc"
- username: "{{ cs_resource_prefix }}_acc_username"
- password: "{{ cs_resource_prefix }}_acc_password"
- last_name: "{{ cs_resource_prefix }}_acc_last_name"
- first_name: "{{ cs_resource_prefix }}_acc_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- network_domain: "example.com"
- register: acc
-- name: verify results of create account
- assert:
- that:
- - acc is successful
- - acc is changed
- - acc.name == "{{ cs_resource_prefix }}_acc"
- - acc.network_domain == "example.com"
- - acc.account_type == "user"
- - acc.state == "enabled"
- - acc.domain == "ROOT"
- - acc is changed
-
-- name: test create user2 in check mode
- cs_user:
- username: "{{ cs_resource_prefix }}_user2"
- password: "{{ cs_resource_prefix }}_password2"
- last_name: "{{ cs_resource_prefix }}_last_name2"
- first_name: "{{ cs_resource_prefix }}_first_name2"
- email: "{{ cs_resource_prefix }}@example2.com"
- account: "{{ cs_resource_prefix }}_acc"
- keys_registered: true
- check_mode: true
- register: user
-- name: verify results of create user idempotence
- assert:
- that:
- - user is successful
- - user is changed
-
-- name: test create user2
- cs_user:
- username: "{{ cs_resource_prefix }}_user2"
- password: "{{ cs_resource_prefix }}_password2"
- last_name: "{{ cs_resource_prefix }}_last_name2"
- first_name: "{{ cs_resource_prefix }}_first_name2"
- email: "{{ cs_resource_prefix }}@example2.com"
- account: "{{ cs_resource_prefix }}_acc"
- keys_registered: true
- register: user
-- name: verify results of create user idempotence
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user2"
- - user.first_name == "{{ cs_resource_prefix }}_first_name2"
- - user.last_name == "{{ cs_resource_prefix }}_last_name2"
- - user.email == "{{ cs_resource_prefix }}@example2.com"
- - user.account_type == "user"
- - user.account == "{{ cs_resource_prefix }}_acc"
- - user.state == "enabled"
- - user.domain == "ROOT"
- - user.user_api_key is defined
-
-- name: test create user2 idempotence
- cs_user:
- username: "{{ cs_resource_prefix }}_user2"
- password: "{{ cs_resource_prefix }}_password2"
- last_name: "{{ cs_resource_prefix }}_last_name2"
- first_name: "{{ cs_resource_prefix }}_first_name2"
- email: "{{ cs_resource_prefix }}@example2.com"
- account: "{{ cs_resource_prefix }}_acc"
- keys_registered: true
- register: user
-- name: verify results of create user idempotence
- assert:
- that:
- - user is successful
- - user is not changed
- - user.username == "{{ cs_resource_prefix }}_user2"
- - user.first_name == "{{ cs_resource_prefix }}_first_name2"
- - user.last_name == "{{ cs_resource_prefix }}_last_name2"
- - user.email == "{{ cs_resource_prefix }}@example2.com"
- - user.account_type == "user"
- - user.account == "{{ cs_resource_prefix }}_acc"
- - user.state == "enabled"
- - user.domain == "ROOT"
- - user.user_api_key is defined
-
-- name: test update user in check mode
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name1"
- first_name: "{{ cs_resource_prefix }}_first_name1"
- email: "{{ cs_resource_prefix }}@example.com1"
- account: "admin"
- keys_registered: true
- register: user
- check_mode: true
-- name: verify results of update user in check mode
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.first_name == "{{ cs_resource_prefix }}_first_name"
- - user.last_name == "{{ cs_resource_prefix }}_last_name"
- - user.email == "{{ cs_resource_prefix }}@example.com"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
- - user.user_api_key is not defined
-
-- name: test update user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name1"
- first_name: "{{ cs_resource_prefix }}_first_name1"
- email: "{{ cs_resource_prefix }}@example.com1"
- account: "admin"
- keys_registered: true
- register: user
-- name: verify results of update user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.first_name == "{{ cs_resource_prefix }}_first_name1"
- - user.last_name == "{{ cs_resource_prefix }}_last_name1"
- - user.email == "{{ cs_resource_prefix }}@example.com1"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
- - user.user_api_key is defined
-
-- name: test update user idempotence
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name1"
- first_name: "{{ cs_resource_prefix }}_first_name1"
- email: "{{ cs_resource_prefix }}@example.com1"
- account: "admin"
- keys_registered: true
- register: user
-- name: verify results of update user idempotence
- assert:
- that:
- - user is successful
- - user is not changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.first_name == "{{ cs_resource_prefix }}_first_name1"
- - user.last_name == "{{ cs_resource_prefix }}_last_name1"
- - user.email == "{{ cs_resource_prefix }}@example.com1"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
- - user.user_api_key is defined
-
-- name: test lock user in check mode
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: locked
- register: user
- check_mode: true
-- name: verify results of lock user in check mode
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state != "locked"
- - user.domain == "ROOT"
-
-- name: test lock user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: locked
- register: user
-- name: verify results of lock user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "locked"
- - user.domain == "ROOT"
-
-- name: test lock user idempotence
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: locked
- register: user
-- name: verify results of lock user idempotence
- assert:
- that:
- - user is successful
- - user is not changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "locked"
- - user.domain == "ROOT"
-
-- name: test disable user in check mode
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: disabled
- register: user
- check_mode: true
-- name: verify results of disable user in check mode
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state != "disabled"
- - user.domain == "ROOT"
-
-- name: test disable user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: disabled
- register: user
-- name: verify results of disable user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "disabled"
- - user.domain == "ROOT"
-
-- name: test disable user idempotence
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: disabled
- register: user
-- name: verify results of disable user idempotence
- assert:
- that:
- - user is successful
- - user is not changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "disabled"
- - user.domain == "ROOT"
-
-- name: test lock disabled user in check mode
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: locked
- register: user
- check_mode: true
-- name: verify results of lock disabled user in check mode
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "disabled"
- - user.domain == "ROOT"
-
-- name: test lock disabled user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: locked
- register: user
-- name: verify results of lock disabled user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "locked"
- - user.domain == "ROOT"
-
-- name: test lock disabled user idempotence
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: locked
- register: user
-- name: verify results of lock disabled user idempotence
- assert:
- that:
- - user is successful
- - user is not changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "locked"
- - user.domain == "ROOT"
-
-- name: test enable user in check mode
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: enabled
- register: user
- check_mode: true
-- name: verify results of enable user in check mode
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state != "enabled"
- - user.domain == "ROOT"
-
-- name: test enable user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: enabled
- register: user
-- name: verify results of enable user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
-
-- name: test enable user idempotence using unlocked
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: unlocked
- register: user
-- name: verify results of enable user idempotence
- assert:
- that:
- - user is successful
- - user is not changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
-
-- name: test remove user in check mode
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: absent
- register: user
- check_mode: true
-- name: verify results of remove user in check mode
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
-
-- name: test remove user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: absent
- register: user
-- name: verify results of remove user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
-
-- name: test remove user idempotence
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: absent
- register: user
-- name: verify results of remove user idempotence
- assert:
- that:
- - user is successful
- - user is not changed
-
-- name: test create locked user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- account: "admin"
- state: locked
- register: user
-- name: verify results of create locked user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.first_name == "{{ cs_resource_prefix }}_first_name"
- - user.last_name == "{{ cs_resource_prefix }}_last_name"
- - user.email == "{{ cs_resource_prefix }}@example.com"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "locked"
- - user.domain == "ROOT"
-
-- name: test remove locked user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: absent
- register: user
-- name: verify results of remove locked user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "locked"
- - user.domain == "ROOT"
-
-- name: test create disabled user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- account: "admin"
- state: disabled
- register: user
-- name: verify results of create disabled user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.first_name == "{{ cs_resource_prefix }}_first_name"
- - user.last_name == "{{ cs_resource_prefix }}_last_name"
- - user.email == "{{ cs_resource_prefix }}@example.com"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "disabled"
- - user.domain == "ROOT"
-
-- name: test remove disabled user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: absent
- register: user
-- name: verify results of remove disabled user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "disabled"
- - user.domain == "ROOT"
-
-- name: test create enabled user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- password: "{{ cs_resource_prefix }}_password"
- last_name: "{{ cs_resource_prefix }}_last_name"
- first_name: "{{ cs_resource_prefix }}_first_name"
- email: "{{ cs_resource_prefix }}@example.com"
- account: "admin"
- state: enabled
- register: user
-- name: verify results of create enabled user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.first_name == "{{ cs_resource_prefix }}_first_name"
- - user.last_name == "{{ cs_resource_prefix }}_last_name"
- - user.email == "{{ cs_resource_prefix }}@example.com"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
-
-- name: test remove enabled user
- cs_user:
- username: "{{ cs_resource_prefix }}_user"
- state: absent
- register: user
-- name: verify results of remove enabled user
- assert:
- that:
- - user is successful
- - user is changed
- - user.username == "{{ cs_resource_prefix }}_user"
- - user.account_type == "root_admin"
- - user.account == "admin"
- - user.state == "enabled"
- - user.domain == "ROOT"
diff --git a/test/integration/targets/cs_vlan_ip_range/aliases b/test/integration/targets/cs_vlan_ip_range/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_vlan_ip_range/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_vlan_ip_range/meta/main.yml b/test/integration/targets/cs_vlan_ip_range/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_vlan_ip_range/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_vlan_ip_range/tasks/main.yml b/test/integration/targets/cs_vlan_ip_range/tasks/main.yml
deleted file mode 100644
index 9470108933..0000000000
--- a/test/integration/targets/cs_vlan_ip_range/tasks/main.yml
+++ /dev/null
@@ -1,435 +0,0 @@
----
-- name: setup cleanup test network
- cs_network:
- name: ipr_test_network
- state: absent
- zone: "{{ cs_common_zone_adv }}"
-
-- name: setup create test network
- cs_network:
- name: ipr_test_network
- zone: "{{ cs_common_zone_adv }}"
- vlan: 98
- start_ip: 10.2.4.2
- end_ip: 10.2.4.9
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- network_offering: DefaultSharedNetworkOffering
- register: ipr_net
-- name: verify setup create test network
- assert:
- that:
- - ipr_net is successful
- - ipr_net is changed
-
-- name: test create a VLAN IP RANGE with missing required param
- cs_vlan_ip_range:
- network: ipr_test_network
- vlan: 98
- start_ip: 10.2.4.10
- end_ip: 10.2.4.100
- gateway: 10.2.4.1
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: yes
- register: ipr
-- name: verify test create VLAN IP RANGE with missing required param
- assert:
- that:
- - ipr is not successful
- - ipr is not changed
- - 'ipr.msg == "state is present but all of the following are missing: netmask"'
-
-- name: test create a VLAN IP RANGE with conflicting params
- cs_vlan_ip_range:
- network: ipr_test_network
- vlan: 98
- start_ip: 10.2.4.10
- end_ip: 10.2.4.100
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- project: fakeproject
- account: fakeaccount
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: yes
- register: ipr
-- name: verify test create VLAN IP RANGE with missing conflicting params
- assert:
- that:
- - ipr is not successful
- - ipr is not changed
- - 'ipr.msg == "parameters are mutually exclusive: account|project"'
-
-- name: test create a VLAN IP RANGE in check mode
- cs_vlan_ip_range:
- network: ipr_test_network
- vlan: 98
- start_ip: 10.2.4.10
- end_ip: 10.2.4.100
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- zone: "{{ cs_common_zone_adv }}"
- register: ipr
- check_mode: true
-- name: verify test create VLAN IP RANGE in check mode
- assert:
- that:
- - ipr is successful
- - ipr is changed
-
-- name: test create a VLAN IP RANGE
- cs_vlan_ip_range:
- network: ipr_test_network
- vlan: 98
- start_ip: 10.2.4.10
- end_ip: 10.2.4.100
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- zone: "{{ cs_common_zone_adv }}"
- register: ipr
-- name: verify test create VLAN IP RANGE
- assert:
- that:
- - ipr is successful
- - ipr is changed
- - ipr.vlan == "vlan://98"
- - ipr.start_ip == "10.2.4.10"
- - ipr.end_ip == "10.2.4.100"
- - ipr.gateway == "10.2.4.1"
- - ipr.netmask == "255.255.255.0"
- - ipr.network == "ipr_test_network"
- - ipr.for_virtual_network == false
-
-- name: test create a VLAN IP RANGE idempotence
- cs_vlan_ip_range:
- network: ipr_test_network
- vlan: 98
- start_ip: 10.2.4.10
- end_ip: 10.2.4.100
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- zone: "{{ cs_common_zone_adv }}"
- register: ipr
-- name: verify test create VLAN IP RANGE idempotence
- assert:
- that:
- - ipr is successful
- - ipr is not changed
- - ipr.vlan == "vlan://98"
- - ipr.start_ip == "10.2.4.10"
- - ipr.end_ip == "10.2.4.100"
- - ipr.gateway == "10.2.4.1"
- - ipr.netmask == "255.255.255.0"
- - ipr.network == "ipr_test_network"
- - ipr.for_virtual_network == false
-
-- name: test create a second VLAN IP RANGE in check mode
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.101
- end_ip: 10.2.4.150
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- zone: "{{ cs_common_zone_adv }}"
- register: ipr2
- check_mode: true
-- name: verify test create a second VLAN IP RANGE in check mode
- assert:
- that:
- - ipr2 is successful
- - ipr2 is changed
-
-- name: test create a second VLAN IP RANGE
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.101
- end_ip: 10.2.4.150
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- zone: "{{ cs_common_zone_adv }}"
- register: ipr2
-- name: verify test create a second VLAN IP RANGE
- assert:
- that:
- - ipr2 is successful
- - ipr2 is changed
- - ipr2.vlan == "vlan://98"
- - ipr2.start_ip == "10.2.4.101"
- - ipr2.end_ip == "10.2.4.150"
- - ipr2.gateway == "10.2.4.1"
- - ipr2.netmask == "255.255.255.0"
- - ipr2.network == "ipr_test_network"
- - ipr2.for_virtual_network == false
- - ipr2.id != ipr.id
-
-- name: test create a second VLAN IP RANGE idempotence
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.101
- end_ip: 10.2.4.150
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- zone: "{{ cs_common_zone_adv }}"
- register: ipr2
-- name: verify test create a second VLAN IP RANGE idempotence
- assert:
- that:
- - ipr2 is successful
- - ipr2 is not changed
- - ipr2.vlan == "vlan://98"
- - ipr2.start_ip == "10.2.4.101"
- - ipr2.end_ip == "10.2.4.150"
- - ipr2.gateway == "10.2.4.1"
- - ipr2.netmask == "255.255.255.0"
- - ipr2.network == "ipr_test_network"
- - ipr2.for_virtual_network == false
-
-- name: test create a single IP VLAN IP RANGE
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.200
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- zone: "{{ cs_common_zone_adv }}"
- register: ipr3
-- name: verify test create single IP VLAN IP RANGE
- assert:
- that:
- - ipr3 is successful
- - ipr3 is changed
- - ipr3.vlan == "vlan://98"
- - ipr3.start_ip == "10.2.4.200"
- - ipr3.end_ip == "10.2.4.200"
- - ipr3.gateway == "10.2.4.1"
- - ipr3.netmask == "255.255.255.0"
- - ipr3.network == "ipr_test_network"
- - ipr3.for_virtual_network == false
-
-- name: test create an IPv4 + IPv6 VLAN IP RANGE
- cs_vlan_ip_range:
- network: ipr_test_network
- vlan: 98
- start_ip: 10.2.4.151
- end_ip: 10.2.4.199
- gateway: 10.2.4.1
- netmask: 255.255.255.0
- start_ipv6: 2001:db8::10
- end_ipv6: 2001:db8::50
- gateway_ipv6: 2001:db8::1
- cidr_ipv6: 2001:db8::/64
- zone: "{{ cs_common_zone_adv }}"
- register: iprv6
-- name: verify test create an IPv4 + IPv6 VLAN IP RANGE
- assert:
- that:
- - iprv6 is successful
- - iprv6 is changed
- - iprv6.vlan == "vlan://98"
- - iprv6.start_ip == "10.2.4.151"
- - iprv6.end_ip == "10.2.4.199"
- - iprv6.gateway == "10.2.4.1"
- - iprv6.netmask == "255.255.255.0"
- - iprv6.start_ipv6 == "2001:db8::10"
- - iprv6.end_ipv6 == "2001:db8::50"
- - iprv6.gateway_ipv6 == "2001:db8::1"
- - iprv6.cidr_ipv6 == "2001:db8::/64"
- - iprv6.network == "ipr_test_network"
- - iprv6.for_virtual_network == false
-
-- name: test cleanup VLAN IP RANGE in check mode
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.10
- end_ip: 10.2.4.100
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- check_mode: true
- register: ipr
-- name: verify test cleanup VLAN IP RANGE in check mode
- assert:
- that:
- - ipr is successful
- - ipr is changed
- - ipr.vlan == "vlan://98"
- - ipr.start_ip == "10.2.4.10"
- - ipr.end_ip == "10.2.4.100"
- - ipr.gateway == "10.2.4.1"
- - ipr.netmask == "255.255.255.0"
- - ipr.network == "ipr_test_network"
- - ipr.for_virtual_network == false
-
-- name: test cleanup VLAN IP RANGE
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.10
- end_ip: 10.2.4.100
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: ipr
-- name: verify test cleanup VLAN IP RANGE
- assert:
- that:
- - ipr is successful
- - ipr is changed
- - ipr.vlan == "vlan://98"
- - ipr.start_ip == "10.2.4.10"
- - ipr.end_ip == "10.2.4.100"
- - ipr.gateway == "10.2.4.1"
- - ipr.netmask == "255.255.255.0"
- - ipr.network == "ipr_test_network"
- - ipr.for_virtual_network == false
-
-- name: test cleanup VLAN IP RANGE idempotence
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.10
- end_ip: 10.2.4.100
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: ipr
-- name: verify test cleanup VLAN IP RANGE idempotence
- assert:
- that:
- - ipr is successful
- - ipr is not changed
-
-- name: test cleanup single IP VLAN IP RANGE
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.200
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: ipr
-- name: verify test cleanup single IP VLAN IP RANGE
- assert:
- that:
- - ipr is successful
- - ipr is changed
- - ipr.vlan == "vlan://98"
- - ipr.start_ip == "10.2.4.200"
- - ipr.end_ip == "10.2.4.200"
- - ipr.gateway == "10.2.4.1"
- - ipr.netmask == "255.255.255.0"
- - ipr.network == "ipr_test_network"
- - ipr.for_virtual_network == false
-
-- name: cleanup second VLAN IP RANGE
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.101
- end_ip: 10.2.4.150
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: ipr2
-- name: verify cleanup second VLAN IP RANGE
- assert:
- that:
- - ipr2 is successful
- - ipr2 is changed
- - ipr2.vlan == "vlan://98"
- - ipr2.start_ip == "10.2.4.101"
- - ipr2.end_ip == "10.2.4.150"
- - ipr2.gateway == "10.2.4.1"
- - ipr2.netmask == "255.255.255.0"
- - ipr2.network == "ipr_test_network"
- - ipr2.for_virtual_network == false
-
-- name: test cleanup IPv4 + IPv6 VLAN IP RANGE
- cs_vlan_ip_range:
- network: ipr_test_network
- start_ip: 10.2.4.151
- end_ip: 10.2.4.199
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: iprv6
-- name: verify test cleanup IPv4 + IPv6 VLAN IP RANGE
- assert:
- that:
- - iprv6 is successful
- - iprv6 is changed
- - iprv6.vlan == "vlan://98"
- - iprv6.start_ip == "10.2.4.151"
- - iprv6.end_ip == "10.2.4.199"
- - iprv6.gateway == "10.2.4.1"
- - iprv6.netmask == "255.255.255.0"
- - iprv6.start_ipv6 == "2001:db8::10"
- - iprv6.end_ipv6 == "2001:db8::50"
- - iprv6.gateway_ipv6 == "2001:db8::1"
- - iprv6.cidr_ipv6 == "2001:db8::/64"
- - iprv6.network == "ipr_test_network"
- - iprv6.for_virtual_network == false
-
-- name: cleanup test network
- cs_network:
- name: ipr_test_network
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: ipr_net
-- name: verify cleanup test network
- assert:
- that:
- - ipr_net is successful
- - ipr_net is changed
-
-# Create a new zone - the default one is enabled
-- name: assure zone for tests
- cs_zone:
- name: cs-test-zone
- state: present
- dns1: 8.8.8.8
- network_type: Advanced
- register: cszone
-
-- name: ensure the zone is disabled
- cs_zone:
- name: "{{ cszone.name }}"
- state: disabled
-
-- name: setup a network for tests
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- isolation_method: VLAN
- broadcast_domain_range: ZONE
- state: present
- register: public_network
-
-- name: setup public network traffic
- cs_traffic_type:
- physical_network: "{{ public_network.name }}"
- traffic_type: Public
- kvm_networklabel: cloudbr1
- zone: "{{ public_network.zone }}"
-
-- name: test adding a public IP range
- cs_vlan_ip_range:
- end_ip: 10.0.3.250
- start_ip: 10.0.3.10
- zone: "{{ cszone.name }}"
- netmask: 255.255.255.0
- for_virtual_network: 'yes'
- gateway: 10.0.3.2
- vlan: untagged
- register: public_range
-- name: verify test adding a public IP range
- assert:
- that:
- - public_range is successful
- - public_range is changed
- - public_range.physical_network == public_network.id
- - public_range.vlan == 'vlan://untagged'
- - public_range.gateway == '10.0.3.2'
- - public_range.netmask == '255.255.255.0'
- - public_range.zone == cszone.name
- - public_range.start_ip == '10.0.3.10'
- - public_range.end_ip == '10.0.3.250'
-
-- name: cleanup the network
- cs_physical_network:
- name: net01
- zone: "{{ cszone.name }}"
- state: absent
-
-- name: cleanup the zone
- cs_zone:
- name: "{{ cszone.name }}"
- state: absent \ No newline at end of file
diff --git a/test/integration/targets/cs_vmsnapshot/aliases b/test/integration/targets/cs_vmsnapshot/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_vmsnapshot/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_vmsnapshot/defaults/main.yml b/test/integration/targets/cs_vmsnapshot/defaults/main.yml
deleted file mode 100644
index 490c6c14e2..0000000000
--- a/test/integration/targets/cs_vmsnapshot/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-test_cs_instance_template: "{{ cs_common_template }}"
-test_cs_instance_offering_1: Small Instance
diff --git a/test/integration/targets/cs_vmsnapshot/meta/main.yml b/test/integration/targets/cs_vmsnapshot/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_vmsnapshot/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_vmsnapshot/tasks/main.yml b/test/integration/targets/cs_vmsnapshot/tasks/main.yml
deleted file mode 100644
index 86766861df..0000000000
--- a/test/integration/targets/cs_vmsnapshot/tasks/main.yml
+++ /dev/null
@@ -1,152 +0,0 @@
----
-- name: setup instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-snapshot"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- register: instance
-- name: verify create instance
- assert:
- that:
- - instance is successful
-
-- name: ensure no snapshot exists
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- state: absent
- register: snap
-- name: verify setup
- assert:
- that:
- - snap is successful
-
-- name: test fail if missing name
- action: cs_vmsnapshot
- register: snap
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - snap is failed
- - 'snap.msg.startswith("missing required arguments: ")'
-
-- name: test create snapshot in check mode
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- snapshot_memory: yes
- register: snap
- check_mode: true
-- name: verify test create snapshot in check mode
- assert:
- that:
- - snap is changed
-
-- name: test create snapshot
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- snapshot_memory: yes
- register: snap
-- name: verify test create snapshot
- assert:
- that:
- - snap is changed
- - snap.display_name == "{{ cs_resource_prefix }}_snapshot"
-
-- name: test create snapshot idempotence
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- snapshot_memory: yes
- register: snap
-- name: verify test create snapshot idempotence
- assert:
- that:
- - snap is not changed
- - snap.display_name == "{{ cs_resource_prefix }}_snapshot"
-
-- name: test revert snapshot in check mode
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- state: revert
- register: snap
- check_mode: true
-- name: verify test revert snapshot in check mode
- assert:
- that:
- - snap is changed
- - snap.display_name == "{{ cs_resource_prefix }}_snapshot"
-
-- name: test fail revert unknown snapshot
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot_unknown"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- state: revert
- register: snap
- ignore_errors: true
-- name: verify test fail revert unknown snapshot
- assert:
- that:
- - snap is failed
- - snap.msg == "snapshot not found, could not revert VM"
-
-- name: test revert snapshot
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- state: revert
- register: snap
-- name: verify test revert snapshot
- assert:
- that:
- - snap is changed
- - snap.display_name == "{{ cs_resource_prefix }}_snapshot"
-
-- name: test remove snapshot in check mode
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- state: absent
- register: snap
- check_mode: true
-- name: verify test remove snapshot in check mode
- assert:
- that:
- - snap is changed
- - snap.display_name == "{{ cs_resource_prefix }}_snapshot"
-
-- name: test remove snapshot
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- state: absent
- register: snap
-- name: verify test remove snapshot
- assert:
- that:
- - snap is changed
- - snap.display_name == "{{ cs_resource_prefix }}_snapshot"
-
-- name: test remove snapshot idempotence
- cs_vmsnapshot:
- name: "{{ cs_resource_prefix }}_snapshot"
- vm: "{{ cs_resource_prefix }}-vm-snapshot"
- state: absent
- register: snap
-- name: verify test remove snapshot idempotence
- assert:
- that:
- - snap is not changed
-
-- name: cleanup instance
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-snapshot"
- state: expunged
- register: instance
-- name: verify destroy instance
- assert:
- that:
- - instance is successful
diff --git a/test/integration/targets/cs_volume/aliases b/test/integration/targets/cs_volume/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_volume/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_volume/defaults/main.yml b/test/integration/targets/cs_volume/defaults/main.yml
deleted file mode 100644
index f1074cf166..0000000000
--- a/test/integration/targets/cs_volume/defaults/main.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-test_cs_instance_1: "{{ cs_resource_prefix }}-vm1"
-test_cs_instance_2: "{{ cs_resource_prefix }}-vm2"
-test_cs_instance_3: "{{ cs_resource_prefix }}-vm3"
-test_cs_instance_template: "{{ cs_common_template }}"
-test_cs_instance_offering_1: Small Instance
-test_cs_disk_offering_1: Custom
-test_cs_volume_to_upload: http://dl.openvm.eu/cloudstack/macchinina/x86_64/macchinina-xen.vhd.bz2
diff --git a/test/integration/targets/cs_volume/meta/main.yml b/test/integration/targets/cs_volume/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_volume/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_volume/tasks/common.yml b/test/integration/targets/cs_volume/tasks/common.yml
deleted file mode 100644
index 615ed45c2e..0000000000
--- a/test/integration/targets/cs_volume/tasks/common.yml
+++ /dev/null
@@ -1,296 +0,0 @@
----
-- name: setup
- cs_volume: name={{ cs_resource_prefix }}_vol state=absent
- register: vol
-- name: verify setup
- assert:
- that:
- - vol is successful
-
-- name: setup instance 1
- cs_instance:
- name: "{{ test_cs_instance_1 }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- register: instance
-- name: verify create instance
- assert:
- that:
- - instance is successful
-
-- name: setup instance 2
- cs_instance:
- name: "{{ test_cs_instance_2 }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- register: instance
-- name: verify create instance
- assert:
- that:
- - instance is successful
-
-- name: test fail if missing name
- action: cs_volume
- register: vol
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - vol is failed
- - "vol.msg == 'missing required arguments: name'"
-
-- name: test create volume in check mode
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- disk_offering: "{{ test_cs_disk_offering_1 }}"
- size: 20
- register: vol
- check_mode: true
-- name: verify results test create volume in check mode
- assert:
- that:
- - vol is changed
-
-- name: test create volume
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- disk_offering: "{{ test_cs_disk_offering_1 }}"
- size: 20
- register: vol
-- name: verify results test create volume
- assert:
- that:
- - vol is changed
- - vol.size == 20 * 1024 ** 3
- - vol.name == "{{ cs_resource_prefix }}_vol"
-
-- name: test create volume idempotence
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- disk_offering: "{{ test_cs_disk_offering_1 }}"
- size: 20
- register: vol
-- name: verify results test create volume idempotence
- assert:
- that:
- - vol is not changed
- - vol.size == 20 * 1024 ** 3
- - vol.name == "{{ cs_resource_prefix }}_vol"
-
-- name: test shrink volume in check mode
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- disk_offering: "{{ test_cs_disk_offering_1 }}"
- size: 10
- shrink_ok: yes
- register: vol
- check_mode: true
-- name: verify results test create volume in check mode
- assert:
- that:
- - vol is changed
- - vol.size == 20 * 1024 ** 3
- - vol.name == "{{ cs_resource_prefix }}_vol"
-
-- name: test shrink volume
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- disk_offering: "{{ test_cs_disk_offering_1 }}"
- size: 10
- shrink_ok: yes
- register: vol
-- name: verify results test create volume
- assert:
- that:
- - vol is changed
- - vol.size == 10 * 1024 ** 3
- - vol.name == "{{ cs_resource_prefix }}_vol"
-
-- name: test shrink volume idempotence
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- disk_offering: "{{ test_cs_disk_offering_1 }}"
- size: 10
- shrink_ok: yes
- register: vol
-- name: verify results test create volume
- assert:
- that:
- - vol is not changed
- - vol.size == 10 * 1024 ** 3
- - vol.name == "{{ cs_resource_prefix }}_vol"
-
-- name: test attach volume in check mode
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- vm: "{{ test_cs_instance_1 }}"
- state: attached
- register: vol
- check_mode: true
-- name: verify results test attach volume in check mode
- assert:
- that:
- - vol is changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
- - vol.attached is not defined
-
-- name: test attach volume
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- vm: "{{ test_cs_instance_1 }}"
- state: attached
- register: vol
-- name: verify results test attach volume
- assert:
- that:
- - vol is changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
- - vol.vm == "{{ test_cs_instance_1 }}"
- - vol.attached is defined
-
-- name: test attach volume idempotence
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- vm: "{{ test_cs_instance_1 }}"
- state: attached
- register: vol
-- name: verify results test attach volume idempotence
- assert:
- that:
- - vol is not changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
- - vol.vm == "{{ test_cs_instance_1 }}"
- - vol.attached is defined
-
-- name: test attach attached volume to another vm in check mdoe
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- vm: "{{ test_cs_instance_2 }}"
- state: attached
- register: vol
- check_mode: true
-- name: verify results test attach attached volume to another vm in check mode
- assert:
- that:
- - vol is changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
- - vol.vm == "{{ test_cs_instance_1 }}"
- - vol.attached is defined
-
-- name: test attach attached volume to another vm
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- vm: "{{ test_cs_instance_2 }}"
- state: attached
- register: vol
-- name: verify results test attach attached volume to another vm
- assert:
- that:
- - vol is changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
- - vol.vm == "{{ test_cs_instance_2 }}"
- - vol.attached is defined
-
-- name: test attach attached volume to another vm idempotence
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- vm: "{{ test_cs_instance_2 }}"
- state: attached
- register: vol
-- name: verify results test attach attached volume to another vm idempotence
- assert:
- that:
- - vol is not changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
- - vol.vm == "{{ test_cs_instance_2 }}"
- - vol.attached is defined
-
-- name: test detach volume in check mode
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- state: detached
- register: vol
- check_mode: true
-- name: verify results test detach volume in check mdoe
- assert:
- that:
- - vol is changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
- - vol.attached is defined
-
-- name: test detach volume
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- state: detached
- register: vol
-- name: verify results test detach volume
- assert:
- that:
- - vol is changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
- - vol.attached is undefined
-
-- name: test detach volume idempotence
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- state: detached
- register: vol
-- name: verify results test detach volume idempotence
- assert:
- that:
- - vol is not changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
- - vol.attached is undefined
-
-- name: test delete volume in check mode
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- state: absent
- register: vol
- check_mode: true
-- name: verify results test create volume in check mode
- assert:
- that:
- - vol is changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
-
-- name: test delete volume
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- state: absent
- register: vol
-- name: verify results test create volume
- assert:
- that:
- - vol is changed
- - vol.name == "{{ cs_resource_prefix }}_vol"
-
-- name: test delete volume idempotence
- cs_volume:
- name: "{{ cs_resource_prefix }}_vol"
- state: absent
- register: vol
-- name: verify results test delete volume idempotence
- assert:
- that:
- - vol is not changed
-
-- name: cleanup instance 1
- cs_instance:
- name: "{{ test_cs_instance_1 }}"
- state: absent
- register: instance
-- name: verify create instance
- assert:
- that:
- - instance is successful
-
-- name: cleanup instance 2
- cs_instance:
- name: "{{ test_cs_instance_2 }}"
- state: absent
- register: instance
-- name: verify create instance
- assert:
- that:
- - instance is successful
diff --git a/test/integration/targets/cs_volume/tasks/extract_upload.yml b/test/integration/targets/cs_volume/tasks/extract_upload.yml
deleted file mode 100644
index 5dc701873b..0000000000
--- a/test/integration/targets/cs_volume/tasks/extract_upload.yml
+++ /dev/null
@@ -1,190 +0,0 @@
----
-- name: setup
- cs_volume:
- zone: "{{ cs_common_zone_adv }}"
- name: "{{ cs_resource_prefix }}_upload"
- state: absent
- register: uploaded_vol
-- name: verify setup
- assert:
- that:
- - uploaded_vol is successful
-
-- name: setup network
- cs_network:
- name: "cs_volume_network"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: DefaultSharedNetworkOffering
- vlan: 2435
- start_ip: 10.100.129.11
- end_ip: 10.100.129.250
- gateway: 10.100.129.1
- netmask: 255.255.255.0
- register: net
-- name: verify setup network
- assert:
- that:
- - net is successful
- - net.name == "cs_volume_network"
-
-- name: setup instance
- cs_instance:
- zone: "{{ cs_common_zone_adv }}"
- name: "{{ test_cs_instance_3 }}"
- template: "{{ test_cs_instance_template }}"
- service_offering: "{{ test_cs_instance_offering_1 }}"
- network: cs_volume_network
- register: instance
-- name: verify setup instance
- assert:
- that:
- - instance is successful
-
-- name: setup stop instance
- cs_instance:
- zone: "{{ cs_common_zone_adv }}"
- name: "{{ test_cs_instance_3 }}"
- state: stopped
- register: instance
-- name: verify stop instance
- assert:
- that:
- - instance is successful
- - instance.state == 'Stopped'
-
-- name: setup get instance info
- cs_instance_info:
- name: "{{ test_cs_instance_3 }}"
- register: instance
-- name: verify setup get instance info
- assert:
- that:
- - instance is successful
-
-- name: test extract volume in check mode
- cs_volume:
- zone: "{{ cs_common_zone_adv }}"
- state: extracted
- name: "{{ instance.instances[0].volumes[0].name }}"
- check_mode: yes
- register: extracted_vol
-- name: verify test extract volume in check mode
- assert:
- that:
- - extracted_vol is successful
- - extracted_vol is changed
- - extracted_vol.state == "Ready"
- - extracted_vol.name == "{{ instance.instances[0].volumes[0].name }}"
- - extracted_vol.url is not defined
-
-- name: test extract volume
- cs_volume:
- zone: "{{ cs_common_zone_adv }}"
- state: extracted
- name: "{{ instance.instances[0].volumes[0].name }}"
- register: extracted_vol
-- name: verify test extract volume
- assert:
- that:
- - extracted_vol is successful
- - extracted_vol is changed
- - extracted_vol.state == "DOWNLOAD_URL_CREATED"
- - extracted_vol.name == "{{ instance.instances[0].volumes[0].name }}"
- - extracted_vol.url is defined
-
-- name: test upload volume with missing param
- cs_volume:
- zone: "{{ cs_common_zone_adv }}"
- state: uploaded
- name: "{{ cs_resource_prefix }}_upload"
- url: "{{ test_cs_volume_to_upload }}"
- ignore_errors: yes
- register: uploaded_vol
-- name: verify upload volume with missing param
- assert:
- that:
- - uploaded_vol is failed
- - uploaded_vol is not changed
- - 'uploaded_vol.msg == "state is uploaded but all of the following are missing: format"'
-
-- name: test upload volume in check mode
- cs_volume:
- zone: "{{ cs_common_zone_adv }}"
- state: uploaded
- name: "{{ cs_resource_prefix }}_upload"
- format: VHD
- url: "{{ test_cs_volume_to_upload }}"
- check_mode: yes
- register: uploaded_vol
-- name: verify upload volume in check mode
- assert:
- that:
- - uploaded_vol is successful
- - uploaded_vol is changed
- - uploaded_vol.name is not defined
-
-- name: test upload volume
- cs_volume:
- zone: "{{ cs_common_zone_adv }}"
- state: uploaded
- name: "{{ cs_resource_prefix }}_upload"
- format: VHD
- url: "{{ test_cs_volume_to_upload }}"
- register: uploaded_vol
-- name: verify upload volume
- assert:
- that:
- - uploaded_vol is successful
- - uploaded_vol is changed
- - uploaded_vol.name == "{{ cs_resource_prefix }}_upload"
- - uploaded_vol.state == "Uploaded"
-
-- name: test upload volume idempotence
- cs_volume:
- zone: "{{ cs_common_zone_adv }}"
- state: uploaded
- name: "{{ cs_resource_prefix }}_upload"
- format: VHD
- url: "{{ test_cs_volume_to_upload }}"
- register: uploaded_vol
-- name: verify upload volume idempotence
- assert:
- that:
- - uploaded_vol is successful
- - uploaded_vol is not changed
- - uploaded_vol.name == "{{ cs_resource_prefix }}_upload"
- - uploaded_vol.state == "Uploaded"
-
-- name: delete volume
- cs_volume:
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- name: "{{ cs_resource_prefix }}_upload"
- register: uploaded_vol
-- name: verify delete volume
- assert:
- that:
- - uploaded_vol is successful
- - uploaded_vol is changed
-
-- name: destroy instance
- cs_instance:
- zone: "{{ cs_common_zone_adv }}"
- name: "{{ test_cs_instance_3 }}"
- state: expunged
- register: instance
-- name: verify destroy instance
- assert:
- that:
- - instance is successful
-
-- name: delete network
- cs_network:
- name: "cs_volume_network"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: net
-- name: verify delete network
- assert:
- that:
- - net is successful
diff --git a/test/integration/targets/cs_volume/tasks/main.yml b/test/integration/targets/cs_volume/tasks/main.yml
deleted file mode 100644
index 3b863beb95..0000000000
--- a/test/integration/targets/cs_volume/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- include_tasks: common.yml
-- include_tasks: extract_upload.yml
diff --git a/test/integration/targets/cs_vpc/aliases b/test/integration/targets/cs_vpc/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_vpc/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_vpc/meta/main.yml b/test/integration/targets/cs_vpc/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_vpc/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_vpc/tasks/main.yml b/test/integration/targets/cs_vpc/tasks/main.yml
deleted file mode 100644
index 11e310a5f5..0000000000
--- a/test/integration/targets/cs_vpc/tasks/main.yml
+++ /dev/null
@@ -1,728 +0,0 @@
----
-- name: setup
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpc
-- name: verify setup
- assert:
- that:
- - vpc is successful
-
-- name: test fail missing name of vpc
- cs_vpc:
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: true
- register: vpc
-- name: verify test fail missing name of vpc
- assert:
- that:
- - vpc is failed
- - "vpc.msg.startswith('missing required arguments: ')"
-
-- name: test fail missing cidr for vpc
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: true
- register: vpc
-- name: verify test fail missing cidr for vpc
- assert:
- that:
- - vpc is failed
- - 'vpc.msg == "state is present but all of the following are missing: cidr"'
-
-- name: test fail missing vpc offering not found
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- vpc_offering: does_not_exist
- zone: "{{ cs_common_zone_adv }}"
- cidr: 10.10.1.0/16
- ignore_errors: true
- register: vpc
-- name: verify test fail missing cidr for vpc
- assert:
- that:
- - vpc is failed
- - 'vpc.msg == "VPC offering not found or not enabled: does_not_exist"'
-
-- name: test fail name substring match
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- # Full name is "Redundant VPC offering"
- vpc_offering: "Redundant"
- zone: "{{ cs_common_zone_adv }}"
- cidr: 10.10.1.0/16
- ignore_errors: true
- register: vpc
-- name: verify test fail name substring match
- assert:
- that:
- - vpc is failed
- - 'vpc.msg == "VPC offering not found or not enabled: Redundant"'
-
-- name: test create vpc with custom offering in check mode
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc_custom"
- display_text: "{{ cs_resource_prefix }}_display_text_custom"
- cidr: 10.10.1.0/16
- vpc_offering: Redundant VPC offering
- network_domain: test.example.com
- zone: "{{ cs_common_zone_adv }}"
- state: stopped
- register: vpc
- check_mode: true
-- name: verify test create vpc with custom offering in check mode
- assert:
- that:
- - vpc is successful
- - vpc is changed
-
-- name: test create vpc with custom offering
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc_custom"
- display_text: "{{ cs_resource_prefix }}_display_text_custom"
- cidr: 10.10.1.0/16
- vpc_offering: Redundant VPC offering
- network_domain: test.example.com
- zone: "{{ cs_common_zone_adv }}"
- state: stopped
- register: vpc
-- name: verify test create vpc with custom offering
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc_custom"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text_custom"
- - vpc.cidr == "10.10.1.0/16"
- - vpc.network_domain == "test.example.com"
-
-- name: test create vpc with custom offering idempotence
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc_custom"
- display_text: "{{ cs_resource_prefix }}_display_text_custom"
- cidr: 10.10.1.0/16
- vpc_offering: Redundant VPC offering
- network_domain: test.example.com
- zone: "{{ cs_common_zone_adv }}"
- state: stopped
- register: vpc
-- name: verify test create vpc with custom offering idempotence
- assert:
- that:
- - vpc is successful
- - vpc is not changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc_custom"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text_custom"
- - vpc.cidr == "10.10.1.0/16"
- - vpc.network_domain == "test.example.com"
-
-- name: test create vpc with default offering in check mode
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
- check_mode: true
-- name: verify test create vpc with default offering in check mode
- assert:
- that:
- - vpc is successful
- - vpc is changed
-
-- name: test create vpc with default offering
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify test create vpc with default offering
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test create vpc with default offering idempotence
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify test create vpc with default offering idempotence
- assert:
- that:
- - vpc is successful
- - vpc is not changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test create vpc with default offering idempotence2
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify test create vpc idempotence2
- assert:
- that:
- - vpc is successful
- - vpc is not changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test update vpc with default offering in check mode
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text2"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
- check_mode: true
-- name: verify test update vpc with default offering in check mode
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test update vpc with default offering
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text2"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify test update vpc with default offering
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text2"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test update vpc with default offering idempotence
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text2"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify test update vpc idempotence
- assert:
- that:
- - vpc is successful
- - vpc is not changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text2"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test restart vpc with default offering with clean up in check mode
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text2"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- clean_up: true
- state: restarted
- register: vpc
- check_mode: true
-- name: verify test restart vpc with default offering with clean up in check mode
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text2"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test restart vpc with default offering with clean up
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text2"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- clean_up: true
- state: restarted
- register: vpc
-- name: verify test restart vpc with default offering with clean up
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text2"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test restart vpc with default offering without clean up
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text2"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- state: restarted
- register: vpc
-- name: verify test restart vpc with default offering without clean up
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text2"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test create network in vpc in check mode
- cs_network:
- name: "{{ cs_resource_prefix }}_net_vpc"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: Offering for Isolated Vpc networks with Source Nat service enabled
- vpc: "{{ cs_resource_prefix }}_vpc"
- gateway: 10.10.0.1
- netmask: 255.255.255.0
- register: vpc_net
- check_mode: true
-- name: verify test create network in vpc in check mode
- assert:
- that:
- - vpc_net is successful
- - vpc_net is changed
-
-- name: test create network in vpc
- cs_network:
- name: "{{ cs_resource_prefix }}_net_vpc"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: Offering for Isolated Vpc networks with Source Nat service enabled
- vpc: "{{ cs_resource_prefix }}_vpc"
- gateway: 10.10.0.1
- netmask: 255.255.255.0
- register: vpc_net
-- name: verify test create network in vpc
- assert:
- that:
- - vpc_net is successful
- - vpc_net is changed
- - vpc_net.name == "{{ cs_resource_prefix }}_net_vpc"
-
-- name: test create network in vpc idempotence
- cs_network:
- name: "{{ cs_resource_prefix }}_net_vpc"
- zone: "{{ cs_common_zone_adv }}"
- network_offering: Offering for Isolated Vpc networks with Source Nat service enabled
- vpc: "{{ cs_resource_prefix }}_vpc"
- gateway: 10.10.0.1
- netmask: 255.255.255.0
- register: vpc_net
-- name: verify test create network in vpc idempotence
- assert:
- that:
- - vpc_net is successful
- - vpc_net is not changed
- - vpc_net.name == "{{ cs_resource_prefix }}_net_vpc"
-
-- name: test create instance in vpc in check mode
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-vpc"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- network: "{{ cs_resource_prefix }}_net_vpc"
- register: instance
- check_mode: true
-- name: verify test create instance in vpc in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
-
-- name: test create instance in vpc
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-vpc"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- network: "{{ cs_resource_prefix }}_net_vpc"
- register: instance
-- name: verify test create instance in vpc
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-vpc"
- - instance.state == "Running"
-
-- name: test create instance in vpc idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-vpc"
- template: "{{ cs_common_template }}"
- service_offering: "{{ cs_common_service_offering }}"
- zone: "{{ cs_common_zone_adv }}"
- network: "{{ cs_resource_prefix }}_net_vpc"
- register: instance
-- name: verify test create instance in vpc idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
- - instance.name == "{{ cs_resource_prefix }}-vm-vpc"
- - instance.state == "Running"
-
-- name: test get ip address in vpc
- cs_ip_address:
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: ip_address
- when: instance.public_ip is undefined
-
-- name: test static nat in vpc in check mode
- cs_staticnat:
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- ip_address: "{{ ip_address.ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- vpc: "{{ cs_resource_prefix }}_vpc"
- network: "{{ cs_resource_prefix }}_net_vpc"
- register: static_nat
- check_mode: true
-- name: verify test static nat in vpc in check mode
- assert:
- that:
- - static_nat is successful
- - static_nat is changed
-
-- name: test static nat in vpc
- cs_staticnat:
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- ip_address: "{{ ip_address.ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- vpc: "{{ cs_resource_prefix }}_vpc"
- network: "{{ cs_resource_prefix }}_net_vpc"
- register: static_nat
-- name: verify test static nat in vpc
- assert:
- that:
- - static_nat is successful
- - static_nat is changed
-
-- name: test static nat in vpc idempotence
- cs_staticnat:
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- ip_address: "{{ ip_address.ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- vpc: "{{ cs_resource_prefix }}_vpc"
- network: "{{ cs_resource_prefix }}_net_vpc"
- register: static_nat
-- name: verify test static nat in vpc idempotence
- assert:
- that:
- - static_nat is successful
- - static_nat is not changed
-
-- name: test remove static nat in vpc in check mode
- cs_staticnat:
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- ip_address: "{{ ip_address.ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- vpc: "{{ cs_resource_prefix }}_vpc"
- network: "{{ cs_resource_prefix }}_net_vpc"
- state: absent
- register: static_nat
- check_mode: true
-- name: verify test remove static nat in vpc in check mode
- assert:
- that:
- - static_nat is successful
- - static_nat is changed
-
-- name: test remove static nat in vpc
- cs_staticnat:
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- ip_address: "{{ ip_address.ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- vpc: "{{ cs_resource_prefix }}_vpc"
- network: "{{ cs_resource_prefix }}_net_vpc"
- state: absent
- register: static_nat
-- name: verify test remove static nat in vpc
- assert:
- that:
- - static_nat is successful
- - static_nat is changed
-
-- name: test remove static nat in vpc idempotence
- cs_staticnat:
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- ip_address: "{{ ip_address.ip_address }}"
- zone: "{{ cs_common_zone_adv }}"
- vpc: "{{ cs_resource_prefix }}_vpc"
- network: "{{ cs_resource_prefix }}_net_vpc"
- state: absent
- register: static_nat
-- name: verify test remove static nat in vpc idempotence
- assert:
- that:
- - static_nat is successful
- - static_nat is not changed
-
-- name: test create port forwarding in vpc in check mode
- cs_portforward:
- ip_address: "{{ ip_address.ip_address }}"
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- public_port: 80
- private_port: 8080
- network: "{{ cs_resource_prefix }}_net_vpc"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: port_forward
- check_mode: true
-- name: verify test create port forwarding in vpc in check mode
- assert:
- that:
- - port_forward is successful
- - port_forward is changed
-
-- name: test create port forwarding in vpc
- cs_portforward:
- ip_address: "{{ ip_address.ip_address }}"
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- public_port: 80
- private_port: 8080
- network: "{{ cs_resource_prefix }}_net_vpc"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: port_forward
-- name: verify test create port forwarding in vpc
- assert:
- that:
- - port_forward is successful
- - port_forward is changed
-
-- name: test create port forwarding in vpc idempotence
- cs_portforward:
- ip_address: "{{ ip_address.ip_address }}"
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- public_port: 80
- private_port: 8080
- network: "{{ cs_resource_prefix }}_net_vpc"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: port_forward
-- name: verify test create port forwarding in vpc idempotence
- assert:
- that:
- - port_forward is successful
- - port_forward is not changed
-
-- name: test remove port forwarding in vpc in check mode
- cs_portforward:
- ip_address: "{{ ip_address.ip_address }}"
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- public_port: 80
- private_port: 8080
- network: "{{ cs_resource_prefix }}_net_vpc"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: port_forward
- check_mode: true
-- name: verify test remove port forwarding in vpc in check mode
- assert:
- that:
- - port_forward is successful
- - port_forward is changed
-
-- name: test remove port forwarding in vpc
- cs_portforward:
- ip_address: "{{ ip_address.ip_address }}"
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- public_port: 80
- private_port: 8080
- network: "{{ cs_resource_prefix }}_net_vpc"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: port_forward
-- name: verify test remove port forwarding in vpc
- assert:
- that:
- - port_forward is successful
- - port_forward is changed
-
-- name: test remove port forwarding in vpc idempotence
- cs_portforward:
- ip_address: "{{ ip_address.ip_address }}"
- vm: "{{ cs_resource_prefix }}-vm-vpc"
- public_port: 80
- private_port: 8080
- network: "{{ cs_resource_prefix }}_net_vpc"
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: port_forward
-- name: verify test remove port forwarding in vpc idempotence
- assert:
- that:
- - port_forward is successful
- - port_forward is not changed
-
-- name: test remove ip address from vpc
- cs_ip_address:
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- ip_address: "{{ ip_address.ip_address }}"
- state: absent
- register: ip_address_removed
-- name: verify test remove ip address from vpc
- assert:
- that:
- - ip_address_removed is successful
- - ip_address_removed is changed
-
-- name: test remove instance in vpc in check mdoe
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
- register: instance
- check_mode: true
-- name: verify test remove instance in vpc in check mode
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-vpc"
- - instance.state == "Running"
-
-- name: test remove instance in vpc
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
- register: instance
-- name: verify test remove instance in vpc
- assert:
- that:
- - instance is successful
- - instance is changed
- - instance.name == "{{ cs_resource_prefix }}-vm-vpc"
- - instance.state == "Running"
-
-- name: test remove instance in vpc idempotence
- cs_instance:
- name: "{{ cs_resource_prefix }}-vm-vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: expunged
- register: instance
-- name: verify test remove instance in vpc idempotence
- assert:
- that:
- - instance is successful
- - instance is not changed
-
-- name: test remove network in vpc in check mode
- cs_network:
- name: "{{ cs_resource_prefix }}_net_vpc"
- zone: "{{ cs_common_zone_adv }}"
- vpc: "{{ cs_resource_prefix }}_vpc"
- state: absent
- register: vpc_net
- check_mode: true
-- name: verify test remove network in vpc in check mode
- assert:
- that:
- - vpc_net is successful
- - vpc_net is changed
- - vpc_net.name == "{{ cs_resource_prefix }}_net_vpc"
-
-- name: test remove network in vpc
- cs_network:
- name: "{{ cs_resource_prefix }}_net_vpc"
- zone: "{{ cs_common_zone_adv }}"
- vpc: "{{ cs_resource_prefix }}_vpc"
- state: absent
- register: vpc_net
-- name: verify test remove network in vpc
- assert:
- that:
- - vpc_net is successful
- - vpc_net is changed
- - vpc_net.name == "{{ cs_resource_prefix }}_net_vpc"
-
-- name: test remove network in vpc idempotence
- cs_network:
- name: "{{ cs_resource_prefix }}_net_vpc"
- zone: "{{ cs_common_zone_adv }}"
- vpc: "{{ cs_resource_prefix }}_vpc"
- state: absent
- register: vpc_net
-- name: verify test remove network in vpc idempotence
- assert:
- that:
- - vpc_net is successful
- - vpc_net is not changed
-
-- name: test remove vpc with default offering in check mode
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
- check_mode: true
-- name: verify test remove vpc with default offering in check mode
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text2"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test remove vpc with default offering
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify test remove vpc with default offering
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc"
- - vpc.display_text == "{{ cs_resource_prefix }}_display_text2"
- - vpc.cidr == "10.10.0.0/16"
-
-- name: test remove vpc with default offering idempotence
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- state: absent
- register: vpc
-- name: verify test remove vpc idempotence
- assert:
- that:
- - vpc is successful
- - vpc is not changed
-
-- name: test remove vpc with custom offering
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc_custom"
- state: absent
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify test remove vpc with custom offering
- assert:
- that:
- - vpc is successful
- - vpc is changed
- - vpc.name == "{{ cs_resource_prefix }}_vpc_custom"
- - vpc.cidr == "10.10.1.0/16"
diff --git a/test/integration/targets/cs_vpc_offering/aliases b/test/integration/targets/cs_vpc_offering/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_vpc_offering/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_vpc_offering/meta/main.yml b/test/integration/targets/cs_vpc_offering/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_vpc_offering/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_vpc_offering/tasks/main.yml b/test/integration/targets/cs_vpc_offering/tasks/main.yml
deleted file mode 100644
index ebbeaf910a..0000000000
--- a/test/integration/targets/cs_vpc_offering/tasks/main.yml
+++ /dev/null
@@ -1,427 +0,0 @@
----
-- name: setup
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- state: absent
- register: vpcoffer
-- name: verify setup
- assert:
- that:
- - vpcoffer is successful
-
-- name: test fail if missing name
- cs_vpc_offering:
- register: vpcoffer
- ignore_errors: true
-- name: verify results of fail if missing name
- assert:
- that:
- - vpcoffer is failed
- - 'vpcoffer.msg == "missing required arguments: name"'
-
-- name: test fail if missing params
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- register: vpcoffer
- ignore_errors: true
-- name: verify results of fail if missing params
- assert:
- that:
- - vpcoffer is failed
- - 'vpcoffer.msg == "missing required arguments: display_text, supported_services"'
-
-- name: test create vpc offer in check mode
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- register: vpcoffer
- check_mode: yes
-- name: verify results of vpc offer in check mode
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
-
-- name: test create vpc offer
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- register: vpcoffer
-- name: verify results of vpc offer
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description"
- - vpcoffer.distributed == false
- - vpcoffer.region_level == false
-
-- name: test create vpc offer idempotence
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- register: vpcoffer
-- name: verify results of create vpc offer idempotence
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is not changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description"
- - vpcoffer.distributed == false
- - vpcoffer.region_level == false
-
-- name: test enabling existing vpc offer in check_mode
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- state: enabled
- register: vpcoffer
- check_mode: yes
-- name: verify results of enabling existing vpc offer in check_mode
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description"
-
-- name: test enabling existing vpc offer
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- state: enabled
- register: vpcoffer
-- name: verify results of enabling existing vpc offer
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Enabled"
- - vpcoffer.display_text == "vpc offering description"
-
-- name: test enabling existing vpc offer idempotence
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- state: enabled
- register: vpcoffer
-- name: verify results of enabling existing vpc idempotence
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is not changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Enabled"
- - vpcoffer.display_text == "vpc offering description"
-
-- name: test disabling vpc offer in check_mode
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: vpcoffer
- check_mode: yes
-- name: verify results of disabling vpc offer in check_mode
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Enabled"
- - vpcoffer.display_text == "vpc offering description"
-
-- name: test disabling vpc offer
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: vpcoffer
-- name: verify results of disabling vpc offer
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description"
-
-- name: test disabling vpc offer idempotence
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: vpcoffer
-- name: verify results of disabling vpc idempotence
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is not changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description"
-
-- name: test rename vpc offer in check_mode
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description renamed"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: vpcoffer
- check_mode: yes
-- name: verify results of rename vpc offer in check_mode
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description"
-
-- name: test rename vpc offer
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description renamed"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: vpcoffer
-- name: verify results of rename vpc offer
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description renamed"
-
-- name: test rename vpc offer idempotence
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description renamed"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: disabled
- register: vpcoffer
-- name: verify results of rename vpc offer idempotence
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is not changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description renamed"
-
-- name: test update offer with minimal params in check_mode
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description update"
- register: vpcoffer
- check_mode: yes
-- name: verify results of update offer with minimal params in check_mode
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description renamed"
-
-- name: test update offer with minimal params
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description update"
- register: vpcoffer
-- name: verify results of update offer with minimal params
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description update"
-
-- name: test update offer with minimal params idempotency
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description update"
- register: vpcoffer
-- name: verify results of update offer with minimal params idempotency
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is not changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description update"
-
-- name: test remove vpc offer in check_mode
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- state: absent
- register: vpcoffer
- check_mode: yes
-- name: verify results of rename vpc offer in check_mode
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Disabled"
- - vpcoffer.display_text == "vpc offering description update"
-
-- name: test remove vpc offer
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- state: absent
- register: vpcoffer
-- name: verify results of rename vpc offer
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
-
-- name: test remove vpc offer idempotence
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- state: absent
- register: vpcoffer
-- name: verify results of rename vpc offer idempotence
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is not changed
-
-- name: test create enabled vpc offer in check mode
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: enabled
- register: vpcoffer
- check_mode: yes
-- name: verify results of create enabled vpc offer in check mode
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
-
-- name: test create enabled vpc offer
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: enabled
- register: vpcoffer
-- name: verify results of create enabled vpc offer
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Enabled"
- - vpcoffer.display_text == "vpc offering description"
-
-- name: test create enabled vpc offer idempotence
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: enabled
- register: vpcoffer
-- name: verify results of create enabled vpc offer idempotence
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is not changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc"
- - vpcoffer.state == "Enabled"
- - vpcoffer.display_text == "vpc offering description"
-
-- name: test create enabled region level vpc offer with distrubuted router
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc_drl"
- display_text: "vpc offering description"
- supported_services: [ Dns, PortForwarding, Dhcp, SourceNat, UserData, StaticNat, Vpn, Lb ]
- service_providers:
- - { service: 'dns', provider: 'virtualrouter' }
- - { service: 'dhcp', provider: 'virtualrouter' }
- state: enabled
- service_capabilities:
- - {service: 'Connectivity', capabilitytype: 'DistributedRouter', capabilityvalue: true}
- - {service: 'Connectivity', capabilitytype: 'RegionLevelVPC', capabilityvalue: true}
- register: vpcoffer
-- name: verify results of create enabled region level vpc offer with distrubuted router
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
- - vpcoffer.name == "{{ cs_resource_prefix }}_vpc_drl"
- - vpcoffer.state == "Enabled"
- - vpcoffer.display_text == "vpc offering description"
- - vpcoffer.distributed == true
- - vpcoffer.region_level == true
-
-- name: remove vpc offer
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc"
- state: absent
- register: vpcoffer
-- name: verify results of remove vpc offer
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
-
-- name: remove region level vpc offer with distrubuted router
- cs_vpc_offering:
- name: "{{ cs_resource_prefix }}_vpc_drl"
- state: absent
- register: vpcoffer
-- name: verify results of remove region level vpc offer with distrubuted router
- assert:
- that:
- - vpcoffer is successful
- - vpcoffer is changed
diff --git a/test/integration/targets/cs_vpn_connection/aliases b/test/integration/targets/cs_vpn_connection/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_vpn_connection/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_vpn_connection/meta/main.yml b/test/integration/targets/cs_vpn_connection/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_vpn_connection/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_vpn_connection/tasks/main.yml b/test/integration/targets/cs_vpn_connection/tasks/main.yml
deleted file mode 100644
index 97e1d94105..0000000000
--- a/test/integration/targets/cs_vpn_connection/tasks/main.yml
+++ /dev/null
@@ -1,205 +0,0 @@
----
-- name: setup vpc
- cs_vpc:
- name: my_vpc
- display_text: my_vpc
- cidr: 10.10.1.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify setup vpc
- assert:
- that:
- - vpc is successful
-
-- name: setup customer gateway
- cs_vpn_customer_gateway:
- name: my_vpn_customer_gateway
- cidr: 192.168.123.0/24
- esp_policy: aes256-sha1;modp1536
- gateway: 10.11.1.1
- ike_policy: aes256-sha1;modp1536
- ipsec_psk: ~S3¢r3Tk3Y¼
- esp_lifetime: 3600
- register: vcg
-- name: setup customer gateway
- assert:
- that:
- - vcg is successful
-
-- name: setup remove vpn connection
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpn_conn
-- name: verify setup remove vpn connection
- assert:
- that:
- - vpn_conn is successful
-
-- name: setup vpn gateway absent
- cs_vpn_gateway:
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpn_gateway
-- name: verify setup vpn gateway absent
- assert:
- that:
- - vpn_gateway is successful
-
-- name: test fail create vpn connection without gateway and force
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- ignore_errors: yes
- register: vpn_conn
-- name: verify test fail create vpn connection without gateway and force
- assert:
- that:
- - vpn_conn is failed
- - vpn_conn.msg == "VPN gateway not found and not forced to create one"
-
-- name: test create vpn connection with force in check mode
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- force: yes
- zone: "{{ cs_common_zone_adv }}"
- check_mode: yes
- register: vpn_conn
-- name: verify test create vpn connection with force in check mode
- assert:
- that:
- - vpn_conn is changed
-
-- name: test create vpn connection with force
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- force: yes
- zone: "{{ cs_common_zone_adv }}"
- register: vpn_conn
-- name: verify test create vpn connection with force
- assert:
- that:
- - vpn_conn is changed
- - vpn_conn.vpn_customer_gateway == "my_vpn_customer_gateway"
- - vpn_conn.vpc == "my_vpc"
-
-- name: test create vpn connection with force idempotence
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- force: yes
- zone: "{{ cs_common_zone_adv }}"
- register: vpn_conn
-- name: verify test create vpn connection with force idempotence
- assert:
- that:
- - vpn_conn is not changed
- - vpn_conn.vpn_customer_gateway == "my_vpn_customer_gateway"
- - vpn_conn.vpc == "my_vpc"
-
-- name: test remove vpn connection in check mode
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- check_mode: yes
- register: vpn_conn
-- name: verify test remove vpn connection in check mode
- assert:
- that:
- - vpn_conn is changed
- - vpn_conn.vpn_customer_gateway == "my_vpn_customer_gateway"
- - vpn_conn.vpc == "my_vpc"
-
-- name: test remove vpn connection
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpn_conn
-- name: verify test remove vpn connection
- assert:
- that:
- - vpn_conn is changed
- - vpn_conn.vpn_customer_gateway == "my_vpn_customer_gateway"
- - vpn_conn.vpc == "my_vpc"
-
-- name: test remove vpn connection idempotence
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpn_conn
-- name: verify test remove vpn connection idempotence
- assert:
- that:
- - vpn_conn is not changed
-
-- name: setup create vpn gateway
- cs_vpn_gateway:
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- register: vpn_gateway
-- name: verify setup create vpn gateway
- assert:
- that:
- - vpn_gateway is success
-
-- name: test create vpn connection without force in check mode
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- check_mode: yes
- register: vpn_conn
-- name: verify test create vpn connection without force in check mode
- assert:
- that:
- - vpn_conn is changed
-
-- name: test create vpn connection without force
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- register: vpn_conn
-- name: verify test create vpn connection without force
- assert:
- that:
- - vpn_conn is changed
- - vpn_conn.vpn_customer_gateway == "my_vpn_customer_gateway"
- - vpn_conn.vpc == "my_vpc"
-
-- name: test create vpn connection without force
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- register: vpn_conn
-- name: verify test create vpn connection without force
- assert:
- that:
- - vpn_conn is not changed
- - vpn_conn.vpn_customer_gateway == "my_vpn_customer_gateway"
- - vpn_conn.vpc == "my_vpc"
-
-- name: cleanup remove vpn connection
- cs_vpn_connection:
- vpn_customer_gateway: my_vpn_customer_gateway
- vpc: my_vpc
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpn_conn
-- name: verify cleanup remove vpn connection idempotence
- assert:
- that:
- - vpn_conn is successful
diff --git a/test/integration/targets/cs_vpn_customer_gateway/aliases b/test/integration/targets/cs_vpn_customer_gateway/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_vpn_customer_gateway/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_vpn_customer_gateway/meta/main.yml b/test/integration/targets/cs_vpn_customer_gateway/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_vpn_customer_gateway/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_vpn_customer_gateway/tasks/main.yml b/test/integration/targets/cs_vpn_customer_gateway/tasks/main.yml
deleted file mode 100644
index d18d4b6fe1..0000000000
--- a/test/integration/targets/cs_vpn_customer_gateway/tasks/main.yml
+++ /dev/null
@@ -1,208 +0,0 @@
----
-- name: setup vpn customer gateway absent
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- state: absent
- register: vcg
-- name: verify setup vpn customer gateway absent
- assert:
- that:
- - vcg is successful
-
-- name: test create vpn customer gateway in check mode
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- cidr: 192.168.123.0/24
- esp_policy: aes256-sha1;modp1536
- gateway: 10.10.0.1
- ike_policy: aes256-sha1;modp1536
- ipsec_psk: ~S3¢r3Tk3Y¼
- esp_lifetime: 3600
- check_mode: true
- register: vcg
-- name: verify test create vpn customer gateway in check mode
- assert:
- that:
- - vcg is changed
-
-- name: test create vpn customer gateway
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- cidr: 192.168.123.0/24
- esp_policy: aes256-sha1;modp1536
- gateway: 10.10.0.1
- ike_policy: aes256-sha1;modp1536
- ipsec_psk: ~S3¢r3Tk3Y¼
- esp_lifetime: 3600
- register: vcg
-- name: verify test create vpn customer gateway
- assert:
- that:
- - vcg is changed
- - "vcg.cidrs == ['192.168.123.0/24']"
- - vcg.dpd == false
- - vcg.esp_lifetime == 3600
- - vcg.esp_policy == 'aes256-sha1;modp1536'
- - vcg.force_encap == false
- - vcg.ike_policy == 'aes256-sha1;modp1536'
- - vcg.gateway == '10.10.0.1'
- - vcg.name == 'ansible_vpn_customer_gw'
- - vcg.ike_lifetime == 86400
-
-- name: test create vpn customer gateway idempotency
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- cidr: 192.168.123.0/24
- esp_policy: aes256-sha1;modp1536
- gateway: 10.10.0.1
- ike_policy: aes256-sha1;modp1536
- ipsec_psk: ~S3¢r3Tk3Y¼
- esp_lifetime: 3600
- register: vcg
-- name: verify test create vpn customer gateway idempotency
- assert:
- that:
- - vcg is not changed
- - "vcg.cidrs == ['192.168.123.0/24']"
- - vcg.dpd == false
- - vcg.esp_lifetime == 3600
- - vcg.esp_policy == 'aes256-sha1;modp1536'
- - vcg.force_encap == false
- - vcg.ike_policy == 'aes256-sha1;modp1536'
- - vcg.gateway == '10.10.0.1'
- - vcg.name == 'ansible_vpn_customer_gw'
- - vcg.ike_lifetime == 86400
-
-- name: test update vpn customer gateway in check mode
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- cidrs:
- - 192.168.123.0/24
- - 192.168.124.0/24
- esp_policy: aes256-sha1;modp1536
- gateway: 10.10.1.1
- ike_policy: aes256-sha1;modp1536
- ipsec_psk: ~S3¢r3Tk3Y@
- esp_lifetime: 1800
- ike_lifetime: 23200
- force_encap: true
- check_mode: true
- register: vcg
-- name: verify test update vpn customer gateway in check mode
- assert:
- that:
- - vcg is changed
- - "vcg.cidrs == ['192.168.123.0/24']"
- - vcg.dpd == false
- - vcg.esp_lifetime == 3600
- - vcg.esp_policy == 'aes256-sha1;modp1536'
- - vcg.force_encap == false
- - vcg.ike_policy == 'aes256-sha1;modp1536'
- - vcg.gateway == '10.10.0.1'
- - vcg.name == 'ansible_vpn_customer_gw'
- - vcg.ike_lifetime == 86400
-
-- name: test update vpn customer gateway
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- cidrs:
- - 192.168.123.0/24
- - 192.168.124.0/24
- esp_policy: aes256-sha1;modp1536
- gateway: 10.10.1.1
- ike_policy: aes256-sha1;modp1536
- ipsec_psk: ~S3¢r3Tk3Y@
- esp_lifetime: 1800
- ike_lifetime: 23200
- force_encap: true
- register: vcg
-- name: verify test update vpn customer gateway
- assert:
- that:
- - vcg is changed
- - "vcg.cidrs == ['192.168.123.0/24', '192.168.124.0/24']"
- - vcg.dpd == false
- - vcg.esp_lifetime == 1800
- - vcg.esp_policy == 'aes256-sha1;modp1536'
- - vcg.force_encap == true
- - vcg.ike_policy == 'aes256-sha1;modp1536'
- - vcg.gateway == '10.10.1.1'
- - vcg.name == 'ansible_vpn_customer_gw'
- - vcg.ike_lifetime == 23200
-
-- name: test update vpn customer gateway idempotence
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- cidrs:
- - 192.168.123.0/24
- - 192.168.124.0/24
- esp_policy: aes256-sha1;modp1536
- gateway: 10.10.1.1
- ike_policy: aes256-sha1;modp1536
- ipsec_psk: ~S3¢r3Tk3Y@
- esp_lifetime: 1800
- ike_lifetime: 23200
- force_encap: true
- register: vcg
-- name: verify test update vpn customer gateway idempotence
- assert:
- that:
- - vcg is not changed
- - "vcg.cidrs == ['192.168.123.0/24', '192.168.124.0/24']"
- - vcg.dpd == false
- - vcg.esp_lifetime == 1800
- - vcg.esp_policy == 'aes256-sha1;modp1536'
- - vcg.force_encap == true
- - vcg.ike_policy == 'aes256-sha1;modp1536'
- - vcg.gateway == '10.10.1.1'
- - vcg.name == 'ansible_vpn_customer_gw'
- - vcg.ike_lifetime == 23200
-
-- name: test remove vpn customer gateway in check mode
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- state: absent
- check_mode: true
- register: vcg
-- name: verify test remove vpn customer gateway in check mode
- assert:
- that:
- - vcg is changed
- - "vcg.cidrs == ['192.168.123.0/24', '192.168.124.0/24']"
- - vcg.dpd == false
- - vcg.esp_lifetime == 1800
- - vcg.esp_policy == 'aes256-sha1;modp1536'
- - vcg.force_encap == true
- - vcg.ike_policy == 'aes256-sha1;modp1536'
- - vcg.gateway == '10.10.1.1'
- - vcg.name == 'ansible_vpn_customer_gw'
- - vcg.ike_lifetime == 23200
-
-- name: test remove vpn customer gateway
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- state: absent
- register: vcg
-- name: verify test remove vpn customer gateway
- assert:
- that:
- - vcg is changed
- - "vcg.cidrs == ['192.168.123.0/24', '192.168.124.0/24']"
- - vcg.dpd == false
- - vcg.esp_lifetime == 1800
- - vcg.esp_policy == 'aes256-sha1;modp1536'
- - vcg.force_encap == true
- - vcg.ike_policy == 'aes256-sha1;modp1536'
- - vcg.gateway == '10.10.1.1'
- - vcg.name == 'ansible_vpn_customer_gw'
- - vcg.ike_lifetime == 23200
-
-- name: test remove vpn customer gateway idempotence
- cs_vpn_customer_gateway:
- name: ansible_vpn_customer_gw
- state: absent
- register: vcg
-- name: verify test remove vpn customer gateway idempotence
- assert:
- that:
- - vcg is not changed
diff --git a/test/integration/targets/cs_vpn_gateway/aliases b/test/integration/targets/cs_vpn_gateway/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_vpn_gateway/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_vpn_gateway/meta/main.yml b/test/integration/targets/cs_vpn_gateway/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_vpn_gateway/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_vpn_gateway/tasks/main.yml b/test/integration/targets/cs_vpn_gateway/tasks/main.yml
deleted file mode 100644
index 2dd7a44590..0000000000
--- a/test/integration/targets/cs_vpn_gateway/tasks/main.yml
+++ /dev/null
@@ -1,108 +0,0 @@
----
-- name: setup vpc
- cs_vpc:
- name: "{{ cs_resource_prefix }}_vpc"
- display_text: "{{ cs_resource_prefix }}_display_text"
- cidr: 10.10.0.0/16
- zone: "{{ cs_common_zone_adv }}"
- register: vpc
-- name: verify setup vpc
- assert:
- that:
- - vpc is successful
-
-- name: setup vpn gateway absent
- cs_vpn_gateway:
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpn_gateway
-- name: verify setup vpn gateway absent
- assert:
- that:
- - vpn_gateway is successful
-
-- name: test fail missing param vpc for vpn gateway
- cs_vpn_gateway:
- ignore_errors: true
- register: vpn_gateway
-- name: verify test fail missing param vpc for vpn gateway
- assert:
- that:
- - vpn_gateway is failed
- - "vpn_gateway.msg.startswith('missing required arguments: ')"
-
-- name: test create vpn gateway in check mode
- cs_vpn_gateway:
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: vpn_gateway
- check_mode: true
-- name: verify test create vpn gateway in check mode
- assert:
- that:
- - vpn_gateway is successful
- - vpn_gateway is changed
-
-- name: test create vpn gateway
- cs_vpn_gateway:
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: vpn_gateway
-- name: verify test create vpn gateway
- assert:
- that:
- - vpn_gateway is successful
- - vpn_gateway is changed
- - vpn_gateway.vpc == "{{ cs_resource_prefix }}_vpc"
-
-- name: test create vpn gateway idempotence
- cs_vpn_gateway:
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- register: vpn_gateway
-- name: verify test create vpn gateway idempotence
- assert:
- that:
- - vpn_gateway is successful
- - vpn_gateway is not changed
- - vpn_gateway.vpc == "{{ cs_resource_prefix }}_vpc"
-
-- name: test remove vpn gateway in check mode
- cs_vpn_gateway:
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpn_gateway
- check_mode: true
-- name: verify test remove vpn gateway in check mode
- assert:
- that:
- - vpn_gateway is successful
- - vpn_gateway is changed
- - vpn_gateway.vpc == "{{ cs_resource_prefix }}_vpc"
-
-- name: test remove vpn gateway
- cs_vpn_gateway:
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpn_gateway
-- name: verify test remove vpn gateway
- assert:
- that:
- - vpn_gateway is successful
- - vpn_gateway is changed
- - vpn_gateway.vpc == "{{ cs_resource_prefix }}_vpc"
-
-- name: test remove vpn gateway idempotence
- cs_vpn_gateway:
- vpc: "{{ cs_resource_prefix }}_vpc"
- zone: "{{ cs_common_zone_adv }}"
- state: absent
- register: vpn_gateway
-- name: verify test remove vpn gateway idempotence
- assert:
- that:
- - vpn_gateway is successful
- - vpn_gateway is not changed
diff --git a/test/integration/targets/cs_zone/aliases b/test/integration/targets/cs_zone/aliases
deleted file mode 100644
index a315c1b58b..0000000000
--- a/test/integration/targets/cs_zone/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/cs
-shippable/cs/group2
diff --git a/test/integration/targets/cs_zone/meta/main.yml b/test/integration/targets/cs_zone/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_zone/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_zone/tasks/main.yml b/test/integration/targets/cs_zone/tasks/main.yml
deleted file mode 100644
index 9137db44c5..0000000000
--- a/test/integration/targets/cs_zone/tasks/main.yml
+++ /dev/null
@@ -1,205 +0,0 @@
----
-- name: setup zone is absent
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: zone
-- name: verify setup zone absent
- assert:
- that:
- - zone is successful
-
-- name: test fail missing param
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- register: zone
- ignore_errors: true
-- name: verify test fail missing param
- assert:
- that:
- - zone is failed
- - "zone.msg == 'missing required arguments: dns1'"
-
-- name: test create zone in check mode
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- dns1: 8.8.8.8
- dns2: 8.8.4.4
- network_type: Basic
- register: zone
- check_mode: true
-- name: verify test create zone in check mode
- assert:
- that:
- - zone is successful
- - zone is changed
-
-- name: test create zone
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- dns1: 8.8.8.8
- dns2: 8.8.4.4
- network_type: Basic
- register: zone
-- name: verify test create zone
- assert:
- that:
- - zone is successful
- - zone is changed
- - zone.dns1 == "8.8.8.8"
- - zone.dns2 == "8.8.4.4"
- - zone.internal_dns1 == "8.8.8.8"
- - zone.internal_dns2 == "8.8.4.4"
- - zone.local_storage_enabled == false
- - zone.network_type == "Basic"
- - zone.zone_token != ""
- - zone.securitygroups_enabled == true
- - zone.dhcp_provider == "VirtualRouter"
-
-- name: test create zone idempotency
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- dns1: 8.8.8.8
- dns2: 8.8.4.4
- network_type: Basic
- register: zone
-- name: verify test create zone idempotency
- assert:
- that:
- - zone is successful
- - zone is not changed
- - zone.dns1 == "8.8.8.8"
- - zone.dns2 == "8.8.4.4"
- - zone.internal_dns1 == "8.8.8.8"
- - zone.internal_dns2 == "8.8.4.4"
- - zone.local_storage_enabled == false
- - zone.network_type == "Basic"
- - zone.zone_token != ""
- - zone.securitygroups_enabled == true
- - zone.dhcp_provider == "VirtualRouter"
-
-- name: test update zone in check mode
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- dns1: 8.8.8.8
- dns2: 8.8.4.4
- internal_dns1: 10.10.1.100
- internal_dns2: 10.10.1.101
- local_storage_enabled: true
- network_type: Basic
- register: zone
- check_mode: true
-- name: verify test update zone in check mode
- assert:
- that:
- - zone is successful
- - zone is changed
- - zone.dns1 == "8.8.8.8"
- - zone.dns2 == "8.8.4.4"
- - zone.internal_dns1 == "8.8.8.8"
- - zone.internal_dns2 == "8.8.4.4"
- - zone.local_storage_enabled == false
- - zone.network_type == "Basic"
- - zone.zone_token != ""
- - zone.securitygroups_enabled == true
- - zone.dhcp_provider == "VirtualRouter"
-
-- name: test update zone
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- dns1: 8.8.8.8
- dns2: 8.8.4.4
- internal_dns1: 10.10.1.100
- internal_dns2: 10.10.1.101
- local_storage_enabled: true
- network_type: Basic
- register: zone
-- name: verify test update zone
- assert:
- that:
- - zone is successful
- - zone is changed
- - zone.dns1 == "8.8.8.8"
- - zone.dns2 == "8.8.4.4"
- - zone.internal_dns1 == "10.10.1.100"
- - zone.internal_dns2 == "10.10.1.101"
- - zone.local_storage_enabled == true
- - zone.network_type == "Basic"
- - zone.zone_token != ""
- - zone.securitygroups_enabled == true
- - zone.dhcp_provider == "VirtualRouter"
-
-- name: test update zone idempotency
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- dns1: 8.8.8.8
- dns2: 8.8.4.4
- internal_dns1: 10.10.1.100
- internal_dns2: 10.10.1.101
- local_storage_enabled: true
- network_type: Basic
- register: zone
-- name: verify test update zone idempotency
- assert:
- that:
- - zone is successful
- - zone is not changed
- - zone.dns1 == "8.8.8.8"
- - zone.dns2 == "8.8.4.4"
- - zone.internal_dns1 == "10.10.1.100"
- - zone.internal_dns2 == "10.10.1.101"
- - zone.local_storage_enabled == true
- - zone.network_type == "Basic"
- - zone.zone_token != ""
- - zone.securitygroups_enabled == true
- - zone.dhcp_provider == "VirtualRouter"
-
-- name: test absent zone in check mode
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: zone
- check_mode: true
-- name: verify test absent zone in check mode
- assert:
- that:
- - zone is successful
- - zone is changed
- - zone.dns1 == "8.8.8.8"
- - zone.dns2 == "8.8.4.4"
- - zone.internal_dns1 == "10.10.1.100"
- - zone.internal_dns2 == "10.10.1.101"
- - zone.local_storage_enabled == true
- - zone.network_type == "Basic"
- - zone.zone_token != ""
- - zone.securitygroups_enabled == true
-
-- name: test absent zone
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: zone
-- name: verify test absent zone
- assert:
- that:
- - zone is successful
- - zone is changed
- - zone.dns1 == "8.8.8.8"
- - zone.dns2 == "8.8.4.4"
- - zone.internal_dns1 == "10.10.1.100"
- - zone.internal_dns2 == "10.10.1.101"
- - zone.local_storage_enabled == true
- - zone.network_type == "Basic"
- - zone.zone_token != ""
- - zone.securitygroups_enabled == true
-
-- name: test absent zone idempotency
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- state: absent
- register: zone
-- name: verify test absent zone idempotency
- assert:
- that:
- - zone is successful
- - zone is not changed
diff --git a/test/integration/targets/cs_zone_info/aliases b/test/integration/targets/cs_zone_info/aliases
deleted file mode 100644
index 3b5a38e7f0..0000000000
--- a/test/integration/targets/cs_zone_info/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-cloud/cs
-shippable/cs/group2
-shippable/cs/smoketest
diff --git a/test/integration/targets/cs_zone_info/meta/main.yml b/test/integration/targets/cs_zone_info/meta/main.yml
deleted file mode 100644
index e9a5b9eeae..0000000000
--- a/test/integration/targets/cs_zone_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - cs_common
diff --git a/test/integration/targets/cs_zone_info/tasks/main.yml b/test/integration/targets/cs_zone_info/tasks/main.yml
deleted file mode 100644
index 74dccf8062..0000000000
--- a/test/integration/targets/cs_zone_info/tasks/main.yml
+++ /dev/null
@@ -1,73 +0,0 @@
----
-- name: setup zone is present
- cs_zone:
- name: "{{ cs_resource_prefix }}-zone"
- dns1: 8.8.8.8
- dns2: 8.8.4.4
- network_type: Basic
- register: zone
-- name: verify setup zone is present
- assert:
- that:
- - zone is successful
-
-- name: get info from zone in check mode
- cs_zone_info:
- name: "{{ cs_resource_prefix }}-zone"
- register: zone
- check_mode: yes
-- name: verify get info from zone in check mode
- assert:
- that:
- - zone is successful
- - zone is not changed
- - zone.zones[0].dns1 == "8.8.8.8"
- - zone.zones[0].dns2 == "8.8.4.4"
- - zone.zones[0].internal_dns1 == "8.8.8.8"
- - zone.zones[0].internal_dns2 == "8.8.4.4"
- - zone.zones[0].local_storage_enabled == false
- - zone.zones[0].network_type == "Basic"
- - zone.zones[0].zone_token != ""
- - zone.zones[0].securitygroups_enabled == true
- - zone.zones[0].dhcp_provider == "VirtualRouter"
- - zone.zones[0].local_storage_enabled == false
-
-- name: get info from zone
- cs_zone_info:
- name: "{{ cs_resource_prefix }}-zone"
- register: zone
-- name: verify get info from zone
- assert:
- that:
- - zone is successful
- - zone is not changed
- - zone.zones[0].dns1 == "8.8.8.8"
- - zone.zones[0].dns2 == "8.8.4.4"
- - zone.zones[0].internal_dns1 == "8.8.8.8"
- - zone.zones[0].internal_dns2 == "8.8.4.4"
- - zone.zones[0].local_storage_enabled == false
- - zone.zones[0].network_type == "Basic"
- - zone.zones[0].zone_token != ""
- - zone.zones[0].securitygroups_enabled == true
- - zone.zones[0].dhcp_provider == "VirtualRouter"
- - zone.zones[0].local_storage_enabled == false
-
-- name: get info from all zones
- cs_zone_info:
- register: zones
-- name: verify get info from all zones
- assert:
- that:
- - zones is successful
- - zones is not changed
- - zones.zones | length > 0
- - '"dns1" in zone.zones[0]'
- - '"dns2" in zone.zones[0]'
- - '"internal_dns1" in zone.zones[0]'
- - '"internal_dns2" in zone.zones[0]'
- - '"local_storage_enabled" in zone.zones[0]'
- - '"network_type" in zone.zones[0]'
- - '"zone_token" in zone.zones[0]'
- - '"securitygroups_enabled" in zone.zones[0]'
- - '"dhcp_provider" in zone.zones[0]'
- - '"local_storage_enabled" in zone.zones[0]'
diff --git a/test/integration/targets/deploy_helper/aliases b/test/integration/targets/deploy_helper/aliases
deleted file mode 100644
index a6dafcf8cd..0000000000
--- a/test/integration/targets/deploy_helper/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/posix/group1
diff --git a/test/integration/targets/deploy_helper/meta/main.yml b/test/integration/targets/deploy_helper/meta/main.yml
deleted file mode 100644
index 07faa21776..0000000000
--- a/test/integration/targets/deploy_helper/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_tests
diff --git a/test/integration/targets/deploy_helper/tasks/main.yml b/test/integration/targets/deploy_helper/tasks/main.yml
deleted file mode 100644
index 962c894a81..0000000000
--- a/test/integration/targets/deploy_helper/tasks/main.yml
+++ /dev/null
@@ -1,149 +0,0 @@
----
-- name: record the output directory
- set_fact: deploy_helper_test_root={{output_dir}}/deploy_helper_test_root
-
-- name: State=query with default parameters
- deploy_helper: path={{ deploy_helper_test_root }} state=query
-- name: Assert State=query with default parameters
- assert:
- that:
- - "'project_path' in deploy_helper"
- - "deploy_helper.current_path == '{{ deploy_helper.project_path }}/current'"
- - "deploy_helper.releases_path == '{{ deploy_helper.project_path }}/releases'"
- - "deploy_helper.shared_path == '{{ deploy_helper.project_path }}/shared'"
- - "deploy_helper.unfinished_filename == 'DEPLOY_UNFINISHED'"
- - "'previous_release' in deploy_helper"
- - "'previous_release_path' in deploy_helper"
- - "'new_release' in deploy_helper"
- - "'new_release_path' in deploy_helper"
- - "deploy_helper.new_release_path == '{{ deploy_helper.releases_path }}/{{ deploy_helper.new_release }}'"
-
-- name: State=query with relative overridden paths
- deploy_helper: path={{ deploy_helper_test_root }} current_path=CURRENT_PATH releases_path=RELEASES_PATH shared_path=SHARED_PATH state=query
-- name: Assert State=query with relative overridden paths
- assert:
- that:
- - "deploy_helper.current_path == '{{ deploy_helper.project_path }}/CURRENT_PATH'"
- - "deploy_helper.releases_path == '{{ deploy_helper.project_path }}/RELEASES_PATH'"
- - "deploy_helper.shared_path == '{{ deploy_helper.project_path }}/SHARED_PATH'"
- - "deploy_helper.new_release_path == '{{ deploy_helper.releases_path }}/{{ deploy_helper.new_release}}'"
-
-- name: State=query with absolute overridden paths
- deploy_helper: path={{ deploy_helper_test_root }} current_path=/CURRENT_PATH releases_path=/RELEASES_PATH shared_path=/SHARED_PATH state=query
-- name: Assert State=query with absolute overridden paths
- assert:
- that:
- - "deploy_helper.current_path == '/CURRENT_PATH'"
- - "deploy_helper.releases_path == '/RELEASES_PATH'"
- - "deploy_helper.shared_path == '/SHARED_PATH'"
- - "deploy_helper.new_release_path == '{{ deploy_helper.releases_path }}/{{ deploy_helper.new_release}}'"
-
-- name: State=query with overridden unfinished_filename
- deploy_helper: path={{ deploy_helper_test_root }} unfinished_filename=UNFINISHED_DEPLOY state=query
-- name: Assert State=query with overridden unfinished_filename
- assert:
- that:
- - "'UNFINISHED_DEPLOY' == deploy_helper.unfinished_filename"
-
-# Remove the root folder just in case it exists
-- file: path={{ deploy_helper_test_root }} state=absent
-
-- name: State=present with default parameters
- deploy_helper: path={{ deploy_helper_test_root }} state=present
-- stat: path={{ deploy_helper.releases_path }}
- register: releases_path
-- stat: path={{ deploy_helper.shared_path }}
- register: shared_path
-- name: Assert State=present with default parameters
- assert:
- that:
- - "releases_path.stat.exists"
- - "shared_path.stat.exists"
-
-# Setup older releases for tests
-- file: path={{ deploy_helper.releases_path }}/{{ item }} state=directory
- with_items: ['first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh']
-# Setup the new release
-- file: path={{ deploy_helper.new_release_path }} state=directory
-# Add a buildfile, just like in a real deploy
-- copy: content='' dest={{ deploy_helper.new_release_path }}/{{ deploy_helper.unfinished_filename }}
-# Add a buildfile, to an older deploy
-- copy: content='' dest={{ deploy_helper.releases_path }}/third/{{ deploy_helper.unfinished_filename }}
-
-- name: State=finalize with default parameters
- deploy_helper: path={{ deploy_helper_test_root }} release={{ deploy_helper.new_release }} state=finalize
-- stat: path={{ deploy_helper.current_path }}
- register: current_path
-- stat: path={{ deploy_helper.current_path }}/DEPLOY_UNFINISHED
- register: current_path_unfinished_filename
-- name: Assert State=finalize with default parameters
- assert:
- that:
- - "current_path.stat.islnk"
- - "deploy_helper.new_release_path in current_path.stat.lnk_source"
- - "not current_path_unfinished_filename.stat.exists"
-- stat: path={{ deploy_helper.releases_path }}/third
- register: third_release_path
-- shell: "ls {{ deploy_helper.releases_path }} | wc -l"
- register: releases_count
-- name: Assert State=finalize with default parameters (clean=true checks)
- assert:
- that:
- - "not third_release_path.stat.exists"
- - "releases_count.stdout|trim == '6'"
-- deploy_helper: path={{ deploy_helper_test_root }} release={{ deploy_helper.new_release }} state=query
-- name: Assert State=finalize with default parameters (previous_release checks)
- assert:
- that:
- - "deploy_helper.new_release == deploy_helper.previous_release"
-
-- name: State=absent with default parameters
- deploy_helper: path={{ deploy_helper_test_root }} state=absent
-- stat: path={{ deploy_helper_test_root }}
- register: project_path
-- name: Assert State=absent with default parameters
- assert:
- that:
- - "not project_path.stat.exists"
-
-- debug: msg="Clearing all release data and facts ---------"
-
-- name: State=present with shared_path set to False
- deploy_helper: path={{ deploy_helper_test_root }} state=present shared_path=''
-- stat: path={{ deploy_helper.releases_path }}
- register: releases_path
-- stat: path={{ deploy_helper.shared_path }}
- register: shared_path
-- name: Assert State=present with shared_path set to False
- assert:
- that:
- - "releases_path.stat.exists"
- - "not shared_path.stat.exists"
-
-# Setup older releases for tests
-- file: path={{ deploy_helper.releases_path }}/{{ item }} state=directory
- with_items: ['first', 'second', 'third', 'fourth', 'fifth']
-# Setup the new release
-- file: path={{ deploy_helper.new_release_path }} state=directory
-# Add a buildfile, just like in a real deploy
-- copy: content='' dest={{ deploy_helper.new_release_path }}/{{ deploy_helper.unfinished_filename }}
-# Add a buildfile, to an older deploy
-- copy: content='' dest={{ deploy_helper.releases_path }}/third/{{ deploy_helper.unfinished_filename }}
-
-- shell: "ls {{ deploy_helper_test_root }}/releases | wc -l"
- register: before_releases_count
-- name: State=clean with keep_releases=3
- deploy_helper: path={{ deploy_helper_test_root }} release={{ deploy_helper.new_release }} state=clean keep_releases=3
-- stat: path={{ deploy_helper.releases_path }}/third
- register: third_release_path
-- shell: "ls {{ deploy_helper.releases_path }} | wc -l"
- register: releases_count
-- name: Assert State=finalize with default parameters (clean=true checks)
- assert:
- that:
- - "not third_release_path.stat.exists"
- - "before_releases_count.stdout|trim == '6'"
- - "releases_count.stdout|trim == '3'"
-
-# Remove the root folder
-- file: path={{ deploy_helper_test_root }} state=absent
diff --git a/test/integration/targets/digital_ocean_floating_ip/aliases b/test/integration/targets/digital_ocean_floating_ip/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/digital_ocean_floating_ip/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/digital_ocean_floating_ip/tasks/main.yml b/test/integration/targets/digital_ocean_floating_ip/tasks/main.yml
deleted file mode 100644
index 91b10d7726..0000000000
--- a/test/integration/targets/digital_ocean_floating_ip/tasks/main.yml
+++ /dev/null
@@ -1,42 +0,0 @@
----
-- name: Test API key is provided.
- fail:
- msg: do_api_key should be defined in integration_config.yml
- when: do_api_key is not defined
-
-- name: "Make sure that the Floating IP is absent"
- digital_ocean_floating_ip:
- state: absent
- ip: "8.8.8.8"
- oauth_token: "{{ do_api_key }}"
- register: result
-
-- name: Verify that the Floating IP didn't change
- assert:
- that:
- - "not result.changed"
-
-- name: "Create a Floating IP"
- digital_ocean_floating_ip:
- state: present
- region: "lon1"
- oauth_token: "{{ do_api_key }}"
- register: result
-
-- name: Verify that a Floating IP was created
- assert:
- that:
- - "result.changed"
-
-- name: "Destroy Floating IP"
- digital_ocean_floating_ip:
- state: absent
- ip: "{{ result.data.floating_ip.ip }}"
- region: "lon1"
- oauth_token: "{{ do_api_key }}"
- register: result
-
-- name: Verify that a Floating IP was deleted
- assert:
- that:
- - " result.changed"
diff --git a/test/integration/targets/digital_ocean_sshkey/aliases b/test/integration/targets/digital_ocean_sshkey/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/digital_ocean_sshkey/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/digital_ocean_sshkey/tasks/main.yml b/test/integration/targets/digital_ocean_sshkey/tasks/main.yml
deleted file mode 100644
index ce82c20813..0000000000
--- a/test/integration/targets/digital_ocean_sshkey/tasks/main.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-- name: Test API key is provided.
- fail:
- msg: do_api_key should be defined in integration_config.yml
- when: do_api_key is not defined
-
-- name: Create ssh key
- digital_ocean_sshkey:
- name: test-key1
- ssh_pub_key: "{{ dummy_ssh_pub_key }}"
- oauth_token: "{{ do_api_key }}"
- register: result
-
-- name: Verify that SSH key was created
- assert:
- that:
- - "result.changed"
-
-- name: "Delete ssh key"
- digital_ocean_sshkey:
- state: "absent"
- fingerprint: "{{ result.data.ssh_key.fingerprint }}"
- oauth_token: "{{ do_api_key }}"
- register: result
-
-- name: Verify that SSH key was deleted
- assert:
- that:
- - "result.changed"
diff --git a/test/integration/targets/digital_ocean_tag/aliases b/test/integration/targets/digital_ocean_tag/aliases
deleted file mode 100644
index 6320774d67..0000000000
--- a/test/integration/targets/digital_ocean_tag/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-digital_ocean
-unsupported
diff --git a/test/integration/targets/digital_ocean_tag/tasks/main.yml b/test/integration/targets/digital_ocean_tag/tasks/main.yml
deleted file mode 100644
index aea355facc..0000000000
--- a/test/integration/targets/digital_ocean_tag/tasks/main.yml
+++ /dev/null
@@ -1,51 +0,0 @@
----
-- block:
- - name: Test API key is provided.
- fail:
- msg: do_api_key should be defined in integration_config.yml
- when: do_api_key is not defined
-
- - name: Create a new tag
- digital_ocean_tag:
- oauth_token: '{{do_api_key}}'
- name: integration-test
- state: present
- register: create_tag
-
- - name: Create a new tag for idempotency
- digital_ocean_tag:
- oauth_token: '{{do_api_key}}'
- name: integration-test
- state: present
- register: create_tag_idempotent
-
- - debug:
- var: create_tag
-
- - assert:
- that:
- - create_tag.changed == True
- - create_tag_idempotent.changed == False
- - create_tag.data.tag.name == "integration-test"
-
- always:
- - name: Delete tag
- digital_ocean_tag:
- oauth_token: '{{do_api_key}}'
- name: integration-test
- state: absent
- register: delete_tag
-
-# FIXME: Deleting a tag isn't idempotent
-# - name: Delete tag with idempotency
-# digital_ocean_tag:
-# oauth_token: '{{do_api_key}}'
-# name: integration-test
-# state: absent
-# register: delete_tag_idempotent
-
- - assert:
- that:
- - delete_tag.changed == True
-# FIXME: Deleting a tag isn't idempotent
-# - delete_tag_idempotent.changed == False
diff --git a/test/integration/targets/docker_config/aliases b/test/integration/targets/docker_config/aliases
deleted file mode 100644
index f1e3dd8673..0000000000
--- a/test/integration/targets/docker_config/aliases
+++ /dev/null
@@ -1,8 +0,0 @@
-shippable/posix/group3
-skip/osx
-skip/freebsd
-skip/aix
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system.
diff --git a/test/integration/targets/docker_config/meta/main.yml b/test/integration/targets/docker_config/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_config/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_config/tasks/main.yml b/test/integration/targets/docker_config/tasks/main.yml
deleted file mode 100644
index 710643651f..0000000000
--- a/test/integration/targets/docker_config/tasks/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- include_tasks: test_docker_config.yml
- when: docker_py_version is version('2.6.0', '>=') and docker_api_version is version('1.30', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_config tests!"
- when: not(docker_py_version is version('2.6.0', '>=') and docker_api_version is version('1.30', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_config/tasks/test_docker_config.yml b/test/integration/targets/docker_config/tasks/test_docker_config.yml
deleted file mode 100644
index ded7eab488..0000000000
--- a/test/integration/targets/docker_config/tasks/test_docker_config.yml
+++ /dev/null
@@ -1,133 +0,0 @@
----
-- block:
- - shell: "docker info --format '{% raw %}{{json .}}{% endraw %}' | python -m json.tool"
-
- - name: Make sure we're not already using Docker swarm
- docker_swarm:
- state: absent
- force: true
-
- - shell: "docker info --format '{% raw %}{{json .}}{% endraw %}' | python -m json.tool"
-
- - name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address}}"
-
- - name: Parameter name should be required
- docker_config:
- state: present
- ignore_errors: yes
- register: output
-
- - name: assert failure when called with no name
- assert:
- that:
- - 'output.failed'
- - 'output.msg == "missing required arguments: name"'
-
- - name: Test parameters
- docker_config:
- name: foo
- state: present
- ignore_errors: yes
- register: output
-
- - name: assert failure when called with no data
- assert:
- that:
- - 'output.failed'
- - 'output.msg == "state is present but all of the following are missing: data"'
-
- - name: Create config
- docker_config:
- name: db_password
- data: opensesame!
- state: present
- register: output
-
- - name: Create variable config_id
- set_fact:
- config_id: "{{ output.config_id }}"
-
- - name: Inspect config
- command: "docker config inspect {{ config_id }}"
- register: inspect
-
- - debug: var=inspect
-
- - name: assert config creation succeeded
- assert:
- that:
- - "'db_password' in inspect.stdout"
- - "'ansible_key' in inspect.stdout"
-
- - name: Create config again
- docker_config:
- name: db_password
- data: opensesame!
- state: present
- register: output
-
- - name: assert create config is idempotent
- assert:
- that:
- - not output.changed
-
- - name: Create config again (base64)
- docker_config:
- name: db_password
- data: b3BlbnNlc2FtZSE=
- data_is_b64: true
- state: present
- register: output
-
- - name: assert create config (base64) is idempotent
- assert:
- that:
- - not output.changed
-
- - name: Update config
- docker_config:
- name: db_password
- data: newpassword!
- state: present
- register: output
-
- - name: assert config was updated
- assert:
- that:
- - output.changed
- - output.config_id != config_id
-
- - name: Remove config
- docker_config:
- name: db_password
- state: absent
-
- - name: Check that config is removed
- command: "docker config inspect {{ config_id }}"
- register: output
- ignore_errors: yes
-
- - name: assert config was removed
- assert:
- that:
- - output.failed
-
- - name: Remove config
- docker_config:
- name: db_password
- state: absent
- register: output
-
- - name: assert remove config is idempotent
- assert:
- that:
- - not output.changed
-
- always:
- - name: Remove a Swarm cluster
- docker_swarm:
- state: absent
- force: true
diff --git a/test/integration/targets/docker_container/aliases b/test/integration/targets/docker_container/aliases
deleted file mode 100644
index f5bf9f1010..0000000000
--- a/test/integration/targets/docker_container/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group5
-skip/osx
-skip/freebsd
-skip/aix
-destructive
diff --git a/test/integration/targets/docker_container/files/env-file b/test/integration/targets/docker_container/files/env-file
deleted file mode 100644
index b15f1b64cf..0000000000
--- a/test/integration/targets/docker_container/files/env-file
+++ /dev/null
@@ -1,2 +0,0 @@
-TEST3=val3
-TEST4=val4
diff --git a/test/integration/targets/docker_container/meta/main.yml b/test/integration/targets/docker_container/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_container/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_container/tasks/main.yml b/test/integration/targets/docker_container/tasks/main.yml
deleted file mode 100644
index 16aaea684f..0000000000
--- a/test/integration/targets/docker_container/tasks/main.yml
+++ /dev/null
@@ -1,43 +0,0 @@
----
-# Create random name prefix (for containers, networks, ...)
-- name: Create random container name prefix
- set_fact:
- cname_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
- cnames: []
- dnetworks: []
-
-- debug:
- msg: "Using container name prefix {{ cname_prefix }}"
-
-# Install netaddr
-- name: Install netaddr for ipaddr filter
- pip:
- name: netaddr
-
-# Run the tests
-- block:
- - include_tasks: run-test.yml
- with_fileglob:
- - "tests/*.yml"
-
- always:
- - name: "Make sure all containers are removed"
- docker_container:
- name: "{{ item }}"
- state: absent
- force_kill: yes
- with_items: "{{ cnames }}"
- diff: no
- - name: "Make sure all networks are removed"
- docker_network:
- name: "{{ item }}"
- state: absent
- force: yes
- with_items: "{{ dnetworks }}"
- when: docker_py_version is version('1.10.0', '>=')
- diff: no
-
- when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')
-
-- fail: msg="Too old docker / docker-py version to run all docker_container tests!"
- when: not(docker_py_version is version('3.5.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_container/tasks/run-test.yml b/test/integration/targets/docker_container/tasks/run-test.yml
deleted file mode 100644
index a299937014..0000000000
--- a/test/integration/targets/docker_container/tasks/run-test.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- name: "Loading tasks from {{ item }}"
- include_tasks: "{{ item }}"
diff --git a/test/integration/targets/docker_container/tasks/tests/comparisons.yml b/test/integration/targets/docker_container/tasks/tests/comparisons.yml
deleted file mode 100644
index 8b7ae16bc6..0000000000
--- a/test/integration/targets/docker_container/tasks/tests/comparisons.yml
+++ /dev/null
@@ -1,463 +0,0 @@
----
-- name: Registering container name
- set_fact:
- cname: "{{ cname_prefix ~ '-comparisons' }}"
-- name: Registering container name
- set_fact:
- cnames: "{{ cnames + [cname] }}"
-
-####################################################################
-## value ###########################################################
-####################################################################
-
-- name: value
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- hostname: example.com
- register: value_1
-
-- name: value (change, ignore)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- hostname: example.org
- force_kill: yes
- comparisons:
- hostname: ignore
- register: value_2
-
-- name: value (change, strict)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- hostname: example.org
- force_kill: yes
- comparisons:
- hostname: strict
- register: value_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - value_1 is changed
- - value_2 is not changed
- - value_3 is changed
-
-####################################################################
-## list ############################################################
-####################################################################
-
-- name: list
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_servers:
- - 1.1.1.1
- - 8.8.8.8
- register: list_1
-
-- name: list (change, ignore)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_servers:
- - 9.9.9.9
- force_kill: yes
- comparisons:
- dns_servers: ignore
- register: list_2
-
-- name: list (change, strict)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_servers:
- - 9.9.9.9
- force_kill: yes
- comparisons:
- dns_servers: strict
- register: list_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - list_1 is changed
- - list_2 is not changed
- - list_3 is changed
-
-####################################################################
-## set #############################################################
-####################################################################
-
-- name: set
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- groups:
- - "1010"
- - "1011"
- register: set_1
-
-- name: set (change, ignore)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- groups:
- - "1010"
- - "1011"
- - "1012"
- force_kill: yes
- comparisons:
- groups: ignore
- register: set_2
-
-- name: set (change, allow_more_present)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- groups:
- - "1010"
- - "1011"
- - "1012"
- force_kill: yes
- comparisons:
- groups: allow_more_present
- register: set_3
-
-- name: set (change, allow_more_present)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- groups:
- - "1010"
- - "1012"
- force_kill: yes
- comparisons:
- groups: allow_more_present
- register: set_4
-
-- name: set (change, strict)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- groups:
- - "1010"
- - "1012"
- force_kill: yes
- comparisons:
- groups: strict
- register: set_5
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - set_1 is changed
- - set_2 is not changed
- - set_3 is changed
- - set_4 is not changed
- - set_5 is changed
-
-####################################################################
-## set(dict) #######################################################
-####################################################################
-
-- name: set(dict)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- devices:
- - "/dev/random:/dev/virt-random:rwm"
- - "/dev/urandom:/dev/virt-urandom:rwm"
- register: set_dict_1
-
-- name: set(dict) (change, ignore)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- devices:
- - "/dev/random:/dev/virt-random:rwm"
- - "/dev/urandom:/dev/virt-urandom:rwm"
- - "/dev/null:/dev/virt-null:rwm"
- force_kill: yes
- comparisons:
- devices: ignore
- register: set_dict_2
-
-- name: set(dict) (change, allow_more_present)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- devices:
- - "/dev/random:/dev/virt-random:rwm"
- - "/dev/urandom:/dev/virt-urandom:rwm"
- - "/dev/null:/dev/virt-null:rwm"
- force_kill: yes
- comparisons:
- devices: allow_more_present
- register: set_dict_3
-
-- name: set(dict) (change, allow_more_present)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- devices:
- - "/dev/random:/dev/virt-random:rwm"
- - "/dev/null:/dev/virt-null:rwm"
- force_kill: yes
- comparisons:
- devices: allow_more_present
- register: set_dict_4
-
-- name: set(dict) (change, strict)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- devices:
- - "/dev/random:/dev/virt-random:rwm"
- - "/dev/null:/dev/virt-null:rwm"
- force_kill: yes
- comparisons:
- devices: strict
- register: set_dict_5
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - set_dict_1 is changed
- - set_dict_2 is not changed
- - set_dict_3 is changed
- - set_dict_4 is not changed
- - set_dict_5 is changed
-
-####################################################################
-## dict ############################################################
-####################################################################
-
-- name: dict
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- labels:
- ansible.test.1: hello
- ansible.test.2: world
- register: dict_1
-
-- name: dict (change, ignore)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- labels:
- ansible.test.1: hello
- ansible.test.2: world
- ansible.test.3: ansible
- force_kill: yes
- comparisons:
- labels: ignore
- register: dict_2
-
-- name: dict (change, allow_more_present)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- labels:
- ansible.test.1: hello
- ansible.test.2: world
- ansible.test.3: ansible
- force_kill: yes
- comparisons:
- labels: allow_more_present
- register: dict_3
-
-- name: dict (change, allow_more_present)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- labels:
- ansible.test.1: hello
- ansible.test.3: ansible
- force_kill: yes
- comparisons:
- labels: allow_more_present
- register: dict_4
-
-- name: dict (change, strict)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- labels:
- ansible.test.1: hello
- ansible.test.3: ansible
- force_kill: yes
- comparisons:
- labels: strict
- register: dict_5
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - dict_1 is changed
- - dict_2 is not changed
- - dict_3 is changed
- - dict_4 is not changed
- - dict_5 is changed
-
-####################################################################
-## wildcard ########################################################
-####################################################################
-
-- name: Pull hello-world image to make sure wildcard_2 test succeeds
- # If the image isn't there, it will pull it and return 'changed'.
- docker_image:
- name: hello-world
- pull: true
-
-- name: wildcard
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- hostname: example.com
- stop_timeout: 1
- labels:
- ansible.test.1: hello
- ansible.test.2: world
- ansible.test.3: ansible
- register: wildcard_1
-
-- name: wildcard (change, ignore)
- docker_container:
- image: hello-world
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- hostname: example.org
- stop_timeout: 2
- labels:
- ansible.test.1: hello
- ansible.test.4: ignore
- force_kill: yes
- comparisons:
- '*': ignore
- register: wildcard_2
-
-- name: wildcard (change, strict)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- hostname: example.org
- stop_timeout: 1
- labels:
- ansible.test.1: hello
- ansible.test.2: world
- ansible.test.3: ansible
- force_kill: yes
- comparisons:
- '*': strict
- register: wildcard_3
-
-- name: wildcard (no change, strict)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- hostname: example.org
- stop_timeout: 1
- labels:
- ansible.test.1: hello
- ansible.test.2: world
- ansible.test.3: ansible
- force_kill: yes
- comparisons:
- '*': strict
- register: wildcard_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - wildcard_1 is changed
- - wildcard_2 is not changed
- - wildcard_3 is changed
- - wildcard_4 is not changed
diff --git a/test/integration/targets/docker_container/tasks/tests/compatibility.yml b/test/integration/targets/docker_container/tasks/tests/compatibility.yml
deleted file mode 100644
index fb537f42b3..0000000000
--- a/test/integration/targets/docker_container/tasks/tests/compatibility.yml
+++ /dev/null
@@ -1,118 +0,0 @@
----
-- name: Registering container name
- set_fact:
- cname: "{{ cname_prefix ~ '-hi' }}"
-- name: Registering container name
- set_fact:
- cnames: "{{ cnames + [cname] }}"
-
-####################################################################
-## container_default_behavior: compatibility #######################
-####################################################################
-
-- name: Start container (check)
- docker_container:
- name: "{{ cname }}"
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- state: started
- container_default_behavior: compatibility
- check_mode: yes
- register: start_1
-
-- name: Start container
- docker_container:
- name: "{{ cname }}"
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- state: started
- container_default_behavior: compatibility
- register: start_2
-
-- name: Start container (idempotent)
- docker_container:
- name: "{{ cname }}"
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- state: started
- container_default_behavior: compatibility
- register: start_3
-
-- name: Start container (idempotent check)
- docker_container:
- name: "{{ cname }}"
- image: alpine:3.8
- state: started
- container_default_behavior: compatibility
- check_mode: yes
- register: start_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - start_1 is changed
- - start_2 is changed
- - start_3 is not changed
- - start_4 is not changed
-
-####################################################################
-## container_default_behavior: no_defaults #########################
-####################################################################
-
-- name: Start container (check)
- docker_container:
- name: "{{ cname }}"
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- state: started
- container_default_behavior: no_defaults
- check_mode: yes
- register: start_1
-
-- name: Start container
- docker_container:
- name: "{{ cname }}"
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- state: started
- container_default_behavior: no_defaults
- register: start_2
-
-- name: Start container (idempotent)
- docker_container:
- name: "{{ cname }}"
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- state: started
- container_default_behavior: no_defaults
- register: start_3
-
-- name: Start container (idempotent check)
- docker_container:
- name: "{{ cname }}"
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- state: started
- container_default_behavior: no_defaults
- check_mode: yes
- register: start_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - start_1 is changed
- - start_2 is changed
- - start_3 is not changed
- - start_4 is not changed
diff --git a/test/integration/targets/docker_container/tasks/tests/image-ids.yml b/test/integration/targets/docker_container/tasks/tests/image-ids.yml
deleted file mode 100644
index f20f2998a3..0000000000
--- a/test/integration/targets/docker_container/tasks/tests/image-ids.yml
+++ /dev/null
@@ -1,146 +0,0 @@
----
-- name: Registering container name
- set_fact:
- cname: "{{ cname_prefix ~ '-iid' }}"
-- name: Registering container name
- set_fact:
- cnames: "{{ cnames + [cname] }}"
-
-- name: Pull images
- docker_image:
- name: "{{ image }}"
- source: pull
- loop:
- - "hello-world:latest"
- - "alpine:3.8"
- loop_control:
- loop_var: image
-
-- name: Get image ID of hello-world and alpine images
- docker_image_info:
- name:
- - "hello-world:latest"
- - "alpine:3.8"
- register: image_info
-
-- assert:
- that:
- - image_info.images | length == 2
-
-- name: Print image IDs
- debug:
- msg: "hello-world: {{ image_info.images[0].Id }}; alpine: {{ image_info.images[1].Id }}"
-
-- name: Create container with hello-world image via ID
- docker_container:
- image: "{{ image_info.images[0].Id }}"
- name: "{{ cname }}"
- state: present
- force_kill: yes
- register: create_1
-
-- name: Create container with hello-world image via ID (idempotent)
- docker_container:
- image: "{{ image_info.images[0].Id }}"
- name: "{{ cname }}"
- state: present
- force_kill: yes
- register: create_2
-
-- name: Create container with alpine image via ID
- docker_container:
- image: "{{ image_info.images[1].Id }}"
- name: "{{ cname }}"
- state: present
- force_kill: yes
- register: create_3
-
-- name: Create container with alpine image via ID (idempotent)
- docker_container:
- image: "{{ image_info.images[1].Id }}"
- name: "{{ cname }}"
- state: present
- force_kill: yes
- register: create_4
-
-- name: Untag image
- # Image will not be deleted since the container still uses it
- docker_image:
- name: alpine:3.8
- force_absent: yes
- state: absent
-
-- name: Create container with alpine image via name (check mode, will pull, same image)
- docker_container:
- image: alpine:3.8
- name: "{{ cname }}"
- state: present
- register: create_5
- check_mode: yes
-
-- name: Create container with alpine image via name (will pull, same image)
- docker_container:
- image: alpine:3.8
- name: "{{ cname }}"
- state: present
- register: create_6
-
-- name: Cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - create_1 is changed
- - create_2 is not changed
- - create_3 is changed
- - create_4 is not changed
- - create_5 is changed
- - create_6 is changed
- - create_6.container.Image == image_info.images[1].Id
- - create_6.container.Id == create_4.container.Id # make sure container wasn't recreated
-
-- name: set Digests
- set_fact:
- digest_hello_world_2016: 0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
- digest_hello_world_2019: 2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
-
-- name: Create container with hello-world image via old digest
- docker_container:
- image: "hello-world@sha256:{{ digest_hello_world_2016 }}"
- name: "{{ cname }}"
- state: present
- force_kill: yes
- register: digest_1
-
-- name: Create container with hello-world image via old digest (idempotent)
- docker_container:
- image: "hello-world@sha256:{{ digest_hello_world_2016 }}"
- name: "{{ cname }}"
- state: present
- force_kill: yes
- register: digest_2
-
-- name: Update container with hello-world image via new digest
- docker_container:
- image: "hello-world@sha256:{{ digest_hello_world_2019 }}"
- name: "{{ cname }}"
- state: present
- force_kill: yes
- register: digest_3
-
-- name: Cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - digest_1 is changed
- - digest_2 is not changed
- - digest_3 is changed
diff --git a/test/integration/targets/docker_container/tasks/tests/mounts-volumes.yml b/test/integration/targets/docker_container/tasks/tests/mounts-volumes.yml
deleted file mode 100644
index b744fcbe0b..0000000000
--- a/test/integration/targets/docker_container/tasks/tests/mounts-volumes.yml
+++ /dev/null
@@ -1,445 +0,0 @@
----
-- name: Registering container name
- set_fact:
- cname: "{{ cname_prefix ~ '-mounts' }}"
- cname_h1: "{{ cname_prefix ~ '-mounts-h1' }}"
- cname_h2: "{{ cname_prefix ~ '-mounts-h2' }}"
-- name: Registering container name
- set_fact:
- cnames: "{{ cnames + [cname, cname_h1, cname_h2] }}"
-
-####################################################################
-## keep_volumes ####################################################
-####################################################################
-
-# TODO: - keep_volumes
-
-####################################################################
-## mounts ##########################################################
-####################################################################
-
-- name: mounts
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /tmp
- target: /tmp
- type: bind
- - source: /
- target: /whatever
- type: bind
- read_only: no
- register: mounts_1
- ignore_errors: yes
-
-- name: mounts (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /
- target: /whatever
- type: bind
- read_only: no
- - source: /tmp
- target: /tmp
- type: bind
- register: mounts_2
- ignore_errors: yes
-
-- name: mounts (less mounts)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /tmp
- target: /tmp
- type: bind
- register: mounts_3
- ignore_errors: yes
-
-- name: mounts (more mounts)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /tmp
- target: /tmp
- type: bind
- - source: /tmp
- target: /somewhereelse
- type: bind
- read_only: yes
- force_kill: yes
- register: mounts_4
- ignore_errors: yes
-
-- name: mounts (different modes)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /tmp
- target: /tmp
- type: bind
- - source: /tmp
- target: /somewhereelse
- type: bind
- read_only: no
- force_kill: yes
- register: mounts_5
- ignore_errors: yes
-
-- name: mounts (endpoint collision)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /home
- target: /x
- type: bind
- - source: /etc
- target: /x
- type: bind
- read_only: no
- force_kill: yes
- register: mounts_6
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - mounts_1 is changed
- - mounts_2 is not changed
- - mounts_3 is not changed
- - mounts_4 is changed
- - mounts_5 is changed
- - mounts_6 is failed
- - "'The mount point \"/x\" appears twice in the mounts option' == mounts_6.msg"
- when: docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - mounts_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in mounts_1.msg"
- - "'Minimum version required is 2.6.0 ' in mounts_1.msg"
- when: docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## mounts + volumes ################################################
-####################################################################
-
-- name: mounts + volumes
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /
- target: /whatever
- type: bind
- read_only: yes
- volumes:
- - /tmp:/tmp
- register: mounts_volumes_1
- ignore_errors: yes
-
-- name: mounts + volumes (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /
- target: /whatever
- type: bind
- read_only: yes
- volumes:
- - /tmp:/tmp
- register: mounts_volumes_2
- ignore_errors: yes
-
-- name: mounts + volumes (switching)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /tmp
- target: /tmp
- type: bind
- read_only: no
- volumes:
- - /:/whatever:ro
- force_kill: yes
- register: mounts_volumes_3
- ignore_errors: yes
-
-- name: mounts + volumes (collision, should fail)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- mounts:
- - source: /tmp
- target: /tmp
- type: bind
- read_only: no
- volumes:
- - /tmp:/tmp
- force_kill: yes
- register: mounts_volumes_4
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - mounts_volumes_1 is changed
- - mounts_volumes_2 is not changed
- - mounts_volumes_3 is changed
- - mounts_volumes_4 is failed
- - "'The mount point \"/tmp\" appears both in the volumes and mounts option' in mounts_volumes_4.msg"
- when: docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - mounts_volumes_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in mounts_1.msg"
- - "'Minimum version required is 2.6.0 ' in mounts_1.msg"
- when: docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## volume_driver ###################################################
-####################################################################
-
-- name: volume_driver
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- volume_driver: local
- state: started
- register: volume_driver_1
-
-- name: volume_driver (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- volume_driver: local
- state: started
- register: volume_driver_2
-
-- name: volume_driver (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- volume_driver: /
- state: started
- force_kill: yes
- register: volume_driver_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - volume_driver_1 is changed
- - volume_driver_2 is not changed
- - volume_driver_3 is changed
-
-####################################################################
-## volumes #########################################################
-####################################################################
-
-- name: volumes
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- volumes:
- - "/tmp:/tmp"
- - "/:/whatever:rw,z"
- - "/anon:rw"
- register: volumes_1
-
-- name: volumes (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- volumes:
- - "/:/whatever:rw,z"
- - "/tmp:/tmp"
- - "/anon:rw"
- register: volumes_2
-
-- name: volumes (less volumes)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- volumes:
- - "/tmp:/tmp"
- register: volumes_3
-
-- name: volumes (more volumes)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- volumes:
- - "/tmp:/tmp"
- - "/tmp:/somewhereelse:ro,Z"
- force_kill: yes
- register: volumes_4
-
-- name: volumes (different modes)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- volumes:
- - "/tmp:/tmp"
- - "/tmp:/somewhereelse:ro"
- force_kill: yes
- register: volumes_5
-
-- name: volumes (collision)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- volumes:
- - "/etc:/tmp"
- - "/home:/tmp:ro"
- force_kill: yes
- register: volumes_6
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - volumes_1 is changed
- - volumes_1.container.Config.Volumes | length == 1
- - volumes_1.container.Config.Volumes['/anon:rw'] | length == 0
- - volumes_2 is not changed
- - volumes_3 is not changed
- - volumes_4 is changed
- - not volumes_4.container.Config.Volumes
- - volumes_5 is changed
- - volumes_6 is failed
- - "'The mount point \"/tmp\" appears twice in the volumes option' in volumes_6.msg"
-
-####################################################################
-## volumes_from ####################################################
-####################################################################
-
-- name: start helpers
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ container_name }}"
- state: started
- volumes:
- - "{{ '/tmp:/tmp' if container_name == cname_h1 else '/:/whatever:ro' }}"
- loop:
- - "{{ cname_h1 }}"
- - "{{ cname_h2 }}"
- loop_control:
- loop_var: container_name
-
-- name: volumes_from
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- volumes_from: "{{ cname_h1 }}"
- register: volumes_from_1
-
-- name: volumes_from (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- volumes_from: "{{ cname_h1 }}"
- register: volumes_from_2
-
-- name: volumes_from (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- volumes_from: "{{ cname_h2 }}"
- force_kill: yes
- register: volumes_from_3
-
-- name: cleanup
- docker_container:
- name: "{{ container_name }}"
- state: absent
- force_kill: yes
- loop:
- - "{{ cname }}"
- - "{{ cname_h1 }}"
- - "{{ cname_h2 }}"
- loop_control:
- loop_var: container_name
- diff: no
-
-- assert:
- that:
- - volumes_from_1 is changed
- - volumes_from_2 is not changed
- - volumes_from_3 is changed
-
-####################################################################
-####################################################################
-####################################################################
diff --git a/test/integration/targets/docker_container/tasks/tests/network.yml b/test/integration/targets/docker_container/tasks/tests/network.yml
deleted file mode 100644
index 80c05ba5e9..0000000000
--- a/test/integration/targets/docker_container/tasks/tests/network.yml
+++ /dev/null
@@ -1,736 +0,0 @@
----
-- name: Registering container name
- set_fact:
- cname: "{{ cname_prefix ~ '-network' }}"
- cname_h1: "{{ cname_prefix ~ '-network-h1' }}"
- nname_1: "{{ cname_prefix ~ '-network-1' }}"
- nname_2: "{{ cname_prefix ~ '-network-2' }}"
- nname_3: "{{ cname_prefix ~ '-network-3' }}"
-- name: Registering container name
- set_fact:
- cnames: "{{ cnames + [cname, cname_h1] }}"
- dnetworks: "{{ dnetworks + [nname_1, nname_2, nname_3] }}"
-
-- name: Create networks
- docker_network:
- name: "{{ network_name }}"
- state: present
- loop:
- - "{{ nname_1 }}"
- - "{{ nname_2 }}"
- loop_control:
- loop_var: network_name
- when: docker_py_version is version('1.10.0', '>=')
-
-- set_fact:
- subnet_ipv4: "192.168.{{ 64 + (192 | random) }}.0/24"
- subnet_ipv6: "fdb6:feea:{{ '%0.4x:%0.4x' | format(65536 | random, 65536 | random) }}::/64"
-
-- set_fact:
- # If netaddr would be installed on the controller, one could do:
- nname_3_ipv4_2: "{{ subnet_ipv4 | next_nth_usable(2) }}"
- nname_3_ipv4_3: "{{ subnet_ipv4 | next_nth_usable(3) }}"
- nname_3_ipv4_4: "{{ subnet_ipv4 | next_nth_usable(4) }}"
- nname_3_ipv6_2: "{{ subnet_ipv6 | next_nth_usable(2) }}"
- nname_3_ipv6_3: "{{ subnet_ipv6 | next_nth_usable(3) }}"
- nname_3_ipv6_4: "{{ subnet_ipv6 | next_nth_usable(4) }}"
-
-- debug:
- msg: "Chose random IPv4 subnet {{ subnet_ipv4 }} and random IPv6 subnet {{ subnet_ipv6 }}"
-
-- name: Create network with fixed IPv4 and IPv6 subnets
- docker_network:
- name: "{{ nname_3 }}"
- enable_ipv6: yes
- ipam_config:
- - subnet: "{{ subnet_ipv4 }}"
- - subnet: "{{ subnet_ipv6 }}"
- state: present
- when: docker_py_version is version('1.10.0', '>=')
-
-####################################################################
-## network_mode ####################################################
-####################################################################
-
-- name: network_mode
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- network_mode: host
- register: network_mode_1
-
-- name: network_mode (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- network_mode: host
- register: network_mode_2
-
-- name: network_mode (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- network_mode: none
- force_kill: yes
- register: network_mode_3
-
-- name: network_mode (container mode setup)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname_h1 }}"
- state: started
- register: cname_h1_id
-
-- name: network_mode (container mode)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- network_mode: "container:{{ cname_h1_id.container.Id }}"
- force_kill: yes
- register: network_mode_4
-
-- name: network_mode (container mode idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- network_mode: "container:{{ cname_h1 }}"
- register: network_mode_5
-
-- name: cleanup
- docker_container:
- name: "{{ container_name }}"
- state: absent
- force_kill: yes
- loop:
- - "{{ cname }}"
- - "{{ cname_h1 }}"
- loop_control:
- loop_var: container_name
- diff: no
-
-- assert:
- that:
- - network_mode_1 is changed
- - network_mode_1.container.HostConfig.NetworkMode == 'host'
- - network_mode_2 is not changed
- - network_mode_2.container.HostConfig.NetworkMode == 'host'
- - network_mode_3 is changed
- - network_mode_3.container.HostConfig.NetworkMode == 'none'
- - network_mode_4 is changed
- - network_mode_4.container.HostConfig.NetworkMode == 'container:' ~ cname_h1_id.container.Id
- - network_mode_5 is not changed
- - network_mode_5.container.HostConfig.NetworkMode == 'container:' ~ cname_h1_id.container.Id
-
-####################################################################
-## networks, purge_networks for networks_cli_compatible=no #########
-####################################################################
-
-- block:
- - name: networks_cli_compatible=no, networks w/o purge_networks
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_1 }}"
- - name: "{{ nname_2 }}"
- networks_cli_compatible: no
- register: networks_1
-
- - name: networks_cli_compatible=no, networks w/o purge_networks
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_1 }}"
- - name: "{{ nname_2 }}"
- networks_cli_compatible: no
- register: networks_2
-
- - name: networks_cli_compatible=no, networks, purge_networks
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- purge_networks: yes
- networks:
- - name: bridge
- - name: "{{ nname_1 }}"
- networks_cli_compatible: no
- force_kill: yes
- register: networks_3
-
- - name: networks_cli_compatible=no, networks, purge_networks (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- purge_networks: yes
- networks:
- - name: "{{ nname_1 }}"
- - name: bridge
- networks_cli_compatible: no
- register: networks_4
-
- - name: networks_cli_compatible=no, networks (less networks)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: bridge
- networks_cli_compatible: no
- register: networks_5
-
- - name: networks_cli_compatible=no, networks, purge_networks (less networks)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- purge_networks: yes
- networks:
- - name: bridge
- networks_cli_compatible: no
- force_kill: yes
- register: networks_6
-
- - name: networks_cli_compatible=no, networks, purge_networks (more networks)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- purge_networks: yes
- networks:
- - name: bridge
- - name: "{{ nname_2 }}"
- networks_cli_compatible: no
- force_kill: yes
- register: networks_7
-
- - name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
- - assert:
- that:
- # networks_1 has networks default, 'bridge', nname_1
- - networks_1 is changed
- - networks_1.container.NetworkSettings.Networks | length == 3
- - nname_1 in networks_1.container.NetworkSettings.Networks
- - nname_2 in networks_1.container.NetworkSettings.Networks
- - "'default' in networks_1.container.NetworkSettings.Networks or 'bridge' in networks_1.container.NetworkSettings.Networks"
- # networks_2 has networks default, 'bridge', nname_1
- - networks_2 is not changed
- - networks_2.container.NetworkSettings.Networks | length == 3
- - nname_1 in networks_2.container.NetworkSettings.Networks
- - nname_2 in networks_1.container.NetworkSettings.Networks
- - "'default' in networks_1.container.NetworkSettings.Networks or 'bridge' in networks_1.container.NetworkSettings.Networks"
- # networks_3 has networks 'bridge', nname_1
- - networks_3 is changed
- - networks_3.container.NetworkSettings.Networks | length == 2
- - nname_1 in networks_3.container.NetworkSettings.Networks
- - "'default' in networks_3.container.NetworkSettings.Networks or 'bridge' in networks_3.container.NetworkSettings.Networks"
- # networks_4 has networks 'bridge', nname_1
- - networks_4 is not changed
- - networks_4.container.NetworkSettings.Networks | length == 2
- - nname_1 in networks_4.container.NetworkSettings.Networks
- - "'default' in networks_4.container.NetworkSettings.Networks or 'bridge' in networks_4.container.NetworkSettings.Networks"
- # networks_5 has networks 'bridge', nname_1
- - networks_5 is not changed
- - networks_5.container.NetworkSettings.Networks | length == 2
- - nname_1 in networks_5.container.NetworkSettings.Networks
- - "'default' in networks_5.container.NetworkSettings.Networks or 'bridge' in networks_5.container.NetworkSettings.Networks"
- # networks_6 has networks 'bridge'
- - networks_6 is changed
- - networks_6.container.NetworkSettings.Networks | length == 1
- - "'default' in networks_6.container.NetworkSettings.Networks or 'bridge' in networks_6.container.NetworkSettings.Networks"
- # networks_7 has networks 'bridge', nname_2
- - networks_7 is changed
- - networks_7.container.NetworkSettings.Networks | length == 2
- - nname_2 in networks_7.container.NetworkSettings.Networks
- - "'default' in networks_7.container.NetworkSettings.Networks or 'bridge' in networks_7.container.NetworkSettings.Networks"
-
- when: docker_py_version is version('1.10.0', '>=')
-
-####################################################################
-## networks for networks_cli_compatible=yes ########################
-####################################################################
-
-- block:
- - name: networks_cli_compatible=yes, networks specified
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_1 }}"
- aliases:
- - alias1
- - alias2
- - name: "{{ nname_2 }}"
- networks_cli_compatible: yes
- register: networks_1
-
- - name: networks_cli_compatible=yes, networks specified
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_1 }}"
- - name: "{{ nname_2 }}"
- networks_cli_compatible: yes
- register: networks_2
-
- - name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
- - name: networks_cli_compatible=yes, empty networks list specified
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks: []
- networks_cli_compatible: yes
- register: networks_3
-
- - name: networks_cli_compatible=yes, empty networks list specified
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks: []
- networks_cli_compatible: yes
- register: networks_4
-
- - name: networks_cli_compatible=yes, empty networks list specified, purge_networks
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks: []
- networks_cli_compatible: yes
- purge_networks: yes
- force_kill: yes
- register: networks_5
-
- - name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
- - name: networks_cli_compatible=yes, networks not specified
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks_cli_compatible: yes
- force_kill: yes
- register: networks_6
-
- - name: networks_cli_compatible=yes, networks not specified
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks_cli_compatible: yes
- register: networks_7
-
- - name: networks_cli_compatible=yes, networks not specified, purge_networks
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks_cli_compatible: yes
- purge_networks: yes
- force_kill: yes
- register: networks_8
-
- - name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
- - debug: var=networks_3
-
- - assert:
- that:
- # networks_1 has networks nname_1, nname_2
- - networks_1 is changed
- - networks_1.container.NetworkSettings.Networks | length == 2
- - nname_1 in networks_1.container.NetworkSettings.Networks
- - nname_2 in networks_1.container.NetworkSettings.Networks
- # networks_2 has networks nname_1, nname_2
- - networks_2 is not changed
- - networks_2.container.NetworkSettings.Networks | length == 2
- - nname_1 in networks_2.container.NetworkSettings.Networks
- - nname_2 in networks_1.container.NetworkSettings.Networks
- # networks_3 has networks 'bridge'
- - networks_3 is changed
- - networks_3.container.NetworkSettings.Networks | length == 1
- - "'default' in networks_3.container.NetworkSettings.Networks or 'bridge' in networks_3.container.NetworkSettings.Networks"
- # networks_4 has networks 'bridge'
- - networks_4 is not changed
- - networks_4.container.NetworkSettings.Networks | length == 1
- - "'default' in networks_4.container.NetworkSettings.Networks or 'bridge' in networks_4.container.NetworkSettings.Networks"
- # networks_5 has no networks
- - networks_5 is changed
- - networks_5.container.NetworkSettings.Networks | length == 0
- # networks_6 has networks 'bridge'
- - networks_6 is changed
- - networks_6.container.NetworkSettings.Networks | length == 1
- - "'default' in networks_6.container.NetworkSettings.Networks or 'bridge' in networks_6.container.NetworkSettings.Networks"
- # networks_7 has networks 'bridge'
- - networks_7 is not changed
- - networks_7.container.NetworkSettings.Networks | length == 1
- - "'default' in networks_7.container.NetworkSettings.Networks or 'bridge' in networks_7.container.NetworkSettings.Networks"
- # networks_8 has no networks
- - networks_8 is changed
- - networks_8.container.NetworkSettings.Networks | length == 0
-
- when: docker_py_version is version('1.10.0', '>=')
-
-####################################################################
-## networks with comparisons #######################################
-####################################################################
-
-- block:
- - name: create container with one network
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_1 }}"
- networks_cli_compatible: yes
- register: networks_1
-
- - name: different networks, comparisons=ignore
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_2 }}"
- networks_cli_compatible: yes
- comparisons:
- networks: ignore
- register: networks_2
-
- - name: less networks, comparisons=ignore
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks: []
- networks_cli_compatible: yes
- comparisons:
- networks: ignore
- register: networks_3
-
- - name: less networks, comparisons=allow_more_present
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks: []
- networks_cli_compatible: yes
- comparisons:
- networks: allow_more_present
- register: networks_4
-
- - name: different networks, comparisons=allow_more_present
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_2 }}"
- networks_cli_compatible: yes
- comparisons:
- networks: allow_more_present
- force_kill: yes
- register: networks_5
-
- - name: different networks, comparisons=strict
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_2 }}"
- networks_cli_compatible: yes
- comparisons:
- networks: strict
- force_kill: yes
- register: networks_6
-
- - name: less networks, comparisons=strict
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks: []
- networks_cli_compatible: yes
- comparisons:
- networks: strict
- force_kill: yes
- register: networks_7
-
- - name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
- - assert:
- that:
- # networks_1 has networks nname_1
- - networks_1 is changed
- - networks_1.container.NetworkSettings.Networks | length == 1
- - nname_1 in networks_1.container.NetworkSettings.Networks
- # networks_2 has networks nname_1
- - networks_2 is not changed
- - networks_2.container.NetworkSettings.Networks | length == 1
- - nname_1 in networks_2.container.NetworkSettings.Networks
- # networks_3 has networks nname_1
- - networks_3 is not changed
- - networks_3.container.NetworkSettings.Networks | length == 1
- - nname_1 in networks_3.container.NetworkSettings.Networks
- # networks_4 has networks nname_1
- - networks_4 is not changed
- - networks_4.container.NetworkSettings.Networks | length == 1
- - nname_1 in networks_4.container.NetworkSettings.Networks
- # networks_5 has networks nname_1, nname_2
- - networks_5 is changed
- - networks_5.container.NetworkSettings.Networks | length == 2
- - nname_1 in networks_5.container.NetworkSettings.Networks
- - nname_2 in networks_5.container.NetworkSettings.Networks
- # networks_6 has networks nname_2
- - networks_6 is changed
- - networks_6.container.NetworkSettings.Networks | length == 1
- - nname_2 in networks_6.container.NetworkSettings.Networks
- # networks_7 has no networks
- - networks_7 is changed
- - networks_7.container.NetworkSettings.Networks | length == 0
-
- when: docker_py_version is version('1.10.0', '>=')
-
-####################################################################
-## networks with IP address ########################################
-####################################################################
-
-- block:
- - name: create container (stopped) with one network and fixed IP
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: stopped
- networks:
- - name: "{{ nname_3 }}"
- ipv4_address: "{{ nname_3_ipv4_2 }}"
- ipv6_address: "{{ nname_3_ipv6_2 }}"
- networks_cli_compatible: yes
- register: networks_1
-
- - name: create container (stopped) with one network and fixed IP (idempotent)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: stopped
- networks:
- - name: "{{ nname_3 }}"
- ipv4_address: "{{ nname_3_ipv4_2 }}"
- ipv6_address: "{{ nname_3_ipv6_2 }}"
- networks_cli_compatible: yes
- register: networks_2
-
- - name: create container (stopped) with one network and fixed IP (different IPv4)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: stopped
- networks:
- - name: "{{ nname_3 }}"
- ipv4_address: "{{ nname_3_ipv4_3 }}"
- ipv6_address: "{{ nname_3_ipv6_2 }}"
- networks_cli_compatible: yes
- register: networks_3
-
- - name: create container (stopped) with one network and fixed IP (different IPv6)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: stopped
- networks:
- - name: "{{ nname_3 }}"
- ipv4_address: "{{ nname_3_ipv4_3 }}"
- ipv6_address: "{{ nname_3_ipv6_3 }}"
- networks_cli_compatible: yes
- register: networks_4
-
- - name: create container (started) with one network and fixed IP
- docker_container:
- name: "{{ cname }}"
- state: started
- register: networks_5
-
- - name: create container (started) with one network and fixed IP (different IPv4)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_3 }}"
- ipv4_address: "{{ nname_3_ipv4_4 }}"
- ipv6_address: "{{ nname_3_ipv6_3 }}"
- networks_cli_compatible: yes
- force_kill: yes
- register: networks_6
-
- - name: create container (started) with one network and fixed IP (different IPv6)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_3 }}"
- ipv4_address: "{{ nname_3_ipv4_4 }}"
- ipv6_address: "{{ nname_3_ipv6_4 }}"
- networks_cli_compatible: yes
- force_kill: yes
- register: networks_7
-
- - name: create container (started) with one network and fixed IP (idempotent)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- networks:
- - name: "{{ nname_3 }}"
- ipv4_address: "{{ nname_3_ipv4_4 }}"
- ipv6_address: "{{ nname_3_ipv6_4 }}"
- networks_cli_compatible: yes
- register: networks_8
-
- - name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
- - assert:
- that:
- - networks_1 is changed
- - networks_1.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv4Address == nname_3_ipv4_2
- - networks_1.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv6Address | ipaddr == nname_3_ipv6_2 | ipaddr
- - networks_1.container.NetworkSettings.Networks[nname_3].IPAddress == ""
- - networks_1.container.NetworkSettings.Networks[nname_3].GlobalIPv6Address == ""
- - networks_2 is not changed
- - networks_2.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv4Address == nname_3_ipv4_2
- - networks_2.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv6Address | ipaddr == nname_3_ipv6_2 | ipaddr
- - networks_2.container.NetworkSettings.Networks[nname_3].IPAddress == ""
- - networks_2.container.NetworkSettings.Networks[nname_3].GlobalIPv6Address == ""
- - networks_3 is changed
- - networks_3.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv4Address == nname_3_ipv4_3
- - networks_3.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv6Address | ipaddr == nname_3_ipv6_2 | ipaddr
- - networks_3.container.NetworkSettings.Networks[nname_3].IPAddress == ""
- - networks_3.container.NetworkSettings.Networks[nname_3].GlobalIPv6Address == ""
- - networks_4 is changed
- - networks_4.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv4Address == nname_3_ipv4_3
- - networks_4.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv6Address | ipaddr == nname_3_ipv6_3 | ipaddr
- - networks_4.container.NetworkSettings.Networks[nname_3].IPAddress == ""
- - networks_4.container.NetworkSettings.Networks[nname_3].GlobalIPv6Address == ""
- - networks_5 is changed
- - networks_5.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv4Address == nname_3_ipv4_3
- - networks_5.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv6Address | ipaddr == nname_3_ipv6_3 | ipaddr
- - networks_5.container.NetworkSettings.Networks[nname_3].IPAddress == nname_3_ipv4_3
- - networks_5.container.NetworkSettings.Networks[nname_3].GlobalIPv6Address | ipaddr == nname_3_ipv6_3 | ipaddr
- - networks_6 is changed
- - networks_6.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv4Address == nname_3_ipv4_4
- - networks_6.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv6Address | ipaddr == nname_3_ipv6_3 | ipaddr
- - networks_6.container.NetworkSettings.Networks[nname_3].IPAddress == nname_3_ipv4_4
- - networks_6.container.NetworkSettings.Networks[nname_3].GlobalIPv6Address | ipaddr == nname_3_ipv6_3 | ipaddr
- - networks_7 is changed
- - networks_7.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv4Address == nname_3_ipv4_4
- - networks_7.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv6Address | ipaddr == nname_3_ipv6_4 | ipaddr
- - networks_7.container.NetworkSettings.Networks[nname_3].IPAddress == nname_3_ipv4_4
- - networks_7.container.NetworkSettings.Networks[nname_3].GlobalIPv6Address | ipaddr == nname_3_ipv6_4 | ipaddr
- - networks_8 is not changed
- - networks_8.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv4Address == nname_3_ipv4_4
- - networks_8.container.NetworkSettings.Networks[nname_3].IPAMConfig.IPv6Address | ipaddr == nname_3_ipv6_4 | ipaddr
- - networks_8.container.NetworkSettings.Networks[nname_3].IPAddress == nname_3_ipv4_4
- - networks_8.container.NetworkSettings.Networks[nname_3].GlobalIPv6Address | ipaddr == nname_3_ipv6_4 | ipaddr
-
- when: docker_py_version is version('1.10.0', '>=')
-
-####################################################################
-####################################################################
-####################################################################
-
-- name: Delete networks
- docker_network:
- name: "{{ network_name }}"
- state: absent
- force: yes
- loop:
- - "{{ nname_1 }}"
- - "{{ nname_2 }}"
- - "{{ nname_3 }}"
- loop_control:
- loop_var: network_name
- when: docker_py_version is version('1.10.0', '>=')
diff --git a/test/integration/targets/docker_container/tasks/tests/options.yml b/test/integration/targets/docker_container/tasks/tests/options.yml
deleted file mode 100644
index 5cced99584..0000000000
--- a/test/integration/targets/docker_container/tasks/tests/options.yml
+++ /dev/null
@@ -1,3745 +0,0 @@
----
-- name: Registering container name
- set_fact:
- cname: "{{ cname_prefix ~ '-options' }}"
- cname_h1: "{{ cname_prefix ~ '-options-h1' }}"
- cname_h2: "{{ cname_prefix ~ '-options-h2' }}"
- cname_h3: "{{ cname_prefix ~ '-options-h3' }}"
-- name: Registering container name
- set_fact:
- cnames: "{{ cnames + [cname, cname_h1, cname_h2, cname_h3] }}"
-
-####################################################################
-## auto_remove #####################################################
-####################################################################
-
-- name: auto_remove
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "echo"'
- name: "{{ cname }}"
- state: started
- auto_remove: yes
- register: auto_remove_1
- ignore_errors: yes
-
-- name: Give container 1 second to be sure it terminated
- pause:
- seconds: 1
-
-- name: auto_remove (verify)
- docker_container:
- name: "{{ cname }}"
- state: absent
- register: auto_remove_2
- ignore_errors: yes
-
-- assert:
- that:
- - auto_remove_1 is changed
- - auto_remove_2 is not changed
- when: docker_py_version is version('2.1.0', '>=')
-- assert:
- that:
- - auto_remove_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in auto_remove_1.msg"
- - "'Minimum version required is 2.1.0 ' in auto_remove_1.msg"
- when: docker_py_version is version('2.1.0', '<')
-
-####################################################################
-## blkio_weight ####################################################
-####################################################################
-
-- name: blkio_weight
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- blkio_weight: 123
- register: blkio_weight_1
-
-- name: blkio_weight (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- blkio_weight: 123
- register: blkio_weight_2
-
-- name: blkio_weight (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- blkio_weight: 234
- force_kill: yes
- register: blkio_weight_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - blkio_weight_1 is changed
- - "blkio_weight_2 is not changed or 'Docker warning: Your kernel does not support Block I/O weight or the cgroup is not mounted. Weight discarded.' in blkio_weight_2.warnings"
- - blkio_weight_3 is changed
-
-####################################################################
-## cap_drop, capabilities ##########################################
-####################################################################
-
-- name: capabilities, cap_drop
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- capabilities:
- - sys_time
- cap_drop:
- - all
- register: capabilities_1
-
-- name: capabilities, cap_drop (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- capabilities:
- - sys_time
- cap_drop:
- - all
- register: capabilities_2
-
-- name: capabilities, cap_drop (less)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- capabilities: []
- cap_drop:
- - all
- register: capabilities_3
-
-- name: capabilities, cap_drop (changed)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- capabilities:
- - setgid
- cap_drop:
- - all
- force_kill: yes
- register: capabilities_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - capabilities_1 is changed
- - capabilities_2 is not changed
- - capabilities_3 is not changed
- - capabilities_4 is changed
-
-####################################################################
-## command #########################################################
-####################################################################
-
-- name: command
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -v -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- register: command_1
-
-- name: command (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -v -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- register: command_2
-
-- name: command (less parameters)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- force_kill: yes
- register: command_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - command_1 is changed
- - command_2 is not changed
- - command_3 is changed
-
-####################################################################
-## cpu_period ######################################################
-####################################################################
-
-- name: cpu_period
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpu_period: 90000
- state: started
- register: cpu_period_1
-
-- name: cpu_period (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpu_period: 90000
- state: started
- register: cpu_period_2
-
-- name: cpu_period (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpu_period: 50000
- state: started
- force_kill: yes
- register: cpu_period_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - cpu_period_1 is changed
- - cpu_period_2 is not changed
- - cpu_period_3 is changed
-
-####################################################################
-## cpu_quota #######################################################
-####################################################################
-
-- name: cpu_quota
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpu_quota: 150000
- state: started
- register: cpu_quota_1
-
-- name: cpu_quota (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpu_quota: 150000
- state: started
- register: cpu_quota_2
-
-- name: cpu_quota (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpu_quota: 50000
- state: started
- force_kill: yes
- register: cpu_quota_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - cpu_quota_1 is changed
- - cpu_quota_2 is not changed
- - cpu_quota_3 is changed
-
-####################################################################
-## cpu_shares ######################################################
-####################################################################
-
-- name: cpu_shares
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpu_shares: 900
- state: started
- register: cpu_shares_1
-
-- name: cpu_shares (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpu_shares: 900
- state: started
- register: cpu_shares_2
-
-- name: cpu_shares (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpu_shares: 1100
- state: started
- force_kill: yes
- register: cpu_shares_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - cpu_shares_1 is changed
- - cpu_shares_2 is not changed
- - cpu_shares_3 is changed
-
-####################################################################
-## cpuset_cpus #####################################################
-####################################################################
-
-- name: cpuset_cpus
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpuset_cpus: "0"
- state: started
- register: cpuset_cpus_1
-
-- name: cpuset_cpus (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpuset_cpus: "0"
- state: started
- register: cpuset_cpus_2
-
-- name: cpuset_cpus (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpuset_cpus: "1"
- state: started
- force_kill: yes
- # This will fail if the system the test is run on doesn't have
- # multiple CPUs/cores available.
- ignore_errors: yes
- register: cpuset_cpus_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - cpuset_cpus_1 is changed
- - cpuset_cpus_2 is not changed
- - cpuset_cpus_3 is failed or cpuset_cpus_3 is changed
-
-####################################################################
-## cpuset_mems #####################################################
-####################################################################
-
-- name: cpuset_mems
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpuset_mems: "0"
- state: started
- register: cpuset_mems_1
-
-- name: cpuset_mems (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpuset_mems: "0"
- state: started
- register: cpuset_mems_2
-
-- name: cpuset_mems (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpuset_mems: "1"
- state: started
- force_kill: yes
- # This will fail if the system the test is run on doesn't have
- # multiple MEMs available.
- ignore_errors: yes
- register: cpuset_mems_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - cpuset_mems_1 is changed
- - cpuset_mems_2 is not changed
- - cpuset_mems_3 is failed or cpuset_mems_3 is changed
-
-####################################################################
-## cpus ############################################################
-####################################################################
-
-- name: cpus
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpus: 1
- state: started
- ignore_errors: yes
- register: cpus_1
-
-- name: cpus (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpus: 1
- state: started
- ignore_errors: yes
- register: cpus_2
-
-- name: cpus (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- cpus: 1.5
- state: started
- force_kill: yes
- # This will fail if the system the test is run on doesn't have
- # multiple MEMs available.
- ignore_errors: yes
- register: cpus_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - cpus_1 is changed
- - cpus_2 is not changed and cpus_2 is not failed
- - cpus_3 is failed or cpus_3 is changed
- when: docker_py_version is version('2.3.0', '>=')
-- assert:
- that:
- - cpus_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in cpus_1.msg"
- - "'Minimum version required is 2.3.0 ' in cpus_1.msg"
- when: docker_py_version is version('2.3.0', '<')
-
-####################################################################
-## debug ###########################################################
-####################################################################
-
-- name: debug (create)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: present
- debug: yes
- register: debug_1
-
-- name: debug (start)
- docker_container:
- name: "{{ cname }}"
- state: started
- debug: yes
- register: debug_2
-
-- name: debug (stop)
- docker_container:
- image: alpine:3.8
- name: "{{ cname }}"
- state: stopped
- force_kill: yes
- debug: yes
- register: debug_3
-
-- name: debug (absent)
- docker_container:
- name: "{{ cname }}"
- state: absent
- debug: yes
- force_kill: yes
- register: debug_4
-
-- assert:
- that:
- - debug_1 is changed
- - debug_2 is changed
- - debug_3 is changed
- - debug_4 is changed
-
-####################################################################
-## detach, cleanup #################################################
-####################################################################
-
-- name: detach without cleanup
- docker_container:
- name: "{{ cname }}"
- image: hello-world
- detach: no
- register: detach_no_cleanup
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- register: detach_no_cleanup_cleanup
- diff: no
-
-- name: detach with cleanup
- docker_container:
- name: "{{ cname }}"
- image: hello-world
- detach: no
- cleanup: yes
- register: detach_cleanup
-
-- name: cleanup (unnecessary)
- docker_container:
- name: "{{ cname }}"
- state: absent
- register: detach_cleanup_cleanup
- diff: no
-
-- name: detach with auto_remove and cleanup
- docker_container:
- name: "{{ cname }}"
- image: hello-world
- detach: no
- auto_remove: yes
- cleanup: yes
- register: detach_auto_remove
- ignore_errors: yes
-
-- name: cleanup (unnecessary)
- docker_container:
- name: "{{ cname }}"
- state: absent
- register: detach_auto_remove_cleanup
- diff: no
-
-- assert:
- that:
- # NOTE that 'Output' sometimes fails to contain the correct output
- # of hello-world. We don't know why this happens, but it happens
- # often enough to be annoying. That's why we disable this for now,
- # and simply test that 'Output' is contained in the result.
- - "'Output' in detach_no_cleanup.container"
- # - "'Hello from Docker!' in detach_no_cleanup.container.Output"
- - detach_no_cleanup_cleanup is changed
- - "'Output' in detach_cleanup.container"
- # - "'Hello from Docker!' in detach_cleanup.container.Output"
- - detach_cleanup_cleanup is not changed
-- assert:
- that:
- - "'Cannot retrieve result as auto_remove is enabled' == detach_auto_remove.container.Output"
- - detach_auto_remove_cleanup is not changed
- when: docker_py_version is version('2.1.0', '>=')
-
-####################################################################
-## devices #########################################################
-####################################################################
-
-- name: devices
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- devices:
- - "/dev/random:/dev/virt-random:rwm"
- - "/dev/urandom:/dev/virt-urandom:rwm"
- register: devices_1
-
-- name: devices (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- devices:
- - "/dev/urandom:/dev/virt-urandom:rwm"
- - "/dev/random:/dev/virt-random:rwm"
- register: devices_2
-
-- name: devices (less)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- devices:
- - "/dev/random:/dev/virt-random:rwm"
- register: devices_3
-
-- name: devices (changed)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- devices:
- - "/dev/random:/dev/virt-random:rwm"
- - "/dev/null:/dev/virt-null:rwm"
- force_kill: yes
- register: devices_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - devices_1 is changed
- - devices_2 is not changed
- - devices_3 is not changed
- - devices_4 is changed
-
-####################################################################
-## device_read_bps #################################################
-####################################################################
-
-- name: device_read_bps
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_read_bps:
- - path: /dev/random
- rate: 20M
- - path: /dev/urandom
- rate: 10K
- register: device_read_bps_1
- ignore_errors: yes
-
-- name: device_read_bps (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_read_bps:
- - path: /dev/urandom
- rate: 10K
- - path: /dev/random
- rate: 20M
- register: device_read_bps_2
- ignore_errors: yes
-
-- name: device_read_bps (lesser entries)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_read_bps:
- - path: /dev/random
- rate: 20M
- register: device_read_bps_3
- ignore_errors: yes
-
-- name: device_read_bps (changed)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_read_bps:
- - path: /dev/random
- rate: 10M
- - path: /dev/urandom
- rate: 5K
- force_kill: yes
- register: device_read_bps_4
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - device_read_bps_1 is changed
- - device_read_bps_2 is not changed
- - device_read_bps_3 is not changed
- - device_read_bps_4 is changed
- when: docker_py_version is version('1.9.0', '>=')
-- assert:
- that:
- - device_read_bps_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in device_read_bps_1.msg"
- - "'Minimum version required is 1.9.0 ' in device_read_bps_1.msg"
- when: docker_py_version is version('1.9.0', '<')
-
-####################################################################
-## device_read_iops ################################################
-####################################################################
-
-- name: device_read_iops
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_read_iops:
- - path: /dev/random
- rate: 10
- - path: /dev/urandom
- rate: 20
- register: device_read_iops_1
- ignore_errors: yes
-
-- name: device_read_iops (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_read_iops:
- - path: /dev/urandom
- rate: "20"
- - path: /dev/random
- rate: 10
- register: device_read_iops_2
- ignore_errors: yes
-
-- name: device_read_iops (less)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_read_iops:
- - path: /dev/random
- rate: 10
- register: device_read_iops_3
- ignore_errors: yes
-
-- name: device_read_iops (changed)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_read_iops:
- - path: /dev/random
- rate: 30
- - path: /dev/urandom
- rate: 50
- force_kill: yes
- register: device_read_iops_4
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - device_read_iops_1 is changed
- - device_read_iops_2 is not changed
- - device_read_iops_3 is not changed
- - device_read_iops_4 is changed
- when: docker_py_version is version('1.9.0', '>=')
-- assert:
- that:
- - device_read_iops_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in device_read_iops_1.msg"
- - "'Minimum version required is 1.9.0 ' in device_read_iops_1.msg"
- when: docker_py_version is version('1.9.0', '<')
-
-####################################################################
-## device_write_bps and device_write_iops ##########################
-####################################################################
-
-- name: device_write_bps and device_write_iops
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_write_bps:
- - path: /dev/random
- rate: 10M
- device_write_iops:
- - path: /dev/urandom
- rate: 30
- register: device_write_limit_1
- ignore_errors: yes
-
-- name: device_write_bps and device_write_iops (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_write_bps:
- - path: /dev/random
- rate: 10M
- device_write_iops:
- - path: /dev/urandom
- rate: 30
- register: device_write_limit_2
- ignore_errors: yes
-
-- name: device_write_bps device_write_iops (changed)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- device_write_bps:
- - path: /dev/random
- rate: 20K
- device_write_iops:
- - path: /dev/urandom
- rate: 100
- force_kill: yes
- register: device_write_limit_3
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - device_write_limit_1 is changed
- - device_write_limit_2 is not changed
- - device_write_limit_3 is changed
- when: docker_py_version is version('1.9.0', '>=')
-- assert:
- that:
- - device_write_limit_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in device_write_limit_1.msg"
- - "'Minimum version required is 1.9.0 ' in device_write_limit_1.msg"
- when: docker_py_version is version('1.9.0', '<')
-
-####################################################################
-## dns_opts ########################################################
-####################################################################
-
-- name: dns_opts
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_opts:
- - "timeout:10"
- - rotate
- register: dns_opts_1
- ignore_errors: yes
-
-- name: dns_opts (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_opts:
- - rotate
- - "timeout:10"
- register: dns_opts_2
- ignore_errors: yes
-
-- name: dns_opts (less resolv.conf options)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_opts:
- - "timeout:10"
- register: dns_opts_3
- ignore_errors: yes
-
-- name: dns_opts (more resolv.conf options)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_opts:
- - "timeout:10"
- - no-check-names
- force_kill: yes
- register: dns_opts_4
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - dns_opts_1 is changed
- - dns_opts_2 is not changed
- - dns_opts_3 is not changed
- - dns_opts_4 is changed
- when: docker_py_version is version('1.10.0', '>=')
-- assert:
- that:
- - dns_opts_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in dns_opts_1.msg"
- - "'Minimum version required is 1.10.0 ' in dns_opts_1.msg"
- when: docker_py_version is version('1.10.0', '<')
-
-####################################################################
-## dns_search_domains ##############################################
-####################################################################
-
-- name: dns_search_domains
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_search_domains:
- - example.com
- - example.org
- register: dns_search_domains_1
-
-- name: dns_search_domains (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_search_domains:
- - example.com
- - example.org
- register: dns_search_domains_2
-
-- name: dns_search_domains (different order)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_search_domains:
- - example.org
- - example.com
- force_kill: yes
- register: dns_search_domains_3
-
-- name: dns_search_domains (changed elements)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_search_domains:
- - ansible.com
- - example.com
- force_kill: yes
- register: dns_search_domains_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - dns_search_domains_1 is changed
- - dns_search_domains_2 is not changed
- - dns_search_domains_3 is changed
- - dns_search_domains_4 is changed
-
-####################################################################
-## dns_servers #####################################################
-####################################################################
-
-- name: dns_servers
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_servers:
- - 1.1.1.1
- - 8.8.8.8
- register: dns_servers_1
-
-- name: dns_servers (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_servers:
- - 1.1.1.1
- - 8.8.8.8
- register: dns_servers_2
-
-- name: dns_servers (changed order)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_servers:
- - 8.8.8.8
- - 1.1.1.1
- force_kill: yes
- register: dns_servers_3
-
-- name: dns_servers (changed elements)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- dns_servers:
- - 8.8.8.8
- - 9.9.9.9
- force_kill: yes
- register: dns_servers_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - dns_servers_1 is changed
- - dns_servers_2 is not changed
- - dns_servers_3 is changed
- - dns_servers_4 is changed
-
-####################################################################
-## domainname ######################################################
-####################################################################
-
-- name: domainname
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- domainname: example.com
- state: started
- register: domainname_1
-
-- name: domainname (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- domainname: example.com
- state: started
- register: domainname_2
-
-- name: domainname (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- domainname: example.org
- state: started
- force_kill: yes
- register: domainname_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - domainname_1 is changed
- - domainname_2 is not changed
- - domainname_3 is changed
-
-####################################################################
-## entrypoint ######################################################
-####################################################################
-
-- name: entrypoint
- docker_container:
- image: alpine:3.8
- entrypoint:
- - /bin/sh
- - "-v"
- - "-c"
- - "'sleep 10m'"
- name: "{{ cname }}"
- state: started
- register: entrypoint_1
-
-- name: entrypoint (idempotency)
- docker_container:
- image: alpine:3.8
- entrypoint:
- - /bin/sh
- - "-v"
- - "-c"
- - "'sleep 10m'"
- name: "{{ cname }}"
- state: started
- register: entrypoint_2
-
-- name: entrypoint (change order, should not be idempotent)
- docker_container:
- image: alpine:3.8
- entrypoint:
- - /bin/sh
- - "-c"
- - "'sleep 10m'"
- - "-v"
- name: "{{ cname }}"
- state: started
- force_kill: yes
- register: entrypoint_3
-
-- name: entrypoint (less parameters)
- docker_container:
- image: alpine:3.8
- entrypoint:
- - /bin/sh
- - "-c"
- - "'sleep 10m'"
- name: "{{ cname }}"
- state: started
- force_kill: yes
- register: entrypoint_4
-
-- name: entrypoint (other parameters)
- docker_container:
- image: alpine:3.8
- entrypoint:
- - /bin/sh
- - "-c"
- - "'sleep 5m'"
- name: "{{ cname }}"
- state: started
- force_kill: yes
- register: entrypoint_5
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - entrypoint_1 is changed
- - entrypoint_2 is not changed
- - entrypoint_3 is changed
- - entrypoint_4 is changed
- - entrypoint_5 is changed
-
-####################################################################
-## env #############################################################
-####################################################################
-
-- name: env
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- env:
- TEST1: val1
- TEST2: val2
- TEST3: "False"
- TEST4: "true"
- TEST5: "yes"
- register: env_1
-
-- name: env (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- env:
- TEST2: val2
- TEST1: val1
- TEST5: "yes"
- TEST3: "False"
- TEST4: "true"
- register: env_2
-
-- name: env (less environment variables)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- env:
- TEST1: val1
- register: env_3
-
-- name: env (more environment variables)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- env:
- TEST1: val1
- TEST3: val3
- force_kill: yes
- register: env_4
-
-- name: env (fail unwrapped values)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- env:
- TEST1: true
- force_kill: yes
- register: env_5
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - env_1 is changed
- - env_2 is not changed
- - env_3 is not changed
- - env_4 is changed
- - env_5 is failed
- - "('Non-string value found for env option.') in env_5.msg"
-
-####################################################################
-## env_file #########################################################
-####################################################################
-
-- name: env_file
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- env_file: "{{ role_path }}/files/env-file"
- register: env_file_1
-
-- name: env_file (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- env_file: "{{ role_path }}/files/env-file"
- register: env_file_2
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - env_file_1 is changed
- - env_file_2 is not changed
-
-####################################################################
-## etc_hosts #######################################################
-####################################################################
-
-- name: etc_hosts
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- etc_hosts:
- example.com: 1.2.3.4
- example.org: 4.3.2.1
- register: etc_hosts_1
-
-- name: etc_hosts (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- etc_hosts:
- example.org: 4.3.2.1
- example.com: 1.2.3.4
- register: etc_hosts_2
-
-- name: etc_hosts (less hosts)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- etc_hosts:
- example.com: 1.2.3.4
- register: etc_hosts_3
-
-- name: etc_hosts (more hosts)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- etc_hosts:
- example.com: 1.2.3.4
- example.us: 1.2.3.5
- force_kill: yes
- register: etc_hosts_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - etc_hosts_1 is changed
- - etc_hosts_2 is not changed
- - etc_hosts_3 is not changed
- - etc_hosts_4 is changed
-
-####################################################################
-## exposed_ports ###################################################
-####################################################################
-
-- name: exposed_ports
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9001"
- - "9002"
- register: exposed_ports_1
-
-- name: exposed_ports (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9002"
- - "9001"
- register: exposed_ports_2
-
-- name: exposed_ports (less ports)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9002"
- register: exposed_ports_3
-
-- name: exposed_ports (more ports)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9002"
- - "9003"
- force_kill: yes
- register: exposed_ports_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - exposed_ports_1 is changed
- - exposed_ports_2 is not changed
- - exposed_ports_3 is not changed
- - exposed_ports_4 is changed
-
-####################################################################
-## force_kill ######################################################
-####################################################################
-
-# TODO: - force_kill
-
-####################################################################
-## groups ##########################################################
-####################################################################
-
-- name: groups
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- groups:
- - "1234"
- - "5678"
- register: groups_1
-
-- name: groups (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- groups:
- - "5678"
- - "1234"
- register: groups_2
-
-- name: groups (less groups)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- groups:
- - "1234"
- register: groups_3
-
-- name: groups (more groups)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- groups:
- - "1234"
- - "2345"
- force_kill: yes
- register: groups_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - groups_1 is changed
- - groups_2 is not changed
- - groups_3 is not changed
- - groups_4 is changed
-
-####################################################################
-## healthcheck #####################################################
-####################################################################
-
-- name: healthcheck
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- healthcheck:
- test:
- - CMD
- - sleep
- - 1
- timeout: 2s
- interval: 0h0m2s3ms4us
- retries: 2
- force_kill: yes
- register: healthcheck_1
- ignore_errors: yes
-
-- name: healthcheck (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- healthcheck:
- test:
- - CMD
- - sleep
- - 1
- timeout: 2s
- interval: 0h0m2s3ms4us
- retries: 2
- force_kill: yes
- register: healthcheck_2
- ignore_errors: yes
-
-- name: healthcheck (changed)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- healthcheck:
- test:
- - CMD
- - sleep
- - 1
- timeout: 3s
- interval: 0h1m2s3ms4us
- retries: 3
- force_kill: yes
- register: healthcheck_3
- ignore_errors: yes
-
-- name: healthcheck (no change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- force_kill: yes
- register: healthcheck_4
- ignore_errors: yes
-
-- name: healthcheck (disabled)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- healthcheck:
- test:
- - NONE
- force_kill: yes
- register: healthcheck_5
- ignore_errors: yes
-
-- name: healthcheck (disabled, idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- healthcheck:
- test:
- - NONE
- force_kill: yes
- register: healthcheck_6
- ignore_errors: yes
-
-- name: healthcheck (string in healthcheck test, changed)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- healthcheck:
- test: "sleep 1"
- force_kill: yes
- register: healthcheck_7
- ignore_errors: yes
-
-- name: healthcheck (string in healthcheck test, idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- healthcheck:
- test: "sleep 1"
- force_kill: yes
- register: healthcheck_8
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - healthcheck_1 is changed
- - healthcheck_2 is not changed
- - healthcheck_3 is changed
- - healthcheck_4 is not changed
- - healthcheck_5 is changed
- - healthcheck_6 is not changed
- - healthcheck_7 is changed
- - healthcheck_8 is not changed
- when: docker_py_version is version('2.0.0', '>=')
-- assert:
- that:
- - healthcheck_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in healthcheck_1.msg"
- - "'Minimum version required is 2.0.0 ' in healthcheck_1.msg"
- when: docker_py_version is version('2.0.0', '<')
-
-####################################################################
-## hostname ########################################################
-####################################################################
-
-- name: hostname
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- hostname: me.example.com
- state: started
- register: hostname_1
-
-- name: hostname (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- hostname: me.example.com
- state: started
- register: hostname_2
-
-- name: hostname (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- hostname: me.example.org
- state: started
- force_kill: yes
- register: hostname_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - hostname_1 is changed
- - hostname_2 is not changed
- - hostname_3 is changed
-
-####################################################################
-## init ############################################################
-####################################################################
-
-- name: init
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- init: yes
- state: started
- register: init_1
- ignore_errors: yes
-
-- name: init (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- init: yes
- state: started
- register: init_2
- ignore_errors: yes
-
-- name: init (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- init: no
- state: started
- force_kill: yes
- register: init_3
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - init_1 is changed
- - init_2 is not changed
- - init_3 is changed
- when: docker_py_version is version('2.2.0', '>=')
-- assert:
- that:
- - init_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in init_1.msg"
- - "'Minimum version required is 2.2.0 ' in init_1.msg"
- when: docker_py_version is version('2.2.0', '<')
-
-####################################################################
-## interactive #####################################################
-####################################################################
-
-- name: interactive
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- interactive: yes
- state: started
- register: interactive_1
-
-- name: interactive (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- interactive: yes
- state: started
- register: interactive_2
-
-- name: interactive (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- interactive: no
- state: started
- force_kill: yes
- register: interactive_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - interactive_1 is changed
- - interactive_2 is not changed
- - interactive_3 is changed
-
-####################################################################
-## image / ignore_image ############################################
-####################################################################
-
-- name: Pull hello-world image to make sure ignore_image test succeeds
- # If the image isn't there, it will pull it and return 'changed'.
- docker_image:
- name: hello-world
- pull: true
-
-- name: image
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- register: image_1
-
-- name: image (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- register: image_2
-
-- name: ignore_image
- docker_container:
- image: hello-world
- ignore_image: yes
- name: "{{ cname }}"
- state: started
- register: ignore_image
-
-- name: image change
- docker_container:
- image: hello-world
- name: "{{ cname }}"
- state: started
- force_kill: yes
- register: image_change
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - image_1 is changed
- - image_2 is not changed
- - ignore_image is not changed
- - image_change is changed
-
-####################################################################
-## ipc_mode ########################################################
-####################################################################
-
-- name: start helpers
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ container_name }}"
- state: started
- ipc_mode: shareable
- loop:
- - "{{ cname_h1 }}"
- loop_control:
- loop_var: container_name
-
-- name: ipc_mode
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- ipc_mode: "container:{{ cname_h1 }}"
- # ipc_mode: shareable
- register: ipc_mode_1
-
-- name: ipc_mode (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- ipc_mode: "container:{{ cname_h1 }}"
- # ipc_mode: shareable
- register: ipc_mode_2
-
-- name: ipc_mode (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- ipc_mode: private
- force_kill: yes
- register: ipc_mode_3
-
-- name: cleanup
- docker_container:
- name: "{{ container_name }}"
- state: absent
- force_kill: yes
- loop:
- - "{{ cname }}"
- - "{{ cname_h1 }}"
- loop_control:
- loop_var: container_name
- diff: no
-
-- assert:
- that:
- - ipc_mode_1 is changed
- - ipc_mode_2 is not changed
- - ipc_mode_3 is changed
-
-####################################################################
-## kernel_memory ###################################################
-####################################################################
-
-- name: kernel_memory
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- kernel_memory: 8M
- state: started
- register: kernel_memory_1
- ignore_errors: yes
-
-- name: kernel_memory (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- kernel_memory: 8M
- state: started
- register: kernel_memory_2
- ignore_errors: yes
-
-- name: kernel_memory (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- kernel_memory: 6M
- state: started
- force_kill: yes
- register: kernel_memory_3
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
- ignore_errors: yes
-
-- assert:
- that:
- - kernel_memory_1 is changed
- - kernel_memory_2 is not changed
- - kernel_memory_3 is changed
- when: kernel_memory_1 is not failed or 'kernel memory accounting disabled in this runc build' not in kernel_memory_1.msg
-
-####################################################################
-## kill_signal #####################################################
-####################################################################
-
-# TODO: - kill_signal
-
-####################################################################
-## labels ##########################################################
-####################################################################
-
-- name: labels
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- labels:
- ansible.test.1: hello
- ansible.test.2: world
- register: labels_1
-
-- name: labels (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- labels:
- ansible.test.2: world
- ansible.test.1: hello
- register: labels_2
-
-- name: labels (less labels)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- labels:
- ansible.test.1: hello
- register: labels_3
-
-- name: labels (more labels)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- labels:
- ansible.test.1: hello
- ansible.test.3: ansible
- force_kill: yes
- register: labels_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - labels_1 is changed
- - labels_2 is not changed
- - labels_3 is not changed
- - labels_4 is changed
-
-####################################################################
-## links ###########################################################
-####################################################################
-
-- name: start helpers
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ container_name }}"
- state: started
- loop:
- - "{{ cname_h1 }}"
- - "{{ cname_h2 }}"
- - "{{ cname_h3 }}"
- loop_control:
- loop_var: container_name
-
-- name: links
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- links:
- - "{{ cname_h1 }}:test1"
- - "{{ cname_h2 }}:test2"
- register: links_1
-
-- name: links (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- links:
- - "{{ cname_h2 }}:test2"
- - "{{ cname_h1 }}:test1"
- register: links_2
-
-- name: links (less links)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- links:
- - "{{ cname_h1 }}:test1"
- register: links_3
-
-- name: links (more links)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- links:
- - "{{ cname_h1 }}:test1"
- - "{{ cname_h3 }}:test3"
- force_kill: yes
- register: links_4
-
-- name: cleanup
- docker_container:
- name: "{{ container_name }}"
- state: absent
- force_kill: yes
- loop:
- - "{{ cname }}"
- - "{{ cname_h1 }}"
- - "{{ cname_h2 }}"
- - "{{ cname_h3 }}"
- loop_control:
- loop_var: container_name
- diff: no
-
-- assert:
- that:
- - links_1 is changed
- - links_2 is not changed
- - links_3 is not changed
- - links_4 is changed
-
-####################################################################
-## log_driver ######################################################
-####################################################################
-
-- name: log_driver
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- log_driver: json-file
- register: log_driver_1
-
-- name: log_driver (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- log_driver: json-file
- register: log_driver_2
-
-- name: log_driver (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- log_driver: syslog
- force_kill: yes
- register: log_driver_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - log_driver_1 is changed
- - log_driver_2 is not changed
- - log_driver_3 is changed
-
-####################################################################
-## log_options #####################################################
-####################################################################
-
-- name: log_options
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- log_driver: json-file
- log_options:
- labels: production_status
- env: os,customer
- max-file: 5
- register: log_options_1
-
-- name: log_options (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- log_driver: json-file
- log_options:
- env: os,customer
- labels: production_status
- max-file: 5
- register: log_options_2
-
-- name: log_options (less log options)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- log_driver: json-file
- log_options:
- labels: production_status
- register: log_options_3
-
-- name: log_options (more log options)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- log_driver: json-file
- log_options:
- labels: production_status
- max-size: 10m
- force_kill: yes
- register: log_options_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - log_options_1 is changed
- - log_options_2 is not changed
- - "'Non-string value found for log_options option \\'max-file\\'. The value is automatically converted to \\'5\\'. If this is not correct, or you want to
-avoid such warnings, please quote the value.' in log_options_2.warnings"
- - log_options_3 is not changed
- - log_options_4 is changed
-
-####################################################################
-## mac_address #####################################################
-####################################################################
-
-- name: mac_address
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- mac_address: 92:d0:c6:0a:29:33
- state: started
- register: mac_address_1
-
-- name: mac_address (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- mac_address: 92:d0:c6:0a:29:33
- state: started
- register: mac_address_2
-
-- name: mac_address (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- mac_address: 92:d0:c6:0a:29:44
- state: started
- force_kill: yes
- register: mac_address_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - mac_address_1 is changed
- - mac_address_2 is not changed
- - mac_address_3 is changed
-
-####################################################################
-## memory ##########################################################
-####################################################################
-
-- name: memory
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- memory: 64M
- state: started
- register: memory_1
-
-- name: memory (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- memory: 64M
- state: started
- register: memory_2
-
-- name: memory (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- memory: 48M
- state: started
- force_kill: yes
- register: memory_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - memory_1 is changed
- - memory_2 is not changed
- - memory_3 is changed
-
-####################################################################
-## memory_reservation ##############################################
-####################################################################
-
-- name: memory_reservation
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- memory_reservation: 64M
- state: started
- register: memory_reservation_1
-
-- name: memory_reservation (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- memory_reservation: 64M
- state: started
- register: memory_reservation_2
-
-- name: memory_reservation (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- memory_reservation: 48M
- state: started
- force_kill: yes
- register: memory_reservation_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - memory_reservation_1 is changed
- - memory_reservation_2 is not changed
- - memory_reservation_3 is changed
-
-####################################################################
-## memory_swap #####################################################
-####################################################################
-
-- name: memory_swap
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- # Docker daemon does not accept memory_swap if memory is not specified
- memory: 32M
- memory_swap: 64M
- state: started
- debug: yes
- register: memory_swap_1
-
-- name: memory_swap (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- # Docker daemon does not accept memory_swap if memory is not specified
- memory: 32M
- memory_swap: 64M
- state: started
- debug: yes
- register: memory_swap_2
-
-- name: memory_swap (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- # Docker daemon does not accept memory_swap if memory is not specified
- memory: 32M
- memory_swap: 48M
- state: started
- force_kill: yes
- debug: yes
- register: memory_swap_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - memory_swap_1 is changed
- # Sometimes (in particular during integration tests, maybe when not running
- # on a proper VM), memory_swap cannot be set and will be -1 afterwards.
- - memory_swap_2 is not changed or memory_swap_2.container.HostConfig.MemorySwap == -1
- - memory_swap_3 is changed
-
-- debug: var=memory_swap_1
- when: memory_swap_2 is changed
-- debug: var=memory_swap_2
- when: memory_swap_2 is changed
-- debug: var=memory_swap_3
- when: memory_swap_2 is changed
-
-####################################################################
-## memory_swappiness ###############################################
-####################################################################
-
-- name: memory_swappiness
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- memory_swappiness: 40
- state: started
- register: memory_swappiness_1
-
-- name: memory_swappiness (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- memory_swappiness: 40
- state: started
- register: memory_swappiness_2
-
-- name: memory_swappiness (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- memory_swappiness: 60
- state: started
- force_kill: yes
- register: memory_swappiness_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - memory_swappiness_1 is changed
- - memory_swappiness_2 is not changed
- - memory_swappiness_3 is changed
-
-####################################################################
-## oom_killer ######################################################
-####################################################################
-
-- name: oom_killer
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- oom_killer: yes
- state: started
- register: oom_killer_1
-
-- name: oom_killer (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- oom_killer: yes
- state: started
- register: oom_killer_2
-
-- name: oom_killer (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- oom_killer: no
- state: started
- force_kill: yes
- register: oom_killer_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - oom_killer_1 is changed
- - oom_killer_2 is not changed
- - oom_killer_3 is changed
-
-####################################################################
-## oom_score_adj ###################################################
-####################################################################
-
-- name: oom_score_adj
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- oom_score_adj: 5
- state: started
- register: oom_score_adj_1
-
-- name: oom_score_adj (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- oom_score_adj: 5
- state: started
- register: oom_score_adj_2
-
-- name: oom_score_adj (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- oom_score_adj: 7
- state: started
- force_kill: yes
- register: oom_score_adj_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - oom_score_adj_1 is changed
- - oom_score_adj_2 is not changed
- - oom_score_adj_3 is changed
-
-####################################################################
-## output_logs #####################################################
-####################################################################
-
-# TODO: - output_logs
-
-####################################################################
-## paused ##########################################################
-####################################################################
-
-- name: paused
- docker_container:
- image: alpine:3.8
- command: "/bin/sh -c 'sleep 10m'"
- name: "{{ cname }}"
- state: started
- paused: yes
- force_kill: yes
- register: paused_1
-
-- name: inspect paused
- command: "docker inspect -f {% raw %}'{{.State.Status}} {{.State.Paused}}'{% endraw %} {{ cname }}"
- register: paused_2
-
-- name: paused (idempotent)
- docker_container:
- image: alpine:3.8
- command: "/bin/sh -c 'sleep 10m'"
- name: "{{ cname }}"
- state: started
- paused: yes
- force_kill: yes
- register: paused_3
-
-- name: paused (continue)
- docker_container:
- image: alpine:3.8
- command: "/bin/sh -c 'sleep 10m'"
- name: "{{ cname }}"
- state: started
- paused: no
- force_kill: yes
- register: paused_4
-
-- name: inspect paused
- command: "docker inspect -f {% raw %}'{{.State.Status}} {{.State.Paused}}'{% endraw %} {{ cname }}"
- register: paused_5
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - paused_1 is changed
- - 'paused_2.stdout == "paused true"'
- - paused_3 is not changed
- - paused_4 is changed
- - 'paused_5.stdout == "running false"'
-
-####################################################################
-## pid_mode ########################################################
-####################################################################
-
-- name: start helpers
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname_h1 }}"
- state: started
- register: pid_mode_helper
-
-- name: pid_mode
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- pid_mode: "container:{{ pid_mode_helper.container.Id }}"
- register: pid_mode_1
- ignore_errors: yes
- # docker-py < 2.0 does not support "arbitrary" pid_mode values
-
-- name: pid_mode (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- pid_mode: "container:{{ cname_h1 }}"
- register: pid_mode_2
- ignore_errors: yes
- # docker-py < 2.0 does not support "arbitrary" pid_mode values
-
-- name: pid_mode (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- pid_mode: host
- force_kill: yes
- register: pid_mode_3
-
-- name: cleanup
- docker_container:
- name: "{{ container_name }}"
- state: absent
- force_kill: yes
- loop:
- - "{{ cname }}"
- - "{{ cname_h1 }}"
- loop_control:
- loop_var: container_name
- diff: no
-
-- assert:
- that:
- - pid_mode_1 is changed
- - pid_mode_2 is not changed
- - pid_mode_3 is changed
- when: docker_py_version is version('2.0.0', '>=')
-- assert:
- that:
- - pid_mode_1 is failed
- - pid_mode_2 is failed
- - pid_mode_3 is changed
- when: docker_py_version is version('2.0.0', '<')
-
-####################################################################
-## pids_limit ######################################################
-####################################################################
-
-- name: pids_limit
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- pids_limit: 10
- register: pids_limit_1
- ignore_errors: yes
-
-- name: pids_limit (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- pids_limit: 10
- register: pids_limit_2
- ignore_errors: yes
-
-- name: pids_limit (changed)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- pids_limit: 20
- force_kill: yes
- register: pids_limit_3
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - pids_limit_1 is changed
- - pids_limit_2 is not changed
- - pids_limit_3 is changed
- when: docker_py_version is version('1.10.0', '>=')
-- assert:
- that:
- - pids_limit_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in pids_limit_1.msg"
- - "'Minimum version required is 1.10.0 ' in pids_limit_1.msg"
- when: docker_py_version is version('1.10.0', '<')
-
-####################################################################
-## privileged ######################################################
-####################################################################
-
-- name: privileged
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- privileged: yes
- state: started
- register: privileged_1
-
-- name: privileged (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- privileged: yes
- state: started
- register: privileged_2
-
-- name: privileged (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- privileged: no
- state: started
- force_kill: yes
- register: privileged_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - privileged_1 is changed
- - privileged_2 is not changed
- - privileged_3 is changed
-
-####################################################################
-## published_ports #################################################
-####################################################################
-
-- name: published_ports
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- published_ports:
- - '9001'
- - '9002'
- register: published_ports_1
-
-- name: published_ports (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- published_ports:
- - '9002'
- - '9001'
- register: published_ports_2
-
-- name: published_ports (less published_ports)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- published_ports:
- - '9002'
- register: published_ports_3
-
-- name: published_ports (more published_ports)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- published_ports:
- - '9002'
- - '9003'
- force_kill: yes
- register: published_ports_4
-
-- name: published_ports (ports with IP addresses)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- published_ports:
- - '127.0.0.1:9002:9002/tcp'
- - '[::1]:9003:9003/tcp'
- force_kill: yes
- register: published_ports_5
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - published_ports_1 is changed
- - published_ports_2 is not changed
- - published_ports_3 is not changed
- - published_ports_4 is changed
- - published_ports_5 is changed
-
-####################################################################
-## pull ############################################################
-####################################################################
-
-# TODO: - pull
-
-####################################################################
-## read_only #######################################################
-####################################################################
-
-- name: read_only
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- read_only: yes
- state: started
- register: read_only_1
-
-- name: read_only (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- read_only: yes
- state: started
- register: read_only_2
-
-- name: read_only (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- read_only: no
- state: started
- force_kill: yes
- register: read_only_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - read_only_1 is changed
- - read_only_2 is not changed
- - read_only_3 is changed
-
-####################################################################
-## restart_policy ##################################################
-####################################################################
-
-- name: restart_policy
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- restart_policy: always
- state: started
- register: restart_policy_1
-
-- name: restart_policy (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- restart_policy: always
- state: started
- register: restart_policy_2
-
-- name: restart_policy (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- restart_policy: unless-stopped
- state: started
- force_kill: yes
- register: restart_policy_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - restart_policy_1 is changed
- - restart_policy_2 is not changed
- - restart_policy_3 is changed
-
-####################################################################
-## restart_retries #################################################
-####################################################################
-
-- name: restart_retries
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- restart_policy: on-failure
- restart_retries: 5
- state: started
- register: restart_retries_1
-
-- name: restart_retries (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- restart_policy: on-failure
- restart_retries: 5
- state: started
- register: restart_retries_2
-
-- name: restart_retries (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- restart_policy: on-failure
- restart_retries: 2
- state: started
- force_kill: yes
- register: restart_retries_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - restart_retries_1 is changed
- - restart_retries_2 is not changed
- - restart_retries_3 is changed
-
-####################################################################
-## runtime #########################################################
-####################################################################
-
-- name: runtime
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- runtime: runc
- state: started
- register: runtime_1
- ignore_errors: yes
-
-- name: runtime (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- runtime: runc
- state: started
- register: runtime_2
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - runtime_1 is changed
- - runtime_2 is not changed
- when: docker_py_version is version('2.4.0', '>=')
-- assert:
- that:
- - runtime_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in runtime_1.msg"
- - "'Minimum version required is 2.4.0 ' in runtime_1.msg"
- when: docker_py_version is version('2.4.0', '<')
-
-####################################################################
-## security_opts ###################################################
-####################################################################
-
-# In case some of the options stop working, here are some more
-# options which *currently* work with all integration test targets:
-# no-new-privileges
-# label:disable
-# label=disable
-# label:level:s0:c100,c200
-# label=level:s0:c100,c200
-# label:type:svirt_apache_t
-# label=type:svirt_apache_t
-# label:user:root
-# label=user:root
-# seccomp:unconfined
-# seccomp=unconfined
-# apparmor:docker-default
-# apparmor=docker-default
-
-- name: security_opts
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- security_opts:
- - "label:level:s0:c100,c200"
- - "no-new-privileges"
- register: security_opts_1
-
-- name: security_opts (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- security_opts:
- - "no-new-privileges"
- - "label:level:s0:c100,c200"
- register: security_opts_2
-
-- name: security_opts (less security options)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- security_opts:
- - "no-new-privileges"
- register: security_opts_3
-
-- name: security_opts (more security options)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- security_opts:
- - "label:disable"
- - "no-new-privileges"
- force_kill: yes
- register: security_opts_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - security_opts_1 is changed
- - security_opts_2 is not changed
- - security_opts_3 is not changed
- - security_opts_4 is changed
-
-####################################################################
-## shm_size ########################################################
-####################################################################
-
-- name: shm_size
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- shm_size: 96M
- state: started
- register: shm_size_1
-
-- name: shm_size (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- shm_size: 96M
- state: started
- register: shm_size_2
-
-- name: shm_size (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- shm_size: 75M
- state: started
- force_kill: yes
- register: shm_size_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - shm_size_1 is changed
- - shm_size_2 is not changed
- - shm_size_3 is changed
-
-####################################################################
-## stop_signal #####################################################
-####################################################################
-
-- name: stop_signal
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- stop_signal: "30"
- state: started
- register: stop_signal_1
-
-- name: stop_signal (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- stop_signal: "30"
- state: started
- register: stop_signal_2
-
-- name: stop_signal (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- stop_signal: "9"
- state: started
- force_kill: yes
- register: stop_signal_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - stop_signal_1 is changed
- - stop_signal_2 is not changed
- - stop_signal_3 is changed
-
-####################################################################
-## stop_timeout ####################################################
-####################################################################
-
-- name: stop_timeout
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- stop_timeout: 2
- state: started
- register: stop_timeout_1
-
-- name: stop_timeout (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- stop_timeout: 2
- state: started
- register: stop_timeout_2
-
-- name: stop_timeout (no change)
- # stop_timeout changes are ignored by default
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- stop_timeout: 1
- state: started
- register: stop_timeout_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - stop_timeout_1 is changed
- - stop_timeout_2 is not changed
- - stop_timeout_3 is not changed
-
-####################################################################
-## sysctls #########################################################
-####################################################################
-
-# In case some of the options stop working, here are some more
-# options which *currently* work with all integration test targets:
-# net.ipv4.conf.default.log_martians: 1
-# net.ipv4.conf.default.secure_redirects: 0
-# net.ipv4.conf.default.send_redirects: 0
-# net.ipv4.conf.all.log_martians: 1
-# net.ipv4.conf.all.accept_redirects: 0
-# net.ipv4.conf.all.secure_redirects: 0
-# net.ipv4.conf.all.send_redirects: 0
-
-- name: sysctls
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- sysctls:
- net.ipv4.icmp_echo_ignore_all: 1
- net.ipv4.ip_forward: 1
- register: sysctls_1
- ignore_errors: yes
-
-- name: sysctls (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- sysctls:
- net.ipv4.ip_forward: 1
- net.ipv4.icmp_echo_ignore_all: 1
- register: sysctls_2
- ignore_errors: yes
-
-- name: sysctls (less sysctls)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- sysctls:
- net.ipv4.icmp_echo_ignore_all: 1
- register: sysctls_3
- ignore_errors: yes
-
-- name: sysctls (more sysctls)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- sysctls:
- net.ipv4.icmp_echo_ignore_all: 1
- net.ipv6.conf.default.accept_redirects: 0
- force_kill: yes
- register: sysctls_4
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - sysctls_1 is changed
- - sysctls_2 is not changed
- - sysctls_3 is not changed
- - sysctls_4 is changed
- when: docker_py_version is version('1.10.0', '>=')
-- assert:
- that:
- - sysctls_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in sysctls_1.msg"
- - "'Minimum version required is 1.10.0 ' in sysctls_1.msg"
- when: docker_py_version is version('1.10.0', '<')
-
-####################################################################
-## tmpfs ###########################################################
-####################################################################
-
-- name: tmpfs
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- tmpfs:
- - "/test1:rw,noexec,nosuid,size=65536k"
- - "/test2:rw,noexec,nosuid,size=65536k"
- register: tmpfs_1
-
-- name: tmpfs (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- tmpfs:
- - "/test2:rw,noexec,nosuid,size=65536k"
- - "/test1:rw,noexec,nosuid,size=65536k"
- register: tmpfs_2
-
-- name: tmpfs (less tmpfs)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- tmpfs:
- - "/test1:rw,noexec,nosuid,size=65536k"
- register: tmpfs_3
-
-- name: tmpfs (more tmpfs)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- tmpfs:
- - "/test1:rw,noexec,nosuid,size=65536k"
- - "/test3:rw,noexec,nosuid,size=65536k"
- force_kill: yes
- register: tmpfs_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - tmpfs_1 is changed
- - tmpfs_2 is not changed
- - tmpfs_3 is not changed
- - tmpfs_4 is changed
-
-####################################################################
-## tty #############################################################
-####################################################################
-
-- name: tty
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- tty: yes
- state: started
- register: tty_1
-
-- name: tty (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- tty: yes
- state: started
- register: tty_2
-
-- name: tty (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- tty: no
- state: started
- force_kill: yes
- register: tty_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - tty_1 is changed
- - tty_2 is not changed
- - tty_3 is changed
-
-####################################################################
-## ulimits #########################################################
-####################################################################
-
-- name: ulimits
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- ulimits:
- - "nofile:1234:1234"
- - "nproc:3:6"
- register: ulimits_1
-
-- name: ulimits (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- ulimits:
- - "nproc:3:6"
- - "nofile:1234:1234"
- register: ulimits_2
-
-- name: ulimits (less ulimits)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- ulimits:
- - "nofile:1234:1234"
- register: ulimits_3
-
-- name: ulimits (more ulimits)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- ulimits:
- - "nofile:1234:1234"
- - "sigpending:100:200"
- force_kill: yes
- register: ulimits_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - ulimits_1 is changed
- - ulimits_2 is not changed
- - ulimits_3 is not changed
- - ulimits_4 is changed
-
-####################################################################
-## user ############################################################
-####################################################################
-
-- name: user
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- user: nobody
- state: started
- register: user_1
-
-- name: user (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- user: nobody
- state: started
- register: user_2
-
-- name: user (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- user: root
- state: started
- force_kill: yes
- register: user_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - user_1 is changed
- - user_2 is not changed
- - user_3 is changed
-
-####################################################################
-## userns_mode #####################################################
-####################################################################
-
-- name: userns_mode
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- userns_mode: host
- state: started
- register: userns_mode_1
- ignore_errors: yes
-
-- name: userns_mode (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- userns_mode: host
- state: started
- register: userns_mode_2
- ignore_errors: yes
-
-- name: userns_mode (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- userns_mode: ""
- state: started
- force_kill: yes
- register: userns_mode_3
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - userns_mode_1 is changed
- - userns_mode_2 is not changed
- - userns_mode_3 is changed
- when: docker_py_version is version('1.10.0', '>=')
-- assert:
- that:
- - userns_mode_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in userns_mode_1.msg"
- - "'Minimum version required is 1.10.0 ' in userns_mode_1.msg"
- when: docker_py_version is version('1.10.0', '<')
-
-####################################################################
-## uts #############################################################
-####################################################################
-
-- name: uts
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- uts: host
- state: started
- register: uts_1
- ignore_errors: yes
-
-- name: uts (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- uts: host
- state: started
- register: uts_2
- ignore_errors: yes
-
-- name: uts (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- uts: ""
- state: started
- force_kill: yes
- register: uts_3
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - uts_1 is changed
- - uts_2 is not changed
- - uts_3 is changed
- when: docker_py_version is version('3.5.0', '>=')
-- assert:
- that:
- - uts_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in uts_1.msg"
- - "'Minimum version required is 3.5.0 ' in uts_1.msg"
- when: docker_py_version is version('3.5.0', '<')
-
-####################################################################
-## working_dir #####################################################
-####################################################################
-
-- name: working_dir
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- working_dir: /tmp
- state: started
- register: working_dir_1
-
-- name: working_dir (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- working_dir: /tmp
- state: started
- register: working_dir_2
-
-- name: working_dir (change)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- working_dir: /
- state: started
- force_kill: yes
- register: working_dir_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - working_dir_1 is changed
- - working_dir_2 is not changed
- - working_dir_3 is changed
-
-####################################################################
-####################################################################
-####################################################################
diff --git a/test/integration/targets/docker_container/tasks/tests/ports.yml b/test/integration/targets/docker_container/tasks/tests/ports.yml
deleted file mode 100644
index e60fb3245a..0000000000
--- a/test/integration/targets/docker_container/tasks/tests/ports.yml
+++ /dev/null
@@ -1,286 +0,0 @@
----
-- name: Registering container name
- set_fact:
- cname: "{{ cname_prefix ~ '-options' }}"
- cname2: "{{ cname_prefix ~ '-options-h1' }}"
-- name: Registering container name
- set_fact:
- cnames: "{{ cnames + [cname, cname2] }}"
-
-####################################################################
-## published_ports: all ############################################
-####################################################################
-
-- name: published_ports -- all
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9001"
- - "9002"
- published_ports:
- - all
- force_kill: yes
- register: published_ports_1
-
-- name: published_ports -- all (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9001"
- - "9002"
- published_ports:
- - all
- force_kill: yes
- register: published_ports_2
-
-- name: published_ports -- all (writing out 'all')
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9001"
- - "9002"
- published_ports:
- - "9001"
- - "9002"
- force_kill: yes
- register: published_ports_3
-
-- name: published_ports -- all (idempotency 2)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9001"
- - "9002"
- published_ports:
- - "9002"
- - "9001"
- force_kill: yes
- register: published_ports_4
-
-- name: published_ports -- all (switching back to 'all')
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9001"
- - "9002"
- published_ports:
- - all
- force_kill: yes
- register: published_ports_5
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - published_ports_1 is changed
- - published_ports_2 is not changed
- - published_ports_3 is changed
- - published_ports_4 is not changed
- - published_ports_5 is changed
-
-####################################################################
-## published_ports: port range #####################################
-####################################################################
-
-- name: published_ports -- port range
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9001"
- - "9010-9050"
- published_ports:
- - "9001:9001"
- - "9010-9050:9010-9050"
- force_kill: yes
- register: published_ports_1
-
-- name: published_ports -- port range (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9001"
- - "9010-9050"
- published_ports:
- - "9001:9001"
- - "9010-9050:9010-9050"
- force_kill: yes
- register: published_ports_2
-
-- name: published_ports -- port range (different range)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- exposed_ports:
- - "9001"
- - "9010-9050"
- published_ports:
- - "9001:9001"
- - "9020-9060:9020-9060"
- force_kill: yes
- register: published_ports_3
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - published_ports_1 is changed
- - published_ports_2 is not changed
- - published_ports_3 is changed
-
-####################################################################
-## published_ports: one-element container port range ###############
-####################################################################
-
-- name: published_ports -- one-element container port range
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ item }}"
- state: started
- published_ports:
- - "9010-9050:9010"
- force_kill: yes
- loop:
- - '{{ cname }}'
- - '{{ cname2 }}'
- register: published_ports_1
-
-- name: published_ports -- one-element container port range (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ item }}"
- state: started
- published_ports:
- - "9010-9050:9010"
- force_kill: yes
- loop:
- - '{{ cname }}'
- - '{{ cname2 }}'
- register: published_ports_2
-
-- name: published_ports -- one-element container port range (different range)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ item }}"
- state: started
- published_ports:
- - "9010-9051:9010"
- force_kill: yes
- loop:
- - '{{ cname }}'
- - '{{ cname2 }}'
- register: published_ports_3
-
-- name: cleanup
- docker_container:
- name: "{{ item }}"
- state: absent
- force_kill: yes
- loop:
- - '{{ cname }}'
- - '{{ cname2 }}'
- diff: no
-
-- assert:
- that:
- - published_ports_1 is changed
- - published_ports_2 is not changed
- - published_ports_3 is changed
-
-####################################################################
-## published_ports: IPv6 addresses #################################
-####################################################################
-
-- name: published_ports -- IPv6
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- published_ports:
- - "[::1]:9001:9001"
- force_kill: yes
- register: published_ports_1
-
-- name: published_ports -- IPv6 (idempotency)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- published_ports:
- - "[::1]:9001:9001"
- force_kill: yes
- register: published_ports_2
-
-- name: published_ports -- IPv6 (different IP)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- published_ports:
- - "127.0.0.1:9001:9001"
- force_kill: yes
- register: published_ports_3
-
-- name: published_ports -- IPv6 (hostname)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- published_ports:
- - "localhost:9001:9001"
- force_kill: yes
- register: published_ports_4
- ignore_errors: yes
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - published_ports_1 is changed
- - published_ports_2 is not changed
- - published_ports_3 is changed
- - published_ports_4 is failed
diff --git a/test/integration/targets/docker_container/tasks/tests/regression-45700-dont-parse-on-absent.yml b/test/integration/targets/docker_container/tasks/tests/regression-45700-dont-parse-on-absent.yml
deleted file mode 100644
index bb7b1f2b5c..0000000000
--- a/test/integration/targets/docker_container/tasks/tests/regression-45700-dont-parse-on-absent.yml
+++ /dev/null
@@ -1,34 +0,0 @@
----
-# Regression test for https://github.com/ansible/ansible/pull/45700
-- name: Registering container name
- set_fact:
- cname: "{{ cname_prefix ~ '-45700' }}"
-- name: Registering container name
- set_fact:
- cnames: "{{ cnames + [cname] }}"
-
-- name: Start container
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
-
-- name: Stop container with a lot of invalid options
- docker_container:
- name: "{{ cname }}"
- force_kill: yes
- # Some options with "invalid" values, which would
- # have to be parsed. The values are "invalid" because
- # the containers and networks listed here do not exist.
- # This can happen because the networks are removed
- # before the container is stopped (see
- # https://github.com/ansible/ansible/issues/45486).
- networks:
- - name: "nonexistant-network-{{ (2**32) | random }}"
- published_ports:
- - '1:2'
- - '3'
- links:
- - "nonexistant-container-{{ (2**32) | random }}:test"
- state: absent
diff --git a/test/integration/targets/docker_container/tasks/tests/start-stop.yml b/test/integration/targets/docker_container/tasks/tests/start-stop.yml
deleted file mode 100644
index c794d5f52a..0000000000
--- a/test/integration/targets/docker_container/tasks/tests/start-stop.yml
+++ /dev/null
@@ -1,455 +0,0 @@
----
-- name: Registering container name
- set_fact:
- cname: "{{ cname_prefix ~ '-hi' }}"
-- name: Registering container name
- set_fact:
- cnames: "{{ cnames + [cname] }}"
-
-####################################################################
-## Creation ########################################################
-####################################################################
-
-- name: Create container (check)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: present
- check_mode: yes
- register: create_1
-
-- name: Create container
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: present
- register: create_2
-
-- name: Create container (idempotent)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: present
- register: create_3
-
-- name: Create container (idempotent check)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: present
- check_mode: yes
- register: create_4
-
-- assert:
- that:
- - create_1 is changed
- - create_2 is changed
- - create_3 is not changed
- - create_4 is not changed
-
-####################################################################
-## Starting (after creation) #######################################
-####################################################################
-
-- name: Start container (check)
- docker_container:
- name: "{{ cname }}"
- state: started
- check_mode: yes
- register: start_1
-
-- name: Start container
- docker_container:
- name: "{{ cname }}"
- state: started
- register: start_2
-
-- name: Start container (idempotent)
- docker_container:
- name: "{{ cname }}"
- state: started
- register: start_3
-
-- name: Start container (idempotent check)
- docker_container:
- name: "{{ cname }}"
- state: started
- check_mode: yes
- register: start_4
-
-- assert:
- that:
- - start_1 is changed
- - start_2 is changed
- - start_3 is not changed
- - start_4 is not changed
-
-####################################################################
-## Present check for running container #############################
-####################################################################
-
-- name: Present check for running container (check)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: present
- check_mode: yes
- register: present_check_1
-
-- name: Present check for running container
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: present
- register: present_check_2
-
-- assert:
- that:
- - present_check_1 is not changed
- - present_check_2 is not changed
-
-####################################################################
-## Starting (from scratch) #########################################
-####################################################################
-
-- name: Remove container (setup for starting from scratch)
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
-
-- name: Start container from scratch (check)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- stop_timeout: 1
- name: "{{ cname }}"
- state: started
- check_mode: yes
- register: start_scratch_1
-
-- name: Start container from scratch
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- stop_timeout: 1
- name: "{{ cname }}"
- state: started
- register: start_scratch_2
-
-- name: Start container from scratch (idempotent)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- stop_timeout: 1
- name: "{{ cname }}"
- state: started
- register: start_scratch_3
-
-- name: Start container from scratch (idempotent check)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- stop_timeout: 1
- name: "{{ cname }}"
- state: started
- check_mode: yes
- register: start_scratch_4
-
-- assert:
- that:
- - start_scratch_1 is changed
- - start_scratch_2 is changed
- - start_scratch_3 is not changed
- - start_scratch_4 is not changed
-
-####################################################################
-## Recreating ######################################################
-####################################################################
-
-- name: Recreating container (created)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: present
- force_kill: yes
- register: recreate_1
-
-- name: Recreating container (created, recreate, check mode)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- recreate: yes
- state: present
- force_kill: yes
- register: recreate_2
- check_mode: yes
-
-- name: Recreating container (created, recreate)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- recreate: yes
- state: present
- force_kill: yes
- register: recreate_3
-
-- name: Recreating container (started)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- force_kill: yes
- register: recreate_4
-
-- name: Recreating container (started, recreate, check mode)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- recreate: yes
- removal_wait_timeout: 10
- state: started
- force_kill: yes
- register: recreate_5
- check_mode: yes
-
-- name: Recreating container (started, recreate)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- recreate: yes
- removal_wait_timeout: 10
- state: started
- force_kill: yes
- register: recreate_6
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- debug: var=recreate_1
-- debug: var=recreate_3
-- debug: var=recreate_4
-- debug: var=recreate_6
-
-- assert:
- that:
- - recreate_2 is changed
- - recreate_3 is changed
- - recreate_4 is changed
- - recreate_5 is changed
- - recreate_6 is changed
- - recreate_1.container.Id == recreate_2.container.Id
- - recreate_1.container.Id != recreate_3.container.Id
- - recreate_3.container.Id == recreate_4.container.Id
- - recreate_4.container.Id == recreate_5.container.Id
- - recreate_4.container.Id != recreate_6.container.Id
-
-####################################################################
-## Restarting ######################################################
-####################################################################
-
-- name: Restarting
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- stop_timeout: 1
- volumes:
- - /tmp/tmp
- register: restart_1
-
-- name: Restarting (restart, check mode)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- restart: yes
- state: started
- stop_timeout: 1
- force_kill: yes
- register: restart_2
- check_mode: yes
-
-- name: Restarting (restart)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- restart: yes
- state: started
- stop_timeout: 1
- force_kill: yes
- register: restart_3
-
-- name: Restarting (verify volumes)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- stop_timeout: 1
- volumes:
- - /tmp/tmp
- register: restart_4
-
-- name: cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- diff: no
-
-- assert:
- that:
- - restart_1 is changed
- - restart_2 is changed
- - restart_3 is changed
- - restart_1.container.Id == restart_3.container.Id
- - restart_4 is not changed
-
-####################################################################
-## Stopping ########################################################
-####################################################################
-
-- name: Stop container (check)
- docker_container:
- image: alpine:3.8
- name: "{{ cname }}"
- state: stopped
- stop_timeout: 1
- check_mode: yes
- register: stop_1
-
-- name: Stop container
- docker_container:
- image: alpine:3.8
- name: "{{ cname }}"
- state: stopped
- stop_timeout: 1
- register: stop_2
-
-- name: Stop container (idempotent)
- docker_container:
- image: alpine:3.8
- name: "{{ cname }}"
- state: stopped
- stop_timeout: 1
- register: stop_3
-
-- name: Stop container (idempotent check)
- docker_container:
- image: alpine:3.8
- name: "{{ cname }}"
- state: stopped
- stop_timeout: 1
- check_mode: yes
- register: stop_4
-
-- assert:
- that:
- - stop_1 is changed
- - stop_2 is changed
- - stop_3 is not changed
- - stop_4 is not changed
-
-####################################################################
-## Removing ########################################################
-####################################################################
-
-- name: Remove container (check)
- docker_container:
- name: "{{ cname }}"
- state: absent
- check_mode: yes
- register: remove_1
-
-- name: Remove container
- docker_container:
- name: "{{ cname }}"
- state: absent
- register: remove_2
-
-- name: Remove container (idempotent)
- docker_container:
- name: "{{ cname }}"
- state: absent
- register: remove_3
-
-- name: Remove container (idempotent check)
- docker_container:
- name: "{{ cname }}"
- state: absent
- check_mode: yes
- register: remove_4
-
-- assert:
- that:
- - remove_1 is changed
- - remove_2 is changed
- - remove_3 is not changed
- - remove_4 is not changed
-
-####################################################################
-## Removing (from running) #########################################
-####################################################################
-
-- name: Start container (setup for removing from running)
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
-
-- name: Remove container from running (check)
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- check_mode: yes
- register: remove_from_running_1
-
-- name: Remove container from running
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- register: remove_from_running_2
-
-- name: Remove container from running (idempotent)
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- register: remove_from_running_3
-
-- name: Remove container from running (idempotent check)
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
- check_mode: yes
- register: remove_from_running_4
-
-- assert:
- that:
- - remove_from_running_1 is changed
- - remove_from_running_2 is changed
- - remove_from_running_3 is not changed
- - remove_from_running_4 is not changed
diff --git a/test/integration/targets/docker_container_info/aliases b/test/integration/targets/docker_container_info/aliases
deleted file mode 100644
index dfa15ee8a8..0000000000
--- a/test/integration/targets/docker_container_info/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group2
-skip/osx
-skip/freebsd
-skip/aix
-destructive
diff --git a/test/integration/targets/docker_container_info/meta/main.yml b/test/integration/targets/docker_container_info/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_container_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_container_info/tasks/main.yml b/test/integration/targets/docker_container_info/tasks/main.yml
deleted file mode 100644
index 71d07fe0df..0000000000
--- a/test/integration/targets/docker_container_info/tasks/main.yml
+++ /dev/null
@@ -1,64 +0,0 @@
----
-- block:
- - name: Create random container name
- set_fact:
- cname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
-
- - name: Make sure container is not there
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
-
- - name: Inspect a non-present container
- docker_container_info:
- name: "{{ cname }}"
- register: result
-
- - assert:
- that:
- - "not result.exists"
- - "'container' in result"
- - "result.container is none"
-
- - name: Make sure container exists
- docker_container:
- name: "{{ cname }}"
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- state: started
- force_kill: yes
-
- - name: Inspect a present container
- docker_container_info:
- name: "{{ cname }}"
- register: result
- - name: Dump docker_container_info result
- debug: var=result
-
- - name: "Comparison: use 'docker inspect'"
- command: docker inspect "{{ cname }}"
- register: docker_inspect
- - set_fact:
- docker_inspect_result: "{{ docker_inspect.stdout | from_json }}"
- - name: Dump docker inspect result
- debug: var=docker_inspect_result
-
- - assert:
- that:
- - result.exists
- - "'container' in result"
- - "result.container"
- - "result.container == docker_inspect_result[0]"
-
- always:
- - name: Cleanup
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
-
- when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_container_info tests!"
- when: not(docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_host_info/aliases b/test/integration/targets/docker_host_info/aliases
deleted file mode 100644
index 7a020910ed..0000000000
--- a/test/integration/targets/docker_host_info/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
diff --git a/test/integration/targets/docker_host_info/meta/main.yml b/test/integration/targets/docker_host_info/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_host_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_host_info/tasks/main.yml b/test/integration/targets/docker_host_info/tasks/main.yml
deleted file mode 100644
index 6779b5fc42..0000000000
--- a/test/integration/targets/docker_host_info/tasks/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-- include_tasks: test_host_info.yml
- when: docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.21', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_host_info tests!"
- when: not(docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.21', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_host_info/tasks/test_host_info.yml b/test/integration/targets/docker_host_info/tasks/test_host_info.yml
deleted file mode 100644
index 8e2b1e0dcd..0000000000
--- a/test/integration/targets/docker_host_info/tasks/test_host_info.yml
+++ /dev/null
@@ -1,296 +0,0 @@
----
-- name: Create random container/volume name
- set_fact:
- cname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
- vname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
-
-- debug:
- msg: "Using container name '{{ cname }}' and volume name '{{ vname }}'"
-
-- block:
- - name: Get info on Docker host
- docker_host_info:
- register: output
-
- - name: assert reading docker host facts when docker is running
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers is not defined'
- - 'output.networks is not defined'
- - 'output.volumes is not defined'
- - 'output.images is not defined'
- - 'output.disk_usage is not defined'
-
-# Container and volume are created so that all lists are non-empty:
-# * container and volume lists are non-emtpy because of the created objects;
-# * image list is non-empty because the image of the container is there;
-# * network list is always non-empty (default networks).
- - name: Create container
- docker_container:
- image: alpine:3.8
- command: '/bin/sh -c "sleep 10m"'
- name: "{{ cname }}"
- state: started
- register: container_output
-
- - assert:
- that:
- - container_output is changed
-
- - name: Create a volume
- docker_volume:
- name: "{{ vname }}"
- register: volume_output
-
- - assert:
- that:
- - volume_output is changed
-
- - name: Get info on Docker host and list containers
- docker_host_info:
- containers: yes
- register: output
-
- - name: assert reading docker host facts when docker is running and list containers
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.networks is not defined'
- - 'output.volumes is not defined'
- - 'output.images is not defined'
- - 'output.disk_usage is not defined'
- - 'output.containers[0].Image is string'
- - 'output.containers[0].ImageID is not defined'
-
- - name: Get info on Docker host and list containers with verbose output
- docker_host_info:
- containers: yes
- verbose_output: yes
- register: output
-
- - name: assert reading docker host facts when docker is running and list containers with verbose output
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.networks is not defined'
- - 'output.volumes is not defined'
- - 'output.images is not defined'
- - 'output.disk_usage is not defined'
- - 'output.containers[0].Image is string'
- - 'output.containers[0].ImageID is string'
-
- - name: Get info on Docker host and list images
- docker_host_info:
- images: yes
- register: output
-
- - name: assert reading docker host facts when docker is running and list images
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers is not defined'
- - 'output.networks is not defined'
- - 'output.volumes is not defined'
- - 'output.images[0].Id is string'
- - 'output.images[0].ParentId is not defined'
- - 'output.disk_usage is not defined'
-
- - name: Get info on Docker host and list images with verbose output
- docker_host_info:
- images: yes
- verbose_output: yes
- register: output
-
- - name: assert reading docker host facts when docker is running and list images with verbose output
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers is not defined'
- - 'output.networks is not defined'
- - 'output.volumes is not defined'
- - 'output.images[0].Id is string'
- - 'output.images[0].ParentId is string'
- - 'output.disk_usage is not defined'
-
- - name: Get info on Docker host and list networks
- docker_host_info:
- networks: yes
- register: output
-
- - name: assert reading docker host facts when docker is running and list networks
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers is not defined'
- - 'output.networks[0].Id is string'
- - 'output.networks[0].Created is not defined'
- - 'output.volumes is not defined'
- - 'output.images is not defined'
- - 'output.disk_usage is not defined'
-
- - name: Get info on Docker host and list networks with verbose output
- docker_host_info:
- networks: yes
- verbose_output: yes
- register: output
-
- - name: assert reading docker host facts when docker is running and list networks with verbose output
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers is not defined'
- - 'output.networks[0].Id is string'
- - 'output.networks[0].Created is string'
- - 'output.volumes is not defined'
- - 'output.images is not defined'
- - 'output.disk_usage is not defined'
-
- - name: Get info on Docker host and list volumes
- docker_host_info:
- volumes: yes
- register: output
-
- - name: assert reading docker host facts when docker is running and list volumes
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers is not defined'
- - 'output.networks is not defined'
- - 'output.volumes[0].Name is string'
- - 'output.volumes[0].Mountpoint is not defined'
- - 'output.images is not defined'
- - 'output.disk_usage is not defined'
-
- - name: Get info on Docker host and list volumes with verbose output
- docker_host_info:
- volumes: yes
- verbose_output: yes
- register: output
-
- - name: assert reading docker host facts when docker is running and list volumes with verbose output
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers is not defined'
- - 'output.networks is not defined'
- - 'output.volumes[0].Name is string'
- - 'output.volumes[0].Mountpoint is string'
- - 'output.images is not defined'
- - 'output.disk_usage is not defined'
-
- - name: Get info on Docker host and get disk usage
- docker_host_info:
- disk_usage: yes
- register: output
- ignore_errors: yes
-
- - name: assert reading docker host facts when docker is running and get disk usage
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers is not defined'
- - 'output.networks is not defined'
- - 'output.volumes is not defined'
- - 'output.images is not defined'
- - 'output.disk_usage.LayersSize is number'
- - 'output.disk_usage.BuilderSize is not defined'
- when: docker_py_version is version('2.2.0', '>=')
- - assert:
- that:
- - output is failed
- - "('version is ' ~ docker_py_version ~ ' ') in output.msg"
- - "'Minimum version required is 2.2.0 ' in output.msg"
- when: docker_py_version is version('2.2.0', '<')
-
- - name: Get info on Docker host and get disk usage with verbose output
- docker_host_info:
- disk_usage: yes
- verbose_output: yes
- register: output
- ignore_errors: yes
-
- - name: assert reading docker host facts when docker is running and get disk usage with verbose output
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers is not defined'
- - 'output.networks is not defined'
- - 'output.volumes is not defined'
- - 'output.images is not defined'
- - 'output.disk_usage.LayersSize is number'
- - 'output.disk_usage.BuilderSize is number'
- when: docker_py_version is version('2.2.0', '>=')
- - assert:
- that:
- - output is failed
- - "('version is ' ~ docker_py_version ~ ' ') in output.msg"
- - "'Minimum version required is 2.2.0 ' in output.msg"
- when: docker_py_version is version('2.2.0', '<')
-
- - name: Get info on Docker host, disk usage and get all lists together
- docker_host_info:
- volumes: yes
- containers: yes
- networks: yes
- images: yes
- disk_usage: "{{ docker_py_version is version('2.2.0', '>=') }}"
- register: output
-
- - name: assert reading docker host facts when docker is running, disk usage and get lists together
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers[0].Image is string'
- - 'output.containers[0].ImageID is not defined'
- - 'output.networks[0].Id is string'
- - 'output.networks[0].Created is not defined'
- - 'output.volumes[0].Name is string'
- - 'output.volumes[0].Mountpoint is not defined'
- - 'output.images[0].Id is string'
- - 'output.images[0].ParentId is not defined'
- - assert:
- that:
- - 'output.disk_usage.LayersSize is number'
- - 'output.disk_usage.BuilderSize is not defined'
- when: docker_py_version is version('2.2.0', '>=')
-
- - name: Get info on Docker host, disk usage and get all lists together with verbose output
- docker_host_info:
- volumes: yes
- containers: yes
- networks: yes
- images: yes
- disk_usage: "{{ docker_py_version is version('2.2.0', '>=') }}"
- verbose_output: yes
- register: output
-
- - name: assert reading docker host facts when docker is running and get disk usage with verbose output
- assert:
- that:
- - 'output.host_info.Name is string'
- - 'output.containers[0].Image is string'
- - 'output.containers[0].ImageID is string'
- - 'output.networks[0].Id is string'
- - 'output.networks[0].Created is string'
- - 'output.volumes[0].Name is string'
- - 'output.volumes[0].Mountpoint is string'
- - 'output.images[0].Id is string'
- - 'output.images[0].ParentId is string'
- - assert:
- that:
- - 'output.disk_usage.LayersSize is number'
- - 'output.disk_usage.BuilderSize is number'
- when: docker_py_version is version('2.2.0', '>=')
-
- always:
- - name: Delete container
- docker_container:
- name: "{{ cname }}"
- state: absent
- force_kill: yes
-
- - name: Delete volume
- docker_volume:
- name: "{{ vname }}"
- state: absent
diff --git a/test/integration/targets/docker_image/aliases b/test/integration/targets/docker_image/aliases
deleted file mode 100644
index 1187e123f1..0000000000
--- a/test/integration/targets/docker_image/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group5
-skip/aix
-skip/osx
-skip/freebsd
-destructive
diff --git a/test/integration/targets/docker_image/files/Dockerfile b/test/integration/targets/docker_image/files/Dockerfile
deleted file mode 100644
index c2951375fa..0000000000
--- a/test/integration/targets/docker_image/files/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM busybox
-ENV foo /bar
-WORKDIR ${foo}
diff --git a/test/integration/targets/docker_image/files/EtcHostsDockerfile b/test/integration/targets/docker_image/files/EtcHostsDockerfile
deleted file mode 100644
index 2dc01fadaa..0000000000
--- a/test/integration/targets/docker_image/files/EtcHostsDockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM busybox
-# This should fail building if docker cannot resolve some-custom-host
-RUN ping -c1 some-custom-host
diff --git a/test/integration/targets/docker_image/files/MyDockerfile b/test/integration/targets/docker_image/files/MyDockerfile
deleted file mode 100644
index 605e8e0f8a..0000000000
--- a/test/integration/targets/docker_image/files/MyDockerfile
+++ /dev/null
@@ -1,5 +0,0 @@
-FROM alpine:3.7
-ENV INSTALL_PATH /newdata
-RUN mkdir -p $INSTALL_PATH
-
-WORKDIR $INSTALL_PATH
diff --git a/test/integration/targets/docker_image/files/StagedDockerfile b/test/integration/targets/docker_image/files/StagedDockerfile
deleted file mode 100644
index ebc4df42f0..0000000000
--- a/test/integration/targets/docker_image/files/StagedDockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM busybox AS first
-ENV dir /first
-WORKDIR ${dir}
-
-FROM busybox AS second
-ENV dir /second
-WORKDIR ${dir}
diff --git a/test/integration/targets/docker_image/meta/main.yml b/test/integration/targets/docker_image/meta/main.yml
deleted file mode 100644
index 21d7a58f93..0000000000
--- a/test/integration/targets/docker_image/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker_registry
diff --git a/test/integration/targets/docker_image/tasks/main.yml b/test/integration/targets/docker_image/tasks/main.yml
deleted file mode 100644
index 3b4f9357a6..0000000000
--- a/test/integration/targets/docker_image/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-- when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6']
- include_tasks:
- file: test.yml
diff --git a/test/integration/targets/docker_image/tasks/run-test.yml b/test/integration/targets/docker_image/tasks/run-test.yml
deleted file mode 100644
index a299937014..0000000000
--- a/test/integration/targets/docker_image/tasks/run-test.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- name: "Loading tasks from {{ item }}"
- include_tasks: "{{ item }}"
diff --git a/test/integration/targets/docker_image/tasks/test.yml b/test/integration/targets/docker_image/tasks/test.yml
deleted file mode 100644
index 47c629860b..0000000000
--- a/test/integration/targets/docker_image/tasks/test.yml
+++ /dev/null
@@ -1,34 +0,0 @@
----
-- name: Create random name prefix
- set_fact:
- name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
-- name: Create image and container list
- set_fact:
- inames: []
- cnames: []
-
-- debug:
- msg: "Using name prefix {{ name_prefix }}"
-
-- block:
- - include_tasks: run-test.yml
- with_fileglob:
- - "tests/*.yml"
-
- always:
- - name: "Make sure all images are removed"
- docker_image:
- name: "{{ item }}"
- state: absent
- with_items: "{{ inames }}"
- - name: "Make sure all containers are removed"
- docker_container:
- name: "{{ item }}"
- state: absent
- force_kill: yes
- with_items: "{{ cnames }}"
-
- when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_image tests!"
- when: not(docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_image/tasks/tests/basic.yml b/test/integration/targets/docker_image/tasks/tests/basic.yml
deleted file mode 100644
index 6f0bdd6935..0000000000
--- a/test/integration/targets/docker_image/tasks/tests/basic.yml
+++ /dev/null
@@ -1,78 +0,0 @@
----
-####################################################################
-## basic ###########################################################
-####################################################################
-
-- name: Make sure image is not there
- docker_image:
- name: "hello-world:latest"
- state: absent
- force_absent: yes
- register: absent_1
-
-- name: Make sure image is not there (idempotency)
- docker_image:
- name: "hello-world:latest"
- state: absent
- register: absent_2
-
-- assert:
- that:
- - absent_2 is not changed
-
-- name: Make sure image is there
- docker_image:
- name: "hello-world:latest"
- state: present
- source: pull
- register: present_1
-
-- name: Make sure image is there (idempotent)
- docker_image:
- name: "hello-world:latest"
- state: present
- source: pull
- register: present_2
-
-- assert:
- that:
- - present_1 is changed
- - present_2 is not changed
-
-- name: Make sure tag is not there
- docker_image:
- name: "hello-world:alias"
- state: absent
-
-- name: Tag image with alias
- docker_image:
- source: local
- name: "hello-world:latest"
- repository: "hello-world:alias"
- register: tag_1
-
-- name: Tag image with alias (idempotent)
- docker_image:
- source: local
- name: "hello-world:latest"
- repository: "hello-world:alias"
- register: tag_2
-
-- name: Tag image with alias (force, still idempotent)
- docker_image:
- source: local
- name: "hello-world:latest"
- repository: "hello-world:alias"
- force_tag: yes
- register: tag_3
-
-- assert:
- that:
- - tag_1 is changed
- - tag_2 is not changed
- - tag_3 is not changed
-
-- name: Cleanup alias tag
- docker_image:
- name: "hello-world:alias"
- state: absent
diff --git a/test/integration/targets/docker_image/tasks/tests/docker_image.yml b/test/integration/targets/docker_image/tasks/tests/docker_image.yml
deleted file mode 100644
index 1959446aa5..0000000000
--- a/test/integration/targets/docker_image/tasks/tests/docker_image.yml
+++ /dev/null
@@ -1,152 +0,0 @@
----
-- name: Registering image name
- set_fact:
- iname: "{{ name_prefix ~ '-options' }}"
-
-- name: Determining pushed image names
- set_fact:
- hello_world_image_base: "{{ registry_address }}/test/hello-world"
- test_image_base: "{{ registry_address }}/test/{{ iname }}"
-
-- name: Registering image name
- set_fact:
- inames: "{{ inames + [iname, test_image_base ~ ':latest', hello_world_image_base ~ ':latest'] }}"
-
-####################################################################
-## interact with test registry #####################################
-####################################################################
-
-- name: Make sure image is not there
- docker_image:
- name: "{{ hello_world_image_base }}:latest"
- state: absent
- force_absent: yes
-
-- name: Make sure we have hello-world:latest
- docker_image:
- name: hello-world:latest
- source: pull
-
-- name: Push image to test registry
- docker_image:
- name: "hello-world:latest"
- repository: "{{ hello_world_image_base }}"
- push: yes
- source: local
- register: push_1
-
-- name: Push image to test registry (idempotent)
- docker_image:
- name: "hello-world:latest"
- repository: "{{ hello_world_image_base }}"
- push: yes
- source: local
- register: push_2
-
-- name: Push image to test registry (force, still idempotent)
- docker_image:
- name: "hello-world:latest"
- repository: "{{ hello_world_image_base }}"
- push: yes
- source: local
- force_tag: yes
- register: push_3
-
-- assert:
- that:
- - push_1 is changed
- - push_2 is not changed
- - push_3 is not changed
-
-- name: Get facts of local image
- docker_image_info:
- name: "{{ hello_world_image_base }}:latest"
- register: facts_1
-
-- name: Make sure image is not there
- docker_image:
- name: "{{ hello_world_image_base }}:latest"
- state: absent
- force_absent: yes
-
-- name: Get facts of local image (absent)
- docker_image_info:
- name: "{{ hello_world_image_base }}:latest"
- register: facts_2
-
-- name: Pull image from test registry
- docker_image:
- name: "{{ hello_world_image_base }}:latest"
- state: present
- source: pull
- register: pull_1
-
-- name: Pull image from test registry (idempotency)
- docker_image:
- name: "{{ hello_world_image_base }}:latest"
- state: present
- source: pull
- register: pull_2
-
-- name: Get facts of local image (present)
- docker_image_info:
- name: "{{ hello_world_image_base }}:latest"
- register: facts_3
-
-- assert:
- that:
- - pull_1 is changed
- - pull_2 is not changed
- - facts_1.images | length == 1
- - facts_2.images | length == 0
- - facts_3.images | length == 1
-
-####################################################################
-## repository ######################################################
-####################################################################
-
-- name: Make sure image is not there
- docker_image:
- name: "{{ test_image_base }}:latest"
- state: absent
- force_absent: yes
-
-- name: repository
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- pull: no
- repository: "{{ test_image_base }}"
- source: build
- register: repository_1
-
-- name: repository (idempotent)
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- pull: no
- repository: "{{ test_image_base }}"
- source: build
- register: repository_2
-
-- assert:
- that:
- - repository_1 is changed
- - repository_2 is not changed
-
-- name: Get facts of image
- docker_image_info:
- name: "{{ test_image_base }}:latest"
- register: facts_1
-
-- name: cleanup
- docker_image:
- name: "{{ test_image_base }}:latest"
- state: absent
- force_absent: yes
-
-- assert:
- that:
- - facts_1.images | length == 1
diff --git a/test/integration/targets/docker_image/tasks/tests/old-options.yml b/test/integration/targets/docker_image/tasks/tests/old-options.yml
deleted file mode 100644
index 5824a56d1f..0000000000
--- a/test/integration/targets/docker_image/tasks/tests/old-options.yml
+++ /dev/null
@@ -1,48 +0,0 @@
----
-- name: Registering image name
- set_fact:
- iname: "{{ name_prefix ~ '-old-options' }}"
-
-- name: Registering image name
- set_fact:
- inames: "{{ inames + [iname]}}"
-
-####################################################################
-## build ###########################################################
-####################################################################
-
-- name: build with old-style options
- docker_image:
- name: "{{ iname }}"
- path: "{{ role_path }}/files"
- dockerfile: Dockerfile
- http_timeout: 60
- nocache: yes
- pull: no
- rm: no
- buildargs:
- TEST1: val1
- TEST2: val2
- TEST3: "True"
- container_limits:
- memory: 5000000
- memswap: 7000000
- source: build
- register: build
-
-- name: cleanup
- docker_image:
- name: "{{ iname }}"
- state: absent
- force_absent: yes
-
-- assert:
- that:
- - '"Please specify build.container_limits instead of container_limits. The container_limits option has been renamed and will be removed in Ansible 2.12." in build.warnings'
- - '"Please specify build.dockerfile instead of dockerfile. The dockerfile option has been renamed and will be removed in Ansible 2.12." in build.warnings'
- - '"Please specify build.http_timeout instead of http_timeout. The http_timeout option has been renamed and will be removed in Ansible 2.12." in build.warnings'
- - '"Please specify build.nocache instead of nocache. The nocache option has been renamed and will be removed in Ansible 2.12." in build.warnings'
- - '"Please specify build.path instead of path. The path option has been renamed and will be removed in Ansible 2.12." in build.warnings'
- - '"Please specify build.pull instead of pull. The pull option has been renamed and will be removed in Ansible 2.12." in build.warnings'
- - '"Please specify build.rm instead of rm. The rm option has been renamed and will be removed in Ansible 2.12." in build.warnings'
- - '"Please specify build.args instead of buildargs. The buildargs option has been renamed and will be removed in Ansible 2.12." in build.warnings'
diff --git a/test/integration/targets/docker_image/tasks/tests/options.yml b/test/integration/targets/docker_image/tasks/tests/options.yml
deleted file mode 100644
index f21bbda910..0000000000
--- a/test/integration/targets/docker_image/tasks/tests/options.yml
+++ /dev/null
@@ -1,300 +0,0 @@
----
-- name: Registering image name
- set_fact:
- iname: "{{ name_prefix ~ '-options' }}"
- iname_1: "{{ name_prefix ~ '-options-1' }}"
-
-- name: Registering image name
- set_fact:
- inames: "{{ inames + [iname, iname_1] }}"
-
-####################################################################
-## build.args ######################################################
-####################################################################
-
-- name: cleanup
- docker_image:
- name: "{{ iname }}"
- state: absent
- force_absent: yes
-
-- name: buildargs
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- args:
- TEST1: val1
- TEST2: val2
- TEST3: "True"
- pull: no
- source: build
- register: buildargs_1
-
-- name: buildargs (idempotency)
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- args:
- TEST1: val1
- TEST2: val2
- TEST3: "True"
- pull: no
- source: build
- register: buildargs_2
-
-- name: cleanup
- docker_image:
- name: "{{ iname }}"
- state: absent
- force_absent: yes
-
-- assert:
- that:
- - buildargs_1 is changed
- - buildargs_2 is not changed
- when: docker_py_version is version('1.6.0', '>=')
-
-- assert:
- that:
- - buildargs_1 is failed
- - buildargs_2 is failed
- when: docker_py_version is version('1.6.0', '<')
-
-####################################################################
-## container_limits ################################################
-####################################################################
-
-- name: container_limits (Failed due to min memory limit)
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- container_limits:
- memory: 4000
- pull: no
- source: build
- ignore_errors: yes
- register: container_limits_1
-
-- name: container_limits
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- container_limits:
- memory: 5000000
- memswap: 7000000
- pull: no
- source: build
- register: container_limits_2
-
-- name: cleanup
- docker_image:
- name: "{{ iname }}"
- state: absent
- force_absent: yes
-
-- assert:
- that:
- # It *sometimes* happens that the first task does not fail.
- # For now, we work around this by
- # a) requiring that if it fails, the message must
- # contain 'Minimum memory limit allowed is 4MB', and
- # b) requiring that either the first task, or the second
- # task is changed, but not both.
- - "not container_limits_1 is failed or ('Minimum memory limit allowed is 4MB') in container_limits_1.msg"
- - "container_limits_1 is changed or container_limits_2 is changed and not (container_limits_1 is changed and container_limits_2 is changed)"
-
-####################################################################
-## dockerfile ######################################################
-####################################################################
-
-- name: dockerfile
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- dockerfile: "MyDockerfile"
- pull: no
- source: build
- register: dockerfile_1
-
-- name: cleanup
- docker_image:
- name: "{{ iname }}"
- state: absent
- force_absent: yes
-
-- assert:
- that:
- - dockerfile_1 is changed
- - dockerfile_1['image']['Config']['WorkingDir'] == '/newdata'
-
-####################################################################
-## force ###########################################################
-####################################################################
-
-- name: Build an image
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- pull: no
- source: build
-
-- name: force (changed)
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- dockerfile: "MyDockerfile"
- pull: no
- source: build
- force_source: yes
- register: force_1
-
-- name: force (unchanged)
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- dockerfile: "MyDockerfile"
- pull: no
- source: build
- force_source: yes
- register: force_2
-
-- name: cleanup
- docker_image:
- name: "{{ iname }}"
- state: absent
- force_absent: yes
-
-- assert:
- that:
- - force_1 is changed
- - force_2 is not changed
-
-####################################################################
-## load path #######################################################
-####################################################################
-
-- name: Archive image
- docker_image:
- name: "hello-world:latest"
- archive_path: "{{ output_dir }}/image.tar"
- source: pull
- register: archive_image
-
-- name: remove image
- docker_image:
- name: "hello-world:latest"
- state: absent
- force_absent: yes
-
-- name: load image (changed)
- docker_image:
- name: "hello-world:latest"
- load_path: "{{ output_dir }}/image.tar"
- source: load
- register: load_image
-
-- name: load image (idempotency)
- docker_image:
- name: "hello-world:latest"
- load_path: "{{ output_dir }}/image.tar"
- source: load
- register: load_image_1
-
-- assert:
- that:
- - load_image is changed
- - load_image_1 is not changed
- - archive_image['image']['Id'] == load_image['image']['Id']
-
-####################################################################
-## path ############################################################
-####################################################################
-
-- name: Build image
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- pull: no
- source: build
- register: path_1
-
-- name: Build image (idempotency)
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- pull: no
- source: build
- register: path_2
-
-- name: cleanup
- docker_image:
- name: "{{ iname }}"
- state: absent
- force_absent: yes
-
-- assert:
- that:
- - path_1 is changed
- - path_2 is not changed
-
-####################################################################
-## target ##########################################################
-####################################################################
-
-- name: Build multi-stage image
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- dockerfile: "StagedDockerfile"
- target: first
- pull: no
- source: build
- register: dockerfile_2
-
-- name: cleanup
- docker_image:
- name: "{{ iname }}"
- state: absent
- force_absent: yes
-
-- assert:
- that:
- - dockerfile_2 is changed
- - dockerfile_2.image.Config.WorkingDir == '/first'
-
-####################################################################
-## build.etc_hosts #################################################
-####################################################################
-
-- name: Build image with custom etc_hosts
- docker_image:
- name: "{{ iname }}"
- build:
- path: "{{ role_path }}/files"
- dockerfile: "EtcHostsDockerfile"
- pull: no
- etc_hosts:
- some-custom-host: "127.0.0.1"
- source: build
- register: path_1
-
-- name: cleanup
- docker_image:
- name: "{{ iname }}"
- state: absent
- force_absent: yes
-
-- assert:
- that:
- - path_1 is changed
diff --git a/test/integration/targets/docker_image_info/aliases b/test/integration/targets/docker_image_info/aliases
deleted file mode 100644
index 7a020910ed..0000000000
--- a/test/integration/targets/docker_image_info/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
diff --git a/test/integration/targets/docker_image_info/meta/main.yml b/test/integration/targets/docker_image_info/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_image_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_image_info/tasks/main.yml b/test/integration/targets/docker_image_info/tasks/main.yml
deleted file mode 100644
index 1063473693..0000000000
--- a/test/integration/targets/docker_image_info/tasks/main.yml
+++ /dev/null
@@ -1,54 +0,0 @@
----
-- block:
- - name: Make sure image is not there
- docker_image:
- name: alpine:3.7
- state: absent
-
- - name: Inspect a non-available image
- docker_image_info:
- name: alpine:3.7
- register: result
-
- - assert:
- that:
- - "result.images|length == 0"
-
- - name: Make sure images are there
- docker_image:
- name: "{{ item }}"
- source: pull
- state: present
- loop:
- - "hello-world:latest"
- - "alpine:3.8"
-
- - name: Inspect an available image
- docker_image_info:
- name: hello-world:latest
- register: result
-
- - assert:
- that:
- - "result.images|length == 1"
- - "'hello-world:latest' in result.images[0].RepoTags"
-
- - name: Inspect multiple images
- docker_image_info:
- name:
- - "hello-world:latest"
- - "alpine:3.8"
- register: result
-
- - debug: var=result
-
- - assert:
- that:
- - "result.images|length == 2"
- - "'hello-world:latest' in result.images[0].RepoTags"
- - "'alpine:3.8' in result.images[1].RepoTags"
-
- when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_image_info tests!"
- when: not(docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_login/aliases b/test/integration/targets/docker_login/aliases
deleted file mode 100644
index 137b82807b..0000000000
--- a/test/integration/targets/docker_login/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group3
-skip/aix
-skip/osx
-skip/freebsd
-destructive
diff --git a/test/integration/targets/docker_login/meta/main.yml b/test/integration/targets/docker_login/meta/main.yml
deleted file mode 100644
index 21d7a58f93..0000000000
--- a/test/integration/targets/docker_login/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker_registry
diff --git a/test/integration/targets/docker_login/tasks/main.yml b/test/integration/targets/docker_login/tasks/main.yml
deleted file mode 100644
index 3b4f9357a6..0000000000
--- a/test/integration/targets/docker_login/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-- when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6']
- include_tasks:
- file: test.yml
diff --git a/test/integration/targets/docker_login/tasks/run-test.yml b/test/integration/targets/docker_login/tasks/run-test.yml
deleted file mode 100644
index a299937014..0000000000
--- a/test/integration/targets/docker_login/tasks/run-test.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- name: "Loading tasks from {{ item }}"
- include_tasks: "{{ item }}"
diff --git a/test/integration/targets/docker_login/tasks/test.yml b/test/integration/targets/docker_login/tasks/test.yml
deleted file mode 100644
index e1b584a392..0000000000
--- a/test/integration/targets/docker_login/tasks/test.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-- block:
- - include_tasks: run-test.yml
- with_fileglob:
- - "tests/*.yml"
- when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_image tests!"
- when: not(docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_login/tasks/tests/docker_login.yml b/test/integration/targets/docker_login/tasks/tests/docker_login.yml
deleted file mode 100644
index 33aaf08fea..0000000000
--- a/test/integration/targets/docker_login/tasks/tests/docker_login.yml
+++ /dev/null
@@ -1,136 +0,0 @@
----
-- name: Log in with wrong password (check mode)
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- username: testuser
- password: "1234"
- state: present
- register: login_failed_check
- ignore_errors: yes
- check_mode: yes
-
-- name: Log in with wrong password
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- username: testuser
- password: "1234"
- state: present
- register: login_failed
- ignore_errors: yes
-
-- name: Make sure that login failed
- assert:
- that:
- - login_failed_check is failed
- - "('login attempt to http://' ~ registry_frontend_address ~ '/v2/ failed') in login_failed_check.msg"
- - login_failed is failed
- - "('login attempt to http://' ~ registry_frontend_address ~ '/v2/ failed') in login_failed.msg"
-
-- name: Log in (check mode)
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- username: testuser
- password: hunter2
- state: present
- register: login_1
- check_mode: yes
-
-- name: Log in
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- username: testuser
- password: hunter2
- state: present
- register: login_2
-
-- name: Get permissions of ~/.docker/config.json
- stat:
- path: ~/.docker/config.json
- register: login_2_stat
-
-- name: Log in (idempotent)
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- username: testuser
- password: hunter2
- state: present
- register: login_3
-
-- name: Log in (idempotent, check mode)
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- username: testuser
- password: hunter2
- state: present
- register: login_4
- check_mode: yes
-
-- name: Make sure that login worked
- assert:
- that:
- - login_1 is changed
- - login_2 is changed
- - login_3 is not changed
- - login_4 is not changed
- - login_2_stat.stat.mode == '0600'
-
-- name: Log in again with wrong password (check mode)
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- username: testuser
- password: "1234"
- state: present
- register: login_failed_check
- ignore_errors: yes
- check_mode: yes
-
-- name: Log in again with wrong password
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- username: testuser
- password: "1234"
- state: present
- register: login_failed
- ignore_errors: yes
-
-- name: Make sure that login failed again
- assert:
- that:
- - login_failed_check is failed
- - "('login attempt to http://' ~ registry_frontend_address ~ '/v2/ failed') in login_failed_check.msg"
- - login_failed is failed
- - "('login attempt to http://' ~ registry_frontend_address ~ '/v2/ failed') in login_failed.msg"
-
-- name: Log out (check mode)
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- state: absent
- register: logout_1
- check_mode: yes
-
-- name: Log out
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- state: absent
- register: logout_2
-
-- name: Log out (idempotent)
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- state: absent
- register: logout_3
-
-- name: Log out (idempotent, check mode)
- docker_login:
- registry_url: "{{ registry_frontend_address }}"
- state: absent
- register: logout_4
- check_mode: yes
-
-- name: Make sure that login worked
- assert:
- that:
- - logout_1 is changed
- - logout_2 is changed
- - logout_3 is not changed
- - logout_4 is not changed
diff --git a/test/integration/targets/docker_network/aliases b/test/integration/targets/docker_network/aliases
deleted file mode 100644
index 1187e123f1..0000000000
--- a/test/integration/targets/docker_network/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group5
-skip/aix
-skip/osx
-skip/freebsd
-destructive
diff --git a/test/integration/targets/docker_network/meta/main.yml b/test/integration/targets/docker_network/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_network/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_network/tasks/main.yml b/test/integration/targets/docker_network/tasks/main.yml
deleted file mode 100644
index b2726a8a5d..0000000000
--- a/test/integration/targets/docker_network/tasks/main.yml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-- name: Create random name prefix
- set_fact:
- name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
- cnames: []
- dnetworks: []
-
-- debug:
- msg: "Using name prefix {{ name_prefix }}"
-
-- block:
- - include_tasks: run-test.yml
- with_fileglob:
- - "tests/*.yml"
-
- always:
- - name: "Make sure all containers are removed"
- docker_container:
- name: "{{ item }}"
- state: absent
- force_kill: yes
- loop: "{{ cnames }}"
- - name: "Make sure all networks are removed"
- docker_network:
- name: "{{ item }}"
- state: absent
- force: yes
- loop: "{{ dnetworks }}"
-
- when: docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.20', '>=') # FIXME: find out API version!
-
-- fail: msg="Too old docker / docker-py version to run docker_network tests!"
- when: not(docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.20', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_network/tasks/run-test.yml b/test/integration/targets/docker_network/tasks/run-test.yml
deleted file mode 100644
index a299937014..0000000000
--- a/test/integration/targets/docker_network/tasks/run-test.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- name: "Loading tasks from {{ item }}"
- include_tasks: "{{ item }}"
diff --git a/test/integration/targets/docker_network/tasks/tests/basic.yml b/test/integration/targets/docker_network/tasks/tests/basic.yml
deleted file mode 100644
index 89462d68e5..0000000000
--- a/test/integration/targets/docker_network/tasks/tests/basic.yml
+++ /dev/null
@@ -1,134 +0,0 @@
----
-- name: Registering container and network names
- set_fact:
- cname_1: "{{ name_prefix ~ '-container-1' }}"
- cname_2: "{{ name_prefix ~ '-container-2' }}"
- cname_3: "{{ name_prefix ~ '-container-3' }}"
- nname_1: "{{ name_prefix ~ '-network-1' }}"
- nname_2: "{{ name_prefix ~ '-network-2' }}"
-- name: Registering container and network names
- set_fact:
- cnames: "{{ cnames + [cname_1, cname_2, cname_3] }}"
- dnetworks: "{{ dnetworks + [nname_1, nname_2] }}"
-
-- name: Create containers
- docker_container:
- name: "{{ container_name }}"
- image: alpine:3.8
- command: /bin/sleep 10m
- state: started
- loop:
- - "{{ cname_1 }}"
- - "{{ cname_2 }}"
- - "{{ cname_3 }}"
- loop_control:
- loop_var: container_name
-
-####################################################################
-
-- name: Create network
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- register: networks_1
-
-- name: Connect network to containers 1
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- connected:
- - "{{ cname_1 }}"
- register: networks_2
-
-- name: Connect network to containers 1 (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- connected:
- - "{{ cname_1 }}"
- register: networks_2_idem
-
-- name: Connect network to containers 1 and 2
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- connected:
- - "{{ cname_1 }}"
- - "{{ cname_2 }}"
- register: networks_3
-
-- name: Connect network to containers 1 and 2 (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- connected:
- - "{{ cname_1 }}"
- - "{{ cname_2 }}"
- register: networks_3_idem
-
-- name: Connect network to container 3
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- connected:
- - "{{ cname_3 }}"
- appends: yes
- register: networks_4
-
-- name: Connect network to container 3 (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- connected:
- - "{{ cname_3 }}"
- appends: yes
- register: networks_4_idem
-
-- name: Disconnect network from container 1
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- connected:
- - "{{ cname_2 }}"
- - "{{ cname_3 }}"
- register: networks_5
-
-- name: Disconnect network from container 1 (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- connected:
- - "{{ cname_2 }}"
- - "{{ cname_3 }}"
- register: networks_5_idem
-
-- name: Cleanup
- docker_network:
- name: "{{ nname_1 }}"
- state: absent
-
-- assert:
- that:
- - networks_1 is changed
- - networks_2 is changed
- - networks_2_idem is not changed
- - networks_3 is changed
- - networks_3_idem is not changed
- - networks_4 is changed
- - networks_4_idem is not changed
- - networks_5 is changed
- - networks_5_idem is not changed
-
-####################################################################
-
-- name: Delete containers
- docker_container:
- name: "{{ container_name }}"
- state: absent
- force_kill: yes
- loop:
- - "{{ cname_1 }}"
- - "{{ cname_2 }}"
- - "{{ cname_3 }}"
- loop_control:
- loop_var: container_name
diff --git a/test/integration/targets/docker_network/tasks/tests/ipam.yml b/test/integration/targets/docker_network/tasks/tests/ipam.yml
deleted file mode 100644
index 7405c3b194..0000000000
--- a/test/integration/targets/docker_network/tasks/tests/ipam.yml
+++ /dev/null
@@ -1,398 +0,0 @@
----
-- name: Registering network names
- set_fact:
- nname_ipam_0: "{{ name_prefix ~ '-network-ipam-0' }}"
- nname_ipam_1: "{{ name_prefix ~ '-network-ipam-1' }}"
- nname_ipam_2: "{{ name_prefix ~ '-network-ipam-2' }}"
- nname_ipam_3: "{{ name_prefix ~ '-network-ipam-3' }}"
-
-- name: Registering network names
- set_fact:
- dnetworks: "{{ dnetworks + [nname_ipam_0, nname_ipam_1, nname_ipam_2, nname_ipam_3] }}"
-
-
-#################### Deprecated ipam_config ####################
-
-- name: Create network with ipam_config and deprecated ipam_options (conflicting)
- docker_network:
- name: "{{ nname_ipam_0 }}"
- ipam_options:
- subnet: 172.3.29.0/24
- ipam_config:
- - subnet: 172.3.29.0/24
- register: network
- ignore_errors: yes
-
-- assert:
- that:
- - network is failed
- - "network.msg == 'parameters are mutually exclusive: ipam_config|ipam_options'"
-
-- name: Create network with deprecated custom IPAM options
- docker_network:
- name: "{{ nname_ipam_0 }}"
- ipam_options:
- subnet: 172.3.29.0/24
- gateway: 172.3.29.2
- iprange: 172.3.29.0/26
- aux_addresses:
- host1: 172.3.29.3
- host2: 172.3.29.4
- register: network
-
-- assert:
- that:
- - network is changed
-
-- name: Create network with deprecated custom IPAM options (idempotence)
- docker_network:
- name: "{{ nname_ipam_0 }}"
- ipam_options:
- subnet: 172.3.29.0/24
- gateway: 172.3.29.2
- iprange: 172.3.29.0/26
- aux_addresses:
- host1: 172.3.29.3
- host2: 172.3.29.4
- register: network
-
-- assert:
- that:
- - network is not changed
-
-- name: Change of network created with deprecated custom IPAM options
- docker_network:
- name: "{{ nname_ipam_0 }}"
- ipam_options:
- subnet: 172.3.28.0/24
- gateway: 172.3.28.2
- iprange: 172.3.28.0/26
- aux_addresses:
- host1: 172.3.28.3
- register: network
- diff: yes
-
-- assert:
- that:
- - network is changed
- - network.diff.differences | length == 4
- - '"ipam_config[0].subnet" in network.diff.differences'
- - '"ipam_config[0].gateway" in network.diff.differences'
- - '"ipam_config[0].iprange" in network.diff.differences'
- - '"ipam_config[0].aux_addresses" in network.diff.differences'
-
-- name: Remove gateway and iprange of network with deprecated custom IPAM options
- docker_network:
- name: "{{ nname_ipam_0 }}"
- ipam_options:
- subnet: 172.3.28.0/24
- register: network
-
-- assert:
- that:
- - network is not changed
-
-- name: Cleanup network with deprecated custom IPAM options
- docker_network:
- name: "{{ nname_ipam_0 }}"
- state: absent
-
-
-#################### IPv4 IPAM config ####################
-- name: Create network with custom IPAM config
- docker_network:
- name: "{{ nname_ipam_1 }}"
- ipam_config:
- - subnet: 172.3.27.0/24
- gateway: 172.3.27.2
- iprange: 172.3.27.0/26
- aux_addresses:
- host1: 172.3.27.3
- host2: 172.3.27.4
- register: network
-
-- assert:
- that:
- - network is changed
-
-- name: Create network with custom IPAM config (idempotence)
- docker_network:
- name: "{{ nname_ipam_1 }}"
- ipam_config:
- - subnet: 172.3.27.0/24
- gateway: 172.3.27.2
- iprange: 172.3.27.0/26
- aux_addresses:
- host1: 172.3.27.3
- host2: 172.3.27.4
- register: network
-
-- assert:
- that:
- - network is not changed
-
-- name: Change of network created with custom IPAM config
- docker_network:
- name: "{{ nname_ipam_1 }}"
- ipam_config:
- - subnet: 172.3.28.0/24
- gateway: 172.3.28.2
- iprange: 172.3.28.0/26
- aux_addresses:
- host1: 172.3.28.3
- register: network
- diff: yes
-
-- assert:
- that:
- - network is changed
- - network.diff.differences | length == 4
- - '"ipam_config[0].subnet" in network.diff.differences'
- - '"ipam_config[0].gateway" in network.diff.differences'
- - '"ipam_config[0].iprange" in network.diff.differences'
- - '"ipam_config[0].aux_addresses" in network.diff.differences'
-
-- name: Remove gateway and iprange of network with custom IPAM config
- docker_network:
- name: "{{ nname_ipam_1 }}"
- ipam_config:
- - subnet: 172.3.28.0/24
- register: network
-
-- assert:
- that:
- - network is not changed
-
-- name: Cleanup network with custom IPAM config
- docker_network:
- name: "{{ nname_ipam_1 }}"
- state: absent
-
-
-#################### IPv6 IPAM config ####################
-
-- name: Create network with IPv6 IPAM config
- docker_network:
- name: "{{ nname_ipam_2 }}"
- enable_ipv6: yes
- ipam_config:
- - subnet: fdd1:ac8c:0557:7ce0::/64
- register: network
-
-- assert:
- that:
- - network is changed
-
-- name: Create network with IPv6 IPAM config (idempotence)
- docker_network:
- name: "{{ nname_ipam_2 }}"
- enable_ipv6: yes
- ipam_config:
- - subnet: fdd1:ac8c:0557:7ce0::/64
- register: network
-
-- assert:
- that:
- - network is not changed
-
-- name: Change subnet of network with IPv6 IPAM config
- docker_network:
- name: "{{ nname_ipam_2 }}"
- enable_ipv6: yes
- ipam_config:
- - subnet: fdd1:ac8c:0557:7ce1::/64
- register: network
- diff: yes
-
-- assert:
- that:
- - network is changed
- - network.diff.differences | length == 1
- - network.diff.differences[0] == "ipam_config[0].subnet"
-
-- name: Change subnet of network with IPv6 IPAM config
- docker_network:
- name: "{{ nname_ipam_2 }}"
- enable_ipv6: yes
- ipam_config:
- - subnet: "fdd1:ac8c:0557:7ce1::"
- register: network
- ignore_errors: yes
-
-- assert:
- that:
- - network is failed
- - "network.msg == '\"fdd1:ac8c:0557:7ce1::\" is not a valid CIDR'"
-
-- name: Cleanup network with IPv6 IPAM config
- docker_network:
- name: "{{ nname_ipam_2 }}"
- state: absent
-
-
-#################### IPv4 and IPv6 network ####################
-
-- name: Create network with IPv6 and custom IPv4 IPAM config
- docker_network:
- name: "{{ nname_ipam_3 }}"
- enable_ipv6: yes
- ipam_config:
- - subnet: 172.4.27.0/24
- - subnet: fdd1:ac8c:0557:7ce2::/64
- register: network
-
-- assert:
- that:
- - network is changed
-
-- name: Change subnet order of network with IPv6 and custom IPv4 IPAM config (idempotence)
- docker_network:
- name: "{{ nname_ipam_3 }}"
- enable_ipv6: yes
- ipam_config:
- - subnet: fdd1:ac8c:0557:7ce2::/64
- - subnet: 172.4.27.0/24
- register: network
-
-- assert:
- that:
- - network is not changed
-
-- name: Remove IPv6 from network with custom IPv4 and IPv6 IPAM config (change)
- docker_network:
- name: "{{ nname_ipam_3 }}"
- enable_ipv6: no
- ipam_config:
- - subnet: 172.4.27.0/24
- register: network
- diff: yes
-
-- assert:
- that:
- - network is changed
- - network.diff.differences | length == 1
- - network.diff.differences[0] == "enable_ipv6"
-
-- name: Cleanup network with IPv6 and custom IPv4 IPAM config
- docker_network:
- name: "{{ nname_ipam_3 }}"
- state: absent
-
-
-#################### multiple IPv4 networks ####################
-
-- block:
- - name: Create network with two IPv4 IPAM configs
- docker_network:
- name: "{{ nname_ipam_3 }}"
- driver: "macvlan"
- driver_options:
- parent: "{{ ansible_default_ipv4.alias }}"
- ipam_config:
- - subnet: 172.4.27.0/24
- - subnet: 172.4.28.0/24
- register: network
-
- - assert:
- that:
- - network is changed
-
- - name: Create network with two IPv4 IPAM configs (idempotence)
- docker_network:
- name: "{{ nname_ipam_3 }}"
- driver: "macvlan"
- driver_options:
- parent: "{{ ansible_default_ipv4.alias }}"
- ipam_config:
- - subnet: 172.4.28.0/24
- - subnet: 172.4.27.0/24
- register: network
-
- - assert:
- that:
- - network is not changed
-
- - name: Create network with two IPv4 IPAM configs (change)
- docker_network:
- name: "{{ nname_ipam_3 }}"
- driver: "macvlan"
- driver_options:
- parent: "{{ ansible_default_ipv4.alias }}"
- ipam_config:
- - subnet: 172.4.27.0/24
- - subnet: 172.4.29.0/24
- register: network
- diff: yes
-
- - assert:
- that:
- - network is changed
- - network.diff.differences | length == 1
-
- - name: Create network with one IPv4 IPAM config (no change)
- docker_network:
- name: "{{ nname_ipam_3 }}"
- driver: "macvlan"
- driver_options:
- parent: "{{ ansible_default_ipv4.alias }}"
- ipam_config:
- - subnet: 172.4.29.0/24
- register: network
-
- - assert:
- that:
- - network is not changed
-
- - name: Cleanup network
- docker_network:
- name: "{{ nname_ipam_3 }}"
- state: absent
-
- when: ansible_facts.virtualization_type != 'docker'
-
-
-#################### IPAM driver options ####################
-
-- name: Create network with IPAM driver options
- docker_network:
- name: "{{ nname_ipam_3 }}"
- ipam_driver: default
- ipam_driver_options:
- a: b
- register: network_1
- ignore_errors: yes
-- name: Create network with IPAM driver options (idempotence)
- docker_network:
- name: "{{ nname_ipam_3 }}"
- ipam_driver: default
- ipam_driver_options:
- a: b
- diff: yes
- register: network_2
- ignore_errors: yes
-- name: Create network with IPAM driver options (change)
- docker_network:
- name: "{{ nname_ipam_3 }}"
- ipam_driver: default
- ipam_driver_options:
- a: c
- diff: yes
- register: network_3
- ignore_errors: yes
-- name: Cleanup network
- docker_network:
- name: "{{ nname_ipam_3 }}"
- state: absent
-
-- assert:
- that:
- - network_1 is changed
- - network_2 is not changed
- - network_3 is changed
- when: docker_py_version is version('2.0.0', '>=')
-- assert:
- that:
- - network_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in network_1.msg"
- - "'Minimum version required is 2.0.0 ' in network_1.msg"
- when: docker_py_version is version('2.0.0', '<')
diff --git a/test/integration/targets/docker_network/tasks/tests/options.yml b/test/integration/targets/docker_network/tasks/tests/options.yml
deleted file mode 100644
index ea073db3ae..0000000000
--- a/test/integration/targets/docker_network/tasks/tests/options.yml
+++ /dev/null
@@ -1,240 +0,0 @@
----
-- name: Registering network name
- set_fact:
- nname_1: "{{ name_prefix ~ '-network-1' }}"
-- name: Registering network name
- set_fact:
- dnetworks: "{{ dnetworks + [nname_1] }}"
-
-####################################################################
-## internal ########################################################
-####################################################################
-
-- name: internal
- docker_network:
- name: "{{ nname_1 }}"
- internal: yes
- register: internal_1
-
-- name: internal (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- internal: yes
- register: internal_2
-
-- name: internal (change)
- docker_network:
- name: "{{ nname_1 }}"
- internal: no
- register: internal_3
-
-- name: cleanup
- docker_network:
- name: "{{ nname_1 }}"
- state: absent
- force: yes
-
-- assert:
- that:
- - internal_1 is changed
- - internal_2 is not changed
- - internal_3 is changed
-
-####################################################################
-## driver_options ##################################################
-####################################################################
-
-- name: driver_options
- docker_network:
- name: "{{ nname_1 }}"
- driver_options:
- com.docker.network.bridge.enable_icc: 'false'
- register: driver_options_1
-
-- name: driver_options (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- driver_options:
- com.docker.network.bridge.enable_icc: 'false'
- register: driver_options_2
-
-- name: driver_options (idempotency with string translation)
- docker_network:
- name: "{{ nname_1 }}"
- driver_options:
- com.docker.network.bridge.enable_icc: False
- register: driver_options_3
-
-- name: driver_options (change)
- docker_network:
- name: "{{ nname_1 }}"
- driver_options:
- com.docker.network.bridge.enable_icc: 'true'
- register: driver_options_4
-
-- name: driver_options (idempotency with string translation)
- docker_network:
- name: "{{ nname_1 }}"
- driver_options:
- com.docker.network.bridge.enable_icc: True
- register: driver_options_5
-
-- name: cleanup
- docker_network:
- name: "{{ nname_1 }}"
- state: absent
- force: yes
-
-- assert:
- that:
- - driver_options_1 is changed
- - driver_options_2 is not changed
- - driver_options_3 is not changed
- - driver_options_4 is changed
- - driver_options_5 is not changed
-
-####################################################################
-## scope ###########################################################
-####################################################################
-
-- block:
- - name: scope
- docker_network:
- name: "{{ nname_1 }}"
- driver: bridge
- scope: local
- register: scope_1
-
- - name: scope (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- driver: bridge
- scope: local
- register: scope_2
-
- - name: swarm
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address}}"
-
- # Driver change alongside scope is intentional - bridge doesn't appear to support anything but local, and overlay can't downgrade to local. Additionally, overlay reports as swarm for swarm OR global, so no change is reported in that case.
- # Test output indicates that the scope is altered, at least, so manual inspection will be required to verify this going forward, unless we come up with a test driver that supports multiple scopes.
- - name: scope (change)
- docker_network:
- name: "{{ nname_1 }}"
- driver: overlay
- scope: swarm
- register: scope_3
-
- - name: cleanup network
- docker_network:
- name: "{{ nname_1 }}"
- state: absent
- force: yes
-
- - assert:
- that:
- - scope_1 is changed
- - scope_2 is not changed
- - scope_3 is changed
-
- always:
- - name: cleanup swarm
- docker_swarm:
- state: absent
- force: yes
-
- # Requirements for docker_swarm
- when: docker_py_version is version('2.6.0', '>=') and docker_api_version is version('1.25', '>=')
-
-####################################################################
-## attachable ######################################################
-####################################################################
-
-- name: attachable
- docker_network:
- name: "{{ nname_1 }}"
- attachable: true
- register: attachable_1
- ignore_errors: yes
-
-- name: attachable (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- attachable: true
- register: attachable_2
- ignore_errors: yes
-
-- name: attachable (change)
- docker_network:
- name: "{{ nname_1 }}"
- attachable: false
- register: attachable_3
- ignore_errors: yes
-
-- name: cleanup
- docker_network:
- name: "{{ nname_1 }}"
- state: absent
- force: yes
-
-- assert:
- that:
- - attachable_1 is changed
- - attachable_2 is not changed
- - attachable_3 is changed
- when: docker_py_version is version('2.0.0', '>=')
-- assert:
- that:
- - attachable_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in attachable_1.msg"
- - "'Minimum version required is 2.0.0 ' in attachable_1.msg"
- when: docker_py_version is version('2.0.0', '<')
-
-####################################################################
-## labels ##########################################################
-####################################################################
-
-- name: labels
- docker_network:
- name: "{{ nname_1 }}"
- labels:
- ansible.test.1: hello
- ansible.test.2: world
- register: labels_1
-
-- name: labels (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- labels:
- ansible.test.2: world
- ansible.test.1: hello
- register: labels_2
-
-- name: labels (less labels)
- docker_network:
- name: "{{ nname_1 }}"
- labels:
- ansible.test.1: hello
- register: labels_3
-
-- name: labels (more labels)
- docker_network:
- name: "{{ nname_1 }}"
- labels:
- ansible.test.1: hello
- ansible.test.3: ansible
- register: labels_4
-
-- name: cleanup
- docker_network:
- name: "{{ nname_1 }}"
- state: absent
- force: yes
-
-- assert:
- that:
- - labels_1 is changed
- - labels_2 is not changed
- - labels_3 is not changed
- - labels_4 is changed
diff --git a/test/integration/targets/docker_network/tasks/tests/overlay.yml b/test/integration/targets/docker_network/tasks/tests/overlay.yml
deleted file mode 100644
index 832836aa05..0000000000
--- a/test/integration/targets/docker_network/tasks/tests/overlay.yml
+++ /dev/null
@@ -1,61 +0,0 @@
----
-- name: Registering network name
- set_fact:
- nname_1: "{{ name_prefix ~ '-network-1' }}"
-- name: Registering network name
- set_fact:
- dnetworks: "{{ dnetworks + [nname_1] }}"
-
-####################################################################
-## overlay #########################################################
-####################################################################
-
-- block:
- # Overlay networks require swarm initialization before they'll work
- - name: swarm
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address}}"
-
- - name: overlay
- docker_network:
- name: "{{ nname_1 }}"
- driver: overlay
- driver_options:
- com.docker.network.driver.overlay.vxlanid_list: "257"
- register: overlay_1
-
- - name: overlay (idempotency)
- docker_network:
- name: "{{ nname_1 }}"
- driver: overlay
- driver_options:
- com.docker.network.driver.overlay.vxlanid_list: "257"
- register: overlay_2
-
- - name: overlay (change)
- docker_network:
- name: "{{ nname_1 }}"
- driver: bridge
- register: overlay_3
-
- - name: cleanup network
- docker_network:
- name: "{{ nname_1 }}"
- state: absent
- force: yes
-
- - assert:
- that:
- - overlay_1 is changed
- - overlay_2 is not changed
- - overlay_3 is changed
-
- always:
- - name: cleanup swarm
- docker_swarm:
- state: absent
- force: yes
-
- # Requirements for docker_swarm
- when: docker_py_version is version('2.6.0', '>=') and docker_api_version is version('1.25', '>=')
diff --git a/test/integration/targets/docker_network/tasks/tests/substring.yml b/test/integration/targets/docker_network/tasks/tests/substring.yml
deleted file mode 100644
index bdee190e96..0000000000
--- a/test/integration/targets/docker_network/tasks/tests/substring.yml
+++ /dev/null
@@ -1,37 +0,0 @@
----
-- name: Registering container and network names
- set_fact:
- nname_1: "{{ name_prefix ~ '-network-foo' }}"
- nname_2: "{{ name_prefix ~ '-network-foobar' }}"
-- name: Registering container and network names
- set_fact:
- dnetworks: "{{ dnetworks + [nname_1, nname_2] }}"
-
-####################################################################
-
-- name: Create network (superstring)
- docker_network:
- name: "{{ nname_2 }}"
- state: present
- register: networks_1
-
-- name: Create network (substring)
- docker_network:
- name: "{{ nname_1 }}"
- state: present
- register: networks_2
-
-- name: Cleanup
- docker_network:
- name: "{{ network_name }}"
- state: absent
- loop:
- - "{{ nname_1 }}"
- - "{{ nname_2 }}"
- loop_control:
- loop_var: network_name
-
-- assert:
- that:
- - networks_1 is changed
- - networks_2 is changed
diff --git a/test/integration/targets/docker_network_info/aliases b/test/integration/targets/docker_network_info/aliases
deleted file mode 100644
index 7a020910ed..0000000000
--- a/test/integration/targets/docker_network_info/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
diff --git a/test/integration/targets/docker_network_info/meta/main.yml b/test/integration/targets/docker_network_info/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_network_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_network_info/tasks/main.yml b/test/integration/targets/docker_network_info/tasks/main.yml
deleted file mode 100644
index f8bce0ebcc..0000000000
--- a/test/integration/targets/docker_network_info/tasks/main.yml
+++ /dev/null
@@ -1,60 +0,0 @@
----
-- block:
- - name: Create random network name
- set_fact:
- nname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
-
- - name: Make sure network is not there
- docker_network:
- name: "{{ nname }}"
- state: absent
- force: yes
-
- - name: Inspect a non-present network
- docker_network_info:
- name: "{{ nname }}"
- register: result
-
- - assert:
- that:
- - "not result.exists"
- - "'network' in result"
- - "result.network is none"
-
- - name: Make sure network exists
- docker_network:
- name: "{{ nname }}"
- state: present
-
- - name: Inspect a present network
- docker_network_info:
- name: "{{ nname }}"
- register: result
- - name: Dump docker_network_info result
- debug: var=result
-
- - name: "Comparison: use 'docker network inspect'"
- command: docker network inspect "{{ nname }}"
- register: docker_inspect
- - set_fact:
- docker_inspect_result: "{{ docker_inspect.stdout | from_json }}"
- - name: Dump docker inspect result
- debug: var=docker_inspect_result
-
- - name: Cleanup
- docker_network:
- name: "{{ nname }}"
- state: absent
- force: yes
-
- - assert:
- that:
- - result.exists
- - "'network' in result"
- - "result.network"
- - "result.network == docker_inspect_result[0]"
-
- when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.21', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_network_info tests!"
- when: not(docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.21', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_node/aliases b/test/integration/targets/docker_node/aliases
deleted file mode 100644
index ed231329c0..0000000000
--- a/test/integration/targets/docker_node/aliases
+++ /dev/null
@@ -1,11 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system. On VMs, we restart docker daemon
- # after finishing the tests to minimize potential effects
- # on other tests.
-needs/root
diff --git a/test/integration/targets/docker_node/meta/main.yml b/test/integration/targets/docker_node/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_node/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_node/tasks/main.yml b/test/integration/targets/docker_node/tasks/main.yml
deleted file mode 100644
index ccac80691d..0000000000
--- a/test/integration/targets/docker_node/tasks/main.yml
+++ /dev/null
@@ -1,31 +0,0 @@
----
-# Run the tests
-- block:
- - include_tasks: test_node.yml
-
- always:
- - name: Cleanup (trying)
- docker_swarm:
- state: absent
- force: true
- diff: no
- ignore_errors: yes
-
- - name: Restart docker daemon
- service:
- name: docker
- state: restarted
- become: yes
- - name: Wait for docker daemon to be fully restarted
- command: docker ps
-
- - name: Cleanup
- docker_swarm:
- state: absent
- force: true
- diff: no
-
- when: docker_py_version is version('2.4.0', '>=') and docker_api_version is version('1.25', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_node tests!"
- when: not(docker_py_version is version('2.4.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_node/tasks/test_node.yml b/test/integration/targets/docker_node/tasks/test_node.yml
deleted file mode 100644
index bdc01afb88..0000000000
--- a/test/integration/targets/docker_node/tasks/test_node.yml
+++ /dev/null
@@ -1,840 +0,0 @@
----
-- block:
- - name: Make sure we're not already using Docker swarm
- docker_swarm:
- state: absent
- force: true
-
- - name: Try to get docker_node_info when docker is not running in swarm mode
- docker_node_info:
- ignore_errors: yes
- register: output
-
- - name: assert failure when called when swarm is not in use or not run on manager node
- assert:
- that:
- - 'output is failed'
- - 'output.msg == "Error running docker swarm module: must run on swarm manager node"'
-
- - name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- register: output
-
- - name: assert changed when create a new swarm cluster
- assert:
- that:
- - 'output is changed'
- - 'output.actions[0] | regex_search("New Swarm cluster created: ")'
- - 'output.swarm_facts.JoinTokens.Manager'
- - 'output.swarm_facts.JoinTokens.Worker'
-
- - name: Try to get docker_node_info when docker is running in swarm mode and as manager
- docker_node_info:
- register: output
-
- - name: assert reading docker swarm node facts
- assert:
- that:
- - 'output.nodes | length > 0'
- - 'output.nodes[0].ID is string'
-
- - name: Register node ID
- set_fact:
- nodeid: "{{ output.nodes[0].ID }}"
-
-####################################################################
-## Set node as swarm manager #######################################
-####################################################################
-
- - name: Try to set node as manager (check)
- docker_node:
- hostname: "{{ nodeid }}"
- role: manager
- check_mode: yes
- register: set_as_manager_1
-
- - name: Try to set node as manager
- docker_node:
- hostname: "{{ nodeid }}"
- role: manager
- register: set_as_manager_2
-
- - name: Try to set node as manager (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- role: manager
- register: set_as_manager_3
-
- - name: Try to set node as manager (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- role: manager
- check_mode: yes
- register: set_as_manager_4
-
- - name: assert that node role does has not changed
- assert:
- that:
- - 'set_as_manager_1 is not changed'
- - 'set_as_manager_2 is not changed'
- - 'set_as_manager_3 is not changed'
- - 'set_as_manager_4 is not changed'
- - 'set_as_manager_1.node.Spec.Role == "manager"'
- - 'set_as_manager_2.node.Spec.Role == "manager"'
- - 'set_as_manager_3.node.Spec.Role == "manager"'
- - 'set_as_manager_4.node.Spec.Role == "manager"'
-
-####################################################################
-## Set node as swarm worker ########################################
-####################################################################
-
- - name: Try to set node as worker (check)
- docker_node:
- hostname: "{{ nodeid }}"
- role: worker
- check_mode: yes
- register: set_as_worker_1
-
- - name: Try to set node as worker
- docker_node:
- hostname: "{{ nodeid }}"
- role: worker
- ignore_errors: yes
- register: set_as_worker_2
-
- - name: assert that node cannot change role to worker
- assert:
- that:
- - 'set_as_worker_1 is changed'
- - 'set_as_worker_2 is failed'
- - 'set_as_worker_2.msg | regex_search("attempting to demote the last manager of the swarm")'
-
-####################################################################
-## Set node as pasued ##############################################
-####################################################################
-
- - name: Try to set node availability as paused (check)
- docker_node:
- hostname: "{{ nodeid }}"
- availability: pause
- check_mode: yes
- register: set_as_paused_1
-
- - name: Try to set node availability as paused
- docker_node:
- hostname: "{{ nodeid }}"
- availability: pause
- register: set_as_paused_2
-
- - name: Try to set node availability as paused (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- availability: pause
- register: set_as_paused_3
-
- - name: Try to set node availability as paused (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- availability: pause
- check_mode: yes
- register: set_as_paused_4
-
- - name: assert node changed availability to paused
- assert:
- that:
- - 'set_as_paused_1 is changed'
- - 'set_as_paused_2 is changed'
- - 'set_as_paused_3 is not changed'
- - 'set_as_paused_4 is not changed'
- - 'set_as_paused_2.node.Spec.Availability == "pause"'
-
-####################################################################
-## Set node as drained #############################################
-####################################################################
-
- - name: Try to set node availability as drained (check)
- docker_node:
- hostname: "{{ nodeid }}"
- availability: drain
- check_mode: yes
- register: output_drain_1
-
- - name: Try to set node availability as drained
- docker_node:
- hostname: "{{ nodeid }}"
- availability: drain
- register: output_drain_2
-
- - name: Try to set node availability as drained (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- availability: drain
- register: output_drain_3
-
- - name: Try to set node availability as drained (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- availability: drain
- check_mode: yes
- register: output_drain_4
-
- - name: assert node changed availability to drained
- assert:
- that:
- - 'output_drain_1 is changed'
- - 'output_drain_2 is changed'
- - 'output_drain_3 is not changed'
- - 'output_drain_4 is not changed'
- - 'output_drain_2.node.Spec.Availability == "drain"'
-
-
-####################################################################
-## Set node as active ##############################################
-####################################################################
-
- - name: Try to set node availability as active (check)
- docker_node:
- hostname: "{{ nodeid }}"
- availability: active
- check_mode: yes
- register: output_active_1
-
- - name: Try to set node availability as active
- docker_node:
- hostname: "{{ nodeid }}"
- availability: active
- register: output_active_2
-
- - name: Try to set node availability as active (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- availability: active
- register: output_active_3
-
- - name: Try to set node availability as active (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- availability: active
- check_mode: yes
- register: output_active_4
-
- - name: assert node changed availability to active
- assert:
- that:
- - 'output_active_1 is changed'
- - 'output_active_2 is changed'
- - 'output_active_3 is not changed'
- - 'output_active_4 is not changed'
- - 'output_active_2.node.Spec.Availability == "active"'
-
-####################################################################
-## Add single label ###############################################
-####################################################################
-
- - name: Try to add single label to swarm node (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label1: value1
- check_mode: yes
- register: output_add_single_label_1
-
- - name: Try to add single label to swarm node
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label1: value1
- register: output_add_single_label_2
-
- - name: Try to add single label to swarm node (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label1: value1
- register: output_add_single_label_3
-
- - name: Try to add single label to swarm node (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label1: value1
- check_mode: yes
- register: output_add_single_label_4
-
- - name: assert adding single label to swarm node
- assert:
- that:
- - 'output_add_single_label_1 is changed'
- - 'output_add_single_label_2 is changed'
- - 'output_add_single_label_3 is not changed'
- - 'output_add_single_label_4 is not changed'
- - 'output_add_single_label_2.node.Spec.Labels | length == 1'
- - 'output_add_single_label_2.node.Spec.Labels.label1 == "value1"'
-
-####################################################################
-## Add multiple labels #############################################
-####################################################################
-
- - name: Try to add five labels to swarm node (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label2: value2
- label3: value3
- label4: value4
- label5: value5
- label6: value6
- check_mode: yes
- register: output_add_multiple_labels_1
-
- - name: Try to add five labels to swarm node
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label2: value2
- label3: value3
- label4: value4
- label5: value5
- label6: value6
- register: output_add_multiple_labels_2
-
- - name: Try to add five labels to swarm node (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label2: value2
- label3: value3
- label4: value4
- label5: value5
- label6: value6
- register: output_add_multiple_labels_3
-
- - name: Try to add five labels to swarm node (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label2: value2
- label3: value3
- label4: value4
- label5: value5
- label6: value6
- check_mode: yes
- register: output_add_multiple_labels_4
-
- - name: assert adding multiple labels to swarm node
- assert:
- that:
- - 'output_add_multiple_labels_1 is changed'
- - 'output_add_multiple_labels_2 is changed'
- - 'output_add_multiple_labels_3 is not changed'
- - 'output_add_multiple_labels_4 is not changed'
- - 'output_add_multiple_labels_2.node.Spec.Labels | length == 6'
- - 'output_add_multiple_labels_2.node.Spec.Labels.label1 == "value1"'
- - 'output_add_multiple_labels_2.node.Spec.Labels.label6 == "value6"'
-
-####################################################################
-## Update label value ##############################################
-####################################################################
-
- - name: Update value of existing label (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label1: value1111
- check_mode: yes
- register: output_update_label_1
-
- - name: Update value of existing label
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label1: value1111
- register: output_update_label_2
-
- - name: Update value of existing label (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label1: value1111
- register: output_update_label_3
-
- - name: Update value of existing label (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label1: value1111
- check_mode: yes
- register: output_update_label_4
-
- - name: assert updating single label assigned to swarm node
- assert:
- that:
- - 'output_update_label_1 is changed'
- - 'output_update_label_2 is changed'
- - 'output_update_label_3 is not changed'
- - 'output_update_label_4 is not changed'
- - 'output_update_label_2.node.Spec.Labels | length == 6'
- - 'output_update_label_2.node.Spec.Labels.label1 == "value1111"'
- - 'output_update_label_2.node.Spec.Labels.label5 == "value5"'
-
-####################################################################
-## Update multiple labels values ###################################
-####################################################################
-
- - name: Update value of multiple existing label (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label2: value2222
- label3: value3333
- check_mode: yes
- register: output_update_labels_1
-
- - name: Update value of multiple existing label
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label2: value2222
- label3: value3333
- register: output_update_labels_2
-
- - name: Update value of multiple existing label (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label2: value2222
- label3: value3333
- register: output_update_labels_3
-
- - name: Update value of multiple existing label (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label2: value2222
- label3: value3333
- check_mode: yes
- register: output_update_labels_4
-
- - name: assert updating multiple labels assigned to swarm node
- assert:
- that:
- - 'output_update_labels_1 is changed'
- - 'output_update_labels_2 is changed'
- - 'output_update_labels_3 is not changed'
- - 'output_update_labels_4 is not changed'
- - 'output_update_labels_2.node.Spec.Labels | length == 6'
- - 'output_update_labels_2.node.Spec.Labels.label1 == "value1111"'
- - 'output_update_labels_2.node.Spec.Labels.label3 == "value3333"'
- - 'output_update_labels_2.node.Spec.Labels.label5 == "value5"'
-
-####################################################################
-## Remove single label #############################################
-####################################################################
-
- - name: Try to remove single existing label from swarm node (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label1
- check_mode: yes
- register: output_remove_label_1
-
- - name: Try to remove single existing label from swarm node
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label1
- register: output_remove_label_2
-
- - name: Try to remove single existing label from swarm node (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label1
- register: output_remove_label_3
-
- - name: Try to remove single existing label from swarm node (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label1
- check_mode: yes
- register: output_remove_label_4
-
- - name: assert removing single label from swarm node
- assert:
- that:
- - 'output_remove_label_1 is changed'
- - 'output_remove_label_2 is changed'
- - 'output_remove_label_3 is not changed'
- - 'output_remove_label_4 is not changed'
- - 'output_remove_label_2.node.Spec.Labels | length == 5'
- - '"label1" not in output_remove_label_2.node.Spec.Labels'
- - 'output_remove_label_2.node.Spec.Labels.label3 == "value3333"'
- - 'output_remove_label_2.node.Spec.Labels.label5 == "value5"'
-
-
-####################################################################
-## Remove single not assigned to swarm label #######################
-####################################################################
-
- - name: Try to remove single non-existing label from swarm node (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - labelnotexist
- check_mode: yes
- register: output_remove_nonexist_label_1
-
- - name: Try to remove single non-existing label from swarm node
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - labelnotexist
- register: output_remove_nonexist_label_2
-
- - name: Try to remove single non-existing label from swarm node (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - labelnotexist
- register: output_remove_nonexist_label_3
-
- - name: Try to remove single non-existing label from swarm node (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - labelnotexist
- check_mode: yes
- register: output_remove_nonexist_label_4
-
- - name: assert removing single non-existing label from swarm node
- assert:
- that:
- - 'output_remove_nonexist_label_1 is not changed'
- - 'output_remove_nonexist_label_2 is not changed'
- - 'output_remove_nonexist_label_3 is not changed'
- - 'output_remove_nonexist_label_4 is not changed'
- - 'output_remove_nonexist_label_2.node.Spec.Labels | length == 5'
- - '"label1" not in output_remove_nonexist_label_2.node.Spec.Labels'
- - 'output_remove_nonexist_label_2.node.Spec.Labels.label3 == "value3333"'
- - 'output_remove_nonexist_label_2.node.Spec.Labels.label5 == "value5"'
-
-####################################################################
-## Remove multiple labels ##########################################
-####################################################################
-
- - name: Try to remove two existing labels from swarm node (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label2
- - label3
- check_mode: yes
- register: output_remove_label_1
-
- - name: Try to remove two existing labels from swarm node
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label2
- - label3
- register: output_remove_label_2
-
- - name: Try to remove two existing labels from swarm node (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label2
- - label3
- register: output_remove_label_3
-
- - name: Try to remove two existing labels from swarm node (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label2
- - label3
- check_mode: yes
- register: output_remove_label_4
-
- - name: assert removing multiple labels from swarm node
- assert:
- that:
- - 'output_remove_label_1 is changed'
- - 'output_remove_label_2 is changed'
- - 'output_remove_label_3 is not changed'
- - 'output_remove_label_4 is not changed'
- - 'output_remove_label_2.node.Spec.Labels | length == 3'
- - '"label1" not in output_remove_label_2.node.Spec.Labels'
- - '"label2" not in output_remove_label_2.node.Spec.Labels'
- - 'output_remove_label_2.node.Spec.Labels.label5 == "value5"'
-
-####################################################################
-## Remove multiple labels, mix assigned and not assigned ##########
-####################################################################
-
- - name: Try to remove mix of existing amd non-existing labels from swarm node (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label4
- - labelisnotthere
- check_mode: yes
- register: output_remove_mix_labels_1
-
- - name: Try to remove mix of existing amd non-existing labels from swarm node
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label4
- - labelisnotthere
- register: output_remove_mix_labels_2
-
- - name: Try to remove mix of existing amd non-existing labels from swarm node (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label4
- - labelisnotthere
- register: output_remove_mix_labels_3
-
- - name: Try to remove mix of existing amd non-existing labels from swarm node (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_to_remove:
- - label4
- - labelisnotthere
- check_mode: yes
- register: output_remove_mix_labels_4
-
- - name: assert removing mix of existing and non-existing labels from swarm node
- assert:
- that:
- - 'output_remove_mix_labels_1 is changed'
- - 'output_remove_mix_labels_2 is changed'
- - 'output_remove_mix_labels_3 is not changed'
- - 'output_remove_mix_labels_4 is not changed'
- - 'output_remove_mix_labels_2.node.Spec.Labels | length == 2'
- - '"label1" not in output_remove_mix_labels_2.node.Spec.Labels'
- - '"label4" not in output_remove_mix_labels_2.node.Spec.Labels'
- - 'output_remove_mix_labels_2.node.Spec.Labels.label5 == "value5"'
-
-####################################################################
-## Add and remove labels ###########################################
-####################################################################
-
- - name: Try to add and remove nonoverlapping labels at the same time (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label7: value7
- label8: value8
- labels_to_remove:
- - label5
- check_mode: yes
- register: output_add_del_labels_1
-
- - name: Try to add and remove nonoverlapping labels at the same time
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label7: value7
- label8: value8
- labels_to_remove:
- - label5
- register: output_add_del_labels_2
-
- - name: Try to add and remove nonoverlapping labels at the same time (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label7: value7
- label8: value8
- labels_to_remove:
- - label5
- register: output_add_del_labels_3
-
- - name: Try to add and remove nonoverlapping labels at the same time (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label7: value7
- label8: value8
- labels_to_remove:
- - label5
- check_mode: yes
- register: output_add_del_labels_4
-
- - name: assert adding and removing nonoverlapping labels from swarm node
- assert:
- that:
- - 'output_add_del_labels_1 is changed'
- - 'output_add_del_labels_2 is changed'
- - 'output_add_del_labels_3 is not changed'
- - 'output_add_del_labels_4 is not changed'
- - 'output_add_del_labels_2.node.Spec.Labels | length == 3'
- - '"label5" not in output_add_del_labels_2.node.Spec.Labels'
- - 'output_add_del_labels_2.node.Spec.Labels.label8 == "value8"'
-
-####################################################################
-## Add and remove labels with label in both lists ##################
-####################################################################
-
- - name: Try to add or update and remove overlapping labels at the same time (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label22: value22
- label6: value6666
- labels_to_remove:
- - label6
- - label7
- check_mode: yes
- register: output_add_del_overlap_lables_1
-
- - name: Try to add or update and remove overlapping labels at the same time
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label22: value22
- label6: value6666
- labels_to_remove:
- - label6
- - label7
- register: output_add_del_overlap_lables_2
-
- - name: Try to add or update and remove overlapping labels at the same time (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label22: value22
- label6: value6666
- labels_to_remove:
- - label6
- - label7
- register: output_add_del_overlap_lables_3
-
- - name: Try to add or update and remove overlapping labels at the same time (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label22: value22
- label6: value6666
- labels_to_remove:
- - label6
- - label7
- check_mode: yes
- register: output_add_del_overlap_lables_4
-
- - name: assert adding or updating and removing overlapping labels from swarm node
- assert:
- that:
- - 'output_add_del_overlap_lables_1 is changed'
- - 'output_add_del_overlap_lables_2 is changed'
- - 'output_add_del_overlap_lables_3 is not changed'
- - 'output_add_del_overlap_lables_4 is not changed'
- - 'output_add_del_overlap_lables_2.node.Spec.Labels | length == 3'
- - '"label7" not in output_add_del_overlap_lables_2.node.Spec.Labels'
- - 'output_add_del_overlap_lables_2.node.Spec.Labels.label6 == "value6666"'
- - 'output_add_del_overlap_lables_2.node.Spec.Labels.label22 == "value22"'
-
-####################################################################
-## Replace labels #############################################
-####################################################################
-
- - name: Replace labels on swarm node (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label11: value11
- label12: value12
- labels_state: replace
- check_mode: yes
- register: output_replace_labels_1
-
- - name: Replace labels on swarm node
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label11: value11
- label12: value12
- labels_state: replace
- register: output_replace_labels_2
-
- - name: Replace labels on swarm node (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label11: value11
- label12: value12
- labels_state: replace
- register: output_replace_labels_3
-
- - name: Replace labels on swarm node (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels:
- label11: value11
- label12: value12
- labels_state: replace
- check_mode: yes
- register: output_replace_labels_4
-
- - name: assert replacing labels from swarm node
- assert:
- that:
- - 'output_replace_labels_1 is changed'
- - 'output_replace_labels_2 is changed'
- - 'output_replace_labels_3 is not changed'
- - 'output_replace_labels_4 is not changed'
- - 'output_replace_labels_2.node.Spec.Labels | length == 2'
- - '"label6" not in output_replace_labels_2.node.Spec.Labels'
- - 'output_replace_labels_2.node.Spec.Labels.label12 == "value12"'
-
-####################################################################
-## Remove all labels #############################################
-####################################################################
-
- - name: Remove all labels from swarm node (check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_state: replace
- check_mode: yes
- register: output_remove_labels_1
-
- - name: Remove all labels from swarm node
- docker_node:
- hostname: "{{ nodeid }}"
- labels_state: replace
- register: output_remove_labels_2
-
- - name: Remove all labels from swarm node (idempotent)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_state: replace
- register: output_remove_labels_3
-
- - name: Remove all labels from swarm node (idempotent check)
- docker_node:
- hostname: "{{ nodeid }}"
- labels_state: replace
- check_mode: yes
- register: output_remove_labels_4
-
- - name: assert removing all lables from swarm node
- assert:
- that:
- - 'output_remove_labels_1 is changed'
- - 'output_remove_labels_2 is changed'
- - 'output_remove_labels_3 is not changed'
- - 'output_remove_labels_4 is not changed'
- - 'output_remove_labels_2.node.Spec.Labels | length == 0'
-
- always:
- - name: Cleanup
- docker_swarm:
- state: absent
- force: true
diff --git a/test/integration/targets/docker_node_info/aliases b/test/integration/targets/docker_node_info/aliases
deleted file mode 100644
index 9fe8a6d69b..0000000000
--- a/test/integration/targets/docker_node_info/aliases
+++ /dev/null
@@ -1,8 +0,0 @@
-shippable/posix/group3
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system.
diff --git a/test/integration/targets/docker_node_info/meta/main.yml b/test/integration/targets/docker_node_info/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_node_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_node_info/tasks/main.yml b/test/integration/targets/docker_node_info/tasks/main.yml
deleted file mode 100644
index 4d1e6a4c88..0000000000
--- a/test/integration/targets/docker_node_info/tasks/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-- include_tasks: test_node_info.yml
- # Maximum of 1.24 (docker API version for docker_node_info) and 1.25 (docker API version for docker_swarm) is 1.25
- when: docker_py_version is version('2.4.0', '>=') and docker_api_version is version('1.25', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_node_info tests!"
- when: not(docker_py_version is version('2.4.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_node_info/tasks/test_node_info.yml b/test/integration/targets/docker_node_info/tasks/test_node_info.yml
deleted file mode 100644
index 3ee5549b37..0000000000
--- a/test/integration/targets/docker_node_info/tasks/test_node_info.yml
+++ /dev/null
@@ -1,88 +0,0 @@
----
-- block:
- - name: Make sure we're not already using Docker swarm
- docker_swarm:
- state: absent
- force: true
-
- - name: Try to get docker_node_info when docker is not running in swarm mode
- docker_node_info:
- ignore_errors: yes
- register: output
-
- - name: assert failure when called when swarm is not in use or not run on manager node
- assert:
- that:
- - 'output is failed'
- - 'output.msg == "Error running docker swarm module: must run on swarm manager node"'
-
- - name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- register: output
-
- - name: assert changed when create a new swarm cluster
- assert:
- that:
- - 'output is changed'
- - 'output.actions[0] | regex_search("New Swarm cluster created: ")'
- - 'output.swarm_facts.JoinTokens.Manager'
- - 'output.swarm_facts.JoinTokens.Worker'
-
- - name: Try to get docker_node_info when docker is running in swarm mode and as manager
- docker_node_info:
- register: output
-
- - name: assert reading docker swarm node facts
- assert:
- that:
- - 'output.nodes | length > 0'
- - 'output.nodes[0].ID is string'
-
- - name: Try to get docker_node_info using the self parameter
- docker_node_info:
- self: yes
- register: output
-
- - name: assert reading swarm facts with list of nodes option
- assert:
- that:
- - 'output.nodes | length == 1'
- - 'output.nodes[0].ID is string'
-
- - name: Get local docker node name
- set_fact:
- localnodename: "{{ output.nodes[0].Description.Hostname }}"
-
-
- - name: Try to get docker_node_info using the local node name as parameter
- docker_node_info:
- name: "{{ localnodename }}"
- register: output
-
- - name: assert reading reading swarm facts and using node filter (random node name)
- assert:
- that:
- - 'output.nodes | length == 1'
- - 'output.nodes[0].ID is string'
-
- - name: Create random name
- set_fact:
- randomnodename: "{{ 'node-%0x' % ((2**32) | random) }}"
-
- - name: Try to get docker_node_info using random node name as parameter
- docker_node_info:
- name: "{{ randomnodename }}"
- register: output
-
- - name: assert reading reading swarm facts and using node filter (random node name)
- assert:
- that:
- - 'output.nodes | length == 0'
-
- always:
- - name: Cleanup
- docker_swarm:
- state: absent
- force: true
diff --git a/test/integration/targets/docker_prune/aliases b/test/integration/targets/docker_prune/aliases
deleted file mode 100644
index 7a020910ed..0000000000
--- a/test/integration/targets/docker_prune/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
diff --git a/test/integration/targets/docker_prune/meta/main.yml b/test/integration/targets/docker_prune/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_prune/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_prune/tasks/main.yml b/test/integration/targets/docker_prune/tasks/main.yml
deleted file mode 100644
index 3d2f38392b..0000000000
--- a/test/integration/targets/docker_prune/tasks/main.yml
+++ /dev/null
@@ -1,63 +0,0 @@
----
-- name: Create random names
- set_fact:
- cname: "{{ 'ansible-container-%0x' % ((2**32) | random) }}"
- nname: "{{ 'ansible-network-%0x' % ((2**32) | random) }}"
- vname: "{{ 'ansible-volume-%0x' % ((2**32) | random) }}"
-
-- block:
- # Create objects to be pruned
- - docker_container:
- name: "{{ cname }}"
- image: hello-world
- state: present
- register: container
- - docker_network:
- name: "{{ nname }}"
- state: present
- register: network
- - docker_volume:
- name: "{{ vname }}"
- state: present
- register: volume
-
- # Prune objects
- - docker_prune:
- containers: yes
- images: yes
- networks: yes
- volumes: yes
- builder_cache: "{{ docker_py_version is version('3.3.0', '>=') }}"
- register: result
-
- # Analyze result
- - debug: var=result
- - assert:
- that:
- # containers
- - container.container.Id in result.containers
- - "'containers_space_reclaimed' in result"
- # images
- - "'images_space_reclaimed' in result"
- # networks
- - network.network.Name in result.networks
- # volumes
- - volume.volume.Name in result.volumes
- - "'volumes_space_reclaimed' in result"
- # builder_cache
- - "'builder_cache_space_reclaimed' in result or docker_py_version is version('3.3.0', '<')"
- - "'builder_cache_space_reclaimed' not in result or docker_py_version is version('3.3.0', '>=')"
-
- # Test with filters
- - docker_prune:
- images: yes
- images_filters:
- dangling: true
- register: result
-
- - debug: var=result
-
- when: docker_py_version is version('2.1.0', '>=') and docker_api_version is version('1.25', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_prune tests!"
- when: not(docker_py_version is version('2.1.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_secret/aliases b/test/integration/targets/docker_secret/aliases
deleted file mode 100644
index af1a7950f9..0000000000
--- a/test/integration/targets/docker_secret/aliases
+++ /dev/null
@@ -1,8 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system.
diff --git a/test/integration/targets/docker_secret/meta/main.yml b/test/integration/targets/docker_secret/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_secret/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_secret/tasks/main.yml b/test/integration/targets/docker_secret/tasks/main.yml
deleted file mode 100644
index fe38bccdb2..0000000000
--- a/test/integration/targets/docker_secret/tasks/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-- include_tasks: test_secrets.yml
- when: docker_py_version is version('2.1.0', '>=') and docker_api_version is version('1.25', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_secrets tests!"
- when: not(docker_py_version is version('2.1.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_secret/tasks/test_secrets.yml b/test/integration/targets/docker_secret/tasks/test_secrets.yml
deleted file mode 100644
index b99f059e05..0000000000
--- a/test/integration/targets/docker_secret/tasks/test_secrets.yml
+++ /dev/null
@@ -1,118 +0,0 @@
----
-- block:
- - name: Make sure we're not already using Docker swarm
- docker_swarm:
- state: absent
- force: true
-
- - name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address}}"
-
- - name: Parameter name should be required
- docker_secret:
- state: present
- ignore_errors: yes
- register: output
-
- - name: assert failure when called with no name
- assert:
- that:
- - 'output.failed'
- - 'output.msg == "missing required arguments: name"'
-
- - name: Test parameters
- docker_secret:
- name: foo
- state: present
- ignore_errors: yes
- register: output
-
- - name: assert failure when called with no data
- assert:
- that:
- - 'output.failed'
- - 'output.msg == "state is present but all of the following are missing: data"'
-
- - name: Create secret
- docker_secret:
- name: db_password
- data: opensesame!
- state: present
- register: output
-
- - name: Create variable secret_id
- set_fact:
- secret_id: "{{ output.secret_id }}"
-
- - name: Inspect secret
- command: "docker secret inspect {{ secret_id }}"
- register: inspect
-
- - debug: var=inspect
-
- - name: assert secret creation succeeded
- assert:
- that:
- - "'db_password' in inspect.stdout"
- - "'ansible_key' in inspect.stdout"
-
- - name: Create secret again
- docker_secret:
- name: db_password
- data: opensesame!
- state: present
- register: output
-
- - name: assert create secret is idempotent
- assert:
- that:
- - not output.changed
-
- - name: Create secret again (base64)
- docker_secret:
- name: db_password
- data: b3BlbnNlc2FtZSE=
- data_is_b64: true
- state: present
- register: output
-
- - name: assert create secret (base64) is idempotent
- assert:
- that:
- - not output.changed
-
- - name: Update secret
- docker_secret:
- name: db_password
- data: newpassword!
- state: present
- register: output
-
- - name: assert secret was updated
- assert:
- that:
- - output.changed
- - output.secret_id != secret_id
-
- - name: Remove secret
- docker_secret:
- name: db_password
- state: absent
-
- - name: Check that secret is removed
- command: "docker secret inspect {{ secret_id }}"
- register: output
- ignore_errors: yes
-
- - name: assert secret was removed
- assert:
- that:
- - output.failed
-
- always:
- - name: Remove Swarm cluster
- docker_swarm:
- state: absent
- force: true
diff --git a/test/integration/targets/docker_stack/aliases b/test/integration/targets/docker_stack/aliases
deleted file mode 100644
index af1a7950f9..0000000000
--- a/test/integration/targets/docker_stack/aliases
+++ /dev/null
@@ -1,8 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system.
diff --git a/test/integration/targets/docker_stack/files/stack_compose_base.yml b/test/integration/targets/docker_stack/files/stack_compose_base.yml
deleted file mode 100644
index 4a3e7963b4..0000000000
--- a/test/integration/targets/docker_stack/files/stack_compose_base.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-version: '3'
-services:
- busybox:
- image: busybox:latest
- command: sleep 3600
diff --git a/test/integration/targets/docker_stack/files/stack_compose_overrides.yml b/test/integration/targets/docker_stack/files/stack_compose_overrides.yml
deleted file mode 100644
index 1b81c71b30..0000000000
--- a/test/integration/targets/docker_stack/files/stack_compose_overrides.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-version: '3'
-services:
- busybox:
- environment:
- envvar: value
diff --git a/test/integration/targets/docker_stack/meta/main.yml b/test/integration/targets/docker_stack/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_stack/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_stack/tasks/main.yml b/test/integration/targets/docker_stack/tasks/main.yml
deleted file mode 100644
index 9f3e16e632..0000000000
--- a/test/integration/targets/docker_stack/tasks/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-- include_tasks: test_stack.yml
- when: docker_api_version is version('1.25', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_stack tests!"
- when: not(docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_stack/tasks/test_stack.yml b/test/integration/targets/docker_stack/tasks/test_stack.yml
deleted file mode 100644
index 742c87e4c9..0000000000
--- a/test/integration/targets/docker_stack/tasks/test_stack.yml
+++ /dev/null
@@ -1,113 +0,0 @@
----
-- block:
- - name: Make sure we're not already using Docker swarm
- docker_swarm:
- state: absent
- force: true
-
- - name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address}}"
-
- - name: install docker_stack python requirements
- pip:
- name: jsondiff,pyyaml
-
- - name: Create a stack without name
- register: output
- docker_stack:
- state: present
- ignore_errors: yes
-
- - name: assert failure when name not set
- assert:
- that:
- - output is failed
- - 'output.msg == "missing required arguments: name"'
-
- - name: Create a stack without compose
- register: output
- docker_stack:
- name: test_stack
- ignore_errors: yes
-
- - name: assert failure when compose not set
- assert:
- that:
- - output is failed
- - 'output.msg == "compose parameter must be a list containing at least one element"'
-
- - name: Ensure stack is absent
- register: output
- docker_stack:
- state: absent
- name: test_stack
- absent_retries: 30
-
- - name: Copy compose files
- copy:
- src: "{{item}}"
- dest: "{{output_dir}}/"
- with_items:
- - stack_compose_base.yml
- - stack_compose_overrides.yml
-
- - name: Create stack with compose file
- register: output
- docker_stack:
- state: present
- name: test_stack
- compose:
- - "{{output_dir}}/stack_compose_base.yml"
-
- - name: assert test_stack changed on stack creation with compose file
- assert:
- that:
- - output is changed
-
- # FIXME: updating the stack prevents leaving the swarm on Shippable
- #- name: Update stack with YAML
- # register: output
- # docker_stack:
- # state: present
- # name: test_stack
- # compose:
- # - "{{stack_compose_base}}"
- # - "{{stack_compose_overrides}}"
- #
- #- name: assert test_stack correctly changed on update with yaml
- # assert:
- # that:
- # - output is changed
- # - output.stack_spec_diff == stack_update_expected_diff
-
- - name: Delete stack
- register: output
- docker_stack:
- state: absent
- name: test_stack
- absent_retries: 30
-
- - name: assert delete of existing stack returns changed
- assert:
- that:
- - output is changed
-
- - name: Delete stack again
- register: output
- docker_stack:
- state: absent
- name: test_stack
- absent_retries: 30
-
- - name: assert state=absent idempotency
- assert:
- that:
- - output is not changed
-
- always:
- - name: Remove a Swarm cluster
- docker_swarm:
- state: absent
- force: true
diff --git a/test/integration/targets/docker_stack/vars/main.yml b/test/integration/targets/docker_stack/vars/main.yml
deleted file mode 100644
index 0872f23784..0000000000
--- a/test/integration/targets/docker_stack/vars/main.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-stack_compose_base:
- version: '3'
- services:
- busybox:
- image: busybox:latest
- command: sleep 3600
-
-stack_compose_overrides:
- version: '3'
- services:
- busybox:
- environment:
- envvar: value
-
-stack_update_expected_diff: '{"test_stack_busybox": {"TaskTemplate": {"ContainerSpec": {"Env": ["envvar=value"]}}}}'
diff --git a/test/integration/targets/docker_swarm/aliases b/test/integration/targets/docker_swarm/aliases
deleted file mode 100644
index 917268c224..0000000000
--- a/test/integration/targets/docker_swarm/aliases
+++ /dev/null
@@ -1,12 +0,0 @@
-shippable/posix/group2
-disabled # See: https://github.com/ansible/ansible/issues/61815
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system. On VMs, we restart docker daemon
- # after finishing the tests to minimize potential effects
- # on other tests.
-needs/root
diff --git a/test/integration/targets/docker_swarm/meta/main.yml b/test/integration/targets/docker_swarm/meta/main.yml
deleted file mode 100644
index 078660a8ab..0000000000
--- a/test/integration/targets/docker_swarm/meta/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-dependencies:
- - setup_docker
- - setup_openssl
diff --git a/test/integration/targets/docker_swarm/tasks/cleanup.yml b/test/integration/targets/docker_swarm/tasks/cleanup.yml
deleted file mode 100644
index 3e19bfcdb3..0000000000
--- a/test/integration/targets/docker_swarm/tasks/cleanup.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-- name: CLEANUP | Leave Docker Swarm
- docker_swarm:
- state: absent
- force: true
- ignore_errors: yes
- register: leave_swarm
-
-- name: CLEANUP | Kill Docker and cleanup
- when: leave_swarm is failed
- block:
- - name: CLEANUP | Kill docker daemon
- command: systemctl kill -s 9 docker
- become: yes
-
- - name: CLEANUP | Clear out /var/lib/docker
- shell: rm -rf /var/lib/docker/*
- args:
- warn: no
-
- - name: CLEANUP | Start docker daemon
- service:
- name: docker
- state: started
- become: yes
-
- - name: CLEANUP | Wait for docker daemon to be fully started
- command: docker ps
- register: result
- until: result is success
- retries: 10
-
- - name: CLEANUP | Leave Docker Swarm
- docker_swarm:
- state: absent
- force: true
diff --git a/test/integration/targets/docker_swarm/tasks/main.yml b/test/integration/targets/docker_swarm/tasks/main.yml
deleted file mode 100644
index 743d63ab23..0000000000
--- a/test/integration/targets/docker_swarm/tasks/main.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-- name: Run Docker Swarm tests
- when:
- - docker_py_version is version('1.10.0', '>=')
- - docker_api_version is version('1.25', '>=')
-
- block:
- - include_tasks: "{{ item }}"
- with_fileglob:
- - 'tests/*.yml'
-
- always:
- - import_tasks: cleanup.yml
-
-- fail:
- msg: "Too old docker / docker-py version to run docker_swarm tests!"
- when:
- - not(docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.25', '>='))
- - (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_swarm/tasks/run-test.yml b/test/integration/targets/docker_swarm/tasks/run-test.yml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/docker_swarm/tasks/run-test.yml
+++ /dev/null
diff --git a/test/integration/targets/docker_swarm/tasks/tests/basic.yml b/test/integration/targets/docker_swarm/tasks/tests/basic.yml
deleted file mode 100644
index d19532d468..0000000000
--- a/test/integration/targets/docker_swarm/tasks/tests/basic.yml
+++ /dev/null
@@ -1,158 +0,0 @@
-- debug:
- msg: Running tests/basic.yml
-
-####################################################################
-## Errors ##########################################################
-####################################################################
-- name: Test parameters with state=join
- docker_swarm:
- state: join
- ignore_errors: yes
- register: output
-
-- name: assert failure when called with state=join and no advertise_addr,remote_addrs,join_token
- assert:
- that:
- - 'output.failed'
- - 'output.msg == "state is join but all of the following are missing: advertise_addr, remote_addrs, join_token"'
-
-- name: Test parameters with state=remove
- docker_swarm:
- state: remove
- ignore_errors: yes
- register: output
-
-- name: assert failure when called with state=remove and no node_id
- assert:
- that:
- - 'output.failed'
- - 'output.msg == "state is remove but all of the following are missing: node_id"'
-
-####################################################################
-## Creation ########################################################
-####################################################################
-
-- name: Create a Swarm cluster (check mode)
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- diff: yes
- register: output_2
-
-- name: Create a Swarm cluster (idempotent)
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- diff: yes
- register: output_3
-
-- name: Create a Swarm cluster (idempotent, check mode)
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: Create a Swarm cluster (force re-create)
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- force: yes
- diff: yes
- register: output_5
-
-- name: Create a Swarm cluster (force re-create, check mode)
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- force: yes
- check_mode: yes
- diff: yes
- register: output_6
-
-- name: assert changed when create a new swarm cluster
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] | regex_search("New Swarm cluster created: ")'
- - 'output_2.swarm_facts.JoinTokens.Manager'
- - 'output_2.swarm_facts.JoinTokens.Worker'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
-
-####################################################################
-## Removal #########################################################
-####################################################################
-
-- name: Remove a Swarm cluster (check mode)
- docker_swarm:
- state: absent
- force: true
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: Remove a Swarm cluster
- docker_swarm:
- state: absent
- force: true
- diff: yes
- register: output_2
-
-- name: Remove a Swarm cluster (idempotent)
- docker_swarm:
- state: absent
- force: true
- diff: yes
- register: output_3
-
-- name: Remove a Swarm cluster (idempotent, check mode)
- docker_swarm:
- state: absent
- force: true
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: assert changed when remove a swarm cluster
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Node has left the swarm cluster"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
-
-- include_tasks: cleanup.yml
diff --git a/test/integration/targets/docker_swarm/tasks/tests/options-ca.yml b/test/integration/targets/docker_swarm/tasks/tests/options-ca.yml
deleted file mode 100644
index 7091e16000..0000000000
--- a/test/integration/targets/docker_swarm/tasks/tests/options-ca.yml
+++ /dev/null
@@ -1,159 +0,0 @@
-- debug:
- msg: Running tests/options-ca.yml
-
-- name: options-ca
- when: pyopenssl_version.stdout is version('0.15', '>=') or
- cryptography_version.stdout is version('1.6', '>=')
- block:
- - name: Generate privatekey
- openssl_privatekey:
- path: "{{ output_dir }}/ansible_{{ key }}.key"
- size: 2048
- mode: "0666"
- loop:
- - key1
- - key2
- loop_control:
- loop_var: key
-
- - name: Generate CSR
- openssl_csr:
- path: "{{ output_dir }}/ansible_{{ key }}.csr"
- privatekey_path: "{{ output_dir }}/ansible_{{ key }}.key"
- basic_constraints:
- - "CA:TRUE"
- key_usage:
- - keyCertSign
- loop:
- - key1
- - key2
- loop_control:
- loop_var: key
-
- - name: Generate self-signed certificate
- openssl_certificate:
- path: "{{ output_dir }}/ansible_{{ key }}.pem"
- privatekey_path: "{{ output_dir }}/ansible_{{ key }}.key"
- csr_path: "{{ output_dir }}/ansible_{{ key }}.csr"
- provider: selfsigned
- loop:
- - key1
- - key2
- loop_control:
- loop_var: key
-
- ###################################################################
- ## signing_ca_cert and signing_ca_key #############################
- ###################################################################
- - name: signing_ca_cert and signing_ca_key (check mode)
- docker_swarm:
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- state: present
- signing_ca_cert: "{{ lookup('file', output_dir ~ '/ansible_key1.pem') }}"
- signing_ca_key: "{{ lookup('file', output_dir ~ '/ansible_key1.key') }}"
- timeout: 120
- check_mode: yes
- diff: yes
- register: output_1
- ignore_errors: yes
-
- - name: signing_ca_cert and signing_ca_key
- docker_swarm:
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- state: present
- signing_ca_cert: "{{ lookup('file', output_dir ~ '/ansible_key1.pem') }}"
- signing_ca_key: "{{ lookup('file', output_dir ~ '/ansible_key1.key') }}"
- timeout: 120
- diff: yes
- register: output_2
- ignore_errors: yes
-
- - name: Private key
- debug: msg="{{ lookup('file', output_dir ~ '/ansible_key1.key') }}"
- - name: Cert
- debug: msg="{{ lookup('file', output_dir ~ '/ansible_key1.pem') }}"
- - docker_swarm_info:
- register: output
- ignore_errors: yes
- - debug: var=output
-
- # Idempotence for CA cert and key don't work yet! FIXME
-
- #- name: signing_ca_cert and signing_ca_key (idempotent)
- # docker_swarm:
- # state: present
- # signing_ca_cert: "{{ lookup('file', output_dir ~ '/ansible_key1.pem') }}"
- # signing_ca_key: "{{ lookup('file', output_dir ~ '/ansible_key1.key') }}"
- # timeout: 120
- # diff: yes
- # register: output_3
- # ignore_errors: yes
-
- #- name: signing_ca_cert and signing_ca_key (idempotent, check mode)
- # docker_swarm:
- # state: present
- # signing_ca_cert: "{{ lookup('file', output_dir ~ '/ansible_key1.pem') }}"
- # signing_ca_key: "{{ lookup('file', output_dir ~ '/ansible_key1.key') }}"
- # timeout: 120
- # check_mode: yes
- # diff: yes
- # register: output_4
- # ignore_errors: yes
-
- - name: signing_ca_cert and signing_ca_key (change, check mode)
- docker_swarm:
- state: present
- signing_ca_cert: "{{ lookup('file', output_dir ~ '/ansible_key2.pem') }}"
- signing_ca_key: "{{ lookup('file', output_dir ~ '/ansible_key2.key') }}"
- timeout: 120
- check_mode: yes
- diff: yes
- register: output_5
- ignore_errors: yes
-
- - name: signing_ca_cert and signing_ca_key (change)
- docker_swarm:
- state: present
- signing_ca_cert: "{{ lookup('file', output_dir ~ '/ansible_key2.pem') }}"
- signing_ca_key: "{{ lookup('file', output_dir ~ '/ansible_key2.key') }}"
- timeout: 120
- diff: yes
- register: output_6
- ignore_errors: yes
-
- - name: assert signing_ca_cert and signing_ca_key
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] | regex_search("New Swarm cluster created: ")'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] | regex_search("New Swarm cluster created: ")'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- #- 'output_3 is not changed'
- #- 'output_3.actions[0] == "No modification"'
- #- 'output_3.diff.before is defined'
- #- 'output_3.diff.after is defined'
- #- 'output_4 is not changed'
- #- 'output_4.actions[0] == "No modification"'
- #- 'output_4.diff.before is defined'
- #- 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
- when: docker_py_version is version('2.6.0', '>=')
- - assert:
- that:
- - output_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in output_1.msg"
- - "'Minimum version required is 2.6.0 ' in output_1.msg"
- when: docker_py_version is version('2.6.0', '<')
-
- - include_tasks: cleanup.yml
diff --git a/test/integration/targets/docker_swarm/tasks/tests/options.yml b/test/integration/targets/docker_swarm/tasks/tests/options.yml
deleted file mode 100644
index c23ab3a657..0000000000
--- a/test/integration/targets/docker_swarm/tasks/tests/options.yml
+++ /dev/null
@@ -1,1158 +0,0 @@
-- debug:
- msg: Running tests/options.yml
-
-- name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- name: default
- diff: yes
-
-####################################################################
-## autolock_managers ###############################################
-####################################################################
-
-- name: autolock_managers (check mode)
- docker_swarm:
- state: present
- autolock_managers: yes
- check_mode: yes
- diff: yes
- register: output_1
- ignore_errors: yes
-
-- name: autolock_managers
- docker_swarm:
- state: present
- autolock_managers: yes
- diff: yes
- register: output_2
- ignore_errors: yes
-
-- name: autolock_managers (idempotent)
- docker_swarm:
- state: present
- autolock_managers: yes
- diff: yes
- register: output_3
- ignore_errors: yes
-
-- name: autolock_managers (idempotent, check mode)
- docker_swarm:
- state: present
- autolock_managers: yes
- check_mode: yes
- diff: yes
- register: output_4
- ignore_errors: yes
-
-- name: autolock_managers (change, check mode)
- docker_swarm:
- state: present
- autolock_managers: no
- check_mode: yes
- diff: yes
- register: output_5
- ignore_errors: yes
-
-- name: autolock_managers (change)
- docker_swarm:
- state: present
- autolock_managers: no
- diff: yes
- register: output_6
- ignore_errors: yes
-
-- name: autolock_managers (force new swarm)
- docker_swarm:
- state: present
- force: yes
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- autolock_managers: yes
- diff: yes
- register: output_7
- ignore_errors: yes
-
-- name: assert autolock_managers changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
- when: docker_py_version is version('2.6.0', '>=')
-
-- name: assert UnlockKey in swarm_facts
- assert:
- that:
- - 'output_2.swarm_facts.UnlockKey'
- - 'output_3.swarm_facts.UnlockKey is none'
- - 'output_6.swarm_facts.UnlockKey is none'
- - 'output_7.swarm_facts.UnlockKey'
- when: docker_py_version is version('2.7.0', '>=')
-
-- assert:
- that:
- - output_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in output_1.msg"
- - "'Minimum version required is 2.6.0 ' in output_1.msg"
- when: docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## ca_force_rotate #################################################
-####################################################################
-
-- name: ca_force_rotate (check mode)
- docker_swarm:
- state: present
- ca_force_rotate: 1
- check_mode: yes
- diff: yes
- register: output_1
- ignore_errors: yes
-
-- name: ca_force_rotate
- docker_swarm:
- state: present
- ca_force_rotate: 1
- diff: yes
- register: output_2
- ignore_errors: yes
-
-- name: ca_force_rotate (idempotent)
- docker_swarm:
- state: present
- ca_force_rotate: 1
- diff: yes
- register: output_3
- ignore_errors: yes
-
-- name: ca_force_rotate (idempotent, check mode)
- docker_swarm:
- state: present
- ca_force_rotate: 1
- check_mode: yes
- diff: yes
- register: output_4
- ignore_errors: yes
-
-- name: ca_force_rotate (change, check mode)
- docker_swarm:
- state: present
- ca_force_rotate: 0
- check_mode: yes
- diff: yes
- register: output_5
- ignore_errors: yes
-
-- name: ca_force_rotate (change)
- docker_swarm:
- state: present
- ca_force_rotate: 0
- diff: yes
- register: output_6
- ignore_errors: yes
-
-- name: assert ca_force_rotate changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
- when: docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - output_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in output_1.msg"
- - "'Minimum version required is 2.6.0 ' in output_1.msg"
- when: docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## dispatcher_heartbeat_period #####################################
-####################################################################
-
-- name: dispatcher_heartbeat_period (check mode)
- docker_swarm:
- state: present
- dispatcher_heartbeat_period: 10
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: dispatcher_heartbeat_period
- docker_swarm:
- state: present
- dispatcher_heartbeat_period: 10
- diff: yes
- register: output_2
-
-- name: dispatcher_heartbeat_period (idempotent)
- docker_swarm:
- state: present
- dispatcher_heartbeat_period: 10
- diff: yes
- register: output_3
-
-- name: dispatcher_heartbeat_period (idempotent, check mode)
- docker_swarm:
- state: present
- dispatcher_heartbeat_period: 10
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: dispatcher_heartbeat_period (change, check mode)
- docker_swarm:
- state: present
- dispatcher_heartbeat_period: 23
- check_mode: yes
- diff: yes
- register: output_5
-
-- name: dispatcher_heartbeat_period (change)
- docker_swarm:
- state: present
- dispatcher_heartbeat_period: 23
- diff: yes
- register: output_6
-
-- name: assert dispatcher_heartbeat_period changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
-
-####################################################################
-## election_tick ###################################################
-####################################################################
-
-- name: election_tick (check mode)
- docker_swarm:
- state: present
- election_tick: 20
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: election_tick
- docker_swarm:
- state: present
- election_tick: 20
- diff: yes
- register: output_2
-
-- name: election_tick (idempotent)
- docker_swarm:
- state: present
- election_tick: 20
- diff: yes
- register: output_3
-
-- name: election_tick (idempotent, check mode)
- docker_swarm:
- state: present
- election_tick: 20
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: election_tick (change, check mode)
- docker_swarm:
- state: present
- election_tick: 5
- check_mode: yes
- diff: yes
- register: output_5
-
-- name: election_tick (change)
- docker_swarm:
- state: present
- election_tick: 5
- diff: yes
- register: output_6
-
-- name: assert election_tick changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
-
-####################################################################
-## heartbeat_tick ##################################################
-####################################################################
-
-- name: heartbeat_tick (check mode)
- docker_swarm:
- state: present
- heartbeat_tick: 2
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: heartbeat_tick
- docker_swarm:
- state: present
- heartbeat_tick: 2
- diff: yes
- register: output_2
-
-- name: heartbeat_tick (idempotent)
- docker_swarm:
- state: present
- heartbeat_tick: 2
- diff: yes
- register: output_3
-
-- name: heartbeat_tick (idempotent, check mode)
- docker_swarm:
- state: present
- heartbeat_tick: 2
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: heartbeat_tick (change, check mode)
- docker_swarm:
- state: present
- heartbeat_tick: 3
- check_mode: yes
- diff: yes
- register: output_5
-
-- name: heartbeat_tick (change)
- docker_swarm:
- state: present
- heartbeat_tick: 3
- diff: yes
- register: output_6
-
-- name: assert heartbeat_tick changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
-
-####################################################################
-## keep_old_snapshots ##############################################
-####################################################################
-- name: keep_old_snapshots (check mode)
- docker_swarm:
- state: present
- keep_old_snapshots: 1
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: keep_old_snapshots
- docker_swarm:
- state: present
- keep_old_snapshots: 1
- diff: yes
- register: output_2
-
-- name: keep_old_snapshots (idempotent)
- docker_swarm:
- state: present
- keep_old_snapshots: 1
- diff: yes
- register: output_3
-
-- name: keep_old_snapshots (idempotent, check mode)
- docker_swarm:
- state: present
- keep_old_snapshots: 1
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: keep_old_snapshots (change, check mode)
- docker_swarm:
- state: present
- keep_old_snapshots: 2
- check_mode: yes
- diff: yes
- register: output_5
-
-- name: keep_old_snapshots (change)
- docker_swarm:
- state: present
- keep_old_snapshots: 2
- diff: yes
- register: output_6
-
-- name: assert keep_old_snapshots changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
-
-####################################################################
-## labels ##########################################################
-####################################################################
-- name: labels (check mode)
- docker_swarm:
- state: present
- labels:
- a: v1
- b: v2
- check_mode: yes
- diff: yes
- register: output_1
- ignore_errors: yes
-
-- name: labels
- docker_swarm:
- state: present
- labels:
- a: v1
- b: v2
- diff: yes
- register: output_2
- ignore_errors: yes
-
-- name: labels (idempotent)
- docker_swarm:
- state: present
- labels:
- a: v1
- b: v2
- diff: yes
- register: output_3
- ignore_errors: yes
-
-- name: labels (idempotent, check mode)
- docker_swarm:
- state: present
- labels:
- a: v1
- b: v2
- check_mode: yes
- diff: yes
- register: output_4
- ignore_errors: yes
-
-- name: labels (change, check mode)
- docker_swarm:
- state: present
- labels:
- a: v1
- c: v3
- check_mode: yes
- diff: yes
- register: output_5
- ignore_errors: yes
-
-- name: labels (change)
- docker_swarm:
- state: present
- labels:
- a: v1
- c: v3
- diff: yes
- register: output_6
- ignore_errors: yes
-
-- name: labels (not specifying, check mode)
- docker_swarm:
- state: present
- check_mode: yes
- diff: yes
- register: output_7
- ignore_errors: yes
-
-- name: labels (not specifying)
- docker_swarm:
- state: present
- diff: yes
- register: output_8
- ignore_errors: yes
-
-- name: labels (idempotency, check that labels are still there)
- docker_swarm:
- state: present
- labels:
- a: v1
- c: v3
- diff: yes
- register: output_9
- ignore_errors: yes
-
-- name: labels (empty, check mode)
- docker_swarm:
- state: present
- labels: {}
- check_mode: yes
- diff: yes
- register: output_10
- ignore_errors: yes
-
-- name: labels (empty)
- docker_swarm:
- state: present
- labels: {}
- diff: yes
- register: output_11
- ignore_errors: yes
-
-- name: labels (empty, idempotent, check mode)
- docker_swarm:
- state: present
- labels: {}
- check_mode: yes
- diff: yes
- register: output_12
- ignore_errors: yes
-
-- name: labels (empty, idempotent)
- docker_swarm:
- state: present
- labels: {}
- diff: yes
- register: output_13
- ignore_errors: yes
-
-- name: assert labels changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
- - 'output_7 is not changed'
- - 'output_7.actions[0] == "No modification"'
- - 'output_7.diff.before is defined'
- - 'output_7.diff.after is defined'
- - 'output_8 is not changed'
- - 'output_8.actions[0] == "No modification"'
- - 'output_8.diff.before is defined'
- - 'output_8.diff.after is defined'
- - 'output_9 is not changed'
- - 'output_9.actions[0] == "No modification"'
- - 'output_9.diff.before is defined'
- - 'output_9.diff.after is defined'
- - 'output_10 is changed'
- - 'output_10.actions[0] == "Swarm cluster updated"'
- - 'output_10.diff.before is defined'
- - 'output_10.diff.after is defined'
- - 'output_11 is changed'
- - 'output_11.actions[0] == "Swarm cluster updated"'
- - 'output_11.diff.before is defined'
- - 'output_11.diff.after is defined'
- - 'output_12 is not changed'
- - 'output_12.actions[0] == "No modification"'
- - 'output_12.diff.before is defined'
- - 'output_12.diff.after is defined'
- - 'output_13 is not changed'
- - 'output_13.actions[0] == "No modification"'
- - 'output_13.diff.before is defined'
- - 'output_13.diff.after is defined'
- when: docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - output_1 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in output_1.msg"
- - "'Minimum version required is 2.6.0 ' in output_1.msg"
- when: docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## log_entries_for_slow_followers ##################################
-####################################################################
-- name: log_entries_for_slow_followers (check mode)
- docker_swarm:
- state: present
- log_entries_for_slow_followers: 42
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: log_entries_for_slow_followers
- docker_swarm:
- state: present
- log_entries_for_slow_followers: 42
- diff: yes
- register: output_2
-
-- name: log_entries_for_slow_followers (idempotent)
- docker_swarm:
- state: present
- log_entries_for_slow_followers: 42
- diff: yes
- register: output_3
-
-- name: log_entries_for_slow_followers (idempotent, check mode)
- docker_swarm:
- state: present
- log_entries_for_slow_followers: 42
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: log_entries_for_slow_followers (change, check mode)
- docker_swarm:
- state: present
- log_entries_for_slow_followers: 23
- check_mode: yes
- diff: yes
- register: output_5
-
-- name: log_entries_for_slow_followers (change)
- docker_swarm:
- state: present
- log_entries_for_slow_followers: 23
- diff: yes
- register: output_6
-
-- name: assert log_entries_for_slow_followers changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
-
-####################################################################
-## name ############################################################
-####################################################################
-- name: name (idempotent, check mode)
- docker_swarm:
- state: present
- name: default
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: name (idempotent)
- docker_swarm:
- state: present
- name: default
- diff: yes
- register: output_2
-
-# The name 'default' is hardcoded in docker swarm. Trying to change
-# it causes a failure. This might change in the future, so we also
-# accept a change for this test.
-- name: name (change, should fail)
- docker_swarm:
- state: present
- name: foobar
- diff: yes
- register: output_3
- ignore_errors: yes
-
-- name: assert name changes
- assert:
- that:
- - 'output_1 is not changed'
- - 'output_1.actions[0] == "No modification"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is not changed'
- - 'output_2.actions[0] == "No modification"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is failed or output_3 is changed'
-
-####################################################################
-## node_cert_expiry ################################################
-####################################################################
-- name: node_cert_expiry (check mode)
- docker_swarm:
- state: present
- node_cert_expiry: 7896000000000000
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: node_cert_expiry
- docker_swarm:
- state: present
- node_cert_expiry: 7896000000000000
- diff: yes
- register: output_2
-
-- name: node_cert_expiry (idempotent)
- docker_swarm:
- state: present
- node_cert_expiry: 7896000000000000
- diff: yes
- register: output_3
-
-- name: node_cert_expiry (idempotent, check mode)
- docker_swarm:
- state: present
- node_cert_expiry: 7896000000000000
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: node_cert_expiry (change, check mode)
- docker_swarm:
- state: present
- node_cert_expiry: 8766000000000000
- check_mode: yes
- diff: yes
- register: output_5
-
-- name: node_cert_expiry (change)
- docker_swarm:
- state: present
- node_cert_expiry: 8766000000000000
- diff: yes
- register: output_6
-
-- name: assert node_cert_expiry changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
-
-####################################################################
-## rotate_manager_token ############################################
-####################################################################
-- name: rotate_manager_token (true, check mode)
- docker_swarm:
- state: present
- rotate_manager_token: yes
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: rotate_manager_token (true)
- docker_swarm:
- state: present
- rotate_manager_token: yes
- diff: yes
- register: output_2
-
-- name: rotate_manager_token (false, idempotent)
- docker_swarm:
- state: present
- rotate_manager_token: no
- diff: yes
- register: output_3
-
-- name: rotate_manager_token (false, check mode)
- docker_swarm:
- state: present
- rotate_manager_token: no
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: assert rotate_manager_token changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
-
-####################################################################
-## rotate_worker_token #############################################
-####################################################################
-- name: rotate_worker_token (true, check mode)
- docker_swarm:
- state: present
- rotate_worker_token: yes
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: rotate_worker_token (true)
- docker_swarm:
- state: present
- rotate_worker_token: yes
- diff: yes
- register: output_2
-
-- name: rotate_worker_token (false, idempotent)
- docker_swarm:
- state: present
- rotate_worker_token: no
- diff: yes
- register: output_3
-
-- name: rotate_worker_token (false, check mode)
- docker_swarm:
- state: present
- rotate_worker_token: no
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: assert rotate_worker_token changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
-
-####################################################################
-## snapshot_interval ###############################################
-####################################################################
-- name: snapshot_interval (check mode)
- docker_swarm:
- state: present
- snapshot_interval: 12345
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: snapshot_interval
- docker_swarm:
- state: present
- snapshot_interval: 12345
- diff: yes
- register: output_2
-
-- name: snapshot_interval (idempotent)
- docker_swarm:
- state: present
- snapshot_interval: 12345
- diff: yes
- register: output_3
-
-- name: snapshot_interval (idempotent, check mode)
- docker_swarm:
- state: present
- snapshot_interval: 12345
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: snapshot_interval (change, check mode)
- docker_swarm:
- state: present
- snapshot_interval: 54321
- check_mode: yes
- diff: yes
- register: output_5
-
-- name: snapshot_interval (change)
- docker_swarm:
- state: present
- snapshot_interval: 54321
- diff: yes
- register: output_6
-
-- name: assert snapshot_interval changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
-
-####################################################################
-## task_history_retention_limit ####################################
-####################################################################
-- name: task_history_retention_limit (check mode)
- docker_swarm:
- state: present
- task_history_retention_limit: 23
- check_mode: yes
- diff: yes
- register: output_1
-
-- name: task_history_retention_limit
- docker_swarm:
- state: present
- task_history_retention_limit: 23
- diff: yes
- register: output_2
-
-- name: task_history_retention_limit (idempotent)
- docker_swarm:
- state: present
- task_history_retention_limit: 23
- diff: yes
- register: output_3
-
-- name: task_history_retention_limit (idempotent, check mode)
- docker_swarm:
- state: present
- task_history_retention_limit: 23
- check_mode: yes
- diff: yes
- register: output_4
-
-- name: task_history_retention_limit (change, check mode)
- docker_swarm:
- state: present
- task_history_retention_limit: 7
- check_mode: yes
- diff: yes
- register: output_5
-
-- name: task_history_retention_limit (change)
- docker_swarm:
- state: present
- task_history_retention_limit: 7
- diff: yes
- register: output_6
-
-- name: assert task_history_retention_limit changes
- assert:
- that:
- - 'output_1 is changed'
- - 'output_1.actions[0] == "Swarm cluster updated"'
- - 'output_1.diff.before is defined'
- - 'output_1.diff.after is defined'
- - 'output_2 is changed'
- - 'output_2.actions[0] == "Swarm cluster updated"'
- - 'output_2.diff.before is defined'
- - 'output_2.diff.after is defined'
- - 'output_3 is not changed'
- - 'output_3.actions[0] == "No modification"'
- - 'output_3.diff.before is defined'
- - 'output_3.diff.after is defined'
- - 'output_4 is not changed'
- - 'output_4.actions[0] == "No modification"'
- - 'output_4.diff.before is defined'
- - 'output_4.diff.after is defined'
- - 'output_5 is changed'
- - 'output_5.actions[0] == "Swarm cluster updated"'
- - 'output_5.diff.before is defined'
- - 'output_5.diff.after is defined'
- - 'output_6 is changed'
- - 'output_6.actions[0] == "Swarm cluster updated"'
- - 'output_6.diff.before is defined'
- - 'output_6.diff.after is defined'
-
-- include_tasks: cleanup.yml
diff --git a/test/integration/targets/docker_swarm/tasks/tests/remote-addr-pool.yml b/test/integration/targets/docker_swarm/tasks/tests/remote-addr-pool.yml
deleted file mode 100644
index a900953e01..0000000000
--- a/test/integration/targets/docker_swarm/tasks/tests/remote-addr-pool.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-- debug:
- msg: Running tests/remote-addr-pool.yml
-
-####################################################################
-## default_addr_pool ###############################################
-####################################################################
-
-- name: default_addr_pool
- docker_swarm:
- state: present
- default_addr_pool:
- - "2.0.0.0/16"
- diff: yes
- register: output_1
- ignore_errors: yes
-
-- name: default_addr_pool (idempotent)
- docker_swarm:
- state: present
- default_addr_pool:
- - "2.0.0.0/16"
- diff: yes
- register: output_2
- ignore_errors: yes
-
-- name: assert default_addr_pool
- assert:
- that:
- - 'output_1 is changed'
- - 'output_2 is not changed'
- - 'output_2.swarm_facts.DefaultAddrPool == ["2.0.0.0/16"]'
- when:
- - docker_api_version is version('1.39', '>=')
- - docker_py_version is version('4.0.0', '>=')
-
-- name: assert default_addr_pool failed when unsupported
- assert:
- that:
- - 'output_1 is failed'
- - "'Minimum version required' in output_1.msg"
- when: docker_api_version is version('1.39', '<') or
- docker_py_version is version('4.0.0', '<')
-
-####################################################################
-## subnet_size #####################################################
-####################################################################
-- name: Leave swarm
- docker_swarm:
- state: absent
- force: yes
- default_addr_pool:
- - "2.0.0.0/16"
- diff: yes
-
-- name: subnet_size
- docker_swarm:
- state: present
- force: yes
- subnet_size: 26
- diff: yes
- register: output_1
- ignore_errors: yes
-
-- name: subnet_size (idempotent)
- docker_swarm:
- state: present
- subnet_size: 26
- diff: yes
- register: output_2
- ignore_errors: yes
-
-- name: assert subnet_size
- assert:
- that:
- - 'output_1 is changed'
- - 'output_2 is not changed'
- - 'output_2.swarm_facts.SubnetSize == 26'
- when:
- - docker_api_version is version('1.39', '>=')
- - docker_py_version is version('4.0.0', '>=')
-
-- name: assert subnet_size failed when unsupported
- assert:
- that:
- - output_1 is failed
- - "'Minimum version required' in output_1.msg"
- when: docker_api_version is version('1.39', '<') or
- docker_py_version is version('4.0.0', '<')
-
-- include_tasks: cleanup.yml
diff --git a/test/integration/targets/docker_swarm_info/aliases b/test/integration/targets/docker_swarm_info/aliases
deleted file mode 100644
index 620dd25f5e..0000000000
--- a/test/integration/targets/docker_swarm_info/aliases
+++ /dev/null
@@ -1,8 +0,0 @@
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system.
diff --git a/test/integration/targets/docker_swarm_info/meta/main.yml b/test/integration/targets/docker_swarm_info/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_swarm_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_swarm_info/tasks/main.yml b/test/integration/targets/docker_swarm_info/tasks/main.yml
deleted file mode 100644
index 83e9d5eb22..0000000000
--- a/test/integration/targets/docker_swarm_info/tasks/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-- include_tasks: test_swarm_info.yml
- # Maximum of 1.24 (docker API version for docker_swarm_info) and 1.25 (docker API version for docker_swarm) is 1.25
- when: docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.25', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_swarm_info tests!"
- when: not(docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml b/test/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml
deleted file mode 100644
index 349d7cc515..0000000000
--- a/test/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml
+++ /dev/null
@@ -1,190 +0,0 @@
----
-- block:
- - name: Make sure we're not already using Docker swarm
- docker_swarm:
- state: absent
- force: true
-
- - name: Try to get docker_swarm_info when docker is not running in swarm mode
- docker_swarm_info:
- ignore_errors: yes
- register: output
-
- - name: assert failure when called when swarm is not in use or not run on mamager node
- assert:
- that:
- - 'output is failed'
- - 'output.msg == "Error running docker swarm module: must run on swarm manager node"'
- - 'output.can_talk_to_docker == true'
- - 'output.docker_swarm_active == false'
- - 'output.docker_swarm_manager == false'
- - 'output.swarm_unlock_key is not defined'
-
- - name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- register: output
-
- - name: assert changed when create a new swarm cluster
- assert:
- that:
- - 'output is changed'
- - 'output.actions[0] | regex_search("New Swarm cluster created: ")'
- - 'output.swarm_facts.JoinTokens.Manager'
- - 'output.swarm_facts.JoinTokens.Worker'
-
- - name: Try to get docker_swarm_info when docker is running in swarm mode and as manager
- docker_swarm_info:
- register: output
-
- - name: assert creding docker swarm facts
- assert:
- that:
- - 'output.swarm_facts.JoinTokens.Manager'
- - 'output.swarm_facts.JoinTokens.Worker'
- - 'output.swarm_facts.ID'
- - 'output.can_talk_to_docker == true'
- - 'output.docker_swarm_active == true'
- - 'output.docker_swarm_manager == true'
- - 'output.swarm_unlock_key is not defined'
-
- - name: Try to get docker_swarm_info and list of nodes when docker is running in swarm mode and as manager
- docker_swarm_info:
- nodes: yes
- register: output
-
- - name: assert reding swarm facts with list of nodes option
- assert:
- that:
- - 'output.swarm_facts.JoinTokens.Manager'
- - 'output.swarm_facts.JoinTokens.Worker'
- - 'output.swarm_facts.ID'
- - 'output.nodes[0].ID is string'
- - 'output.can_talk_to_docker == true'
- - 'output.docker_swarm_active == true'
- - 'output.docker_swarm_manager == true'
- - 'output.swarm_unlock_key is not defined'
-
- - name: Get local docker node name
- set_fact:
- localnodename: "{{ output.nodes[0].Hostname }}"
-
-
- - name: Try to get docker_swarm_info and verbose list of nodes when docker is running in swarm mode and as manager
- docker_swarm_info:
- nodes: yes
- verbose_output: yes
- register: output
-
- - name: assert reading swarm facts with list of nodes and versbose output options
- assert:
- that:
- - 'output.swarm_facts.JoinTokens.Manager'
- - 'output.swarm_facts.JoinTokens.Worker'
- - 'output.swarm_facts.ID'
- - 'output.nodes[0].ID is string'
- - 'output.nodes[0].CreatedAt'
- - 'output.can_talk_to_docker == true'
- - 'output.docker_swarm_active == true'
- - 'output.docker_swarm_manager == true'
- - 'output.swarm_unlock_key is not defined'
-
- - name: Try to get docker_swarm_info and list of nodes with filters providing existing node name
- docker_swarm_info:
- nodes: yes
- nodes_filters:
- name: "{{ localnodename }}"
- register: output
-
- - name: assert reading reading swarm facts and using node filter (random node name)
- assert:
- that:
- - 'output.swarm_facts.JoinTokens.Manager'
- - 'output.swarm_facts.JoinTokens.Worker'
- - 'output.swarm_facts.ID'
- - 'output.nodes | length == 1'
- - 'output.can_talk_to_docker == true'
- - 'output.docker_swarm_active == true'
- - 'output.docker_swarm_manager == true'
- - 'output.swarm_unlock_key is not defined'
-
- - name: Create random name
- set_fact:
- randomnodename: "{{ 'node-%0x' % ((2**32) | random) }}"
-
- - name: Try to get docker_swarm_info and list of nodes with filters providing non-existing random node name
- docker_swarm_info:
- nodes: yes
- nodes_filters:
- name: "{{ randomnodename }}"
- register: output
-
- - name: assert reading reading swarm facts and using node filter (random node name)
- assert:
- that:
- - 'output.swarm_facts.JoinTokens.Manager'
- - 'output.swarm_facts.JoinTokens.Worker'
- - 'output.swarm_facts.ID'
- - 'output.nodes | length == 0'
- - 'output.can_talk_to_docker == true'
- - 'output.docker_swarm_active == true'
- - 'output.docker_swarm_manager == true'
- - 'output.swarm_unlock_key is not defined'
-
- - name: Try to get docker_swarm_info and swarm_unlock_key on non a unlocked swarm
- docker_swarm_info:
- unlock_key: yes
- register: output
- ignore_errors: yes
-
- - name: assert reading swarm facts and non existing swarm unlock key
- assert:
- that:
- - 'output.swarm_unlock_key is none'
- - 'output.can_talk_to_docker == true'
- - 'output.docker_swarm_active == true'
- - 'output.docker_swarm_manager == true'
- when: docker_py_version is version('2.7.0', '>=')
- - assert:
- that:
- - output is failed
- - "('version is ' ~ docker_py_version ~ ' ') in output.msg"
- - "'Minimum version required is 2.7.0 ' in output.msg"
- when: docker_py_version is version('2.7.0', '<')
-
- - name: Update swarm cluster to be locked
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- autolock_managers: true
- register: autolock_managers_update_output
- ignore_errors: yes
-
- - name: Try to get docker_swarm_info and swarm_unlock_key
- docker_swarm_info:
- unlock_key: yes
- register: output
- ignore_errors: yes
-
- - name: assert reading swarm facts and swarm unlock key
- assert:
- that:
- - 'output.swarm_unlock_key is string'
- - 'output.swarm_unlock_key == autolock_managers_update_output.swarm_facts.UnlockKey'
- - 'output.can_talk_to_docker == true'
- - 'output.docker_swarm_active == true'
- - 'output.docker_swarm_manager == true'
- when: docker_py_version is version('2.7.0', '>=')
- - assert:
- that:
- - output is failed
- - "('version is ' ~ docker_py_version ~ ' ') in output.msg"
- - "'Minimum version required is 2.7.0 ' in output.msg"
- when: docker_py_version is version('2.7.0', '<')
-
- always:
- - name: Cleanup
- docker_swarm:
- state: absent
- force: true
diff --git a/test/integration/targets/docker_swarm_service/aliases b/test/integration/targets/docker_swarm_service/aliases
deleted file mode 100644
index a9e6581847..0000000000
--- a/test/integration/targets/docker_swarm_service/aliases
+++ /dev/null
@@ -1,8 +0,0 @@
-shippable/posix/group5
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system.
diff --git a/test/integration/targets/docker_swarm_service/files/env-file-1 b/test/integration/targets/docker_swarm_service/files/env-file-1
deleted file mode 100644
index b15f1b64cf..0000000000
--- a/test/integration/targets/docker_swarm_service/files/env-file-1
+++ /dev/null
@@ -1,2 +0,0 @@
-TEST3=val3
-TEST4=val4
diff --git a/test/integration/targets/docker_swarm_service/files/env-file-2 b/test/integration/targets/docker_swarm_service/files/env-file-2
deleted file mode 100644
index eff99aca79..0000000000
--- a/test/integration/targets/docker_swarm_service/files/env-file-2
+++ /dev/null
@@ -1,2 +0,0 @@
-TEST3=val5
-TEST5=val5
diff --git a/test/integration/targets/docker_swarm_service/meta/main.yml b/test/integration/targets/docker_swarm_service/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_swarm_service/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_swarm_service/tasks/main.yml b/test/integration/targets/docker_swarm_service/tasks/main.yml
deleted file mode 100644
index 86e9fceae4..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/main.yml
+++ /dev/null
@@ -1,75 +0,0 @@
----
-
-# Create random name prefix (for containers, networks, ...)
-- name: Create random name prefix
- set_fact:
- name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
- service_names: []
- network_names: []
- config_names: []
- secret_names: []
- volume_names: []
-
-- debug:
- msg: "Using container name prefix {{ name_prefix }}"
-
-# Run the tests
-- block:
- - name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
-
- - include_tasks: run-test.yml
- with_fileglob:
- - "tests/*.yml"
-
- always:
- - name: Make sure all services are removed
- docker_swarm_service:
- name: "{{ item }}"
- state: absent
- loop: "{{ service_names }}"
- ignore_errors: yes
-
- - name: Make sure all networks are removed
- docker_network:
- name: "{{ item }}"
- state: absent
- force: yes
- loop: "{{ network_names }}"
- ignore_errors: yes
-
- - name: Make sure all configs are removed
- docker_config:
- name: "{{ item }}"
- state: absent
- force: yes
- loop: "{{ config_names }}"
- ignore_errors: yes
-
- - name: Make sure all volumes are removed
- docker_volume:
- name: "{{ item }}"
- state: absent
- loop: "{{ volume_names }}"
- ignore_errors: yes
-
- - name: Make sure all secrets are removed
- docker_secret:
- name: "{{ item }}"
- state: absent
- force: yes
- loop: "{{ secret_names }}"
- ignore_errors: yes
-
- - name: Make sure swarm is removed
- docker_swarm:
- state: absent
- force: yes
- ignore_errors: yes
- # Maximum of 1.24 (docker API version for docker_swarm_service) and 1.25 (docker API version for docker_swarm) is 1.25
- when: docker_py_version is version('2.0.2', '>=') and docker_api_version is version('1.25', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_swarm_service tests!"
- when: not(docker_py_version is version('2.0.2', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_swarm_service/tasks/run-test.yml b/test/integration/targets/docker_swarm_service/tasks/run-test.yml
deleted file mode 100644
index a299937014..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/run-test.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- name: "Loading tasks from {{ item }}"
- include_tasks: "{{ item }}"
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/configs.yml b/test/integration/targets/docker_swarm_service/tasks/tests/configs.yml
deleted file mode 100644
index db474ba0b7..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/configs.yml
+++ /dev/null
@@ -1,413 +0,0 @@
----
-
-- name: Registering container name
- set_fact:
- service_name: "{{ name_prefix ~ '-configs' }}"
- config_name_1: "{{ name_prefix ~ '-configs-1' }}"
- config_name_2: "{{ name_prefix ~ '-configs-2' }}"
-
-- name: Registering container name
- set_fact:
- config_names: "{{ config_names + [config_name_1, config_name_2] }}"
-
-- docker_config:
- name: "{{ config_name_1 }}"
- data: "hello"
- state: present
- register: "config_result_1"
- when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
-
-- docker_config:
- name: "{{ config_name_2 }}"
- data: "test"
- state: present
- register: "config_result_2"
- when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
-
-####################################################################
-## configs #########################################################
-####################################################################
-
-- name: configs
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- filename: "/tmp/{{ config_name_1 }}.txt"
- register: configs_1
- ignore_errors: yes
-
-- name: configs (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_name: "{{ config_name_1 }}"
- filename: "/tmp/{{ config_name_1 }}.txt"
- register: configs_2
- ignore_errors: yes
-
-- name: configs (add)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- filename: "/tmp/{{ config_name_1 }}.txt"
- - config_name: "{{ config_name_2 }}"
- filename: "/tmp/{{ config_name_2 }}.txt"
- register: configs_3
- ignore_errors: yes
-
-- name: configs (add idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_name: "{{ config_name_1 }}"
- filename: "/tmp/{{ config_name_1 }}.txt"
- - config_id: "{{ config_result_2.config_id|default('') }}"
- config_name: "{{ config_name_2 }}"
- filename: "/tmp/{{ config_name_2 }}.txt"
- register: configs_4
- ignore_errors: yes
-
-- name: configs (add idempotency no id)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_name: "{{ config_name_1 }}"
- filename: "/tmp/{{ config_name_1 }}.txt"
- - config_name: "{{ config_name_2 }}"
- filename: "/tmp/{{ config_name_2 }}.txt"
- register: configs_5
- ignore_errors: yes
-
-- name: configs (add idempotency no id and re-ordered)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_name: "{{ config_name_2 }}"
- filename: "/tmp/{{ config_name_2 }}.txt"
- - config_name: "{{ config_name_1 }}"
- filename: "/tmp/{{ config_name_1 }}.txt"
- register: configs_6
- ignore_errors: yes
-
-- name: configs (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs: []
- register: configs_7
- ignore_errors: yes
-
-- name: configs (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs: []
- register: configs_8
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - configs_1 is changed
- - configs_2 is not changed
- - configs_3 is changed
- - configs_4 is not changed
- - configs_5 is not changed
- - configs_6 is not changed
- - configs_7 is changed
- - configs_8 is not changed
- when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
-
-- assert:
- that:
- - configs_1 is failed
- - "'Minimum version required' in configs_1.msg"
- when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## configs (uid) ###################################################
-####################################################################
-
-- name: configs (uid int)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- uid: 1000
- register: configs_1
- ignore_errors: yes
-
-- name: configs (uid int idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- uid: 1000
- register: configs_2
- ignore_errors: yes
-
-- name: configs (uid int change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- uid: 1002
- register: configs_3
- ignore_errors: yes
-
-- name: configs (uid str)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- uid: "1001"
- register: configs_4
- ignore_errors: yes
-
-- name: configs (uid str idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- uid: "1001"
- register: configs_5
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-- assert:
- that:
- - configs_1 is changed
- - configs_2 is not changed
- - configs_3 is changed
- - configs_4 is changed
- - configs_5 is not changed
- when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
-
-- assert:
- that:
- - configs_1 is failed
- - "'Minimum version required' in configs_1.msg"
- when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
-
-
-####################################################################
-## configs (gid) ###################################################
-####################################################################
-
-- name: configs (gid int)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- gid: 1000
- register: configs_1
- ignore_errors: yes
-
-- name: configs (gid int idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- gid: 1000
- register: configs_2
- ignore_errors: yes
-
-- name: configs (gid int change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- gid: 1002
- register: configs_3
- ignore_errors: yes
-
-- name: configs (gid str)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- gid: "1001"
- register: configs_4
- ignore_errors: yes
-
-- name: configs (gid str idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- gid: "1001"
- register: configs_5
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-- assert:
- that:
- - configs_1 is changed
- - configs_2 is not changed
- - configs_3 is changed
- - configs_4 is changed
- - configs_5 is not changed
- when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
-
-- assert:
- that:
- - configs_1 is failed
- - "'Minimum version required' in configs_1.msg"
- when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## configs (mode) ##################################################
-####################################################################
-
-- name: configs (mode)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- mode: 0600
- register: configs_1
- ignore_errors: yes
-
-- name: configs (mode idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- mode: 0600
- register: configs_2
- ignore_errors: yes
-
-- name: configs (mode change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- configs:
- - config_id: "{{ config_result_1.config_id|default('') }}"
- config_name: "{{ config_name_1 }}"
- mode: 0777
- register: configs_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-- assert:
- that:
- - configs_1 is changed
- - configs_2 is not changed
- - configs_3 is changed
- when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
-
-- assert:
- that:
- - configs_1 is failed
- - "'Minimum version required' in configs_1.msg"
- when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
-
-####################################################################
-####################################################################
-####################################################################
-
-- name: Delete configs
- docker_config:
- name: "{{ config_name }}"
- state: absent
- force: yes
- loop:
- - "{{ config_name_1 }}"
- - "{{ config_name_2 }}"
- loop_control:
- loop_var: config_name
- ignore_errors: yes
- when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/logging.yml b/test/integration/targets/docker_swarm_service/tasks/tests/logging.yml
deleted file mode 100644
index 88e7b561c9..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/logging.yml
+++ /dev/null
@@ -1,158 +0,0 @@
----
-
-- name: Registering service name
- set_fact:
- service_name: "{{ name_prefix ~ '-logging' }}"
-
-- name: Registering service name
- set_fact:
- service_names: "{{ service_names + [service_name] }}"
-
-####################################################################
-## logging.driver ##################################################
-####################################################################
-
-- name: logging.driver
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- logging:
- driver: json-file
- register: logging_driver_1
-
-- name: logging.driver (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- logging:
- driver: json-file
- register: logging_driver_2
-
-- name: log_driver (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- log_driver: json-file
- register: logging_driver_2b
-
-- name: logging.driver (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- logging:
- driver: syslog
- register: logging_driver_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - logging_driver_1 is changed
- - logging_driver_2 is not changed
- - logging_driver_2b is not changed
- - logging_driver_3 is changed
-
-####################################################################
-## logging.options #################################################
-####################################################################
-
-- name: logging_options
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- logging:
- driver: json-file
- options:
- labels: production_status
- env: os,customer
- register: logging_options_1
-
-- name: logging_options (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- logging:
- driver: json-file
- options:
- env: os,customer
- labels: production_status
- register: logging_options_2
-
-- name: log_driver_options (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- log_driver: json-file
- log_driver_options:
- env: os,customer
- labels: production_status
- register: logging_options_2b
-
-- name: logging_options (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- logging:
- driver: json-file
- options:
- env: os,customer
- labels: production_status
- max-file: "1"
- register: logging_options_3
-
-- name: logging_options (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- logging:
- driver: json-file
- options: {}
- register: logging_options_4
-
-- name: logging_options (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- logging:
- driver: json-file
- options: {}
- register: logging_options_5
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - logging_options_1 is changed
- - logging_options_2 is not changed
- - logging_options_2b is not changed
- - logging_options_3 is changed
- - logging_options_4 is changed
- - logging_options_5 is not changed
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/misc.yml b/test/integration/targets/docker_swarm_service/tasks/tests/misc.yml
deleted file mode 100644
index cf75183171..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/misc.yml
+++ /dev/null
@@ -1,113 +0,0 @@
----
-- block:
- - name: Create a swarm service without name
- register: output
- docker_swarm_service:
- state: present
- ignore_errors: yes
-
- - name: assert failure when name not set
- assert:
- that:
- - output is failed
- - 'output.msg == "missing required arguments: name"'
-
- - name: Remove an non-existing service
- register: output
- docker_swarm_service:
- state: absent
- name: non_existing_service
-
- - name: assert output not changed when deleting non-existing service
- assert:
- that:
- - output is not changed
-
- - name: create sample service
- register: output
- docker_swarm_service:
- name: test_service
- endpoint_mode: dnsrr
- image: busybox
- resolve_image: no
- args:
- - sleep
- - "3600"
-
- - name: assert sample service is created
- assert:
- that:
- - output is changed
-
- - name: change service args
- register: output
- docker_swarm_service:
- name: test_service
- image: busybox
- resolve_image: no
- args:
- - sleep
- - "1800"
-
- - name: assert service args are correct
- assert:
- that:
- - output.swarm_service.args == ['sleep', '1800']
-
- - name: set service mode to global
- register: output
- docker_swarm_service:
- name: test_service
- image: busybox
- resolve_image: no
- endpoint_mode: vip
- mode: global
- args:
- - sleep
- - "1800"
-
- - name: assert service mode changed caused service rebuild
- assert:
- that:
- - output.rebuilt
-
- - name: add published ports to service
- register: output
- docker_swarm_service:
- name: test_service
- image: busybox
- resolve_image: no
- mode: global
- args:
- - sleep
- - "1800"
- endpoint_mode: vip
- publish:
- - protocol: tcp
- published_port: 60001
- target_port: 60001
- - protocol: udp
- published_port: 60001
- target_port: 60001
-
- - name: fake image key as it is not predictable
- set_fact:
- ansible_docker_service_output: "{{ output.swarm_service|combine({'image': 'busybox'}) }}"
-
- - name: assert service matches expectations
- assert:
- that:
- - ansible_docker_service_output == service_expected_output
-
- - name: delete sample service
- register: output
- docker_swarm_service:
- name: test_service
- state: absent
-
- - name: assert service deletion returns changed
- assert:
- that:
- - output is success
- - output is changed
- when: docker_api_version is version('1.24', '>=') and docker_py_version is version('3.0.0', '>=')
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/mounts.yml b/test/integration/targets/docker_swarm_service/tasks/tests/mounts.yml
deleted file mode 100644
index 08ffc92758..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/mounts.yml
+++ /dev/null
@@ -1,601 +0,0 @@
-- name: Registering service name
- set_fact:
- service_name: "{{ name_prefix ~ '-mounts' }}"
- volume_name_1: "{{ name_prefix ~ '-volume-1' }}"
- volume_name_2: "{{ name_prefix ~ '-volume-2' }}"
-
-- name: Registering service name
- set_fact:
- service_names: "{{ service_names + [service_name] }}"
- volume_names: "{{ volume_names + [volume_name_1, volume_name_2] }}"
-
-- docker_volume:
- name: "{{ volume_name }}"
- state: present
- loop:
- - "{{ volume_name_1 }}"
- - "{{ volume_name_2 }}"
- loop_control:
- loop_var: volume_name
-
-####################################################################
-## mounts ##########################################################
-####################################################################
-
-- name: mounts
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- register: mounts_1
-
-- name: mounts (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- register: mounts_2
-
-- name: mounts (add)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- - source: "/tmp/"
- target: "/tmp/{{ volume_name_2 }}"
- type: "bind"
- register: mounts_3
-
-- name: mounts (order idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "/tmp/"
- target: "/tmp/{{ volume_name_2 }}"
- type: "bind"
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- register: mounts_4
-
-- name: mounts (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts: []
- register: mounts_5
-
-- name: mounts (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts: []
- register: mounts_6
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mounts_1 is changed
- - mounts_2 is not changed
- - mounts_3 is changed
- - mounts_4 is not changed
- - mounts_5 is changed
- - mounts_6 is not changed
-
-####################################################################
-## mounts.readonly #################################################
-####################################################################
-
-- name: mounts.readonly
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- readonly: true
- register: mounts_readonly_1
-
-
-- name: mounts.readonly (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- readonly: true
- register: mounts_readonly_2
-
-- name: mounts.readonly (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- readonly: false
- register: mounts_readonly_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mounts_readonly_1 is changed
- - mounts_readonly_2 is not changed
- - mounts_readonly_3 is changed
-
-####################################################################
-## mounts.propagation ##############################################
-####################################################################
-
-- name: mounts.propagation
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "/tmp"
- target: "/tmp/{{ volume_name_1 }}"
- type: "bind"
- propagation: "slave"
- register: mounts_propagation_1
-
-
-- name: mounts.propagation (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "/tmp"
- target: "/tmp/{{ volume_name_1 }}"
- type: "bind"
- propagation: "slave"
- register: mounts_propagation_2
-
-- name: mounts.propagation (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "/tmp"
- target: "/tmp/{{ volume_name_1 }}"
- type: "bind"
- propagation: "rprivate"
- register: mounts_propagation_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mounts_propagation_1 is changed
- - mounts_propagation_2 is not changed
- - mounts_propagation_3 is changed
-
-####################################################################
-## mounts.labels ##################################################
-####################################################################
-
-- name: mounts.labels
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- labels:
- mylabel: hello-world
- my-other-label: hello-mars
- register: mounts_labels_1
-
-
-- name: mounts.labels (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- labels:
- mylabel: hello-world
- my-other-label: hello-mars
- register: mounts_labels_2
-
-- name: mounts.labels (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- labels:
- mylabel: hello-world
- register: mounts_labels_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mounts_labels_1 is changed
- - mounts_labels_2 is not changed
- - mounts_labels_3 is changed
-
-####################################################################
-## mounts.no_copy ##################################################
-####################################################################
-
-- name: mounts.no_copy
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- no_copy: true
- register: mounts_no_copy_1
-
-
-- name: mounts.no_copy (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- no_copy: true
- register: mounts_no_copy_2
-
-- name: mounts.no_copy (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- no_copy: false
- register: mounts_no_copy_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mounts_no_copy_1 is changed
- - mounts_no_copy_2 is not changed
- - mounts_no_copy_3 is changed
-
-####################################################################
-## mounts.driver_config ############################################
-####################################################################
-
-- name: mounts.driver_config
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- driver_config:
- name: "nfs"
- options:
- addr: "127.0.0.1"
- register: mounts_driver_config_1
-
-- name: mounts.driver_config
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- driver_config:
- name: "nfs"
- options:
- addr: "127.0.0.1"
- register: mounts_driver_config_2
-
-- name: mounts.driver_config
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "volume"
- driver_config:
- name: "local"
- register: mounts_driver_config_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mounts_driver_config_1 is changed
- - mounts_driver_config_2 is not changed
- - mounts_driver_config_3 is changed
-
-####################################################################
-## mounts.tmpfs_size ###############################################
-####################################################################
-
-- name: mounts.tmpfs_size
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "tmpfs"
- tmpfs_size: "50M"
- register: mounts_tmpfs_size_1
- ignore_errors: yes
-
-- name: mounts.tmpfs_size (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "tmpfs"
- tmpfs_size: "50M"
- register: mounts_tmpfs_size_2
- ignore_errors: yes
-
-- name: mounts.tmpfs_size (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "tmpfs"
- tmpfs_size: "25M"
- register: mounts_tmpfs_size_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mounts_tmpfs_size_1 is changed
- - mounts_tmpfs_size_2 is not changed
- - mounts_tmpfs_size_3 is changed
- when: docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - mounts_tmpfs_size_1 is failed
- - "'Minimum version required' in mounts_tmpfs_size_1.msg"
- when: docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## mounts.tmpfs_mode ###############################################
-####################################################################
-
-- name: mounts.tmpfs_mode
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "tmpfs"
- tmpfs_mode: 0444
- register: mounts_tmpfs_mode_1
- ignore_errors: yes
-
-- name: mounts.tmpfs_mode (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "tmpfs"
- tmpfs_mode: 0444
- register: mounts_tmpfs_mode_2
- ignore_errors: yes
-
-- name: mounts.tmpfs_mode (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: "{{ volume_name_1 }}"
- target: "/tmp/{{ volume_name_1 }}"
- type: "tmpfs"
- tmpfs_mode: 0777
- register: mounts_tmpfs_mode_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mounts_tmpfs_mode_1 is changed
- - mounts_tmpfs_mode_2 is not changed
- - mounts_tmpfs_mode_3 is changed
- when: docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - mounts_tmpfs_size_1 is failed
- - "'Minimum version required' in mounts_tmpfs_size_1.msg"
- when: docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## mounts.source ###################################################
-####################################################################
-
-- name: mounts.source (empty for tmpfs)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: ""
- target: "/tmp/{{ volume_name_1 }}"
- type: "tmpfs"
- register: mounts_tmpfs_source_1
- ignore_errors: yes
-
-- name: mounts.source (empty for tmpfs idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - source: ""
- target: "/tmp/{{ volume_name_1 }}"
- type: "tmpfs"
- register: mounts_tmpfs_source_2
- ignore_errors: yes
-
-- name: mounts.source (not specified for tmpfs idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mounts:
- - target: "/tmp/{{ volume_name_1 }}"
- type: "tmpfs"
- register: mounts_tmpfs_source_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mounts_tmpfs_source_1 is changed
- - mounts_tmpfs_source_2 is not changed
- - mounts_tmpfs_source_3 is not changed
- when: docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - mounts_tmpfs_source_1 is failed
- - "'Minimum version required' in mounts_tmpfs_source_1.msg"
- when: docker_py_version is version('2.6.0', '<')
-
-####################################################################
-####################################################################
-####################################################################
-
-- name: Delete volumes
- docker_volume:
- name: "{{ volume_name }}"
- state: absent
- loop:
- - "{{ volume_name_1 }}"
- - "{{ volume_name_2 }}"
- loop_control:
- loop_var: volume_name
- ignore_errors: yes
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/networks.yml b/test/integration/targets/docker_swarm_service/tasks/tests/networks.yml
deleted file mode 100644
index 9d1a0254b9..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/networks.yml
+++ /dev/null
@@ -1,450 +0,0 @@
----
-
-- name: Registering service name
- set_fact:
- service_name: "{{ name_prefix ~ '-networks' }}"
- network_name_1: "{{ name_prefix ~ '-network-1' }}"
- network_name_2: "{{ name_prefix ~ '-network-2' }}"
-
-- name: Registering service name
- set_fact:
- service_names: "{{ service_names + [service_name] }}"
- network_names: "{{ network_names + [network_name_1, network_name_2] }}"
-
-- docker_network:
- name: "{{ network_name }}"
- driver: "overlay"
- state: present
- loop:
- - "{{ network_name_1 }}"
- - "{{ network_name_2 }}"
- loop_control:
- loop_var: network_name
-
-#####################################################################
-## networks #########################################################
-#####################################################################
-
-- name: networks
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - "{{ network_name_1 }}"
- register: networks_1
-
-- name: networks (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - "{{ network_name_1 }}"
- register: networks_2
-
-- name: networks (dict idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- register: networks_3
-
-- name: networks (change more)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - "{{ network_name_1 }}"
- - "{{ network_name_2 }}"
- register: networks_4
-
-- name: networks (change more idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - "{{ network_name_1 }}"
- - "{{ network_name_2 }}"
- register: networks_5
-
-- name: networks (change more dict idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- - name: "{{ network_name_2 }}"
- register: networks_6
-
-- name: networks (change more mixed idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- - "{{ network_name_2 }}"
- register: networks_7
-
-- name: networks (order idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - "{{ network_name_2 }}"
- - name: "{{ network_name_1 }}"
- register: networks_8
-
-- name: networks (change less)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - "{{ network_name_2 }}"
- register: networks_9
-
-- name: networks (change less idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - "{{ network_name_2 }}"
- register: networks_10
-
-- name: networks (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks: []
- register: networks_11
-
-- name: networks (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks: []
- register: networks_12
-
-- name: networks (unknown network)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - "idonotexist"
- register: networks_13
- ignore_errors: yes
-
-- name: networks (missing dict key name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - foo: "bar"
- register: networks_14
- ignore_errors: yes
-
-- name: networks (invalid list type)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - [1, 2, 3]
- register: networks_15
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - networks_1 is changed
- - networks_2 is not changed
- - networks_3 is not changed
- - networks_4 is changed
- - networks_5 is not changed
- - networks_6 is not changed
- - networks_7 is not changed
- - networks_8 is not changed
- - networks_9 is changed
- - networks_10 is not changed
- - networks_11 is changed
- - networks_12 is not changed
- - networks_13 is failed
- - '"Could not find a network named: ''idonotexist''" in networks_13.msg'
- - networks_14 is failed
- - "'\"name\" is required when networks are passed as dictionaries.' in networks_14.msg"
- - networks_15 is failed
- - "'Only a list of strings or dictionaries are allowed to be passed as networks' in networks_15.msg"
-
-- assert:
- that:
- - networks_4.rebuilt == false
- - networks_7.rebuilt == false
- when: docker_api_version is version('1.29', '>=') and docker_py_version is version('2.7.0', '>=')
-
-- assert:
- that:
- - networks_4.rebuilt == true
- - networks_7.rebuilt == true
- when: docker_api_version is version('1.29', '<') or docker_py_version is version('2.7.0', '<')
-
-####################################################################
-## networks.aliases ################################################
-####################################################################
-
-- name: networks.aliases
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- aliases:
- - "alias1"
- - "alias2"
- register: networks_aliases_1
-
-- name: networks.aliases (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- aliases:
- - "alias1"
- - "alias2"
- register: networks_aliases_2
-
-- name: networks.aliases (order idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- aliases:
- - "alias2"
- - "alias1"
- register: networks_aliases_3
-
-- name: networks.aliases (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- aliases:
- - "alias1"
- register: networks_aliases_4
-
-- name: networks.aliases (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- aliases: []
- register: networks_aliases_5
-
-- name: networks.aliases (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- aliases: []
- register: networks_aliases_6
-
-- name: networks.aliases (invalid type)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- aliases:
- - [1, 2, 3]
- register: networks_aliases_7
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - networks_aliases_1 is changed
- - networks_aliases_2 is not changed
- - networks_aliases_3 is not changed
- - networks_aliases_4 is changed
- - networks_aliases_5 is changed
- - networks_aliases_6 is not changed
- - networks_aliases_7 is failed
- - "'Only strings are allowed as network aliases' in networks_aliases_7.msg"
-
-####################################################################
-## networks.options ################################################
-####################################################################
-
-- name: networks.options
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- options:
- foo: bar
- test: hello
- register: networks_options_1
-
-- name: networks.options (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- options:
- foo: bar
- test: hello
- register: networks_options_2
-
-- name: networks.options (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- options:
- foo: bar
- test: hej
- register: networks_options_3
-
-- name: networks.options (change less)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- options:
- foo: bar
- register: networks_options_4
-
-- name: networks.options (invalid type)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- options: [1, 2, 3]
- register: networks_options_5
- ignore_errors: yes
-
-- name: networks.options (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- options: {}
- register: networks_options_6
-
-- name: networks.options (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- networks:
- - name: "{{ network_name_1 }}"
- options: {}
- register: networks_options_7
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - networks_options_1 is changed
- - networks_options_2 is not changed
- - networks_options_3 is changed
- - networks_options_4 is changed
- - networks_options_5 is failed
- - "'Only dict is allowed as network options' in networks_options_5.msg"
- - networks_options_6 is changed
- - networks_options_7 is not changed
-
-####################################################################
-####################################################################
-####################################################################
-
-- name: Delete networks
- docker_network:
- name: "{{ network_name }}"
- state: absent
- force: yes
- loop:
- - "{{ network_name_1 }}"
- - "{{ network_name_2 }}"
- loop_control:
- loop_var: network_name
- ignore_errors: yes
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/options.yml b/test/integration/targets/docker_swarm_service/tasks/tests/options.yml
deleted file mode 100644
index 1f805bacc3..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/options.yml
+++ /dev/null
@@ -1,1831 +0,0 @@
----
-
-- name: Registering service name
- set_fact:
- service_name: "{{ name_prefix ~ '-options' }}"
-
-- name: Registering service name
- set_fact:
- service_names: "{{ service_names + [service_name] }}"
-
-####################################################################
-## args ############################################################
-####################################################################
-
-- name: args
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- args:
- - sleep
- - "3600"
- register: args_1
-
-- name: args (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- args:
- - sleep
- - "3600"
- register: args_2
-
-- name: args (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- args:
- - sleep
- - "3400"
- register: args_3
-
-- name: args (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- args: []
- register: args_4
-
-- name: args (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- args: []
- register: args_5
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - args_1 is changed
- - args_2 is not changed
- - args_3 is changed
- - args_4 is changed
- - args_5 is not changed
-
-####################################################################
-## command #########################################################
-####################################################################
-
-- name: command
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- register: command_1
-
-- name: command (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- register: command_2
-
-- name: command (less parameters)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -c "sleep 10m"'
- register: command_3
-
-- name: command (as list)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command:
- - "/bin/sh"
- - "-c"
- - "sleep 10m"
- register: command_4
-
-- name: command (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: []
- register: command_5
-
-- name: command (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: []
- register: command_6
-
-- name: command (string failure)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: yes
- register: command_7
- ignore_errors: yes
-
-- name: command (list failure)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command:
- - "/bin/sh"
- - yes
- register: command_8
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - command_1 is changed
- - command_2 is not changed
- - command_3 is changed
- - command_4 is not changed
- - command_5 is changed
- - command_6 is not changed
- - command_7 is failed
- - command_8 is failed
-
-####################################################################
-## container_labels ################################################
-####################################################################
-
-- name: container_labels
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- container_labels:
- test_1: "1"
- test_2: "2"
- register: container_labels_1
-
-- name: container_labels (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- container_labels:
- test_1: "1"
- test_2: "2"
- register: container_labels_2
-
-- name: container_labels (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- container_labels:
- test_1: "1"
- test_2: "3"
- register: container_labels_3
-
-- name: container_labels (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- container_labels: {}
- register: container_labels_4
-
-- name: container_labels (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- container_labels: {}
- register: container_labels_5
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - container_labels_1 is changed
- - container_labels_2 is not changed
- - container_labels_3 is changed
- - container_labels_4 is changed
- - container_labels_5 is not changed
-
-####################################################################
-## dns #############################################################
-####################################################################
-
-- name: dns
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns:
- - 1.1.1.1
- - 8.8.8.8
- register: dns_1
- ignore_errors: yes
-
-- name: dns (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns:
- - 1.1.1.1
- - 8.8.8.8
- register: dns_2
- ignore_errors: yes
-
-- name: dns_servers (changed order)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns:
- - 8.8.8.8
- - 1.1.1.1
- register: dns_3
- ignore_errors: yes
-
-- name: dns_servers (changed elements)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns:
- - 8.8.8.8
- - 9.9.9.9
- register: dns_4
- ignore_errors: yes
-
-- name: dns_servers (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns: []
- register: dns_5
- ignore_errors: yes
-
-- name: dns_servers (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns: []
- register: dns_6
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - dns_1 is changed
- - dns_2 is not changed
- - dns_3 is changed
- - dns_4 is changed
- - dns_5 is changed
- - dns_6 is not changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - dns_1 is failed
- - "'Minimum version required' in dns_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## dns_options #####################################################
-####################################################################
-
-- name: dns_options
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_options:
- - "timeout:10"
- - rotate
- register: dns_options_1
- ignore_errors: yes
-
-- name: dns_options (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_options:
- - "timeout:10"
- - rotate
- register: dns_options_2
- ignore_errors: yes
-
-- name: dns_options (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_options:
- - "timeout:10"
- - no-check-names
- register: dns_options_3
- ignore_errors: yes
-
-- name: dns_options (order idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_options:
- - no-check-names
- - "timeout:10"
- register: dns_options_4
- ignore_errors: yes
-
-- name: dns_options (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_options: []
- register: dns_options_5
- ignore_errors: yes
-
-- name: dns_options (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_options: []
- register: dns_options_6
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - dns_options_1 is changed
- - dns_options_2 is not changed
- - dns_options_3 is changed
- - dns_options_4 is not changed
- - dns_options_5 is changed
- - dns_options_6 is not changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - dns_options_1 is failed
- - "'Minimum version required' in dns_options_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## dns_search ######################################################
-####################################################################
-
-- name: dns_search
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_search:
- - example.com
- - example.org
- register: dns_search_1
- ignore_errors: yes
-
-- name: dns_search (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_search:
- - example.com
- - example.org
- register: dns_search_2
- ignore_errors: yes
-
-- name: dns_search (different order)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_search:
- - example.org
- - example.com
- register: dns_search_3
- ignore_errors: yes
-
-- name: dns_search (changed elements)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_search:
- - ansible.com
- - example.com
- register: dns_search_4
- ignore_errors: yes
-
-- name: dns_search (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_search: []
- register: dns_search_5
- ignore_errors: yes
-
-- name: dns_search (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- dns_search: []
- register: dns_search_6
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - dns_search_1 is changed
- - dns_search_2 is not changed
- - dns_search_3 is changed
- - dns_search_4 is changed
- - dns_search_5 is changed
- - dns_search_6 is not changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - dns_search_1 is failed
- - "'Minimum version required' in dns_search_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## endpoint_mode ###################################################
-####################################################################
-
-- name: endpoint_mode
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- endpoint_mode: "dnsrr"
- register: endpoint_mode_1
- ignore_errors: yes
-
-- name: endpoint_mode (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- endpoint_mode: "dnsrr"
- register: endpoint_mode_2
- ignore_errors: yes
-
-- name: endpoint_mode (changes)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- endpoint_mode: "vip"
- register: endpoint_mode_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - endpoint_mode_1 is changed
- - endpoint_mode_2 is not changed
- - endpoint_mode_3 is changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('3.0.0', '>=')
-- assert:
- that:
- - endpoint_mode_1 is failed
- - "'Minimum version required' in endpoint_mode_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('3.0.0', '<')
-
-####################################################################
-## env #############################################################
-####################################################################
-
-- name: env
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- env:
- - "TEST1=val1"
- - "TEST2=val2"
- register: env_1
-
-- name: env (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- env:
- TEST1: val1
- TEST2: val2
- register: env_2
-
-- name: env (changes)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- env:
- - "TEST1=val1"
- - "TEST2=val3"
- register: env_3
-
-- name: env (order idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- env:
- - "TEST2=val3"
- - "TEST1=val1"
- register: env_4
-
-- name: env (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- env: []
- register: env_5
-
-- name: env (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- env: []
- register: env_6
-
-- name: env (fail unwrapped values)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- env:
- TEST1: true
- register: env_7
- ignore_errors: yes
-
-- name: env (fail invalid formatted string)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- env:
- - "TEST1=val3"
- - "TEST2"
- register: env_8
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - env_1 is changed
- - env_2 is not changed
- - env_3 is changed
- - env_4 is not changed
- - env_5 is changed
- - env_6 is not changed
- - env_7 is failed
- - env_8 is failed
-
-####################################################################
-## env_files #######################################################
-####################################################################
-
-- name: env_files
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- env_files:
- - "{{ role_path }}/files/env-file-1"
- register: env_file_1
-
-- name: env_files (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- env_files:
- - "{{ role_path }}/files/env-file-1"
- register: env_file_2
-
-- name: env_files (more items)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- env_files:
- - "{{ role_path }}/files/env-file-1"
- - "{{ role_path }}/files/env-file-2"
- register: env_file_3
-
-- name: env_files (order)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- env_files:
- - "{{ role_path }}/files/env-file-2"
- - "{{ role_path }}/files/env-file-1"
- register: env_file_4
-
-- name: env_files (multiple idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- env_files:
- - "{{ role_path }}/files/env-file-2"
- - "{{ role_path }}/files/env-file-1"
- register: env_file_5
-
-- name: env_files (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- env_files: []
- register: env_file_6
-
-- name: env_files (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- env_files: []
- register: env_file_7
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - env_file_1 is changed
- - env_file_2 is not changed
- - env_file_3 is changed
- - env_file_4 is changed
- - env_file_5 is not changed
- - env_file_6 is changed
- - env_file_7 is not changed
-
-###################################################################
-## force_update ###################################################
-###################################################################
-
-- name: force_update
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- args:
- - sleep
- - "3600"
- force_update: yes
- register: force_update_1
- ignore_errors: yes
-
-- name: force_update (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- args:
- - sleep
- - "3600"
- force_update: yes
- register: force_update_2
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - force_update_1 is changed
- - force_update_2 is changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
-- assert:
- that:
- - force_update_1 is failed
- - "'Minimum version required' in force_update_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.1.0', '<')
-
-####################################################################
-## groups ##########################################################
-####################################################################
-
-- name: groups
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- groups:
- - "1234"
- - "5678"
- register: groups_1
- ignore_errors: yes
-
-- name: groups (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- groups:
- - "1234"
- - "5678"
- register: groups_2
- ignore_errors: yes
-
-- name: groups (order idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- groups:
- - "5678"
- - "1234"
- register: groups_3
- ignore_errors: yes
-
-- name: groups (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- groups:
- - "1234"
- register: groups_4
- ignore_errors: yes
-
-- name: groups (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- groups: []
- register: groups_5
- ignore_errors: yes
-
-- name: groups (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- groups: []
- register: groups_6
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - groups_1 is changed
- - groups_2 is not changed
- - groups_3 is not changed
- - groups_4 is changed
- - groups_5 is changed
- - groups_6 is not changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - groups_1 is failed
- - "'Minimum version required' in groups_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## healthcheck #####################################################
-####################################################################
-
-- name: healthcheck
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- healthcheck:
- test:
- - CMD
- - sleep
- - "1"
- timeout: 2s
- interval: 0h0m2s3ms4us
- retries: 2
- start_period: 20s
- register: healthcheck_1
- ignore_errors: yes
-
-- name: healthcheck (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- healthcheck:
- test:
- - CMD
- - sleep
- - 1
- timeout: 2s
- interval: 0h0m2s3ms4us
- retries: 2
- start_period: 20s
- register: healthcheck_2
- ignore_errors: yes
-
-- name: healthcheck (changed)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- healthcheck:
- test:
- - CMD
- - sleep
- - "1"
- timeout: 3s
- interval: 0h1m2s3ms4us
- retries: 3
- register: healthcheck_3
- ignore_errors: yes
-
-- name: healthcheck (disabled)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- healthcheck:
- test:
- - NONE
- register: healthcheck_4
- ignore_errors: yes
-
-- name: healthcheck (disabled, idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- healthcheck:
- test:
- - NONE
- register: healthcheck_5
- ignore_errors: yes
-
-- name: healthcheck (string in healthcheck test, changed)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- healthcheck:
- test: "sleep 1"
- register: healthcheck_6
- ignore_errors: yes
-
-- name: healthcheck (string in healthcheck test, idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- healthcheck:
- test: "sleep 1"
- register: healthcheck_7
- ignore_errors: yes
-
-- name: healthcheck (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- healthcheck: {}
- register: healthcheck_8
- ignore_errors: yes
-
-- name: healthcheck (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- healthcheck: {}
- register: healthcheck_9
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - healthcheck_1 is changed
- - healthcheck_2 is not changed
- - healthcheck_3 is changed
- - healthcheck_4 is changed
- - healthcheck_5 is not changed
- - healthcheck_6 is changed
- - healthcheck_7 is not changed
- - healthcheck_8 is changed
- - healthcheck_9 is not changed
- when: docker_api_version is version('1.29', '>=') and docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - healthcheck_1 is failed
- - "'Minimum version required' in healthcheck_1.msg"
- when: docker_api_version is version('1.29', '<') or docker_py_version is version('2.6.0', '<')
-
-###################################################################
-## hostname #######################################################
-###################################################################
-
-- name: hostname
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- hostname: me.example.com
- register: hostname_1
- ignore_errors: yes
-
-- name: hostname (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- hostname: me.example.com
- register: hostname_2
- ignore_errors: yes
-
-- name: hostname (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- hostname: me.example.org
- register: hostname_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - hostname_1 is changed
- - hostname_2 is not changed
- - hostname_3 is changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.2.0', '>=')
-- assert:
- that:
- - hostname_1 is failed
- - "'Minimum version required' in hostname_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.2.0', '<')
-
-###################################################################
-## hosts ##########################################################
-###################################################################
-
-- name: hosts
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- hosts:
- example.com: 1.2.3.4
- example.org: 4.3.2.1
- register: hosts_1
- ignore_errors: yes
-
-- name: hosts (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- hosts:
- example.com: 1.2.3.4
- example.org: 4.3.2.1
- register: hosts_2
- ignore_errors: yes
-
-- name: hosts (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- hosts:
- example.com: 1.2.3.4
- register: hosts_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - hosts_1 is changed
- - hosts_2 is not changed
- - hosts_3 is changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - hosts_1 is failed
- - "'Minimum version required' in hosts_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.6.0', '<')
-
-
-###################################################################
-## image ##########################################################
-###################################################################
-
-- name: image
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- register: image_1
-
-- name: image (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- register: image_2
-
-- name: image (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.7
- register: image_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - image_1 is changed
- - image_2 is not changed
- - image_3 is changed
-
-####################################################################
-## labels ##########################################################
-####################################################################
-
-- name: labels
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- labels:
- test_1: "1"
- test_2: "2"
- register: labels_1
-
-- name: labels (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- labels:
- test_1: "1"
- test_2: "2"
- register: labels_2
-
-- name: labels (changes)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- labels:
- test_1: "1"
- test_2: "2"
- test_3: "3"
- register: labels_3
-
-- name: labels (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- labels: {}
- register: labels_4
-
-- name: labels (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- labels: {}
- register: labels_5
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - labels_1 is changed
- - labels_2 is not changed
- - labels_3 is changed
- - labels_4 is changed
- - labels_5 is not changed
-
-###################################################################
-## mode ###########################################################
-###################################################################
-
-- name: mode
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mode: "replicated"
- replicas: 1
- register: mode_1
-
-- name: mode (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mode: "replicated"
- replicas: 1
- register: mode_2
-
-- name: mode (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- mode: "global"
- replicas: 1
- register: mode_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - mode_1 is changed
- - mode_2 is not changed
- - mode_3 is changed
-
-####################################################################
-## stop_grace_period ###############################################
-####################################################################
-
-- name: stop_grace_period
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- stop_grace_period: 60s
- register: stop_grace_period_1
-
-- name: stop_grace_period (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- stop_grace_period: 60s
- register: stop_grace_period_2
-
-- name: stop_grace_period (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- stop_grace_period: 1m30s
- register: stop_grace_period_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - stop_grace_period_1 is changed
- - stop_grace_period_2 is not changed
- - stop_grace_period_3 is changed
-
-####################################################################
-## stop_signal #####################################################
-####################################################################
-
-- name: stop_signal
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- stop_signal: "30"
- register: stop_signal_1
- ignore_errors: yes
-
-- name: stop_signal (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- stop_signal: "30"
- register: stop_signal_2
- ignore_errors: yes
-
-- name: stop_signal (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- stop_signal: "9"
- register: stop_signal_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - stop_signal_1 is changed
- - stop_signal_2 is not changed
- - stop_signal_3 is changed
- when: docker_api_version is version('1.28', '>=') and docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - stop_signal_1 is failed
- - "'Minimum version required' in stop_signal_1.msg"
- when: docker_api_version is version('1.28', '<') or docker_py_version is version('2.6.0', '<')
-
-####################################################################
-## publish #########################################################
-####################################################################
-
-- name: publish
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- publish:
- - protocol: tcp
- published_port: 60001
- target_port: 60001
- - protocol: udp
- published_port: 60002
- target_port: 60002
- register: publish_1
- ignore_errors: yes
-
-- name: publish (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- publish:
- - protocol: udp
- published_port: 60002
- target_port: 60002
- - published_port: 60001
- target_port: 60001
- register: publish_2
- ignore_errors: yes
-
-- name: publish (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- publish:
- - protocol: tcp
- published_port: 60002
- target_port: 60003
- - protocol: udp
- published_port: 60001
- target_port: 60001
- register: publish_3
- ignore_errors: yes
-
-- name: publish (mode)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- publish:
- - protocol: tcp
- published_port: 60002
- target_port: 60003
- mode: host
- - protocol: udp
- published_port: 60001
- target_port: 60001
- mode: host
- register: publish_4
- ignore_errors: yes
-
-- name: publish (mode idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- publish:
- - protocol: udp
- published_port: 60001
- target_port: 60001
- mode: host
- - protocol: tcp
- published_port: 60002
- target_port: 60003
- mode: host
- register: publish_5
- ignore_errors: yes
-
-- name: publish (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- publish: []
- register: publish_6
- ignore_errors: yes
-
-- name: publish (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- publish: []
- register: publish_7
- ignore_errors: yes
-
-- name: publish (publishes the same port with both protocols)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- publish:
- - protocol: udp
- published_port: 60001
- target_port: 60001
- mode: host
- - protocol: tcp
- published_port: 60001
- target_port: 60001
- mode: host
- register: publish_8
- ignore_errors: yes
-- name: gather service info
- docker_swarm_service_info:
- name: "{{ service_name }}"
- register: publish_8_info
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - publish_1 is changed
- - publish_2 is not changed
- - publish_3 is changed
- - publish_4 is changed
- - publish_5 is not changed
- - publish_6 is changed
- - publish_7 is not changed
- - publish_8 is changed
- - (publish_8_info.service.Endpoint.Ports | length) == 2
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('3.0.0', '>=')
-- assert:
- that:
- - publish_1 is failed
- - "'Minimum version required' in publish_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('3.0.0', '<')
-
-###################################################################
-## read_only ######################################################
-###################################################################
-
-- name: read_only
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- read_only: true
- register: read_only_1
- ignore_errors: yes
-
-- name: read_only (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- read_only: true
- register: read_only_2
- ignore_errors: yes
-
-- name: read_only (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- read_only: false
- register: read_only_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - read_only_1 is changed
- - read_only_2 is not changed
- - read_only_3 is changed
- when: docker_api_version is version('1.28', '>=') and docker_py_version is version('2.6.0', '>=')
-- assert:
- that:
- - read_only_1 is failed
- - "'Minimum version required' in read_only_1.msg"
- when: docker_api_version is version('1.28', '<') or docker_py_version is version('2.6.0', '<')
-
-###################################################################
-## replicas #######################################################
-###################################################################
-
-- name: replicas
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- replicas: 2
- register: replicas_1
-
-- name: replicas (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- replicas: 2
- register: replicas_2
-
-- name: replicas (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- replicas: 3
- register: replicas_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - replicas_1 is changed
- - replicas_2 is not changed
- - replicas_3 is changed
-
-###################################################################
-# resolve_image ###################################################
-###################################################################
-
-- name: resolve_image (false)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- command: '/bin/sh -v -c "sleep 10m"'
- resolve_image: false
- register: resolve_image_1
-
-- name: resolve_image (false idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- command: '/bin/sh -v -c "sleep 10m"'
- resolve_image: false
- register: resolve_image_2
-
-- name: resolve_image (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- command: '/bin/sh -v -c "sleep 10m"'
- resolve_image: true
- register: resolve_image_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - resolve_image_1 is changed
- - resolve_image_2 is not changed
- - resolve_image_3 is changed
- when: docker_api_version is version('1.30', '>=') and docker_py_version is version('3.2.0', '>=')
-- assert:
- that:
- - resolve_image_1 is changed
- - resolve_image_2 is not changed
- - resolve_image_3 is failed
- - "('version is ' ~ docker_py_version ~ ' ') in resolve_image_3.msg"
- - "'Minimum version required is 3.2.0 ' in resolve_image_3.msg"
- when: docker_api_version is version('1.30', '<') or docker_py_version is version('3.2.0', '<')
-
-###################################################################
-# tty #############################################################
-###################################################################
-
-- name: tty
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- tty: yes
- register: tty_1
- ignore_errors: yes
-
-- name: tty (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- tty: yes
- register: tty_2
- ignore_errors: yes
-
-- name: tty (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- tty: no
- register: tty_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - tty_1 is changed
- - tty_2 is not changed
- - tty_3 is changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=')
-- assert:
- that:
- - tty_1 is failed
- - "'Minimum version required' in tty_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<')
-
-###################################################################
-## user ###########################################################
-###################################################################
-
-- name: user
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- user: "operator"
- register: user_1
-
-- name: user (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- user: "operator"
- register: user_2
-
-- name: user (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- user: "root"
- register: user_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - user_1 is changed
- - user_2 is not changed
- - user_3 is changed
-
-####################################################################
-## working_dir #####################################################
-####################################################################
-
-- name: working_dir
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- working_dir: /tmp
- register: working_dir_1
-
-- name: working_dir (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- working_dir: /tmp
- register: working_dir_2
-
-- name: working_dir (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- working_dir: /
- register: working_dir_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - working_dir_1 is changed
- - working_dir_2 is not changed
- - working_dir_3 is changed
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/placement.yml b/test/integration/targets/docker_swarm_service/tasks/tests/placement.yml
deleted file mode 100644
index 7d674b6bf4..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/placement.yml
+++ /dev/null
@@ -1,214 +0,0 @@
----
-
-- name: Registering service name
- set_fact:
- service_name: "{{ name_prefix ~ '-placement' }}"
-
-- name: Registering service name
- set_fact:
- service_names: "{{ service_names + [service_name] }}"
-
-
-####################################################################
-## placement.preferences ###########################################
-####################################################################
-
-- name: placement.preferences
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- preferences:
- - spread: "node.labels.test"
- register: placement_preferences_1
- ignore_errors: yes
-
-- name: placement.preferences (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- preferences:
- - spread: "node.labels.test"
- register: placement_preferences_2
- ignore_errors: yes
-
-- name: placement.preferences (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- preferences:
- - spread: "node.labels.test2"
- register: placement_preferences_3
- ignore_errors: yes
-
-- name: placement.preferences (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- preferences: []
- register: placement_preferences_4
- ignore_errors: yes
-
-- name: placement.preferences (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- preferences: []
- register: placement_preferences_5
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - placement_preferences_1 is changed
- - placement_preferences_2 is not changed
- - placement_preferences_3 is changed
- - placement_preferences_4 is changed
- - placement_preferences_5 is not changed
- when: docker_api_version is version('1.27', '>=') and docker_py_version is version('2.4.0', '>=')
-- assert:
- that:
- - placement_preferences_1 is failed
- - "'Minimum version required' in placement_preferences_1.msg"
- when: docker_api_version is version('1.27', '<') or docker_py_version is version('2.4.0', '<')
-
-####################################################################
-## placement.constraints #####################################################
-####################################################################
-
-- name: placement.constraints
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- constraints:
- - "node.role == manager"
- register: constraints_1
- ignore_errors: yes
-
-- name: placement.constraints (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- constraints:
- - "node.role == manager"
- register: constraints_2
- ignore_errors: yes
-
-- name: constraints (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- constraints:
- - "node.role == manager"
- register: constraints_2b
- ignore_errors: yes
-
-- name: placement.constraints (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- constraints:
- - "node.role == worker"
- register: constraints_3
- ignore_errors: yes
-
-- name: placement.constraints (add)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- constraints:
- - "node.role == worker"
- - "node.label != non_existent_label"
- register: constraints_4
- ignore_errors: yes
-
-- name: placement.constraints (order idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- constraints:
- - "node.label != non_existent_label"
- - "node.role == worker"
- register: constraints_5
- ignore_errors: yes
-
-- name: placement.constraints (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- constraints: []
- register: constraints_6
- ignore_errors: yes
-
-- name: placement.constraints (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- placement:
- constraints: []
- register: constraints_7
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - constraints_1 is changed
- - constraints_2 is not changed
- - constraints_2b is not changed
- - constraints_3 is changed
- - constraints_4 is changed
- - constraints_5 is not changed
- - constraints_6 is changed
- - constraints_7 is not changed
- when: docker_api_version is version('1.27', '>=') and docker_py_version is version('2.4.0', '>=')
-- assert:
- that:
- - constraints_1 is failed
- - "'Minimum version required' in constraints_1.msg"
- when: docker_api_version is version('1.27', '<') or docker_py_version is version('2.4.0', '<')
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/resources.yml b/test/integration/targets/docker_swarm_service/tasks/tests/resources.yml
deleted file mode 100644
index 7eaba19f33..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/resources.yml
+++ /dev/null
@@ -1,230 +0,0 @@
----
-
-- name: Registering service name
- set_fact:
- service_name: "{{ name_prefix ~ '-resources' }}"
-
-- name: Registering service name
- set_fact:
- service_names: "{{ service_names + [service_name] }}"
-
-####################################################################
-## limits.cpus #####################################################
-####################################################################
-
-- name: limits.cpus
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- limits:
- cpus: 1
- register: limit_cpu_1
-
-- name: limits.cpus (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- limits:
- cpus: 1
- register: limit_cpu_2
-
-- name: limit_cpu (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- limit_cpu: 1
- register: limit_cpu_2b
-
-- name: limits.cpus (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- limits:
- cpus: 0.5
- register: limit_cpu_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - limit_cpu_1 is changed
- - limit_cpu_2 is not changed
- - limit_cpu_2b is not changed
- - limit_cpu_3 is changed
-
-###################################################################
-## limits.memory ##################################################
-###################################################################
-
-- name: limits.memory
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- limits:
- memory: 64M
- register: limit_memory_1
-
-- name: limits.memory (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- limits:
- memory: 64M
- register: limit_memory_2
-
-- name: limit_memory (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- limit_memory: "67108864"
- register: limit_memory_2b
-
-- name: limits.memory (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- limit_memory: 32M
- register: limit_memory_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - limit_memory_1 is changed
- - limit_memory_2 is not changed
- - limit_memory_2b is not changed
- - limit_memory_3 is changed
-
-###################################################################
-## reservations.cpus ##############################################
-###################################################################
-
-- name: reserve_cpu
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- reservations:
- cpus: 1
- register: reserve_cpu_1
-
-- name: reserve_cpu (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- reservations:
- cpus: 1
- register: reserve_cpu_2
-
-- name: reserve_cpu (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- reserve_cpu: 1
- register: reserve_cpu_2b
-
-- name: reserve_cpu (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- reservations:
- cpus: 0.5
- register: reserve_cpu_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - reserve_cpu_1 is changed
- - reserve_cpu_2 is not changed
- - reserve_cpu_2b is not changed
- - reserve_cpu_3 is changed
-
-###################################################################
-## reservations.memory ############################################
-###################################################################
-
-- name: reservations.memory
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- reservations:
- memory: 64M
- register: reserve_memory_1
-
-- name: reservations.memory (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- reserve_memory: 64M
- register: reserve_memory_2
-
-- name: reserve_memory (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- reserve_memory: "67108864"
- register: reserve_memory_2b
-
-- name: reservations.memory (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- reserve_memory: 32M
- register: reserve_memory_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - reserve_memory_1 is changed
- - reserve_memory_2 is not changed
- - reserve_memory_2b is not changed
- - reserve_memory_3 is changed
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/restart_config.yml b/test/integration/targets/docker_swarm_service/tasks/tests/restart_config.yml
deleted file mode 100644
index d8a415190f..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/restart_config.yml
+++ /dev/null
@@ -1,233 +0,0 @@
----
-
-- name: Registering service name
- set_fact:
- service_name: "{{ name_prefix ~ '-restart_config' }}"
-
-- name: Registering service name
- set_fact:
- service_names: "{{ service_names + [service_name] }}"
-
-###################################################################
-## restart_config.condition #######################################
-###################################################################
-
-- name: restart_config.condition
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- condition: "on-failure"
- register: restart_policy_1
-
-- name: restart_config.condition (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- condition: "on-failure"
- register: restart_policy_2
-
-- name: restart_policy (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_policy: "on-failure"
- register: restart_policy_2b
-
-- name: restart_config.condition (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- condition: "any"
- register: restart_policy_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - restart_policy_1 is changed
- - restart_policy_2 is not changed
- - restart_policy_2b is not changed
- - restart_policy_3 is changed
-
-###################################################################
-## restart_config.max_attempts ####################################
-###################################################################
-
-- name: restart_config.max_attempts
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- max_attempts: 1
- register: restart_policy_attempts_1
-
-- name: restart_config.max_attempts (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- max_attempts: 1
- register: restart_policy_attempts_2
-
-- name: restart_policy_attempts (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_policy_attempts: 1
- register: restart_policy_attempts_2b
-
-- name: restart_config.max_attempts (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- max_attempts: 2
- register: restart_policy_attempts_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - restart_policy_attempts_1 is changed
- - restart_policy_attempts_2 is not changed
- - restart_policy_attempts_2b is not changed
- - restart_policy_attempts_3 is changed
-
-###################################################################
-## restart_config.delay ###########################################
-###################################################################
-
-- name: restart_config.delay
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- delay: 5s
- register: restart_policy_delay_1
-
-- name: restart_config.delay (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- delay: 5s
- register: restart_policy_delay_2
-
-- name: restart_policy_delay (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_policy_delay: 5000000000
- register: restart_policy_delay_2b
-
-- name: restart_config.delay (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- delay: 10s
- register: restart_policy_delay_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - restart_policy_delay_1 is changed
- - restart_policy_delay_2 is not changed
- - restart_policy_delay_2b is not changed
- - restart_policy_delay_3 is changed
-
-###################################################################
-## restart_config.window ##########################################
-###################################################################
-
-- name: restart_config.window
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- window: 10s
- register: restart_policy_window_1
-
-- name: restart_config.window (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- window: 10s
- register: restart_policy_window_2
-
-- name: restart_policy_window (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_policy_window: 10000000000
- register: restart_policy_window_2b
-
-- name: restart_config.window (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- restart_config:
- window: 20s
- register: restart_policy_window_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - restart_policy_window_1 is changed
- - restart_policy_window_2 is not changed
- - restart_policy_window_2b is not changed
- - restart_policy_window_3 is changed
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/rollback_config.yml b/test/integration/targets/docker_swarm_service/tasks/tests/rollback_config.yml
deleted file mode 100644
index 9789f450b3..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/rollback_config.yml
+++ /dev/null
@@ -1,339 +0,0 @@
----
-
-- name: Registering service name
- set_fact:
- service_name: "{{ name_prefix ~ '-rollback_config' }}"
-
-- name: Registering service name
- set_fact:
- service_names: "{{ service_names + [service_name] }}"
-
-###################################################################
-## rollback_config.delay ############################################
-###################################################################
-
-- name: rollback_config.delay
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- delay: 5s
- register: rollback_config_delay_1
- ignore_errors: yes
-
-- name: rollback_config.delay (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- delay: 5s
- register: rollback_config_delay_2
- ignore_errors: yes
-
-- name: rollback_config.delay (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- delay: 12s
- register: rollback_config_delay_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - rollback_config_delay_1 is changed
- - rollback_config_delay_2 is not changed
- - rollback_config_delay_3 is changed
- when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
-- assert:
- that:
- - rollback_config_delay_1 is failed
- - "'Minimum version required' in rollback_config_delay_1.msg"
- when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
-
-###################################################################
-## rollback_config.failure_action ###################################
-###################################################################
-
-- name: rollback_config.failure_action
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- failure_action: "pause"
- register: rollback_config_failure_action_1
- ignore_errors: yes
-
-- name: rollback_config.failure_action (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- failure_action: "pause"
- register: rollback_config_failure_action_2
- ignore_errors: yes
-
-- name: rollback_config.failure_action (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- failure_action: "continue"
- register: rollback_config_failure_action_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - rollback_config_failure_action_1 is changed
- - rollback_config_failure_action_2 is not changed
- - rollback_config_failure_action_3 is changed
- when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
-- assert:
- that:
- - rollback_config_failure_action_1 is failed
- - "'Minimum version required' in rollback_config_failure_action_1.msg"
- when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
-
-###################################################################
-## rollback_config.max_failure_ratio ################################
-###################################################################
-
-- name: rollback_config.max_failure_ratio
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- max_failure_ratio: 0.25
- register: rollback_config_max_failure_ratio_1
- ignore_errors: yes
-
-- name: rollback_config.max_failure_ratio (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- max_failure_ratio: 0.25
- register: rollback_config_max_failure_ratio_2
- ignore_errors: yes
-
-- name: rollback_config.max_failure_ratio (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- max_failure_ratio: 0.50
- register: rollback_config_max_failure_ratio_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - rollback_config_max_failure_ratio_1 is changed
- - rollback_config_max_failure_ratio_2 is not changed
- - rollback_config_max_failure_ratio_3 is changed
- when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
-- assert:
- that:
- - rollback_config_max_failure_ratio_1 is failed
- - "'Minimum version required' in rollback_config_max_failure_ratio_1.msg"
- when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
-
-###################################################################
-# rollback_config.monitor ###########################################
-###################################################################
-
-- name: rollback_config.monitor
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- monitor: 10s
- register: rollback_config_monitor_1
- ignore_errors: yes
-
-- name: rollback_config.monitor (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- monitor: 10s
- register: rollback_config_monitor_2
- ignore_errors: yes
-
-- name: rollback_config.monitor (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- monitor: 60s
- register: rollback_config_monitor_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - rollback_config_monitor_1 is changed
- - rollback_config_monitor_2 is not changed
- - rollback_config_monitor_3 is changed
- when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
-- assert:
- that:
- - rollback_config_monitor_1 is failed
- - "'Minimum version required' in rollback_config_monitor_1.msg"
- when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
-
-###################################################################
-# rollback_config.order #############################################
-###################################################################
-
-- name: rollback_config.order
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- order: "start-first"
- register: rollback_config_order_1
- ignore_errors: yes
-
-- name: rollback_config.order (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- order: "start-first"
- register: rollback_config_order_2
- ignore_errors: yes
-
-- name: rollback_config.order (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- order: "stop-first"
- register: rollback_config_order_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - rollback_config_order_1 is changed
- - rollback_config_order_2 is not changed
- - rollback_config_order_3 is changed
- when: docker_api_version is version('1.29', '>=') and docker_py_version is version('3.5.0', '>=')
-- assert:
- that:
- - rollback_config_order_1 is failed
- - "'Minimum version required' in rollback_config_order_1.msg"
- when: docker_api_version is version('1.29', '<') or docker_py_version is version('3.5.0', '<')
-
-###################################################################
-## rollback_config.parallelism ######################################
-###################################################################
-
-- name: rollback_config.parallelism
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- parallelism: 2
- register: rollback_config_parallelism_1
- ignore_errors: yes
-
-- name: rollback_config.parallelism (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- parallelism: 2
- register: rollback_config_parallelism_2
- ignore_errors: yes
-
-- name: rollback_config.parallelism (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- rollback_config:
- parallelism: 1
- register: rollback_config_parallelism_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - rollback_config_parallelism_1 is changed
- - rollback_config_parallelism_2 is not changed
- - rollback_config_parallelism_3 is changed
- when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
-- assert:
- that:
- - rollback_config_parallelism_1 is failed
- - "'Minimum version required' in rollback_config_parallelism_1.msg"
- when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/secrets.yml b/test/integration/targets/docker_swarm_service/tasks/tests/secrets.yml
deleted file mode 100644
index bdb903b74c..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/secrets.yml
+++ /dev/null
@@ -1,411 +0,0 @@
----
-
-- name: Registering container name
- set_fact:
- service_name: "{{ name_prefix ~ '-secrets' }}"
- secret_name_1: "{{ name_prefix ~ '-secret-1' }}"
- secret_name_2: "{{ name_prefix ~ '-secret-2' }}"
-
-- name: Registering container name
- set_fact:
- secret_names: "{{ secret_names + [secret_name_1, secret_name_2] }}"
-
-- docker_secret:
- name: "{{ secret_name_1 }}"
- data: "secret1"
- state: "present"
- register: "secret_result_1"
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
-
-- docker_secret:
- name: "{{ secret_name_2 }}"
- data: "secret2"
- state: "present"
- register: "secret_result_2"
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
-
-####################################################################
-## secrets #########################################################
-####################################################################
-
-- name: secrets
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- filename: "/run/secrets/{{ secret_name_1 }}.txt"
- register: secrets_1
- ignore_errors: yes
-
-- name: secrets (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_name: "{{ secret_name_1 }}"
- filename: "/run/secrets/{{ secret_name_1 }}.txt"
- register: secrets_2
- ignore_errors: yes
-
-- name: secrets (add)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- filename: "/run/secrets/{{ secret_name_1 }}.txt"
- - secret_name: "{{ secret_name_2 }}"
- filename: "/run/secrets/{{ secret_name_2 }}.txt"
- register: secrets_3
- ignore_errors: yes
-
-- name: secrets (add idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_name: "{{ secret_name_1 }}"
- filename: "/run/secrets/{{ secret_name_1 }}.txt"
- - secret_id: "{{ secret_result_2.secret_id|default('') }}"
- secret_name: "{{ secret_name_2 }}"
- filename: "/run/secrets/{{ secret_name_2 }}.txt"
- register: secrets_4
- ignore_errors: yes
-
-- name: secrets (add idempotency no id)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_name: "{{ secret_name_1 }}"
- filename: "/run/secrets/{{ secret_name_1 }}.txt"
- - secret_name: "{{ secret_name_2 }}"
- filename: "/run/secrets/{{ secret_name_2 }}.txt"
- register: secrets_5
- ignore_errors: yes
-
-- name: secrets (order idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_name: "{{ secret_name_2 }}"
- filename: "/run/secrets/{{ secret_name_2 }}.txt"
- - secret_name: "{{ secret_name_1 }}"
- filename: "/run/secrets/{{ secret_name_1 }}.txt"
- register: secrets_6
- ignore_errors: yes
-
-- name: secrets (empty)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets: []
- register: secrets_7
- ignore_errors: yes
-
-- name: secrets (empty idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets: []
- register: secrets_8
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - secrets_1 is changed
- - secrets_2 is not changed
- - secrets_3 is changed
- - secrets_4 is not changed
- - secrets_5 is not changed
- - secrets_6 is not changed
- - secrets_7 is changed
- - secrets_8 is not changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=')
-- assert:
- that:
- - secrets_1 is failed
- - "'Minimum version required' in secrets_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<')
-
-####################################################################
-## secrets (uid) ###################################################
-####################################################################
-
-- name: secrets (uid int)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- uid: 1000
- register: secrets_1
- ignore_errors: yes
-
-- name: secrets (uid int idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- uid: 1000
- register: secrets_2
- ignore_errors: yes
-
-- name: secrets (uid int change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- uid: 1002
- register: secrets_3
- ignore_errors: yes
-
-- name: secrets (uid str)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- uid: "1001"
- register: secrets_4
- ignore_errors: yes
-
-- name: secrets (uid str idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- uid: "1001"
- register: secrets_5
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - secrets_1 is changed
- - secrets_2 is not changed
- - secrets_3 is changed
- - secrets_4 is changed
- - secrets_5 is not changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=')
-- assert:
- that:
- - secrets_1 is failed
- - "'Minimum version required' in secrets_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<')
-
-####################################################################
-## secrets (gid) ###################################################
-####################################################################
-
-- name: secrets (gid int)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- gid: 1001
- register: secrets_1
- ignore_errors: yes
-
-- name: secrets (gid int idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- gid: 1001
- register: secrets_2
- ignore_errors: yes
-
-- name: secrets (gid int change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- gid: 1002
- register: secrets_3
- ignore_errors: yes
-
-- name: secrets (gid str)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- gid: "1003"
- register: secrets_4
- ignore_errors: yes
-
-- name: secrets (gid str idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- gid: "1003"
- register: secrets_5
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - secrets_1 is changed
- - secrets_2 is not changed
- - secrets_3 is changed
- - secrets_4 is changed
- - secrets_5 is not changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=')
-- assert:
- that:
- - secrets_1 is failed
- - "'Minimum version required' in secrets_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<')
-
-####################################################################
-## secrets (mode) ##################################################
-####################################################################
-
-- name: secrets (mode)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- mode: 0600
- register: secrets_1
- ignore_errors: yes
-
-- name: secrets (mode idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- mode: 0600
- register: secrets_2
- ignore_errors: yes
-
-- name: secrets (mode change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- secrets:
- - secret_id: "{{ secret_result_1.secret_id|default('') }}"
- secret_name: "{{ secret_name_1 }}"
- mode: 0777
- register: secrets_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - secrets_1 is changed
- - secrets_2 is not changed
- - secrets_3 is changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=')
-- assert:
- that:
- - secrets_1 is failed
- - "'Minimum version required' in secrets_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<')
-
-####################################################################
-####################################################################
-####################################################################
-
-- name: Delete secrets
- docker_secret:
- name: "{{ secret_name }}"
- state: absent
- force: yes
- loop:
- - "{{ secret_name_1 }}"
- - "{{ secret_name_2 }}"
- loop_control:
- loop_var: secret_name
- ignore_errors: yes
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
diff --git a/test/integration/targets/docker_swarm_service/tasks/tests/update_config.yml b/test/integration/targets/docker_swarm_service/tasks/tests/update_config.yml
deleted file mode 100644
index bb6e0ec1f1..0000000000
--- a/test/integration/targets/docker_swarm_service/tasks/tests/update_config.yml
+++ /dev/null
@@ -1,408 +0,0 @@
----
-
-- name: Registering service name
- set_fact:
- service_name: "{{ name_prefix ~ '-update_config' }}"
-
-- name: Registering service name
- set_fact:
- service_names: "{{ service_names + [service_name] }}"
-
-###################################################################
-## update_config.delay ############################################
-###################################################################
-
-- name: update_config.delay
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- delay: 5s
- register: update_delay_1
-
-- name: update_config.delay (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- delay: 5s
- register: update_delay_2
-
-- name: update_delay (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_delay: 5000000000
- register: update_delay_2b
-
-- name: update_config.delay (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- delay: 12s
- register: update_delay_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - update_delay_1 is changed
- - update_delay_2 is not changed
- - update_delay_2b is not changed
- - update_delay_3 is changed
-
-###################################################################
-## update_config.failure_action ###################################
-###################################################################
-
-- name: update_config.failure_action
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- failure_action: "pause"
- register: update_failure_action_1
-
-- name: update_config.failure_action (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- failure_action: "pause"
- register: update_failure_action_2
-
-- name: update_failure_action (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_failure_action: "pause"
- register: update_failure_action_2b
-
-- name: update_config.failure_action (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- failure_action: "continue"
- register: update_failure_action_3
-
-- name: update_config.failure_action (rollback)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- failure_action: "rollback"
- register: update_failure_action_4
- ignore_errors: yes
-
-- name: update_config.failure_action (rollback idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_failure_action: "rollback"
- register: update_failure_action_5
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - update_failure_action_1 is changed
- - update_failure_action_2 is not changed
- - update_failure_action_2b is not changed
- - update_failure_action_3 is changed
-
-- assert:
- that:
- - update_failure_action_4 is changed
- - update_failure_action_5 is not changed
- when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
-
-- assert:
- that:
- - update_failure_action_4 is failed
- - "'Minimum version required' in update_failure_action_4.msg"
- when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
-
-###################################################################
-## update_config.max_failure_ratio ################################
-###################################################################
-
-- name: update_config.max_failure_ratio
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- max_failure_ratio: 0.25
- register: update_max_failure_ratio_1
- ignore_errors: yes
-
-- name: update_config.max_failure_ratio (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- max_failure_ratio: 0.25
- register: update_max_failure_ratio_2
- ignore_errors: yes
-
-- name: update_max_failure_ratio (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_max_failure_ratio: 0.25
- register: update_max_failure_ratio_2b
- ignore_errors: yes
-
-- name: update_config.max_failure_ratio (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- max_failure_ratio: 0.50
- register: update_max_failure_ratio_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - update_max_failure_ratio_1 is changed
- - update_max_failure_ratio_2 is not changed
- - update_max_failure_ratio_2b is not changed
- - update_max_failure_ratio_3 is changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
-- assert:
- that:
- - update_max_failure_ratio_1 is failed
- - "'Minimum version required' in update_max_failure_ratio_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.1.0', '<')
-
-###################################################################
-# update_config.monitor ###########################################
-###################################################################
-
-- name: update_config.monitor
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- monitor: 10s
- register: update_monitor_1
- ignore_errors: yes
-
-- name: update_config.monitor (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- monitor: 10s
- register: update_monitor_2
- ignore_errors: yes
-
-- name: update_monitor (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_monitor: 10s
- register: update_monitor_2b
- ignore_errors: yes
-
-- name: update_config.monitor (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- monitor: 60s
- register: update_monitor_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - update_monitor_1 is changed
- - update_monitor_2 is not changed
- - update_monitor_2b is not changed
- - update_monitor_3 is changed
- when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
-- assert:
- that:
- - update_monitor_1 is failed
- - "'Minimum version required' in update_monitor_1.msg"
- when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.1.0', '<')
-
-###################################################################
-# update_config.order #############################################
-###################################################################
-
-- name: update_config.order
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- order: "start-first"
- register: update_order_1
- ignore_errors: yes
-
-- name: update_config.order (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- order: "start-first"
- register: update_order_2
- ignore_errors: yes
-
-- name: update_order (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_order: "start-first"
- register: update_order_2b
- ignore_errors: yes
-
-- name: update_config.order (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- order: "stop-first"
- register: update_order_3
- ignore_errors: yes
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - update_order_1 is changed
- - update_order_2 is not changed
- - update_order_2b is not changed
- - update_order_3 is changed
- when: docker_api_version is version('1.29', '>=') and docker_py_version is version('2.7.0', '>=')
-- assert:
- that:
- - update_order_1 is failed
- - "'Minimum version required' in update_order_1.msg"
- when: docker_api_version is version('1.29', '<') or docker_py_version is version('2.7.0', '<')
-
-###################################################################
-## update_config.parallelism ######################################
-###################################################################
-
-- name: update_config.parallelism
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- parallelism: 2
- register: update_parallelism_1
-
-- name: update_config.parallelism (idempotency)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- parallelism: 2
- register: update_parallelism_2
-
-- name: update_parallelism (idempotency, old name)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_parallelism: 2
- register: update_parallelism_2b
-
-- name: update_config.parallelism (change)
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
- resolve_image: no
- command: '/bin/sh -v -c "sleep 10m"'
- update_config:
- parallelism: 1
- register: update_parallelism_3
-
-- name: cleanup
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- diff: no
-
-- assert:
- that:
- - update_parallelism_1 is changed
- - update_parallelism_2 is not changed
- - update_parallelism_2b is not changed
- - update_parallelism_3 is changed
diff --git a/test/integration/targets/docker_swarm_service/vars/main.yml b/test/integration/targets/docker_swarm_service/vars/main.yml
deleted file mode 100644
index 45bef6c4ff..0000000000
--- a/test/integration/targets/docker_swarm_service/vars/main.yml
+++ /dev/null
@@ -1,53 +0,0 @@
----
-
-service_expected_output:
- args: [sleep, '1800']
- configs: null
- constraints: null
- container_labels: null
- command: null
- dns: null
- dns_options: null
- dns_search: null
- endpoint_mode: vip
- env: null
- force_update: null
- groups: null
- healthcheck: null
- healthcheck_disabled: null
- hostname: null
- hosts: null
- image: busybox
- labels: null
- limit_cpu: null
- limit_memory: null
- log_driver: null
- log_driver_options: null
- mode: global
- mounts: null
- networks: null
- secrets: null
- stop_grace_period: null
- stop_signal: null
- placement_preferences: null
- publish:
- - {mode: null, protocol: tcp, published_port: 60001, target_port: 60001}
- - {mode: null, protocol: udp, published_port: 60001, target_port: 60001}
- read_only: null
- replicas: null
- reserve_cpu: null
- reserve_memory: null
- restart_policy: null
- restart_policy_attempts: null
- restart_policy_delay: null
- restart_policy_window: null
- rollback_config: null
- tty: null
- update_delay: null
- update_failure_action: null
- update_max_failure_ratio: null
- update_monitor: null
- update_order: null
- update_parallelism: null
- user: null
- working_dir: null
diff --git a/test/integration/targets/docker_swarm_service_info/aliases b/test/integration/targets/docker_swarm_service_info/aliases
deleted file mode 100644
index 9fe8a6d69b..0000000000
--- a/test/integration/targets/docker_swarm_service_info/aliases
+++ /dev/null
@@ -1,8 +0,0 @@
-shippable/posix/group3
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system.
diff --git a/test/integration/targets/docker_swarm_service_info/meta/main.yml b/test/integration/targets/docker_swarm_service_info/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_swarm_service_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_swarm_service_info/tasks/main.yml b/test/integration/targets/docker_swarm_service_info/tasks/main.yml
deleted file mode 100644
index 295634d63c..0000000000
--- a/test/integration/targets/docker_swarm_service_info/tasks/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- include_tasks: test_docker_swarm_service_info.yml
- when: docker_py_version is version('2.0.0', '>=') and docker_api_version is version('1.24', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_swarm_service_info tests!"
- when: not(docker_py_version is version('2.0.0', '>=') and docker_api_version is version('1.24', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_swarm_service_info/tasks/test_docker_swarm_service_info.yml b/test/integration/targets/docker_swarm_service_info/tasks/test_docker_swarm_service_info.yml
deleted file mode 100644
index 4da3ec066c..0000000000
--- a/test/integration/targets/docker_swarm_service_info/tasks/test_docker_swarm_service_info.yml
+++ /dev/null
@@ -1,83 +0,0 @@
----
-
-- name: Generate service base name
- set_fact:
- service_base_name: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
-
-- name: Registering service names
- set_fact:
- service_name: "{{ service_base_name ~ '-1' }}"
-
-- block:
- - name: Make sure we're not already using Docker swarm
- docker_swarm:
- state: absent
- force: true
-
- - name: Try to get docker_swarm_service_info when docker is not running in swarm mode
- docker_swarm_service_info:
- name: "{{ service_name }}"
- ignore_errors: yes
- register: output
-
- - name: assert failure when called when swarm is not in use or not run on manager node
- assert:
- that:
- - 'output is failed'
- - 'output.msg == "Error running docker swarm module: must run on swarm manager node"'
-
- - name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
- register: output
-
- - name: Create services
- docker_swarm_service:
- name: "{{ service_name }}"
- image: alpine:3.8
-
- - name: Try to get docker_swarm_service_info for a single service
- docker_swarm_service_info:
- name: "{{ service_name }}"
- register: output
-
- - name: assert reading reading service info
- assert:
- that:
- - 'output.exists == true'
- - 'output.service.ID is string'
- - 'output.service.Spec.Name == service_name'
-
- - name: Create random name
- set_fact:
- random_service_name: "{{ 'random-service-%0x' % ((2**32) | random) }}"
-
- - name: Try to get docker_swarm_service_info using random service name as parameter
- docker_swarm_service_info:
- name: "{{ random_service_name }}"
- register: output
-
- - name: assert reading reading service info
- assert:
- that:
- - 'output.service is none'
- - 'output.exists == false'
-
- always:
- - name: Remove services
- docker_swarm_service:
- name: "{{ service_name }}"
- state: absent
- ignore_errors: yes
-
- - name: Remove swarm
- docker_swarm:
- state: absent
- force: true
-
- # Maximum of 1.24 (docker API version for docker_swarm_service_info) and 1.25 (docker API version for docker_swarm) is 1.25
- when: docker_py_version is version('2.0.2', '>=') and docker_api_version is version('1.25', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_swarm_service_info tests!"
- when: not(docker_py_version is version('2.0.2', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_volume/aliases b/test/integration/targets/docker_volume/aliases
deleted file mode 100644
index 7a020910ed..0000000000
--- a/test/integration/targets/docker_volume/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
diff --git a/test/integration/targets/docker_volume/meta/main.yml b/test/integration/targets/docker_volume/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_volume/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_volume/tasks/main.yml b/test/integration/targets/docker_volume/tasks/main.yml
deleted file mode 100644
index 43b417d41f..0000000000
--- a/test/integration/targets/docker_volume/tasks/main.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-- name: Create random name prefix
- set_fact:
- name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
- vnames: []
-
-- debug:
- msg: "Using name prefix {{ name_prefix }}"
-
-- block:
- - include_tasks: run-test.yml
- with_fileglob:
- - "tests/*.yml"
-
- always:
- - name: "Make sure all volumes are removed"
- docker_volume:
- name: "{{ item }}"
- state: absent
- with_items: "{{ vnames }}"
-
- when: docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.20', '>=') # FIXME: find out API version!
-
-- fail: msg="Too old docker / docker-py version to run docker_volume tests!"
- when: not(docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.20', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/docker_volume/tasks/run-test.yml b/test/integration/targets/docker_volume/tasks/run-test.yml
deleted file mode 100644
index a299937014..0000000000
--- a/test/integration/targets/docker_volume/tasks/run-test.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- name: "Loading tasks from {{ item }}"
- include_tasks: "{{ item }}"
diff --git a/test/integration/targets/docker_volume/tasks/tests/basic.yml b/test/integration/targets/docker_volume/tasks/tests/basic.yml
deleted file mode 100644
index 7ee562614c..0000000000
--- a/test/integration/targets/docker_volume/tasks/tests/basic.yml
+++ /dev/null
@@ -1,177 +0,0 @@
----
-- name: Registering volume name
- set_fact:
- vname: "{{ name_prefix ~ '-basic' }}"
-- name: Registering container name
- set_fact:
- vnames: "{{ vnames + [vname] }}"
-
-####################################################################
-## basic ###########################################################
-####################################################################
-
-- name: Create a volume
- docker_volume:
- name: "{{ vname }}"
- register: create_1
-
-- name: Create a volume (idempotency)
- docker_volume:
- name: "{{ vname }}"
- register: create_2
-
-- name: "Create a volume (recreate: options-changed)"
- docker_volume:
- name: "{{ vname }}"
- recreate: options-changed
- register: create_3
-
-- name: "Create a volume (recreate: always)"
- docker_volume:
- name: "{{ vname }}"
- recreate: always
- register: create_4
-
-- name: Remove a volume
- docker_volume:
- name: "{{ vname }}"
- state: absent
- register: absent_1
-
-- name: Remove a volume (idempotency)
- docker_volume:
- name: "{{ vname }}"
- state: absent
- register: absent_2
-
-- assert:
- that:
- - create_1 is changed
- - create_2 is not changed
- - create_3 is not changed
- - create_4 is changed
- - absent_1 is changed
- - absent_2 is not changed
-
-####################################################################
-## driver_options ##################################################
-####################################################################
-
-- name: Create a volume with options
- docker_volume:
- name: "{{ vname }}"
- driver: local
- driver_options:
- type: tempfs
- device: tmpfs
- o: size=100m,uid=1000
- register: driver_options_1
-
-- name: Create a volume with options (idempotency)
- docker_volume:
- name: "{{ vname }}"
- driver: local
- driver_options:
- type: tempfs
- device: tmpfs
- o: size=100m,uid=1000
- register: driver_options_2
-
-- name: Create a volume with options (changed)
- docker_volume:
- name: "{{ vname }}"
- driver: local
- driver_options:
- type: tempfs
- device: tmpfs
- o: size=200m,uid=1000
- register: driver_options_3
-
-- name: "Create a volume with options (changed, recreate: options-changed)"
- docker_volume:
- name: "{{ vname }}"
- driver: local
- driver_options:
- type: tempfs
- device: tmpfs
- o: size=200m,uid=1000
- recreate: options-changed
- register: driver_options_4
-
-- name: Cleanup
- docker_volume:
- name: "{{ vname }}"
- state: absent
-
-- assert:
- that:
- - driver_options_1 is changed
- - driver_options_2 is not changed
- - driver_options_3 is not changed
- - driver_options_4 is changed
-
-####################################################################
-## labels ##########################################################
-####################################################################
-
-- name: Create a volume with labels
- docker_volume:
- name: "{{ vname }}"
- labels:
- ansible.test.1: hello
- ansible.test.2: world
- register: driver_labels_1
-
-- name: Create a volume with labels (idempotency)
- docker_volume:
- name: "{{ vname }}"
- labels:
- ansible.test.2: world
- ansible.test.1: hello
- register: driver_labels_2
-
-- name: Create a volume with labels (less)
- docker_volume:
- name: "{{ vname }}"
- labels:
- ansible.test.1: hello
- register: driver_labels_3
-
-- name: "Create a volume with labels (less, recreate: options-changed)"
- docker_volume:
- name: "{{ vname }}"
- labels:
- ansible.test.1: hello
- recreate: options-changed
- register: driver_labels_4
-
-- name: Create a volume with labels (more)
- docker_volume:
- name: "{{ vname }}"
- labels:
- ansible.test.1: hello
- ansible.test.3: ansible
- register: driver_labels_5
-
-- name: "Create a volume with labels (more, recreate: options-changed)"
- docker_volume:
- name: "{{ vname }}"
- labels:
- ansible.test.1: hello
- ansible.test.3: ansible
- recreate: options-changed
- register: driver_labels_6
-
-- name: Cleanup
- docker_volume:
- name: "{{ vname }}"
- state: absent
-
-- assert:
- that:
- - driver_labels_1 is changed
- - driver_labels_2 is not changed
- - driver_labels_3 is not changed
- - driver_labels_4 is not changed
- - driver_labels_5 is not changed
- - driver_labels_6 is changed
diff --git a/test/integration/targets/docker_volume_info/aliases b/test/integration/targets/docker_volume_info/aliases
deleted file mode 100644
index e0fa6d19e7..0000000000
--- a/test/integration/targets/docker_volume_info/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-destructive
diff --git a/test/integration/targets/docker_volume_info/meta/main.yml b/test/integration/targets/docker_volume_info/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/docker_volume_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/docker_volume_info/tasks/main.yml b/test/integration/targets/docker_volume_info/tasks/main.yml
deleted file mode 100644
index 26b14a6599..0000000000
--- a/test/integration/targets/docker_volume_info/tasks/main.yml
+++ /dev/null
@@ -1,58 +0,0 @@
----
-- block:
- - name: Create random volume name
- set_fact:
- cname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
-
- - name: Make sure volume is not there
- docker_volume:
- name: "{{ cname }}"
- state: absent
-
- - name: Inspect a non-present volume
- docker_volume_info:
- name: "{{ cname }}"
- register: result
-
- - assert:
- that:
- - "not result.exists"
- - "'volume' in result"
- - "result.volume is none"
-
- - name: Make sure volume exists
- docker_volume:
- name: "{{ cname }}"
-
- - name: Inspect a present volume
- docker_volume_info:
- name: "{{ cname }}"
- register: result
- - name: Dump docker_volume_info result
- debug: var=result
-
- - name: "Comparison: use 'docker volume inspect'"
- command: docker volume inspect "{{ cname }}"
- register: docker_volume_inspect
- - set_fact:
- docker_volume_inspect_result: "{{ docker_volume_inspect.stdout | from_json }}"
- - name: Dump docker volume inspect result
- debug: var=docker_volume_inspect_result
-
- - name: Cleanup
- docker_volume:
- name: "{{ cname }}"
- state: absent
-
- - assert:
- that:
- - result.exists
- - "'volume' in result"
- - "result.volume"
- - "result.volume == docker_volume_inspect_result[0]"
-
- # Requirements for docker_volume
- when: docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.24', '>=')
-
-- fail: msg="Too old docker / docker-py version to run docker_volume_info tests!"
- when: not(docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.24', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
diff --git a/test/integration/targets/enos_command/README.md b/test/integration/targets/enos_command/README.md
deleted file mode 100644
index 76542655a3..0000000000
--- a/test/integration/targets/enos_command/README.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# Ansible Role: enos_command - Executes any CLI command on switch and results are displayed.
----
-<add role description below>
-
- Sends arbitrary commands to an ENOS node and returns the results
- read from the device. The C(enos_command) module includes an
- argument that will cause the module to wait for a specific condition
- before returning or timing out if the condition is not met.
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.4 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running ENOS version 8.4.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `enos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-
-These are the various options the customer have in executing the enos_command modules:
-
-Variable | Description
---- | ---
-`commands` | List of commands to send to the remote device over the configured provider. The resulting output from the command is returned. If the I(wait_for) argument is provided, the module is not returned until the condition is satisfied or the number of retires as expired.
-`wait_for` | List of conditions to evaluate against the output of the command. The task will wait for each condition to be true before moving forward. If the conditional is not true within the configured number of retries, the task fails. See examples.
-`match` | The I(match) argument is used in conjunction with the I(wait_for) argument to specify the match policy. Valid values are C(all) or C(any). If the value is set to C(all) then all conditionals in the wait_for must be satisfied. If the value is set to C(any) then only one of the values must be satisfied.
-`retries` | Specifies the number of retries a command should by tried before it is considered failed. The command is run on the target device every retry and evaluated against the I(wait_for) conditions.
-`interval` | Configures the interval in seconds to wait between retries of the command. If the command does not pass the specified conditions, the interval indicates how long to wait before trying the command again.
-
-Need to specify these variables in vars/main.yml under variable `cli`
-
-Variable | Description
---- | ---
-`host` | Has to be "{{ inventory_hostname }}"
-`port` | Has to be`22`
-`username` | User Name of switch
-`password` | Password of switch
-`timeout` | time out value for CLI
-`authorize` | Whether u have to enter enable mode for data collection.
-`auth_pass`| Enable Password if required
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- enos_command.py - This module file will be located at lib/ansible/modules/network/enos/ of Ansible installation.
-- enos.py - This module util file will be located at lib/ansible/module_utils/network/enos of Ansible installation.
-- enos.py - This module plugin file will be located at lib/ansible/plugins/action of Ansible installation.
-- enos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- enos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_command_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[enos_command]
-10.241.105.24 ansible_connection=network_cli ansible_network_os=enos ansible_ssh_user=<username> ansible_ssh_pass=<password>
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook enos_command_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do some CLI Command configurations
- hosts: enos_command
- gather_facts: no
- connection: network_cli
- roles:
- - enos_command
-```
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, eithe
-r version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PU
-RPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/enos_command/aliases b/test/integration/targets/enos_command/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/enos_command/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/enos_command/defaults/main.yaml b/test/integration/targets/enos_command/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/enos_command/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/enos_command/tasks/cli.yaml b/test/integration/targets/enos_command/tasks/cli.yaml
deleted file mode 100644
index d675462dd0..0000000000
--- a/test/integration/targets/enos_command/tasks/cli.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/enos_command/tasks/main.yaml b/test/integration/targets/enos_command/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/enos_command/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/enos_command/tests/cli/bad_operator.yaml b/test/integration/targets/enos_command/tests/cli/bad_operator.yaml
deleted file mode 100644
index e554b847d6..0000000000
--- a/test/integration/targets/enos_command/tests/cli/bad_operator.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-- debug: msg="START cli/bad_operator.yaml"
-
-- name: test bad operator
- enos_command:
- commands:
- - show version
- - show interface information
- wait_for:
- - result[0] contains 'Description: Foo'
- provider: "{{ cli }}"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - "result.failed == true"
- - "result.msg is defined"
-
-- debug: msg="END cli/bad_operator.yaml"
diff --git a/test/integration/targets/enos_command/tests/cli/contains.yaml b/test/integration/targets/enos_command/tests/cli/contains.yaml
deleted file mode 100644
index c9615d3cbf..0000000000
--- a/test/integration/targets/enos_command/tests/cli/contains.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-- debug: msg="START cli/contains.yaml"
-
-- name: test contains operator
- enos_command:
- commands:
- - show version
- - show system memory
- wait_for:
- - "result[0] contains 'Lenovo'"
- - "result[1] contains 'MemFree'"
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
-
-- debug: msg="END cli/contains.yaml"
diff --git a/test/integration/targets/enos_command/tests/cli/invalid.yaml b/test/integration/targets/enos_command/tests/cli/invalid.yaml
deleted file mode 100644
index 1276c7c369..0000000000
--- a/test/integration/targets/enos_command/tests/cli/invalid.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-- debug: msg="START cli/invalid.yaml"
-
-- name: run invalid command
- enos_command:
- commands: ['show foo']
- provider: "{{ cli }}"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - "result.failed"
-
-- name: run commands that include invalid command
- enos_command:
- commands:
- - show version
- - show foo
- provider: "{{ cli }}"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - "result.failed"
- ignore_errors: true
-
-- debug: msg="END cli/invalid.yaml"
diff --git a/test/integration/targets/enos_command/tests/cli/output.yaml b/test/integration/targets/enos_command/tests/cli/output.yaml
deleted file mode 100644
index e3e3565cb0..0000000000
--- a/test/integration/targets/enos_command/tests/cli/output.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-- debug: msg="START cli/output.yaml"
-
-- name: get output for single command
- enos_command:
- commands: ['show version']
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
-
-- name: get output for multiple commands
- enos_command:
- commands:
- - show version
- - show interface information
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
- - "result.stdout | length == 2"
-
-- debug: msg="END cli/output.yaml"
diff --git a/test/integration/targets/enos_command/tests/cli/timeout.yaml b/test/integration/targets/enos_command/tests/cli/timeout.yaml
deleted file mode 100644
index e60bd18d92..0000000000
--- a/test/integration/targets/enos_command/tests/cli/timeout.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- debug: msg="START cli/timeout.yaml"
-
-- name: test bad condition
- enos_command:
- commands:
- - show version
- wait_for:
- - "result[0] contains bad_value_string"
- provider: "{{ cli }}"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - "result.failed == true"
- - "result.msg is defined"
-
-- debug: msg="END cli/timeout.yaml"
diff --git a/test/integration/targets/enos_command/vars/main.yaml b/test/integration/targets/enos_command/vars/main.yaml
deleted file mode 100644
index bdcdfd88e7..0000000000
--- a/test/integration/targets/enos_command/vars/main.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-cli:
- host: "{{ inventory_hostname }}"
- port: 22
- username: admin
- password: admin
-# transport: cli
- timeout: 30
- authorize: True
- auth_pass:
-
-enos_command_data:
- - {}
diff --git a/test/integration/targets/enos_config/README.md b/test/integration/targets/enos_config/README.md
deleted file mode 100644
index c5b628304e..0000000000
--- a/test/integration/targets/enos_config/README.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# Ansible Role: enos_config - Executes any Configuration command on switch and results are displayed.
----
-<add role description below>
-
- Lenovo ENOS configurations use a simple block indent file syntax
- for segmenting configuration into sections. This module provides
- an implementation for working with ENOS configuration sections in
- a deterministic way.
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.4 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running ENOS version 8.4.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `enos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-
-These are the various options the customer have in executing the enos_config modules:
-
-Variable | Description
---- | ---
-`lines` | The ordered set of commands that should be configured in the section. The commands must be the exact same commands as found in the device running-config. Be sure to note the configuration command syntax as some commands are automatically modified by the device config parser.
-`parents` | The ordered set of parents that uniquely identify the section the commands should be checked against. If the parents argument is omitted, the commands are checked against the set of top level or global commands.
-`src` | Specifies the source path to the file that contains the configuration or configuration template to load. The path to the source file can either be the full path on the Ansible control host or a relative path from the playbook or role root directory. This argument is mutually exclusive with I(lines), I(parents).
-`before` | The ordered set of commands to push on to the command stack if a change needs to be made. This allows the playbook designer the opportunity to perform configuration commands prior to pushing any changes without affecting how the set of commands are matched against the system.
-`after` | The ordered set of commands to append to the end of the command stack if a change needs to be made. Just like with I(before) this allows the playbook designer to append a set of commands to be executed after the command set.
-`replace` | Instructs the module on the way to perform the configuration on the device. If the replace argument is set to I(line) then the modified lines are pushed to the device in configuration mode. If the replace argument is set to I(block) then the entire command block is pushed to the device in configuration mode if any line is not correct.
-`config` | The module, by default, will connect to the remote device and retrieve the current running-config to use as a base for comparing against the contents of source. There are times when it is not desirable to have the task get the current running-config for every task in a playbook. The I(config) argument allows the implementer to pass in the configuration to use as the base config for comparison.
-`backup` | This argument will cause the module to create a full backup of the current C(running-config) from the remote device before any changes are made. The backup file is written to the C(backup) folder in the playbook root directory. If the directory does not exist, it is created.
-`match` |Instructs the module on the way to perform the matching of the set of commands against the current device config. If match is set to I(line), commands are matched line by line. If match is set to I(strict), command lines are matched with respect to position. If match is set to I(exact), command lines must be an equal match. Finally, if match is set to I(none), the module will not attempt to compare the source configuration with the running configuration on the remote device.
-`comment` | Allows a commit description to be specified to be included when the configuration is committed. If the configuration is not changed or committed, this argument is ignored.
-`admin` | Enters into administration configuration mode for making config changes to the device.
-
-
-Need to specify these variables in vars/main.yml under variable `cli`
-
-Variable | Description
---- | ---
-`host` | Has to be "{{ inventory_hostname }}"
-`port` | Has to be`22`
-`username` | User Name of switch
-`password` | Password of switch
-`timeout` | time out value for CLI
-`authorize` | Whether u have to enter enable mode for data collection.
-`auth_pass`| Enable Password if required
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- enos_config.py - This module file will be located at lib/ansible/modules/network/enos/ of Ansible installation.
-- enos.py - This module util file will be located at lib/ansible/module_utils/network/enos of Ansible installation.
-- enos.py - This module plugin file will be located at lib/ansible/plugins/action of Ansible installation.
-- enos_config.py - This module plugin file will be located at lib/ansible/plugins/action of Ansible installation.
-- enos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- enos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *cnos_command_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[enos_config]
-10.241.105.24 ansible_connection=network_cli ansible_network_os=enos ansible_ssh_user=<username> ansible_ssh_pass=<password>
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook enos_config_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do some CLI Command configurations
- hosts: enos_config
- gather_facts: no
- connection: network_cli
- roles:
- - enos_config
-```
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, eithe
-r version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PU
-RPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/enos_config/aliases b/test/integration/targets/enos_config/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/enos_config/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/enos_config/defaults/main.yaml b/test/integration/targets/enos_config/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/enos_config/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/enos_config/tasks/cli.yaml b/test/integration/targets/enos_config/tasks/cli.yaml
deleted file mode 100644
index d675462dd0..0000000000
--- a/test/integration/targets/enos_config/tasks/cli.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/enos_config/tasks/main.yaml b/test/integration/targets/enos_config/tasks/main.yaml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/enos_config/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/enos_config/templates/basic/config.j2 b/test/integration/targets/enos_config/templates/basic/config.j2
deleted file mode 100644
index c837f60fae..0000000000
--- a/test/integration/targets/enos_config/templates/basic/config.j2
+++ /dev/null
@@ -1,4 +0,0 @@
-vlan 13
- name anil
- optflood
- stg 13
diff --git a/test/integration/targets/enos_config/templates/defaults/config.j2 b/test/integration/targets/enos_config/templates/defaults/config.j2
deleted file mode 100644
index d4c04bb3ee..0000000000
--- a/test/integration/targets/enos_config/templates/defaults/config.j2
+++ /dev/null
@@ -1,2 +0,0 @@
-vlan 13
- name anil
diff --git a/test/integration/targets/enos_config/tests/cli/backup.yaml b/test/integration/targets/enos_config/tests/cli/backup.yaml
deleted file mode 100644
index 09f7e7b11a..0000000000
--- a/test/integration/targets/enos_config/tests/cli/backup.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
----
-- debug: msg="START cli/backup.yaml"
-
-- name: setup
- enos_config:
- commands:
- - no vlan 13
- provider: "{{ cli }}"
- ignore_errors: yes
-
-- name: collect any backup files
- find:
- paths: "{{ role_path }}/backup"
- pattern: "{{ inventory_hostname_short }}_config*"
- register: backup_files
- delegate_to: localhost
-
-- name: delete backup files
- file:
- path: "{{ item.path }}"
- state: absent
- with_items: "{{backup_files.files|default([])}}"
-
-- name: configure device with config
- enos_config:
- src: roles/enos_config/templates/basic/config.j2
- backup: yes
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - "result.changed == false"
-
-- name: collect any backup files
- find:
- paths: "{{ role_path }}/backup"
- pattern: "{{ inventory_hostname_short }}_config*"
- register: backup_files
- delegate_to: localhost
-
-- assert:
- that:
- - "backup_files.files is defined"
-
-- name: teardown
- enos_config:
- commands:
- - no vlan 13
- provider: "{{ cli }}"
-
-- debug: msg="END cli/backup.yaml"
diff --git a/test/integration/targets/enos_config/tests/cli/basic.yaml b/test/integration/targets/enos_config/tests/cli/basic.yaml
deleted file mode 100644
index c0d5e1cc22..0000000000
--- a/test/integration/targets/enos_config/tests/cli/basic.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
----
-- debug: msg="START cli/basic.yaml"
-
-- name: setup
- enos_config:
- commands:
- - no vlan 13\n
- provider: "{{ cli }}"
- ignore_errors: yes
-
-- name: configure device with config
- enos_config:
- src: roles/enos_config/templates/basic/config.j2
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.updates is not defined"
-
-- name: check device with config
- enos_config:
- src: roles/enos_config/templates/basic/config.j2
- provider: "{{ cli }}"
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.updates is not defined"
-
-- name: teardown
- enos_config:
- commands:
- - no vlan 13\n
- provider: "{{ cli }}"
-
-- debug: msg="END cli/basic.yaml"
diff --git a/test/integration/targets/enos_config/tests/cli/defaults.yaml b/test/integration/targets/enos_config/tests/cli/defaults.yaml
deleted file mode 100644
index ef2cbcd981..0000000000
--- a/test/integration/targets/enos_config/tests/cli/defaults.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
----
-- debug: msg="START cli/defaults.yaml"
-
-- name: setup
- enos_config:
- commands:
- - no vlan 13\n
- provider: "{{ cli }}"
- ignore_errors: yes
- become: True
- become_method: enable
-
-- name: configure device with defaults included
- enos_config:
- src: roles/enos_config/templates/defaults/config.j2
- provider: "{{ cli }}"
- register: result
- become: True
- become_method: enable
-
-- debug: var=result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.updates is not defined"
-
-- name: check device with defaults included Hell
- enos_config:
- src: roles/enos_config/templates/defaults/config.j2
- provider: "{{ cli }}"
- register: result
-
-- debug: var=result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.updates is not defined"
-
-- name: teardown
- enos_config:
- commands:
- - no vlan 13\n
- provider: "{{ cli }}"
- become: true
- become_method: enable
- ignore_errors: yes
-
-- debug: msg="END cli/defaults.yaml"
diff --git a/test/integration/targets/enos_config/tests/cli/force.yaml b/test/integration/targets/enos_config/tests/cli/force.yaml
deleted file mode 100644
index db48a23809..0000000000
--- a/test/integration/targets/enos_config/tests/cli/force.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
----
-- debug: msg="START cli/force.yaml"
-
-- name: setup
- enos_config:
- commands:
- - no vlan 13\n
- provider: "{{ cli }}"
- ignore_errors: yes
-
-- name: configure device with config
- enos_config:
- src: roles/enos_config/templates/basic/config.j2
- provider: "{{ cli }}"
- match: none
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "result.updates is defined"
-
-- name: check device with config
- enos_config:
- src: roles/enos_config/templates/basic/config.j2
- provider: "{{ cli }}"
- match: none
- register: result
-
-- assert:
- that:
- - "result.changed == true"
- - "result.updates is defined"
-
-- name: teardown
- enos_config:
- commands:
- - no vlan 13\n
- provider: "{{ cli }}"
-
-- debug: msg="END cli/force.yaml"
diff --git a/test/integration/targets/enos_config/vars/main.yml b/test/integration/targets/enos_config/vars/main.yml
deleted file mode 100644
index d0fcdabf53..0000000000
--- a/test/integration/targets/enos_config/vars/main.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-cli:
- host: "{{ inventory_hostname }}"
- port: 22
- username: admin
- password: admin
- timeout: 60
- context: ansible
- auth_pass:
diff --git a/test/integration/targets/enos_facts/README.md b/test/integration/targets/enos_facts/README.md
deleted file mode 100644
index 12cbc7881b..0000000000
--- a/test/integration/targets/enos_facts/README.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# Ansible Role: enos_facts - Displays switch information
----
-<add role description below>
-
- Collects a base set of device facts from a remote Lenovo device
- running on ENOS. This module prepends all of the
- base network fact keys with C(ansible_net_<fact>). The facts
- module will always collect a base set of facts from the device
- and can enable or disable collection of additional facts.
-
-## Requirements
----
-<add role requirements information below>
-
-- Ansible version 2.4 or later ([Ansible installation documentation](http://docs.ansible.com/ansible/intro_installation.html))
-- Lenovo switches running ENOS version 8.4.1.0 or later
-- an SSH connection to the Lenovo switch (SSH must be enabled on the network device)
-
-
-## Role Variables
----
-<add role variables information below>
-Available variables are listed below, along with description.
-
-The following are mandatory inventory variables:
-
-Variable | Description
---- | ---
-`ansible_connection` | Has to be `network_cli`
-`ansible_network_os` | Has to be `enos`
-`ansible_ssh_user` | Specifies the username used to log into the switch
-`ansible_ssh_pass` | Specifies the password used to log into the switch
-
-To gather subsets you will specify the following variables to get appropriate
-data retrieved from the devices
-
-Variable | Description
---- | ---
-`gather_subset` | When supplied, this argument will restrict the facts collected to a given subset. Possible values for this argument include all, hardware, config, and interfaces. Can specify a list of values to include a larger subset. Values can also be used with an initial C(M(!)) to specify that a specific subset should not be collected.
-
-Need to specify these variables in vars/main.yml under variable `cli`
-
-Variable | Description
---- | ---
-`host` | Has to be "{{ inventory_hostname }}"
-`port` | Has to be`22`
-`username` | User Name of switch
-`password` | Password of switch
-`timeout` | time out value for CLI
-`authorize` | Whether u have to enter enable mode for data collection.
-`auth_pass`| Enable Password if required
-
-
-## Dependencies
----
-<add dependencies information below>
-
-- username.iptables - Configures the firewall and blocks all ports except those needed for web server and SSH access.
-- username.common - Performs common server configuration.
-- enos_facts.py - This module file will be located at lib/ansible/modules/network/enos/ of Ansible installation.
-- enos.py - This module util file will be located at lib/ansible/module_utils/network/enos of Ansible installation.
-- enos.py - This module plugin file will be located at lib/ansible/plugins/action of Ansible installation.
-- enos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- enos.py - This module plugin file will be located at lib/ansible/plugins/cliconf of Ansible installation.
-- /etc/ansible/hosts - You must edit the */etc/ansible/hosts* file with the device information of the switches designated as leaf switches. You may refer to *enos_command_sample_hosts* for a sample configuration.
-
-Ansible keeps track of all network elements that it manages through a hosts file. Before the execution of a playbook, the hosts file must be set up.
-
-Open the */etc/ansible/hosts* file with root privileges. Most of the file is commented out by using **#**. You can also comment out the entries you will be adding by using **#**. You need to copy the content of the hosts file for the role into the */etc/ansible/hosts* file. The sample hosts file for the role is located in the main directory.
-
-```
-[enos_facts]
-10.241.105.24 ansible_connection=network_cli ansible_network_os=enos ansible_ssh_user=<username> ansible_ssh_pass=<password>
-```
-
-**Note:** You need to change the IP addresses to fit your specific topology. You also need to change the `<username>` and `<password>` to the appropriate values used to log into the specific Lenovo network devices.
-
-
-## Example Playbook
----
-<add playbook samples below>
-
-To execute an Ansible playbook, use the following command:
-
-```
-ansible-playbook enos_facts_sample.yml -vvv
-```
-
-`-vvv` is an optional verbose command that helps identify what is happening during playbook execution. The playbook for each role is located in the main directory of the solution.
-
-```
- - name: Module to do some CLI Command configurations
- hosts: enos_facts
- gather_facts: no
- connection: network_cli
- roles:
- - enos_facts
-```
-
-## License
----
-<add license information below>
-Copyright (C) 2017 Lenovo, Inc.
-
-This file is part of Ansible
-
-Ansible is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-Ansible is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with Ansible. If not, see <http://www.gnu.org/licenses/>.
diff --git a/test/integration/targets/enos_facts/aliases b/test/integration/targets/enos_facts/aliases
deleted file mode 100644
index be010d923f..0000000000
--- a/test/integration/targets/enos_facts/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# No Lenovo Switch simulator yet, so not enabled
-unsupported
diff --git a/test/integration/targets/enos_facts/defaults/main.yaml b/test/integration/targets/enos_facts/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/enos_facts/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/enos_facts/tasks/cli.yaml b/test/integration/targets/enos_facts/tasks/cli.yaml
deleted file mode 100644
index d675462dd0..0000000000
--- a/test/integration/targets/enos_facts/tasks/cli.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- name: collect all cli test cases
- find:
- paths: "{{ role_path }}/tests/cli"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test case
- include: "{{ test_case_to_run }}"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/enos_facts/tasks/main.yml b/test/integration/targets/enos_facts/tasks/main.yml
deleted file mode 100644
index 415c99d8b1..0000000000
--- a/test/integration/targets/enos_facts/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: cli.yaml, tags: ['cli'] }
diff --git a/test/integration/targets/enos_facts/tests/cli/all_facts.yaml b/test/integration/targets/enos_facts/tests/cli/all_facts.yaml
deleted file mode 100644
index 836dad8bcd..0000000000
--- a/test/integration/targets/enos_facts/tests/cli/all_facts.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-- debug: msg="START cli/all_facts.yaml"
-
-- name: test getting all facts
- enos_facts:
- gather_subset:
- - all
- register: result
-
-- assert:
- that:
- # _facts modules should never report a change
- - "result.changed == false"
-
- # Correct subsets are present
- - "'config' in result.ansible_facts.ansible_net_gather_subset"
- - "'hardware' in result.ansible_facts.ansible_net_gather_subset"
- - "'default' in result.ansible_facts.ansible_net_gather_subset"
- - "'interfaces' in result.ansible_facts.ansible_net_gather_subset"
-
- # Items from those subsets are present
- #- "result.ansible_facts.ansible_net_filesystems is defined"
- # Check that these facts not only are present, but are valid (positive integers)
- - "result.ansible_facts.ansible_net_memfree_mb > 1"
- - "result.ansible_facts.ansible_net_memtotal_mb > 1"
-
-- debug: msg="END cli/all_facts.yaml"
diff --git a/test/integration/targets/enos_facts/tests/cli/default_facts.yaml b/test/integration/targets/enos_facts/tests/cli/default_facts.yaml
deleted file mode 100644
index 61549dc951..0000000000
--- a/test/integration/targets/enos_facts/tests/cli/default_facts.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-- debug: msg="START cli/default_facts.yaml"
-
-- name: test getting default facts
- enos_facts:
- register: result
-
-- assert:
- that:
- # _facts modules should never report a change
- - "result.changed == false"
-
- # Correct subsets are present
- - "'hardware' in result.ansible_facts.ansible_net_gather_subset"
- - "'default' in result.ansible_facts.ansible_net_gather_subset"
- - "'interfaces' in result.ansible_facts.ansible_net_gather_subset"
- #- "result.ansible_facts.ansible_net_filesystems is defined"
- # ... and not present
- - "'config' not in result.ansible_facts.ansible_net_gather_subset"
-
- # Items from those subsets are present
- #- "result.ansible_facts.ansible_net_filesystems is defined" #hw
- - "result.ansible_facts.ansible_net_memtotal_mb > 10" #hw
- - "result.ansible_facts.ansible_net_interfaces | length > 1" # more than one interface returned
-
- # ... and not present
- - "result.ansible_facts.ansible_net_config is not defined" # config
-
-- debug: msg="END cli/default.yaml"
diff --git a/test/integration/targets/enos_facts/tests/cli/invalid_subset.yaml b/test/integration/targets/enos_facts/tests/cli/invalid_subset.yaml
deleted file mode 100644
index 0b12c6c85e..0000000000
--- a/test/integration/targets/enos_facts/tests/cli/invalid_subset.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
----
-- debug: msg="START cli/invalid_subset.yaml"
-
-- name: test invalid subset (foobar)
- enos_facts:
- gather_subset:
- - "foobar"
- register: result
- ignore_errors: true
-
-- assert:
- that:
- # Failures shouldn't return changes
- - "result.changed == false"
- # It's a failure
- - "result.failed == true"
- # Sensible Failure message
- - "result.msg == 'Bad subset'"
-
-###############
-# FIXME Future
-# We may in the future want to add a test for
-
-- name: test subset specified multiple times
- enos_facts:
- gather_subset:
- - "!hardware"
- - "hardware"
- authorize: yes
- register: result
- ignore_errors: true
-
-- assert:
- that:
- # Failures shouldn't return changes
- - "result.changed == false"
- # It's a failure
- - "result.failed == true"
- # Sensible Failure message
- - "result.msg == 'Bad subset'"
- ignore_errors: true
-
-- debug: msg="END cli/invalid_subset.yaml"
diff --git a/test/integration/targets/enos_facts/tests/cli/not_hardware.yaml b/test/integration/targets/enos_facts/tests/cli/not_hardware.yaml
deleted file mode 100644
index a885c59b12..0000000000
--- a/test/integration/targets/enos_facts/tests/cli/not_hardware.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
----
-- debug: msg="START cli/not_hardware_facts.yaml"
-
-- name: test not hardware
- enos_facts:
- gather_subset:
- - "!hardware"
- register: result
-
-- assert:
- that:
- # _facts modules should never report a change
- - "result.changed == false"
-
- # Correct subsets are present
- - "'config' in result.ansible_facts.ansible_net_gather_subset"
-
- - "'default' in result.ansible_facts.ansible_net_gather_subset"
- - "'interfaces' in result.ansible_facts.ansible_net_gather_subset"
- # ... and not present
- - "'hardware' not in result.ansible_facts.ansible_net_gather_subset"
-
- # Items from those subsets are present
- - "result.ansible_facts.ansible_net_interfaces | length > 1" # more than one interface returned
- # ... and not present
- - "result.ansible_facts.ansible_net_filesystems is not defined"
-
-- debug: msg="END cli/not_hardware_facts.yaml"
diff --git a/test/integration/targets/enos_facts/vars/main.yml b/test/integration/targets/enos_facts/vars/main.yml
deleted file mode 100644
index aa25153ec8..0000000000
--- a/test/integration/targets/enos_facts/vars/main.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-cli:
- host: "{{ inventory_hostname }}"
- port: 22
- username: admin
- password: admin
- timeout: 30
- authorize: True
- auth_pass:
diff --git a/test/integration/targets/etcd3/aliases b/test/integration/targets/etcd3/aliases
deleted file mode 100644
index a03abe0c05..0000000000
--- a/test/integration/targets/etcd3/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-destructive
-shippable/posix/group1
-skip/osx
-skip/freebsd
-disabled
diff --git a/test/integration/targets/etcd3/defaults/main.yml b/test/integration/targets/etcd3/defaults/main.yml
deleted file mode 100644
index bf8934ed75..0000000000
--- a/test/integration/targets/etcd3/defaults/main.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-# test code for the etcd3 module
-# (c) 2017, Jean-Philippe Evrard <jean-philippe@evrard.me>
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# # Copyright: (c) 2018, Ansible Project
-#
-etcd3_ver: "v3.2.14"
-etcd3_download_server: "https://storage.googleapis.com/etcd"
-#etcd3_download_server: "https://github.com/coreos/etcd/releases/download"
-etcd3_download_url: "{{ etcd3_download_server }}/{{ etcd3_ver }}/etcd-{{ etcd3_ver }}-linux-amd64.tar.gz"
-etcd3_download_location: /tmp/etcd-download-test
-etcd3_path: "{{ etcd3_download_location }}/etcd-{{ etcd3_ver }}-linux-amd64"
diff --git a/test/integration/targets/etcd3/tasks/main.yml b/test/integration/targets/etcd3/tasks/main.yml
deleted file mode 100644
index 99c5013f76..0000000000
--- a/test/integration/targets/etcd3/tasks/main.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-# test code for the etcd3 module
-# (c) 2017, Jean-Philippe Evrard <jean-philippe@evrard.me>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-
-- name: run_tests for supported distros
- include_tasks: run_tests.yml
- when:
- - ansible_distribution | lower ~ "-" ~ ansible_distribution_major_version | lower != 'centos-6'
diff --git a/test/integration/targets/etcd3/tasks/run_tests.yml b/test/integration/targets/etcd3/tasks/run_tests.yml
deleted file mode 100644
index 2095d2d4b8..0000000000
--- a/test/integration/targets/etcd3/tasks/run_tests.yml
+++ /dev/null
@@ -1,178 +0,0 @@
----
-# test code for the etcd3 module
-# (c) 2017, Jean-Philippe Evrard <jean-philippe@evrard.me>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-
-- name: python 2
- set_fact:
- python_suffix: ""
- when: ansible_python_version is version('3', '<')
-
-- name: python 3
- set_fact:
- python_suffix: "-py3"
- when: ansible_python_version is version('3', '>=')
-
-- include_vars: '{{ item }}'
- with_first_found:
- - files:
- - '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}{{ python_suffix }}.yml'
- - '{{ ansible_distribution }}-{{ ansible_distribution_version }}{{ python_suffix }}.yml'
- - '{{ ansible_os_family }}{{ python_suffix }}.yml'
- - 'default{{ python_suffix }}.yml'
- paths: '../vars'
-
-# Install requirements for etcd3 module
-- name: Install etcd3 packages
- package:
- name: "{{ etcd3_deps_packages }}"
- state: present
-
-- name: Install etcd3 module
- pip:
- name: etcd3
- state: present
-
-# Check if re-installing etcd3 is required
-- name: Check if etcd3ctl exists for re-use.
- shell: "ETCDCTL_API=3 {{ etcd3_path }}/etcdctl --endpoints=localhost:2379 get foo"
- args:
- executable: /bin/bash
- changed_when: false
- failed_when: false
- register: _testetcd3ctl
-
-# Installing etcd3
-- name: If can't reuse, prepare download folder
- file:
- path: "{{ etcd3_download_location }}"
- state: directory
- register: _etcddownloadexists
- when:
- - _testetcd3ctl.rc != 0
-
-- name: Delete download folder if already exists (to start clean)
- file:
- path: "{{ etcd3_download_location }}"
- state: absent
- when:
- - _testetcd3ctl.rc != 0
- - _etcddownloadexists is not changed
-
-- name: Recreate download folder if purged
- file:
- path: "{{ etcd3_download_location }}"
- state: directory
- when:
- - _testetcd3ctl.rc != 0
- - _etcddownloadexists is not changed
-
-- name: Download etcd3
- unarchive:
- src: "{{ etcd3_download_url }}"
- dest: "{{ etcd3_download_location }}"
- remote_src: yes
- when:
- - _testetcd3ctl.rc != 0
-
-# Running etcd3 and kill afterwards if it wasn't running before.
-- name: Run etcd3
- shell: "{{ etcd3_path }}/etcd &"
- register: _etcd3run
- changed_when: true
- when:
- - _testetcd3ctl.rc != 0
-
-# Integration tests
-- name: Check mode, show need change
- etcd3:
- key: "foo"
- value: "bar"
- state: "present"
- register: _etcd3_prst_chktst
- check_mode: true
-
-- name: Change to new value
- etcd3:
- key: "foo"
- value: "bar"
- state: "present"
- register: _etcd3_prst_chgtst
-
-- name: Idempotency test, show unchanged.
- etcd3:
- key: "foo"
- value: "bar"
- state: "present"
- register: _etcd3_prst_idmptnttst
-
-- name: Idempotency test in check mode, show unchanged
- etcd3:
- key: "foo"
- value: "bar"
- state: "present"
- register: _etcd3_prst_idmptntchktst
- check_mode: true
-
-- name: Check mode, show need removal of key
- etcd3:
- key: "foo"
- value: "baz"
- state: "absent"
- register: _etcd3_absnt_chktst
- check_mode: true
-
-- name: Remove foo key
- etcd3:
- key: "foo"
- value: "baz"
- state: "absent"
- register: _etcd3_absnt_chgtst
-
-- name: Idempotency test in check mode, show unchanged
- etcd3:
- key: "foo"
- value: "baz"
- state: "absent"
- register: _etcd3_absnt_idmptnttst
- check_mode: true
-
-- name: Idempotency test, show unchanged
- etcd3:
- key: "foo"
- value: "baz"
- state: "absent"
- register: _etcd3_absnt_idmptntchktst
-
-- name: Checking the status are expected
- assert:
- that:
- - _etcd3_prst_chktst is changed
- - _etcd3_prst_chgtst is changed
- - _etcd3_prst_idmptnttst is not changed
- - _etcd3_prst_idmptntchktst is not changed
- - _etcd3_absnt_chktst is changed
- - _etcd3_absnt_chgtst is changed
- - _etcd3_absnt_idmptnttst is not changed
- - _etcd3_absnt_idmptntchktst is not changed
-
-- name: kill etcd3
- command: "pkill etcd"
- when:
- - _testetcd3ctl.rc != 0
diff --git a/test/integration/targets/etcd3/vars/RedHat-py3.yml b/test/integration/targets/etcd3/vars/RedHat-py3.yml
deleted file mode 100644
index 6337a87307..0000000000
--- a/test/integration/targets/etcd3/vars/RedHat-py3.yml
+++ /dev/null
@@ -1 +0,0 @@
-etcd3_deps_packages: []
diff --git a/test/integration/targets/etcd3/vars/RedHat.yml b/test/integration/targets/etcd3/vars/RedHat.yml
deleted file mode 100644
index 8eda206015..0000000000
--- a/test/integration/targets/etcd3/vars/RedHat.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-etcd3_deps_packages:
- - gcc-c++
- - python-devel
diff --git a/test/integration/targets/etcd3/vars/Suse.yml b/test/integration/targets/etcd3/vars/Suse.yml
deleted file mode 100644
index 8eda206015..0000000000
--- a/test/integration/targets/etcd3/vars/Suse.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-etcd3_deps_packages:
- - gcc-c++
- - python-devel
diff --git a/test/integration/targets/etcd3/vars/Ubuntu-16-py3.yml b/test/integration/targets/etcd3/vars/Ubuntu-16-py3.yml
deleted file mode 100644
index 6337a87307..0000000000
--- a/test/integration/targets/etcd3/vars/Ubuntu-16-py3.yml
+++ /dev/null
@@ -1 +0,0 @@
-etcd3_deps_packages: []
diff --git a/test/integration/targets/etcd3/vars/Ubuntu-16.yml b/test/integration/targets/etcd3/vars/Ubuntu-16.yml
deleted file mode 100644
index 6337a87307..0000000000
--- a/test/integration/targets/etcd3/vars/Ubuntu-16.yml
+++ /dev/null
@@ -1 +0,0 @@
-etcd3_deps_packages: []
diff --git a/test/integration/targets/etcd3/vars/default.yml b/test/integration/targets/etcd3/vars/default.yml
deleted file mode 100644
index 6337a87307..0000000000
--- a/test/integration/targets/etcd3/vars/default.yml
+++ /dev/null
@@ -1 +0,0 @@
-etcd3_deps_packages: []
diff --git a/test/integration/targets/exos_command/defaults/main.yaml b/test/integration/targets/exos_command/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/exos_command/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/exos_command/tasks/cli.yaml b/test/integration/targets/exos_command/tasks/cli.yaml
deleted file mode 100644
index 5068fbcf9b..0000000000
--- a/test/integration/targets/exos_command/tasks/cli.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- name: collect all common test cases
- find:
- paths: "{{ role_path }}/tests/common"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }} ansible_connection=network_cli"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_command/tasks/httpapi.yaml b/test/integration/targets/exos_command/tasks/httpapi.yaml
deleted file mode 100644
index 7435ff0f0c..0000000000
--- a/test/integration/targets/exos_command/tasks/httpapi.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- name: collect all common test cases
- find:
- paths: "{{ role_path }}/tests/common"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }} ansible_connection=httpapi"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_command/tasks/main.yaml b/test/integration/targets/exos_command/tasks/main.yaml
deleted file mode 100644
index 9dd8c08861..0000000000
--- a/test/integration/targets/exos_command/tasks/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- {include: cli.yaml, tags: ['cli']}
-- {include: httpapi.yaml, tags: ['httpapi']}
diff --git a/test/integration/targets/exos_command/tests/common/multiple.yaml b/test/integration/targets/exos_command/tests/common/multiple.yaml
deleted file mode 100644
index ce763ddc40..0000000000
--- a/test/integration/targets/exos_command/tests/common/multiple.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- debug: msg="START common/multiple.yaml on connection={{ ansible_connection }}"
-
-- name: run multiple commands on remote nodes
- exos_command:
- commands:
- - show version
- - show ports no-refresh
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
-
-- debug: msg="END common/multiple.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_command/tests/common/prompt.yaml b/test/integration/targets/exos_command/tests/common/prompt.yaml
deleted file mode 100644
index 51fe17cede..0000000000
--- a/test/integration/targets/exos_command/tests/common/prompt.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- debug: msg="START common/prompt.yaml on connection={{ ansible_connection }}"
-
-- name: run command that requires answering a prompt
- exos_command:
- commands:
- - command: 'clear license-info'
- prompt: 'Are you sure.*'
- answer: 'Yes'
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
-
-- debug: msg="END common/prompt.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_command/tests/common/single.yaml b/test/integration/targets/exos_command/tests/common/single.yaml
deleted file mode 100644
index 73976229ac..0000000000
--- a/test/integration/targets/exos_command/tests/common/single.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-- debug: msg="START common/single.yaml on connection={{ ansible_connection }}"
-
-- name: run show version on remote devices
- exos_command:
- commands: show version
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
-
-- debug: msg="END common/single.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_command/tests/common/waitfor.yaml b/test/integration/targets/exos_command/tests/common/waitfor.yaml
deleted file mode 100644
index f1c390ae57..0000000000
--- a/test/integration/targets/exos_command/tests/common/waitfor.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- debug: msg="START common/waitfor.yaml on connection={{ ansible_connection }}"
-
-- name: run show version and check to see if output contains ExtremeXOS
- exos_command:
- commands: show version
- wait_for: result[0] contains ExtremeXOS
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
-
-- debug: msg="END common/waitfor.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_command/tests/common/waitfor_multiple.yaml b/test/integration/targets/exos_command/tests/common/waitfor_multiple.yaml
deleted file mode 100644
index 575ca35fc0..0000000000
--- a/test/integration/targets/exos_command/tests/common/waitfor_multiple.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-- debug: msg="START common/waitfor_multiple.yaml on connection={{ ansible_connection }}"
-
-- name: run multiple commands and evaluate the output
- exos_command:
- commands:
- - show version
- - show ports no-refresh
- wait_for:
- - result[0] contains ExtremeXOS
- - result[1] contains 20
- register: result
-
-- assert:
- that:
- - "result.changed == false"
- - "result.stdout is defined"
-
-
-- debug: msg="END common/waitfor_multiple.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_config/defaults/main.yaml b/test/integration/targets/exos_config/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/exos_config/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/exos_config/tasks/cli.yaml b/test/integration/targets/exos_config/tasks/cli.yaml
deleted file mode 100644
index 5068fbcf9b..0000000000
--- a/test/integration/targets/exos_config/tasks/cli.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- name: collect all common test cases
- find:
- paths: "{{ role_path }}/tests/common"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }} ansible_connection=network_cli"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_config/tasks/httpapi.yaml b/test/integration/targets/exos_config/tasks/httpapi.yaml
deleted file mode 100644
index 7ce2b1dad3..0000000000
--- a/test/integration/targets/exos_config/tasks/httpapi.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- name: collect all common test cases
- find:
- paths: "{{ role_path }}/tests/common"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=httpapi)
- include: "{{ test_case_to_run }} ansible_connection=httpapi"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_config/tasks/main.yaml b/test/integration/targets/exos_config/tasks/main.yaml
deleted file mode 100644
index 9dd8c08861..0000000000
--- a/test/integration/targets/exos_config/tasks/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- {include: cli.yaml, tags: ['cli']}
-- {include: httpapi.yaml, tags: ['httpapi']}
diff --git a/test/integration/targets/exos_config/templates/master.cfg b/test/integration/targets/exos_config/templates/master.cfg
deleted file mode 100644
index f11db04f70..0000000000
--- a/test/integration/targets/exos_config/templates/master.cfg
+++ /dev/null
@@ -1,242 +0,0 @@
-#
-# Module devmgr configuration.
-#
-configure snmp sysName "Switch2"
-configure snmp sysContact "support@extremenetworks.com, +1 888 257 3000"
-configure sys-recovery-level switch reset
-
-#
-# Module vlan configuration.
-#
-configure vlan default delete ports all
-configure vr VR-Default delete ports 1-54
-configure vr VR-Default add ports 1-54
-configure vlan default delete ports 2,4-7,10-13
-create vlan "ansible_500"
-configure vlan ansible_500 tag 500
-create vlan "ansible_600"
-configure vlan ansible_600 tag 600
-create vlan "ansible_700"
-configure vlan ansible_700 tag 700
-configure ports 2 description-string "MasterUplink"
-configure ports 49 auto off speed 10000 duplex full
-configure ports 50 auto off speed 10000 duplex full
-configure ports 51 auto off speed 10000 duplex full
-configure ports 52 auto off speed 10000 duplex full
-configure vlan Default add ports 1,3,8-9,14-54 untagged
-
-#
-# Module mcmgr configuration.
-#
-
-#
-# Module otm configuration.
-#
-
-#
-# Module fdb configuration.
-#
-
-#
-# Module rtmgr configuration.
-#
-
-#
-# Module policy configuration.
-#
-
-#
-# Module aaa configuration.
-#
-
-#
-# Module acl configuration.
-#
-
-
-
-configure access-list zone SYSTEM application VlanManager application-priority 18
-configure access-list zone SYSTEM application SlppGuard application-priority 19
-
-#
-# Module bfd configuration.
-#
-
-#
-# Module bgp configuration.
-#
-
-#
-# Module cfgmgr configuration.
-#
-enable cli history expansion permanent
-
-#
-# Module dosprotect configuration.
-#
-
-#
-# Module dot1ag configuration.
-#
-
-#
-# Module eaps configuration.
-#
-
-#
-# Module edp configuration.
-#
-
-#
-# Module elrp configuration.
-#
-
-#
-# Module ems configuration.
-#
-
-#
-# Module epm configuration.
-#
-
-#
-# Module erps configuration.
-#
-
-#
-# Module esrp configuration.
-#
-
-#
-# Module ethoam configuration.
-#
-
-#
-# Module etmon configuration.
-#
-
-#
-# Module exsshd configuration.
-#
-enable ssh2
-
-#
-# Module gptp configuration.
-#
-
-#
-# Module hal configuration.
-#
-
-#
-# Module idMgr configuration.
-#
-
-#
-# Module ipSecurity configuration.
-#
-
-#
-# Module ipfix configuration.
-#
-
-#
-# Module lldp configuration.
-#
-
-#
-# Module mrp configuration.
-#
-
-#
-# Module msdp configuration.
-#
-
-#
-# Module netLogin configuration.
-#
-
-#
-# Module netTools configuration.
-#
-
-#
-# Module nodealias configuration.
-#
-
-#
-# Module ntp configuration.
-#
-
-#
-# Module ospf configuration.
-#
-
-#
-# Module ospfv3 configuration.
-#
-
-#
-# Module pim configuration.
-#
-
-#
-# Module poe configuration.
-#
-
-#
-# Module rip configuration.
-#
-
-#
-# Module ripng configuration.
-#
-
-#
-# Module snmpMaster configuration.
-#
-configure snmpv3 engine-id 03:00:04:96:97:f4:fa
-
-#
-# Module stp configuration.
-#
-
-#
-# Module synce configuration.
-#
-
-#
-# Module techSupport configuration.
-#
-
-#
-# Module telnetd configuration.
-#
-
-#
-# Module tftpd configuration.
-#
-
-#
-# Module thttpd configuration.
-#
-
-#
-# Module twamp configuration.
-#
-
-#
-# Module vmt configuration.
-#
-
-#
-# Module vrrp configuration.
-#
-
-#
-# Module vsm configuration.
-#
-
-#
-# Module vpex configuration.
-#
diff --git a/test/integration/targets/exos_config/tests/common/backup.yaml b/test/integration/targets/exos_config/tests/common/backup.yaml
deleted file mode 100644
index 7a7623d35d..0000000000
--- a/test/integration/targets/exos_config/tests/common/backup.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
----
-- debug: msg="START common/backup.yaml on connection={{ ansible_connection }}"
-
-- name: configure vlan
- exos_config:
- lines:
- - create vlan 100
- backup: yes
- backup_options:
- filename: backup.cfg
- dir_path: '{{ role_path }}'
- register: result
-
-- set_fact: content="{{ lookup('file', '{{ role_path }}/backup.cfg') }}"
-
-- name: Assert local file creation
- assert:
- that:
- - "content is search('Module devmgr')"
-
-- name: delete configurable backup file path
- file:
- path: "{{ role_path }}/backup.cfg"
- state: absent
-
-- name: Restore original configuration
- exos_config:
- lines:
- - delete vlan 100
-
-- name: Save the configuration to startup
- exos_config:
- save_when: modified
-
-- debug: msg="END common/backup.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_config/tests/common/diff_against_file.yaml b/test/integration/targets/exos_config/tests/common/diff_against_file.yaml
deleted file mode 100644
index b09a70edbd..0000000000
--- a/test/integration/targets/exos_config/tests/common/diff_against_file.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-- debug: msg="START common/diff_against_file.yaml on connection={{ ansible_connection }}"
-
-- name: Setup a configuration
- exos_config:
- lines:
- - "create vlan 100"
-- debug: msg="{{ role_path }}"
-- set_fact: master="{{ lookup('file', '{{ role_path }}/templates/master.cfg') }}"
-
-- name: check the running-config against master config
- exos_config:
- diff_against: intended
- intended_config: "{{ master }}"
- diff: yes
- register: result
-- assert:
- that:
- - "result.diff.before is defined"
- - "result.diff.before is search('configure vlan VLAN_0100 tag 100')"
- - "result.diff.after is defined"
-
-- name: Restore original configuration
- exos_config:
- lines:
- - "delete vlan 100"
-
-- name: Save the configuration to startup
- exos_config:
- save_when: modified
-
-- debug: msg="END common/diff_against_file.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_config/tests/common/diff_against_startup.yaml b/test/integration/targets/exos_config/tests/common/diff_against_startup.yaml
deleted file mode 100644
index 39bd288fe3..0000000000
--- a/test/integration/targets/exos_config/tests/common/diff_against_startup.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
----
-- debug: msg="START cli/diff_against_startup.yaml on connection={{ ansible_connection }}"
-
-- name: Make a configuration and save it to startup
- exos_config:
- lines:
- - "create vlan 100"
-
-- name: Save the configuration to startup
- exos_config:
- save_when: modified
-
-- name: Make a configuration change without saving into running config
- exos_config:
- lines:
- - "create vlan 200"
-
-- name: check the startup-config against the running-config
- exos_config:
- diff_against: startup
- diff_ignore_lines:
- - ntp clock .*
- diff: yes
- register: result
-- assert:
- that:
- - "result.diff.before is defined"
- - "result.diff.after is defined"
- - "result.diff.before is search('configure vlan VLAN_0100 tag 100')"
- - "result.diff.after is search('configure vlan VLAN_0200 tag 200')"
-
-- name: Restore and save original config
- exos_config:
- lines:
- - "delete vlan 100"
- - "delete vlan 200"
-
-- name: Save the configuration to startup
- exos_config:
- save_when: modified
-
-- debug: msg="END cli/diff_against_startup.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_config/tests/common/save_config.yaml b/test/integration/targets/exos_config/tests/common/save_config.yaml
deleted file mode 100644
index a83646f9a4..0000000000
--- a/test/integration/targets/exos_config/tests/common/save_config.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
----
-- debug: msg="START common/save_config.yaml on connection={{ ansible_connection }}"
-
-- name: Setup by creating VLAN
- exos_config:
- lines:
- - create vlan 200
-
-- name: Saving modified configuration in primary.cfg for the next startup
- exos_config:
- save_when: modified
- register: result
-- assert:
- that:
- - "result.changed == True"
-
-- name: Get the config file
- exos_command:
- commands: show switch
- register: result
-
-- name: Get the startup config file
- set_fact: config_selected='{{ result.stdout[0] | regex_search('(Config Selected:)\s+(\w+)', '\\2')}}'
-
-- name: Check if the primary config file has the changes
- exos_command:
- commands: "debug cfgmgr show configuration file {{ config_selected.0 }}"
- register: result
-
-- assert:
- that:
- - "result.stdout[0] is search('configure vlan VLAN_0200 tag 200')"
-
-- name: Idempotent save configuration
- exos_config:
- save_when: modified
- register: result
-
-- assert:
- that:
- - "result.changed == False"
-
-- name: Restore initial state by deleting vlan
- exos_config:
- lines: delete vlan 200
-
-- name: Restore orignal primary cfg
- exos_config:
- save_when: modified
-
-- debug: msg="END common/save_config.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_config/tests/common/sysname.yaml b/test/integration/targets/exos_config/tests/common/sysname.yaml
deleted file mode 100644
index 26ef19ee51..0000000000
--- a/test/integration/targets/exos_config/tests/common/sysname.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
----
-- debug: msg="START common/sysname.yaml"
-
-- name: Get intial SysName
- exos_command:
- commands: show switch | grep SysName
- register: sysname_init
-
-- name: configure SNMP system name
- exos_config:
- lines: configure snmp sysName "{{ inventory_hostname }}"
- register: result
-- assert:
- that:
- - "result.commands[0] is search('configure')"
- - "result.changed == True"
-
-- name: Idempotency of SNMP system name configuration
- exos_config:
- lines: configure snmp sysName "{{ inventory_hostname }}"
- register: result
-- assert:
- that:
- - "result.changed == False"
-- set_fact: old_sysname='{{ sysname_init.stdout[0] | regex_search('([^\s]+$)') }}'
-
-- name: Restore inital sysName
- exos_config:
- lines: 'configure snmp sysName {{ old_sysname }}'
-
-- name: Save the configuration to startup
- exos_config:
- save_when: modified
-
-- debug: msg="END common/sysname.yaml"
diff --git a/test/integration/targets/exos_facts/defaults/main.yaml b/test/integration/targets/exos_facts/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/exos_facts/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/exos_facts/tasks/cli.yaml b/test/integration/targets/exos_facts/tasks/cli.yaml
deleted file mode 100644
index 5068fbcf9b..0000000000
--- a/test/integration/targets/exos_facts/tasks/cli.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- name: collect all common test cases
- find:
- paths: "{{ role_path }}/tests/common"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }} ansible_connection=network_cli"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_facts/tasks/httpapi.yaml b/test/integration/targets/exos_facts/tasks/httpapi.yaml
deleted file mode 100644
index 7435ff0f0c..0000000000
--- a/test/integration/targets/exos_facts/tasks/httpapi.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- name: collect all common test cases
- find:
- paths: "{{ role_path }}/tests/common"
- patterns: "{{ testcase }}.yaml"
- register: test_cases
- delegate_to: localhost
-
-- name: set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: run test cases (connection=network_cli)
- include: "{{ test_case_to_run }} ansible_connection=httpapi"
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_facts/tasks/main.yaml b/test/integration/targets/exos_facts/tasks/main.yaml
deleted file mode 100644
index 9dd8c08861..0000000000
--- a/test/integration/targets/exos_facts/tasks/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- {include: cli.yaml, tags: ['cli']}
-- {include: httpapi.yaml, tags: ['httpapi']}
diff --git a/test/integration/targets/exos_facts/tests/common/basic.yaml b/test/integration/targets/exos_facts/tests/common/basic.yaml
deleted file mode 100644
index e888a7f6a2..0000000000
--- a/test/integration/targets/exos_facts/tests/common/basic.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-- debug:
- msg: "START common/basic.yaml on connection={{ ansible_connection }}"
-- name: Collect facts
- exos_facts:
- gather_subset: all
- register: result
-
-- debug: "msg={{ result }}"
-
-- assert:
- that:
- # _facts modules should never report a change
- - "result.changed == false"
-
- # Correct subsets are present
- - "'config' in result.ansible_facts.ansible_net_gather_subset"
- - "'hardware' in result.ansible_facts.ansible_net_gather_subset"
- - "'default' in result.ansible_facts.ansible_net_gather_subset"
- - "'interfaces' in result.ansible_facts.ansible_net_gather_subset"
-
- # Check that these facts not only are present, but are valid (positive integers)
- - "result.ansible_facts.ansible_net_memfree_mb > 1"
- - "result.ansible_facts.ansible_net_memtotal_mb > 1"
-
-- debug:
- msg: "END common/basic.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_facts/tests/common/default_facts.yaml b/test/integration/targets/exos_facts/tests/common/default_facts.yaml
deleted file mode 100644
index 3507407d91..0000000000
--- a/test/integration/targets/exos_facts/tests/common/default_facts.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
----
-- debug: msg="START common/default_facts.yaml on connection={{ ansible_connection }}"
-
-
-- name: test getting default facts
- exos_facts:
- register: result
-
-- assert:
- that:
- # _facts modules should never report a change
- - "result.changed == false"
-
- # Correct subsets are present
- - "'hardware' in result.ansible_facts.ansible_net_gather_subset"
- - "'default' in result.ansible_facts.ansible_net_gather_subset"
- - "'interfaces' in result.ansible_facts.ansible_net_gather_subset"
- # ... and not present
- - "'config' not in result.ansible_facts.ansible_net_gather_subset"
-
- # Items from those subsets are present
- - "result.ansible_facts.ansible_net_memtotal_mb > 10" #hw
- - "result.ansible_facts.ansible_net_interfaces | length > 1" # more than one interface returned
-
- # ... and not present
- - "result.ansible_facts.ansible_net_config is not defined" # config
-
-- debug: msg="END common/default_facts.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_facts/tests/common/invalid_subset.yaml b/test/integration/targets/exos_facts/tests/common/invalid_subset.yaml
deleted file mode 100644
index 52dfe65d17..0000000000
--- a/test/integration/targets/exos_facts/tests/common/invalid_subset.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
----
-- debug: msg="START common/invalid_subset.yaml on connection={{ ansible_connection }}"
-
-
-- name: test invalid subset (foobar)
- exos_facts:
- gather_subset:
- - "foobar"
- register: result
- ignore_errors: true
-
-
-- assert:
- that:
- # Failures shouldn't return changes
- - "result.changed == false"
- # It's a failure
- - "result.failed == true"
- # Sensible Failure message
- - "result.msg == 'Subset must be one of [config, default, hardware, interfaces], got foobar'"
-
-- name: test subset specified multiple times
- exos_facts:
- gather_subset:
- - "!hardware"
- - "hardware"
- register: result
- ignore_errors: true
-
-- assert:
- that:
- # Failures shouldn't return changes
- - "result.changed == false"
- # It's a failure
- - "result.failed == true"
- # Sensible Failure message
- - "result.msg == 'Bad subset'"
- ignore_errors: true
-
-- debug: msg="END common/invalid_subset.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_facts/tests/common/not_hardware_facts.yaml b/test/integration/targets/exos_facts/tests/common/not_hardware_facts.yaml
deleted file mode 100644
index 1f28c7833c..0000000000
--- a/test/integration/targets/exos_facts/tests/common/not_hardware_facts.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-- debug: msg="START common/not_hardware_facts.yaml on connection={{ ansible_connection }}"
-
-
-- name: test not hardware
- exos_facts:
- gather_subset:
- - "!hardware"
- register: result
-
-- assert:
- that:
- # _facts modules should never report a change
- - "result.changed == false"
-
- # Correct subsets are present
- - "'config' in result.ansible_facts.ansible_net_gather_subset"
-
- - "'default' in result.ansible_facts.ansible_net_gather_subset"
- - "'interfaces' in result.ansible_facts.ansible_net_gather_subset"
- # ... and not present
- - "'hardware' not in result.ansible_facts.ansible_net_gather_subset"
-
- # Items from those subsets are present
- - "result.ansible_facts.ansible_net_interfaces | length > 1" # more than one interface returned
-
-- debug: msg="END common/not_hardware_facts.yaml on connection={{ ansible_connection }}"
diff --git a/test/integration/targets/exos_l2_interfaces/defaults/main.yaml b/test/integration/targets/exos_l2_interfaces/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/exos_l2_interfaces/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/exos_l2_interfaces/tasks/httpapi.yaml b/test/integration/targets/exos_l2_interfaces/tasks/httpapi.yaml
deleted file mode 100644
index 7c29713da6..0000000000
--- a/test/integration/targets/exos_l2_interfaces/tasks/httpapi.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- name: Collect all httpapi test cases
- find:
- paths: "{{ role_path }}/tests/httpapi"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- register: test_cases
- delegate_to: localhost
-
-- name: Set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: Run test case (connection=httpapi)
- include: "{{ test_case_to_run }}"
- vars:
- ansible_connection: httpapi
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_l2_interfaces/tasks/main.yaml b/test/integration/targets/exos_l2_interfaces/tasks/main.yaml
deleted file mode 100644
index 22eac15464..0000000000
--- a/test/integration/targets/exos_l2_interfaces/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: httpapi.yaml, tags: ['httpapi'] }
diff --git a/test/integration/targets/exos_l2_interfaces/tests/httpapi/_populate_config.yaml b/test/integration/targets/exos_l2_interfaces/tests/httpapi/_populate_config.yaml
deleted file mode 100644
index a69a578a64..0000000000
--- a/test/integration/targets/exos_l2_interfaces/tests/httpapi/_populate_config.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-- name: Populate config
- exos_config:
- lines:
- - create vlan vlan_10 tag 10
- - create vlan vlan_20 tag 20
- - create vlan vlan_30 tag 30
- - create vlan vlan_40 tag 40
- - configure vlan 10 add ports 1 untagged
- - configure vlan 20 add ports 2 tagged
- - configure vlan 20 add ports 3 untagged
- - configure vlan 30 add ports 3 tagged
diff --git a/test/integration/targets/exos_l2_interfaces/tests/httpapi/_reset_config.yaml b/test/integration/targets/exos_l2_interfaces/tests/httpapi/_reset_config.yaml
deleted file mode 100644
index c3a3ecf944..0000000000
--- a/test/integration/targets/exos_l2_interfaces/tests/httpapi/_reset_config.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- name: Reset config
- exos_config:
- lines:
- - configure vlan Default add ports all untagged
- - configure vlan 2-4094 delete ports all
- - delete vlan 2-4094
diff --git a/test/integration/targets/exos_l2_interfaces/tests/httpapi/deleted.yaml b/test/integration/targets/exos_l2_interfaces/tests/httpapi/deleted.yaml
deleted file mode 100644
index 23921ee9a2..0000000000
--- a/test/integration/targets/exos_l2_interfaces/tests/httpapi/deleted.yaml
+++ /dev/null
@@ -1,96 +0,0 @@
----
-- debug:
- msg: "Start exos_l2_interfaces deleted integration tests ansible_connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
- ignore_errors: yes
-
-- include_tasks: _populate_config.yaml
-
-- set_fact:
- config:
- - access:
- vlan: 1
- name: '2'
- trunk: null
- - access:
- vlan: 1
- name: '3'
- trunk: null
- config_all:
- - access:
- vlan: 1
- name: '1'
- trunk: null
-
-- exos_facts:
- gather_network_resources: l2_interfaces
-
-- block:
- - name: Delete L2 interface configuration
- exos_l2_interfaces: &deleted
- config:
- - name: '2'
- - name: '3'
- state: deleted
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "deleted['requests_1']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: l2_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.after) == []"
- - "config|difference(ansible_facts.network_resources.l2_interfaces) == []"
-
- - name: Delete L2 interface configuration
- exos_l2_interfaces:
- config:
- state: deleted
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "deleted['requests_2']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: l2_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.after) == []"
- - "config_all|difference(ansible_facts.network_resources.l2_interfaces) == []"
-
- - name: Delete attributes of all configured interfaces (IDEMPOTENT)
- exos_l2_interfaces: *deleted
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result.changed == false"
-
- - exos_facts:
- gather_network_resources: l2_interfaces
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.before) == []"
-
- - set_fact:
- expected_config: "{{ config }} + {{ config_all }}"
-
- - assert:
- that:
- - "expected_config|difference(ansible_facts.network_resources.l2_interfaces) == []"
diff --git a/test/integration/targets/exos_l2_interfaces/tests/httpapi/merged.yaml b/test/integration/targets/exos_l2_interfaces/tests/httpapi/merged.yaml
deleted file mode 100644
index ee2ceba3d9..0000000000
--- a/test/integration/targets/exos_l2_interfaces/tests/httpapi/merged.yaml
+++ /dev/null
@@ -1,85 +0,0 @@
----
-- debug:
- msg: "START exos_l2_interfaces merged integration tests on connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
- ignore_errors: yes
-
-- include_tasks: _populate_config.yaml
-
-- set_fact:
- config:
- - access:
- vlan: 20
- name: '1'
- trunk: null
- - access: null
- name: '2'
- trunk:
- native_vlan: 10
- trunk_allowed_vlans:
- - 20
- - 30
- invalid_config:
- - access: null
- name: '3'
- trunk:
- trunk_allowed_vlans:
- - 50
-
-- exos_facts:
- gather_network_resources: l2_interfaces
-
-- block:
- - name: Merge the provided configuration with the existing running configuration
- exos_l2_interfaces: &merged
- config: "{{ config }}"
- state: merged
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "merged['requests']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: l2_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.after) == []"
- - "config|difference(ansible_facts.network_resources.l2_interfaces) == []"
-
- - name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
- exos_l2_interfaces: *merged
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
- - exos_facts:
- gather_network_resources: l2_interfaces
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.before) == []"
- - "config|difference(ansible_facts.network_resources.l2_interfaces) == []"
-
- - name: Merge provided configuration with existing configuration
- exos_l2_interfaces:
- config: "{{ invalid_config }}"
- state: merged
- register: result
- ignore_errors: yes
-
- - name: Assert that the previous task failed
- assert:
- that:
- - "result.changed == false"
- - "result.failed == true"
- - "result.msg == 'VLAN 50 does not exist'"
diff --git a/test/integration/targets/exos_l2_interfaces/tests/httpapi/overridden.yaml b/test/integration/targets/exos_l2_interfaces/tests/httpapi/overridden.yaml
deleted file mode 100644
index aa48e3d832..0000000000
--- a/test/integration/targets/exos_l2_interfaces/tests/httpapi/overridden.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
----
-- debug:
- msg: "Start exos_l2_interfaces overridden integration tests ansible_connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
- ignore_errors: yes
-
-- include_tasks: _populate_config.yaml
-
-- set_fact:
- config:
- - access: null
- name: '1'
- trunk:
- native_vlan: 10
- trunk_allowed_vlans:
- - 20
- - 30
- config_all:
- - access:
- vlan: 1
- name: '2'
- trunk: null
- - access:
- vlan: 1
- name: '3'
- trunk: null
-
-- exos_facts:
- gather_network_resources: l2_interfaces
-
-- block:
- - name: Override device L2 interface configuration with provided configurations
- exos_l2_interfaces: &overridden
- config: "{{ config }}"
- state: overridden
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "overridden['requests']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: l2_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.after) == []"
-
- - set_fact:
- expected_config: "{{ config }} + {{ config_all }}"
-
- - assert:
- that:
- - "expected_config|difference(ansible_facts.network_resources.l2_interfaces) == []"
-
- - name: Override device LLDP interface configuration with provided configurations (IDEMPOTENT)
- exos_l2_interfaces: *overridden
- register: result
-
- - name: Assert that task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
- - exos_facts:
- gather_network_resources: l2_interfaces
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.before) == []"
- - "expected_config|difference(ansible_facts.network_resources.l2_interfaces) == []"
diff --git a/test/integration/targets/exos_l2_interfaces/tests/httpapi/replaced.yaml b/test/integration/targets/exos_l2_interfaces/tests/httpapi/replaced.yaml
deleted file mode 100644
index 7018e45cfb..0000000000
--- a/test/integration/targets/exos_l2_interfaces/tests/httpapi/replaced.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
----
-- debug:
- msg: "START exos_l2_interfaces replaced integration tests on connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- set_fact:
- config:
- - access: null
- name: '2'
- trunk:
- native_vlan: 30
- trunk_allowed_vlans:
- - 40
- - access:
- vlan: 10
- name: '3'
- trunk: null
-
-- exos_facts:
- gather_network_resources: l2_interfaces
-
-- block:
- - name: Replace L2 interface configuration with provided configuration
- exos_l2_interfaces: &replaced
- config: "{{ config }}"
- state: replaced
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "replaced['requests']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: l2_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.after) == []"
- - "config|difference(ansible_facts.network_resources.l2_interfaces) == []"
-
- - name: Replace L2 interface configuration with provided configuration (IDEMPOTENT)
- exos_l2_interfaces: *replaced
- register: result
-
- - name: Assert that task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
- - exos_facts:
- gather_network_resources: l2_interfaces
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.l2_interfaces|symmetric_difference(result.before) == []"
- - "config|difference(ansible_facts.network_resources.l2_interfaces) == []"
diff --git a/test/integration/targets/exos_l2_interfaces/vars/main.yaml b/test/integration/targets/exos_l2_interfaces/vars/main.yaml
deleted file mode 100644
index 66b6fee4af..0000000000
--- a/test/integration/targets/exos_l2_interfaces/vars/main.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
----
-merged:
- requests:
- - data: '{"openconfig-vlan:config": {"interface-mode": "ACCESS", "access-vlan": 20}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=1/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
- - data: '{"openconfig-vlan:config": {"trunk-vlans": [20, 30], "interface-mode": "TRUNK", "native-vlan": 10}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=2/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
-
-replaced:
- requests:
- - data: '{"openconfig-vlan:config": {"trunk-vlans": [40], "interface-mode": "TRUNK", "native-vlan": 30}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=2/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
- - data: '{"openconfig-vlan:config": {"interface-mode": "ACCESS", "access-vlan": 10}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=3/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
-
-overridden:
- requests:
- - data: '{"openconfig-vlan:config": {"trunk-vlans": [20, 30], "interface-mode": "TRUNK", "native-vlan": 10}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=1/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
- - data: '{"openconfig-vlan:config": {"interface-mode": "ACCESS", "access-vlan": 1}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=2/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
- - data: '{"openconfig-vlan:config": {"interface-mode": "ACCESS", "access-vlan": 1}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=3/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
-
-deleted:
- requests_1:
- - data: '{"openconfig-vlan:config": {"interface-mode": "ACCESS", "access-vlan": 1}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=2/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
- - data: '{"openconfig-vlan:config": {"interface-mode": "ACCESS", "access-vlan": 1}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=3/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
-
- requests_2:
- - data: '{"openconfig-vlan:config": {"interface-mode": "ACCESS", "access-vlan": 1}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-interfaces:interfaces/interface=1/openconfig-if-ethernet:ethernet/openconfig-vlan:switched-vlan/config
diff --git a/test/integration/targets/exos_lldp_global/defaults/main.yaml b/test/integration/targets/exos_lldp_global/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/exos_lldp_global/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/exos_lldp_global/meta/main.yaml b/test/integration/targets/exos_lldp_global/meta/main.yaml
deleted file mode 100644
index 32cf5dda7e..0000000000
--- a/test/integration/targets/exos_lldp_global/meta/main.yaml
+++ /dev/null
@@ -1 +0,0 @@
-dependencies: []
diff --git a/test/integration/targets/exos_lldp_global/tasks/httpapi.yaml b/test/integration/targets/exos_lldp_global/tasks/httpapi.yaml
deleted file mode 100644
index 7c29713da6..0000000000
--- a/test/integration/targets/exos_lldp_global/tasks/httpapi.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- name: Collect all httpapi test cases
- find:
- paths: "{{ role_path }}/tests/httpapi"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- register: test_cases
- delegate_to: localhost
-
-- name: Set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: Run test case (connection=httpapi)
- include: "{{ test_case_to_run }}"
- vars:
- ansible_connection: httpapi
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_lldp_global/tasks/main.yaml b/test/integration/targets/exos_lldp_global/tasks/main.yaml
deleted file mode 100644
index 22eac15464..0000000000
--- a/test/integration/targets/exos_lldp_global/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: httpapi.yaml, tags: ['httpapi'] }
diff --git a/test/integration/targets/exos_lldp_global/tests/httpapi/_populate_config.yaml b/test/integration/targets/exos_lldp_global/tests/httpapi/_populate_config.yaml
deleted file mode 100644
index 3740e8e2c9..0000000000
--- a/test/integration/targets/exos_lldp_global/tests/httpapi/_populate_config.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- name: Populate Config
- exos_config:
- lines:
- - configure lldp transmit-interval 50
- - configure lldp ports all no-advertise all-tlvs
- - configure lldp ports all advertise system-name system-description system-capabilities
diff --git a/test/integration/targets/exos_lldp_global/tests/httpapi/_reset_config.yaml b/test/integration/targets/exos_lldp_global/tests/httpapi/_reset_config.yaml
deleted file mode 100644
index e6ba1e4154..0000000000
--- a/test/integration/targets/exos_lldp_global/tests/httpapi/_reset_config.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- name: Reset Config
- exos_config:
- lines:
- - configure lldp transmit-interval 30
- - configure lldp ports all no-advertise all-tlvs
- - configure lldp ports all advertise system-name system-description
diff --git a/test/integration/targets/exos_lldp_global/tests/httpapi/deleted.yaml b/test/integration/targets/exos_lldp_global/tests/httpapi/deleted.yaml
deleted file mode 100644
index f0b260ed35..0000000000
--- a/test/integration/targets/exos_lldp_global/tests/httpapi/deleted.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
----
-- debug:
- msg: "Start exos_lldp_global deleted integration tests ansible_connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- block:
- - name: Delete attributes of LLDP service
- exos_lldp_global: &deleted
- config:
- state: deleted
- register: result
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "{{ populate == result['before']}}"
-
- - name: Assert that correct set of requests were generated
- assert:
- that:
- - "{{ deleted['requests'][0]['method'] == result['requests'][0]['method'] }}"
- - "{{ deleted['requests'][0]['path'] == result['requests'][0]['path'] }}"
- - "{{ deleted['requests'][0]['data'] == result['requests'][0]['data'] }}"
-
- - name: Assert that the after dicts were correctly generated
- assert:
- that:
- - "{{ deleted['after'] == result['after']}}"
-
- - name: Delete attributes of all configured interfaces (IDEMPOTENT)
- exos_lldp_global: *deleted
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result.changed == false"
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "{{ deleted['after'] == result['before'] }}"
-
- always:
- - include_tasks: _reset_config.yaml
diff --git a/test/integration/targets/exos_lldp_global/tests/httpapi/merged.yaml b/test/integration/targets/exos_lldp_global/tests/httpapi/merged.yaml
deleted file mode 100644
index 2bf2a24491..0000000000
--- a/test/integration/targets/exos_lldp_global/tests/httpapi/merged.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
----
-- debug:
- msg: "START exos_lldp_global merged integration tests on connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- block:
- - name: Merge the provided configuration with the exisiting running configuration
- exos_lldp_global: &merged
- config:
- interval: 10
- tlv_select:
- system_description: false
- system_capabilities: false
- state: merged
- register: result
-
- - name: Assert that before dicts were correctly generated
- assert:
- that: "{{ merged['before'] == result['before'] }}"
-
- - name: Assert that correct set of requests were generated
- assert:
- that:
- - "{{ merged['requests'][0]['method'] == result['requests'][0]['method'] }}"
- - "{{ merged['requests'][0]['path'] == result['requests'][0]['path'] }}"
- - "{{ merged['requests'][0]['data'] == result['requests'][0]['data'] }}"
-
- - name: Assert that after dicts was correctly generated
- assert:
- that:
- - "{{ merged['after'] == result['after'] }}"
-
- - name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
- exos_lldp_global: *merged
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - " result['changed'] == false"
-
- - name: Assert that before dicts were correctly generated
- assert:
- that:
- - "{{ merged['after'] == result['before'] }}"
-
- always:
- - include_tasks: _reset_config.yaml
diff --git a/test/integration/targets/exos_lldp_global/tests/httpapi/replaced.yaml b/test/integration/targets/exos_lldp_global/tests/httpapi/replaced.yaml
deleted file mode 100644
index 595147b9eb..0000000000
--- a/test/integration/targets/exos_lldp_global/tests/httpapi/replaced.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
----
-- debug:
- msg: "START exos_lldp_global replaced integration tests on connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- block:
- - name: Replace device configurations of LLDP service with provided configurations
- exos_lldp_global: &replaced
- config:
- interval: 20
- tlv_select:
- system_name: false
- system_description: true
- system_capabilities: false
- state: replaced
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "{{ replaced['requests'][0]['method'] == result['requests'][0]['method'] }}"
- - "{{ replaced['requests'][0]['path'] == result['requests'][0]['path'] }}"
- - "{{ replaced['requests'][0]['data'] == result['requests'][0]['data'] }}"
-
- - name: Assert that before dicts are correctly generated
- assert:
- that:
- - "{{ populate == result['before'] }}"
-
- - name: Assert that after dict is correctly generated
- assert:
- that:
- - "{{ replaced['after'] == result['after'] }}"
-
- - name: Replace device configurations of LLDP service with provided configurations (IDEMPOTENT)
- exos_lldp_global: *replaced
- register: result
-
- - name: Assert that task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
- - name: Assert that before dict is correctly generated
- assert:
- that:
- - "{{ replaced['after'] == result['before'] }}"
-
- always:
- - include_tasks: _reset_config.yaml
diff --git a/test/integration/targets/exos_lldp_global/vars/main.yaml b/test/integration/targets/exos_lldp_global/vars/main.yaml
deleted file mode 100644
index cdcca8074b..0000000000
--- a/test/integration/targets/exos_lldp_global/vars/main.yaml
+++ /dev/null
@@ -1,85 +0,0 @@
----
-merged:
- before:
- interval: 30
- tlv_select:
- system_name: true
- system_description: true
- system_capabilities: false
- port_description: false
- management_address: false
-
- requests:
- # 'suppress-tlv-advertisement' list is sorted to compare test
- - data: '{"openconfig-lldp:config": {"suppress-tlv-advertisement": ["MANAGEMENT_ADDRESS", "PORT_DESCRIPTION", "SYSTEM_CAPABILITIES", "SYSTEM_DESCRIPTION"], "hello-timer": 10}}'
- method: PUT
- path: /rest/restconf/data/openconfig-lldp:lldp/config
-
- after:
- interval: 10
- tlv_select:
- system_name: true
- system_description: false
- system_capabilities: false
- port_description: false
- management_address: false
-
-populate:
- interval: 50
- tlv_select:
- system_name: true
- system_description: true
- system_capabilities: true
- port_description: false
- management_address: false
-
-replaced:
- requests:
- # 'suppress-tlv-advertisement' list is sorted to compare test
- - data: '{"openconfig-lldp:config": {"suppress-tlv-advertisement": ["MANAGEMENT_ADDRESS", "PORT_DESCRIPTION", "SYSTEM_CAPABILITIES", "SYSTEM_NAME"], "hello-timer": 20}}'
- method: PUT
- path: /rest/restconf/data/openconfig-lldp:lldp/config
-
- after:
- interval: 20
- tlv_select:
- system_name: false
- system_description: true
- system_capabilities: false
- port_description: false
- management_address: false
-
-deleted:
- before:
- interval: 50
- tlv_select:
- system_name: true
- system_description: true
- system_capabilities: true
- port_description: false
- management_address: false
-
- requests:
- # 'suppress-tlv-advertisement' list is sorted to compare test
- - data: '{"openconfig-lldp:config": {"suppress-tlv-advertisement": ["MANAGEMENT_ADDRESS", "PORT_DESCRIPTION", "SYSTEM_CAPABILITIES"], "hello-timer": 30}}'
- method: PUT
- path: /rest/restconf/data/openconfig-lldp:lldp/config
-
-
- after:
- interval: 30
- tlv_select:
- system_name: true
- system_description: true
- system_capabilities: false
- port_description: false
- management_address: false
-
-round_trip:
- interval: 30
- tlv_select:
- system_name: true
- system_description: true
- system_capabilities: false
- port_description: false
- management_address: false
diff --git a/test/integration/targets/exos_lldp_interfaces/defaults/main.yaml b/test/integration/targets/exos_lldp_interfaces/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/exos_lldp_interfaces/tasks/httpapi.yaml b/test/integration/targets/exos_lldp_interfaces/tasks/httpapi.yaml
deleted file mode 100644
index 7c29713da6..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/tasks/httpapi.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- name: Collect all httpapi test cases
- find:
- paths: "{{ role_path }}/tests/httpapi"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- register: test_cases
- delegate_to: localhost
-
-- name: Set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: Run test case (connection=httpapi)
- include: "{{ test_case_to_run }}"
- vars:
- ansible_connection: httpapi
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_lldp_interfaces/tasks/main.yaml b/test/integration/targets/exos_lldp_interfaces/tasks/main.yaml
deleted file mode 100644
index 22eac15464..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: httpapi.yaml, tags: ['httpapi'] }
diff --git a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/_populate_config.yaml b/test/integration/targets/exos_lldp_interfaces/tests/httpapi/_populate_config.yaml
deleted file mode 100644
index fda9bc58fc..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/_populate_config.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- name: Populate config
- exos_config:
- lines:
- - disable lldp ports 2-5
diff --git a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/_reset_config.yaml b/test/integration/targets/exos_lldp_interfaces/tests/httpapi/_reset_config.yaml
deleted file mode 100644
index 4f02b02314..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/_reset_config.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- name: Restore initial config
- exos_config:
- lines:
- - enable lldp ports all
diff --git a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/deleted.yaml b/test/integration/targets/exos_lldp_interfaces/tests/httpapi/deleted.yaml
deleted file mode 100644
index 4868a65720..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/deleted.yaml
+++ /dev/null
@@ -1,91 +0,0 @@
----
-- debug:
- msg: "Start exos_lldp_interfaces deleted integration tests ansible_connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- set_fact:
- config:
- - enabled: true
- name: '2'
- - enabled: true
- name: '3'
- config_all:
- - enabled: true
- name: '4'
- - enabled: true
- name: '5'
-
-- exos_facts:
- gather_network_resources: lldp_interfaces
-
-- block:
- - name: Delete LLDP interface configuration
- exos_lldp_interfaces: &deleted
- config:
- - name: '2'
- - name: '3'
- state: deleted
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "deleted['requests_1']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: lldp_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.after) == []"
- - "config|difference(ansible_facts.network_resources.lldp_interfaces) == []"
-
- - name: Delete LLDP interface configuration
- exos_lldp_interfaces:
- config:
- state: deleted
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "deleted['requests_2']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: lldp_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.after) == []"
- - "config_all|difference(ansible_facts.network_resources.lldp_interfaces) == []"
-
- - name: Delete attributes of all configured interfaces (IDEMPOTENT)
- exos_lldp_interfaces: *deleted
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result.changed == false"
-
- - exos_facts:
- gather_network_resources: lldp_interfaces
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.before) == []"
-
- - set_fact:
- expected_config: "{{ config }} + {{ config_all }}"
-
- - assert:
- that:
- - "expected_config|difference(ansible_facts.network_resources.lldp_interfaces) == []"
diff --git a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/merged.yaml b/test/integration/targets/exos_lldp_interfaces/tests/httpapi/merged.yaml
deleted file mode 100644
index b2031be602..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/merged.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
----
-- debug:
- msg: "START exos_lldp_interfaces merged integration tests on connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- set_fact:
- config:
- - enabled: false
- name: '1'
- - enabled: true
- name: '2'
-
-- exos_facts:
- gather_network_resources: lldp_interfaces
-
-- block:
- - name: Merge the provided configuration with the existing running configuration
- exos_lldp_interfaces: &merged
- config: "{{ config }}"
- state: merged
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "merged['requests']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: lldp_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.after) == []"
- - "config|difference(ansible_facts.network_resources.lldp_interfaces) == []"
-
- - name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
- exos_lldp_interfaces: *merged
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
- - exos_facts:
- gather_network_resources: lldp_interfaces
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.before) == []"
- - "config|difference(ansible_facts.network_resources.lldp_interfaces) == []"
diff --git a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/overridden.yaml b/test/integration/targets/exos_lldp_interfaces/tests/httpapi/overridden.yaml
deleted file mode 100644
index 7e869d5619..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/overridden.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
----
-- debug:
- msg: "Start exos_lldp_interfaces overridden integration tests ansible_connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- set_fact:
- config:
- - enabled: true
- name: '5'
- - enabled: false
- name: '6'
-
-- exos_facts:
- gather_network_resources: lldp_interfaces
-
-- block:
- - name: Override device LLDP interface configuration with provided configurations
- exos_lldp_interfaces: &overridden
- config: "{{ config }}"
- state: overridden
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "overridden['requests']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: lldp_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.after) == []"
- - "config|difference(ansible_facts.network_resources.lldp_interfaces) == []"
-
- - name: Override device LLDP interface configuration with provided configurations (IDEMPOTENT)
- exos_lldp_interfaces: *overridden
- register: result
-
- - name: Assert that task was idempotent
- assert:
- that:
- - "result['changed'] == false"
- - exos_facts:
- gather_network_resources: lldp_interfaces
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.before) == []"
- - "config|difference(ansible_facts.network_resources.lldp_interfaces) == []"
diff --git a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/replaced.yaml b/test/integration/targets/exos_lldp_interfaces/tests/httpapi/replaced.yaml
deleted file mode 100644
index 10545c49c4..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/tests/httpapi/replaced.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
----
-- debug:
- msg: "START exos_lldp_interfaces replaced integration tests on connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- set_fact:
- config:
- - enabled: true
- name: '3'
- - enabled: false
- name: '4'
-
-- exos_facts:
- gather_network_resources: lldp_interfaces
-
-- block:
- - name: Replace LLDP interface configuration with provided configuration
- exos_lldp_interfaces: &replaced
- config: "{{ config }}"
- state: replaced
- register: result
-
- - name: Assert that correct set of results were generated
- assert:
- that:
- - "replaced['requests']|symmetric_difference(result['requests']) == []"
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.before) == []"
-
- - exos_facts:
- gather_network_resources: lldp_interfaces
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.after) == []"
- - "config|difference(ansible_facts.network_resources.lldp_interfaces) == []"
-
- - name: Replace LLDP interface configuration with provided configuration (IDEMPOTENT)
- exos_lldp_interfaces: *replaced
- register: result
-
- - name: Assert that task was idempotent
- assert:
- that:
- - "result['changed'] == false"
-
- - exos_facts:
- gather_network_resources: lldp_interfaces
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "ansible_facts.network_resources.lldp_interfaces|symmetric_difference(result.before) == []"
- - "config|difference(ansible_facts.network_resources.lldp_interfaces) == []"
diff --git a/test/integration/targets/exos_lldp_interfaces/vars/main.yaml b/test/integration/targets/exos_lldp_interfaces/vars/main.yaml
deleted file mode 100644
index 61a27a57dd..0000000000
--- a/test/integration/targets/exos_lldp_interfaces/vars/main.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
----
-merged:
- requests:
- - data: '{"openconfig-lldp:config": {"enabled": false, "name": "1"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=1/config
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "2"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=2/config
-
-replaced:
- requests:
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "3"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=3/config
-
-overridden:
- requests:
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "5"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=5/config
- - data: '{"openconfig-lldp:config": {"enabled": false, "name": "6"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=6/config
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "2"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=2/config
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "3"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=3/config
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "4"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=4/config
-
-deleted:
- requests_1:
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "2"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=2/config
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "3"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=3/config
- requests_2:
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "4"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=4/config
- - data: '{"openconfig-lldp:config": {"enabled": true, "name": "5"}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-lldp:lldp/interfaces/interface=5/config
diff --git a/test/integration/targets/exos_vlans/defaults/main.yaml b/test/integration/targets/exos_vlans/defaults/main.yaml
deleted file mode 100644
index 164afead28..0000000000
--- a/test/integration/targets/exos_vlans/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "[^_].*"
-test_items: []
diff --git a/test/integration/targets/exos_vlans/tasks/httpapi.yaml b/test/integration/targets/exos_vlans/tasks/httpapi.yaml
deleted file mode 100644
index 7c29713da6..0000000000
--- a/test/integration/targets/exos_vlans/tasks/httpapi.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-- name: Collect all httpapi test cases
- find:
- paths: "{{ role_path }}/tests/httpapi"
- patterns: "{{ testcase }}.yaml"
- use_regex: true
- register: test_cases
- delegate_to: localhost
-
-- name: Set test_items
- set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
-
-- name: Run test case (connection=httpapi)
- include: "{{ test_case_to_run }}"
- vars:
- ansible_connection: httpapi
- with_items: "{{ test_items }}"
- loop_control:
- loop_var: test_case_to_run
diff --git a/test/integration/targets/exos_vlans/tasks/main.yaml b/test/integration/targets/exos_vlans/tasks/main.yaml
deleted file mode 100644
index 22eac15464..0000000000
--- a/test/integration/targets/exos_vlans/tasks/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- { include: httpapi.yaml, tags: ['httpapi'] }
diff --git a/test/integration/targets/exos_vlans/tests/httpapi/_populate_config.yaml b/test/integration/targets/exos_vlans/tests/httpapi/_populate_config.yaml
deleted file mode 100644
index 50c0b83944..0000000000
--- a/test/integration/targets/exos_vlans/tests/httpapi/_populate_config.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- name: Populate config
- exos_config:
- lines:
- - create vlan vlan_10 tag 10
- - create vlan vlan_20 tag 20
- - disable vlan_20
diff --git a/test/integration/targets/exos_vlans/tests/httpapi/_reset_config.yaml b/test/integration/targets/exos_vlans/tests/httpapi/_reset_config.yaml
deleted file mode 100644
index 04ffcb4f5c..0000000000
--- a/test/integration/targets/exos_vlans/tests/httpapi/_reset_config.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- name: Restore initial config
- exos_config:
- lines:
- - delete vlan 2-4094
- ignore_errors: yes
diff --git a/test/integration/targets/exos_vlans/tests/httpapi/deleted.yaml b/test/integration/targets/exos_vlans/tests/httpapi/deleted.yaml
deleted file mode 100644
index a88ff23fb5..0000000000
--- a/test/integration/targets/exos_vlans/tests/httpapi/deleted.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
----
-- debug:
- msg: "Start exos_vlan deleted integration tests ansible_connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- block:
- - name: Delete VLAN
- exos_vlans: &deleted
- config:
- state: deleted
- register: result
-
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "{{ initial_state == result['before']}}"
-
- - name: Assert that correct set of requests were correctly generated
- assert:
- that:
- - "{{deleted['requests'] == result['requests']}}"
-
- - name: Assert that the after dicts were correctly generated
- assert:
- that:
- - "{{deleted['after'] == result['after']}}"
-
- - name: Delete attributes of all configured VLANs (IDEMPOTENT)
- exos_vlans: *deleted
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result.changed == false"
-
- - name: Assert that the before dicts were correctly generated
- assert:
- that:
- - "{{deleted['after'] == result['before']}}"
diff --git a/test/integration/targets/exos_vlans/tests/httpapi/merged.yaml b/test/integration/targets/exos_vlans/tests/httpapi/merged.yaml
deleted file mode 100644
index da3ea6a3f2..0000000000
--- a/test/integration/targets/exos_vlans/tests/httpapi/merged.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
----
-- debug:
- msg: "START exos_vlans merged integration tests on connection = {{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- block:
- - name: Merge the provided configuration with the existing running configuration
- exos_vlans: &merged
- config:
- - name: vlan_30
- vlan_id: 30
- state: active
- - vlan_id: 10
- name: vlan_10
- state: suspend
- state: merged
- register: result
-
- - name: Assert that before dicts were correctly generated
- assert:
- that:
- - "{{ initial_state == result['before'] }}"
-
- - name: Assert that correct set of requests were generated
- assert:
- that:
- - "{{ merged['requests'] == result['requests'] }}"
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "{{ merged['after'] == result['after'] }}"
-
- - name: Merge the provided configuration with the existing configuration (IDEMPOTENT)
- exos_vlans: *merged
- register: result
-
- - name: Assert that the previous task was idempotent
- assert:
- that:
- - "result.changed == false"
-
- - name: Assert that before dict was correctly generated
- assert:
- that:
- - "{{ merged['after'] == result['before'] }}"
diff --git a/test/integration/targets/exos_vlans/tests/httpapi/overridden.yaml b/test/integration/targets/exos_vlans/tests/httpapi/overridden.yaml
deleted file mode 100644
index d519e666c6..0000000000
--- a/test/integration/targets/exos_vlans/tests/httpapi/overridden.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
----
-- debug:
- msg: "START exos_vlans overridden integration tests on connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- block:
- - name: Override existing VLAN configuration with provided configuration
- exos_vlans: &overridden
- config:
- - name: TEST_VLAN10
- vlan_id: 10
- state: suspend
- state: overridden
- register: result
-
- - name: Assert that correct set of requests were generated
- assert:
- that:
- - "{{ overridden['requests'] == result['requests'] }}"
-
- - name: Assert that before dicts were correctly generated
- assert:
- that:
- - "{{ initial_state == result['before'] }}"
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "{{ overridden['after'] == result['after'] }}"
-
- - name: Override existing VLAN configuration with provided configuration (IDEMPOTENT)
- exos_vlans: *overridden
- register: result
-
- - name: Assert that task was idempotent
- assert:
- that:
- - "result.changed == false"
-
- - name: Assert that before dicts were correctly generated
- assert:
- that:
- - "{{ overridden['after'] == result['before'] }}"
diff --git a/test/integration/targets/exos_vlans/tests/httpapi/replaced.yaml b/test/integration/targets/exos_vlans/tests/httpapi/replaced.yaml
deleted file mode 100644
index 1949ec7992..0000000000
--- a/test/integration/targets/exos_vlans/tests/httpapi/replaced.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
----
-- debug:
- msg: "START exos_vlans replaced integration tests on connection={{ ansible_connection }}"
-
-- include_tasks: _reset_config.yaml
-
-- include_tasks: _populate_config.yaml
-
-- block:
- - name: Replace existing VLAN configurations with provided configurations
- exos_vlans: &replaced
- config:
- - name: Test_VLAN20
- vlan_id: 20
- state: active
- - name: vlan_40
- vlan_id: 40
- state: suspend
- state: replaced
- register: result
-
- - name: Assert that correct set of requests are correctly generated
- assert:
- that:
- - "{{ replaced['requests'] == result['requests'] }}"
-
- - name: Assert that before dicts were correctly generated
- assert:
- that:
- - "{{ initial_state == result['before'] }}"
-
- - name: Assert that after dicts were correctly generated
- assert:
- that:
- - "{{ replaced['after'] == result['after'] }}"
-
- - name: Replace existing VLAN configuration with provided configurations (IDEMPOTENT)
- exos_vlans: *replaced
- register: result
-
- - name: Assert that task was idempotent
- assert:
- that:
- - "result.changed == false"
-
- - name: Assert that before dict was correctly generated
- assert:
- that:
- - "{{ replaced['after'] == result['before'] }}"
diff --git a/test/integration/targets/exos_vlans/vars/main.yaml b/test/integration/targets/exos_vlans/vars/main.yaml
deleted file mode 100644
index 098686c1fa..0000000000
--- a/test/integration/targets/exos_vlans/vars/main.yaml
+++ /dev/null
@@ -1,88 +0,0 @@
----
-initial_state:
- - name: "Default"
- state: "active"
- vlan_id: 1
- - name: "vlan_10"
- state: "active"
- vlan_id: 10
- - name: "vlan_20"
- state: "suspend"
- vlan_id: 20
-
-merged:
- requests:
- - data: '{"openconfig-vlan:vlans": [{"config": {"status": "ACTIVE", "vlan-id": 30, "name": "vlan_30", "tpid": "oc-vlan-types:TPID_0x8100"}}]}'
- method: POST
- path: /rest/restconf/data/openconfig-vlan:vlans/
- - data: '{"openconfig-vlan:vlans": {"vlan": [{"config": {"status": "SUSPENDED", "vlan-id": 10, "name": "vlan_10", "tpid": "oc-vlan-types:TPID_0x8100"}}]}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-vlan:vlans/
-
- after:
- - name: "Default"
- state: "active"
- vlan_id: 1
- - name: "vlan_10"
- state: "suspend"
- vlan_id: 10
- - name: "vlan_20"
- state: "suspend"
- vlan_id: 20
- - name: "vlan_30"
- state: "active"
- vlan_id: 30
-
-replaced:
- requests:
- - data: '{"openconfig-vlan:vlans": [{"config": {"status": "SUSPENDED", "vlan-id": 40, "name": "vlan_40", "tpid": "oc-vlan-types:TPID_0x8100"}}]}'
- method: POST
- path: /rest/restconf/data/openconfig-vlan:vlans/
- - data: '{"openconfig-vlan:vlans": {"vlan": [{"config": {"status": "ACTIVE", "vlan-id": 20, "name": "Test_VLAN20", "tpid": "oc-vlan-types:TPID_0x8100"}}]}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-vlan:vlans/
-
- after:
- - name: "Default"
- state: "active"
- vlan_id: 1
- - name: "vlan_10"
- state: "active"
- vlan_id: 10
- - name: "Test_VLAN20"
- state: "active"
- vlan_id: 20
- - name: "vlan_40"
- state: "suspend"
- vlan_id: 40
-
-overridden:
- requests:
- - data: null
- method: DELETE
- path: /rest/restconf/data/openconfig-vlan:vlans/vlan=20
- - data: '{"openconfig-vlan:vlans": {"vlan": [{"config": {"status": "SUSPENDED", "vlan-id": 10, "name": "TEST_VLAN10", "tpid": "oc-vlan-types:TPID_0x8100"}}]}}'
- method: PATCH
- path: /rest/restconf/data/openconfig-vlan:vlans/
-
- after:
- - name: "Default"
- state: "active"
- vlan_id: 1
- - name: "TEST_VLAN10"
- state: "suspend"
- vlan_id: 10
-
-deleted:
- requests:
- - data: null
- method: DELETE
- path: /rest/restconf/data/openconfig-vlan:vlans/vlan=10
- - data: null
- method: DELETE
- path: /rest/restconf/data/openconfig-vlan:vlans/vlan=20
-
- after:
- - name: "Default"
- state: "active"
- vlan_id: 1
diff --git a/test/integration/targets/filesystem/aliases b/test/integration/targets/filesystem/aliases
deleted file mode 100644
index 2d79ab027f..0000000000
--- a/test/integration/targets/filesystem/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group3
-skip/aix
-skip/osx
diff --git a/test/integration/targets/filesystem/defaults/main.yml b/test/integration/targets/filesystem/defaults/main.yml
deleted file mode 100644
index 721c056c1d..0000000000
--- a/test/integration/targets/filesystem/defaults/main.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-tested_filesystems:
- # key: fstype
- # fssize: size (Mo)
- # grow: True if resizefs is supported
- # Other minimal sizes:
- # - XFS: 20Mo
- # - Btrfs: 150Mo (50Mo when "--metadata single" is used and 100Mb when on newer Fedora versions)
- # - f2fs:
- # - 1.2.0 requires at leat 116Mo
- # - 1.7.0 requires at least 30Mo
- # - 1.10.0 requires at least 38Mo
- # - resizefs asserts when initial fs is smaller than 60Mo and seems to require 1.10.0
- ext4: {fssize: 10, grow: True}
- ext4dev: {fssize: 10, grow: True}
- ext3: {fssize: 10, grow: True}
- ext2: {fssize: 10, grow: True}
- xfs: {fssize: 20, grow: False} # grow requires a mounted filesystem
- btrfs: {fssize: 150, grow: False} # grow not implemented
- vfat: {fssize: 20, grow: True}
- ocfs2: {fssize: '{{ ocfs2_fssize }}', grow: False} # grow not implemented
- f2fs: {fssize: '{{ f2fs_fssize|default(60) }}', grow: 'f2fs_version is version("1.10.0", ">=")'}
- lvm: {fssize: 20, grow: True}
diff --git a/test/integration/targets/filesystem/meta/main.yml b/test/integration/targets/filesystem/meta/main.yml
deleted file mode 100644
index 1810d4bec9..0000000000
--- a/test/integration/targets/filesystem/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_remote_tmp_dir
diff --git a/test/integration/targets/filesystem/tasks/create_device.yml b/test/integration/targets/filesystem/tasks/create_device.yml
deleted file mode 100644
index 052934cc54..0000000000
--- a/test/integration/targets/filesystem/tasks/create_device.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-- name: 'Create a "disk" file'
- command: 'dd if=/dev/zero of={{ image_file }} bs=1M count={{ fssize }}'
-
-- vars:
- dev: '{{ image_file }}'
- block:
- - when: fstype == 'lvm'
- block:
- - name: 'Create a loop device for LVM'
- command: 'losetup --show -f {{ dev }}'
- register: loop_device_cmd
-
- - set_fact:
- dev: "{{ loop_device_cmd.stdout }}"
-
- - include_tasks: '{{ action }}.yml'
-
- always:
- - name: 'Detach loop device used for LVM'
- command: 'losetup -d {{ dev }}'
- args:
- removes: '{{ dev }}'
- when: fstype == 'lvm'
-
- - name: 'Clean correct device for LVM'
- set_fact:
- dev: '{{ image_file }}'
- when: fstype == 'lvm'
-
- - file:
- name: '{{ image_file }}'
- state: absent
diff --git a/test/integration/targets/filesystem/tasks/create_fs.yml b/test/integration/targets/filesystem/tasks/create_fs.yml
deleted file mode 100644
index b42f886ef0..0000000000
--- a/test/integration/targets/filesystem/tasks/create_fs.yml
+++ /dev/null
@@ -1,82 +0,0 @@
-- name: filesystem creation
- filesystem:
- dev: '{{ dev }}'
- fstype: '{{ fstype }}'
- register: fs_result
-
-- assert:
- that:
- - 'fs_result is changed'
- - 'fs_result is success'
-
-- command: 'blkid -c /dev/null -o value -s UUID {{ dev }}'
- register: uuid
-
-- name: "Check that filesystem isn't created if force isn't used"
- filesystem:
- dev: '{{ dev }}'
- fstype: '{{ fstype }}'
- register: fs2_result
-
-- command: 'blkid -c /dev/null -o value -s UUID {{ dev }}'
- register: uuid2
-
-- assert:
- that:
- - 'not (fs2_result is changed)'
- - 'fs2_result is success'
- - 'uuid.stdout == uuid2.stdout'
-
-- name: Check that filesystem is recreated if force is used
- filesystem:
- dev: '{{ dev }}'
- fstype: '{{ fstype }}'
- force: yes
- register: fs3_result
-
-- command: 'blkid -c /dev/null -o value -s UUID {{ dev }}'
- register: uuid3
-
-- assert:
- that:
- - 'fs3_result is changed'
- - 'fs3_result is success'
- - 'uuid.stdout != uuid3.stdout'
-
-- name: increase fake device
- shell: 'dd if=/dev/zero bs=1M count=1 >> {{ image_file }}'
-
-- when: fstype == 'lvm'
- block:
- - name: Resize loop device for LVM
- command: losetup -c {{ dev }}
-
-- when: 'grow|bool and (fstype != "vfat" or resize_vfat)'
- block:
- - name: Expand filesystem
- filesystem:
- dev: '{{ dev }}'
- fstype: '{{ fstype }}'
- resizefs: yes
- register: fs4_result
-
- - command: 'blkid -c /dev/null -o value -s UUID {{ dev }}'
- register: uuid4
-
- - assert:
- that:
- - 'fs4_result is changed'
- - 'fs4_result is success'
- - 'uuid3.stdout == uuid4.stdout' # unchanged
-
- - name: Try to expand filesystem again
- filesystem:
- dev: '{{ dev }}'
- fstype: '{{ fstype }}'
- resizefs: yes
- register: fs5_result
-
- - assert:
- that:
- - 'not (fs5_result is changed)'
- - 'fs5_result is successful'
diff --git a/test/integration/targets/filesystem/tasks/main.yml b/test/integration/targets/filesystem/tasks/main.yml
deleted file mode 100644
index b527e1f620..0000000000
--- a/test/integration/targets/filesystem/tasks/main.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-- debug:
- msg: '{{ role_name }}'
-- debug:
- msg: '{{ role_path|basename }}'
-- import_tasks: setup.yml
-
-- include_vars: "{{ lookup('first_found', search) }}"
- vars:
- search:
- files:
- - '{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml'
- - 'default.yml'
- paths:
- - '../vars/'
-
-- include_tasks: create_device.yml
- vars:
- image_file: '{{ remote_tmp_dir }}/img'
- fstype: '{{ item.0.key }}'
- fssize: '{{ item.0.value.fssize }}'
- grow: '{{ item.0.value.grow }}'
- action: '{{ item.1 }}'
- when:
- - 'not (item.0.key == "btrfs" and ansible_system == "FreeBSD")' # btrfs not available on FreeBSD
- # On Ubuntu trusty, blkid is unable to identify filesystem smaller than 256Mo, see
- # https://www.kernel.org/pub/linux/utils/util-linux/v2.21/v2.21-ChangeLog
- # https://anonscm.debian.org/cgit/collab-maint/pkg-util-linux.git/commit/?id=04f7020eadf31efc731558df92daa0a1c336c46c
- - 'not (item.0.key == "btrfs" and (ansible_distribution == "Ubuntu" and ansible_distribution_release == "trusty"))'
- - 'not (item.0.key == "btrfs" and (ansible_facts.os_family == "RedHat" and ansible_facts.distribution_major_version is version("8", ">=")))'
- - 'not (item.0.key == "lvm" and ansible_system == "FreeBSD")' # LVM not available on FreeBSD
- - 'not (item.0.key == "lvm" and ansible_virtualization_type == "docker")' # Tests use losetup which can not be used inside unprivileged container
- - 'not (item.0.key == "ocfs2" and ansible_os_family != "Debian")' # ocfs2 only available on Debian based distributions
- - 'not (item.0.key == "f2fs" and ansible_system == "FreeBSD")'
- # f2fs-tools package not available with RHEL/CentOS
- - 'not (item.0.key == "f2fs" and ansible_distribution in ["CentOS", "RedHat"])'
- # On Ubuntu trusty, blkid (2.20.1) is unable to identify F2FS filesystem. blkid handles F2FS since v2.23, see:
- # https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.23/v2.23-ReleaseNotes
- - 'not (item.0.key == "f2fs" and ansible_distribution == "Ubuntu" and ansible_distribution_version is version("14.04", "<="))'
- - 'not (item.1 == "overwrite_another_fs" and ansible_system == "FreeBSD")'
-
- # The xfsprogs package on newer versions of OpenSUSE (15+) require Python 3, we skip this on our Python 2 container
- # OpenSUSE 42.3 Python2 and the other py3 containers are not affected so we will continue to run that
- - 'not (item.0.key == "xfs" and ansible_os_family == "Suse" and ansible_python.version.major == 2 and ansible_distribution_major_version|int != 42)'
- loop: "{{ query('dict', tested_filesystems)|product(['create_fs', 'overwrite_another_fs'])|list }}"
diff --git a/test/integration/targets/filesystem/tasks/overwrite_another_fs.yml b/test/integration/targets/filesystem/tasks/overwrite_another_fs.yml
deleted file mode 100644
index bdd238fba7..0000000000
--- a/test/integration/targets/filesystem/tasks/overwrite_another_fs.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-- name: 'Recreate "disk" file'
- command: 'dd if=/dev/zero of={{ image_file }} bs=1M count={{ fssize }}'
-
-- name: 'Create a swap filesystem'
- command: 'mkswap {{ dev }}'
-
-- command: 'blkid -c /dev/null -o value -s UUID {{ dev }}'
- register: uuid
-
-- name: "Check that an existing filesystem (not handled by this module) isn't overwritten when force isn't used"
- filesystem:
- dev: '{{ dev }}'
- fstype: '{{ fstype }}'
- register: fs_result
- ignore_errors: True
-
-- command: 'blkid -c /dev/null -o value -s UUID {{ dev }}'
- register: uuid2
-
-- assert:
- that:
- - 'fs_result is failed'
- - 'uuid.stdout == uuid2.stdout'
-
-- name: "Check that an existing filesystem (not handled by this module) is overwritten when force is used"
- filesystem:
- dev: '{{ dev }}'
- fstype: '{{ fstype }}'
- force: yes
- register: fs_result2
-
-- command: 'blkid -c /dev/null -o value -s UUID {{ dev }}'
- register: uuid3
-
-- assert:
- that:
- - 'fs_result2 is successful'
- - 'fs_result2 is changed'
- - 'uuid2.stdout != uuid3.stdout'
diff --git a/test/integration/targets/filesystem/tasks/setup.yml b/test/integration/targets/filesystem/tasks/setup.yml
deleted file mode 100644
index 6069cbedd8..0000000000
--- a/test/integration/targets/filesystem/tasks/setup.yml
+++ /dev/null
@@ -1,96 +0,0 @@
-- name: install filesystem tools
- package:
- name: '{{ item }}'
- state: present
- # xfsprogs on OpenSUSE requires Python 3, skip this for our newer Py2 OpenSUSE builds
- when: not (item == 'xfsprogs' and ansible_os_family == 'Suse' and ansible_python.version.major == 2 and ansible_distribution_major_version|int != 42)
- with_items:
- - e2fsprogs
- - xfsprogs
-
-- block:
- - name: install btrfs progs
- package:
- name: btrfs-progs
- state: present
- when:
- - ansible_os_family != 'Suse'
- - not (ansible_distribution == 'Ubuntu' and ansible_distribution_version is version('16.04', '<='))
- - ansible_system != "FreeBSD"
- - not (ansible_facts.os_family == "RedHat" and ansible_facts.distribution_major_version is version('8', '>='))
-
- - name: install btrfs progs (Ubuntu <= 16.04)
- package:
- name: btrfs-tools
- state: present
- when: ansible_distribution == 'Ubuntu' and ansible_distribution_version is version('16.04', '<=')
-
- - name: install btrfs progs (OpenSuse)
- package:
- name: '{{ item }}'
- state: present
- when: ansible_os_family == 'Suse'
- with_items:
- - python{{ ansible_python.version.major }}-xml
- - btrfsprogs
-
- - name: install ocfs2 (Debian)
- package:
- name: ocfs2-tools
- state: present
- when: ansible_os_family == 'Debian'
-
- - when:
- - ansible_os_family != 'RedHat' or ansible_distribution == 'Fedora'
- - ansible_distribution != 'Ubuntu' or ansible_distribution_version is version('16.04', '>=')
- - ansible_system != "FreeBSD"
- block:
- - name: install f2fs
- package:
- name: f2fs-tools
- state: present
-
- - name: fetch f2fs version
- command: mkfs.f2fs /dev/null
- ignore_errors: yes
- register: mkfs_f2fs
-
- - set_fact:
- f2fs_version: '{{ mkfs_f2fs.stdout | regex_search("F2FS-tools: mkfs.f2fs Ver:.*") | regex_replace("F2FS-tools: mkfs.f2fs Ver: ([0-9.]+) .*", "\1") }}'
-
- - name: install dosfstools and lvm2 (Linux)
- package:
- name: '{{ item }}'
- with_items:
- - dosfstools
- - lvm2
- when: ansible_system == 'Linux'
-
-- block:
- - name: install fatresize
- package:
- name: fatresize
- state: present
- - command: fatresize --help
- register: fatresize
- - set_fact:
- fatresize_version: '{{ fatresize.stdout_lines[0] | regex_search("[0-9]+\.[0-9]+\.[0-9]+") }}'
- when:
- - ansible_system == 'Linux'
- - ansible_os_family != 'Suse'
- - ansible_os_family != 'RedHat' or (ansible_distribution == 'CentOS' and ansible_distribution_version is version('7.0', '=='))
-
-- command: mke2fs -V
- register: mke2fs
-
-- set_fact:
- # mke2fs 1.43.6 (29-Aug-2017)
- e2fsprogs_version: '{{ mke2fs.stderr_lines[0] | regex_search("[0-9]{1,2}\.[0-9]{1,2}(\.[0-9]{1,2})?") }}'
-
-- set_fact:
- # http://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.43
- # Mke2fs no longer complains if the user tries to create a file system
- # using the entire block device.
- force_creation: "{{ e2fsprogs_version is version('1.43', '<') }}"
- # Earlier versions have a segfault bug
- resize_vfat: "{{ fatresize_version|default('0.0') is version('1.0.4', '>=') }}"
diff --git a/test/integration/targets/filesystem/vars/Ubuntu-14.04.yml b/test/integration/targets/filesystem/vars/Ubuntu-14.04.yml
deleted file mode 100644
index e2ead0bf9d..0000000000
--- a/test/integration/targets/filesystem/vars/Ubuntu-14.04.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-ocfs2_fssize: 108
-f2fs_fssize: 116
diff --git a/test/integration/targets/filesystem/vars/default.yml b/test/integration/targets/filesystem/vars/default.yml
deleted file mode 100644
index 85b052d4c2..0000000000
--- a/test/integration/targets/filesystem/vars/default.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-ocfs2_fssize: 20
diff --git a/test/integration/targets/filter_json_query/aliases b/test/integration/targets/filter_json_query/aliases
deleted file mode 100644
index 1603f4351b..0000000000
--- a/test/integration/targets/filter_json_query/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group2
-skip/python2.6 # filters are controller only, and we no longer support Python 2.6 on the controller
-skip/aix
diff --git a/test/integration/targets/filter_json_query/runme.sh b/test/integration/targets/filter_json_query/runme.sh
deleted file mode 100755
index a0db5e5400..0000000000
--- a/test/integration/targets/filter_json_query/runme.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env bash
-
-set -eux
-
-source virtualenv.sh
-
-# Requirements have to be installed prior to running ansible-playbook
-# because plugins and requirements are loaded before the task runs
-
-pip install jmespath
-
-ANSIBLE_ROLES_PATH=../ ansible-playbook runme.yml "$@"
diff --git a/test/integration/targets/filter_json_query/runme.yml b/test/integration/targets/filter_json_query/runme.yml
deleted file mode 100644
index 68f6372c2f..0000000000
--- a/test/integration/targets/filter_json_query/runme.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-- hosts: localhost
- roles:
- - { role: filter_json_query }
diff --git a/test/integration/targets/filter_json_query/tasks/main.yml b/test/integration/targets/filter_json_query/tasks/main.yml
deleted file mode 100644
index 02ad2f87ec..0000000000
--- a/test/integration/targets/filter_json_query/tasks/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- name: Test json_query filter
- assert:
- that:
- - "users | json_query('[*].hosts[].host') == ['host_a', 'host_b', 'host_c', 'host_d']"
diff --git a/test/integration/targets/filter_json_query/vars/main.yml b/test/integration/targets/filter_json_query/vars/main.yml
deleted file mode 100644
index 36964115b4..0000000000
--- a/test/integration/targets/filter_json_query/vars/main.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-users:
- - name: steve
- hosts:
- - host: host_a
- password: abc
- - host: host_b
- - name: bill
- hosts:
- - host: host_c
- password: default
- - host: host_d
diff --git a/test/integration/targets/filter_random_mac/aliases b/test/integration/targets/filter_random_mac/aliases
deleted file mode 100644
index 1603f4351b..0000000000
--- a/test/integration/targets/filter_random_mac/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group2
-skip/python2.6 # filters are controller only, and we no longer support Python 2.6 on the controller
-skip/aix
diff --git a/test/integration/targets/filter_random_mac/tasks/main.yml b/test/integration/targets/filter_random_mac/tasks/main.yml
deleted file mode 100644
index 3c90127262..0000000000
--- a/test/integration/targets/filter_random_mac/tasks/main.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# test code for filters
-# Copyright: (c) 2014, Michael DeHaan <michael.dehaan@gmail.com>
-# Copyright: (c) 2019, Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- set_fact:
- output_dir: "{{ lookup('env', 'OUTPUT_DIR') }}"
-
-- name: Test random_mac filter bad argument type
- debug:
- var: "0 | random_mac"
- register: _bad_random_mac_filter
- ignore_errors: yes
-
-- name: Verify random_mac filter showed a bad argument type error message
- assert:
- that:
- - _bad_random_mac_filter is failed
- - "_bad_random_mac_filter.msg is match('Invalid value type (.*int.*) for random_mac .*')"
-
-- name: Test random_mac filter bad argument value
- debug:
- var: "'dummy' | random_mac"
- register: _bad_random_mac_filter
- ignore_errors: yes
-
-- name: Verify random_mac filter showed a bad argument value error message
- assert:
- that:
- - _bad_random_mac_filter is failed
- - "_bad_random_mac_filter.msg is match('Invalid value (.*) for random_mac: .* not hexa byte')"
-
-- name: Test random_mac filter prefix too big
- debug:
- var: "'00:00:00:00:00:00' | random_mac"
- register: _bad_random_mac_filter
- ignore_errors: yes
-
-- name: Verify random_mac filter showed a prefix too big error message
- assert:
- that:
- - _bad_random_mac_filter is failed
- - "_bad_random_mac_filter.msg is match('Invalid value (.*) for random_mac: 5 colon.* separated items max')"
-
-- name: Verify random_mac filter
- assert:
- that:
- - "'00' | random_mac is match('^00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
- - "'00:00' | random_mac is match('^00:00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
- - "'00:00:00' | random_mac is match('^00:00:00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
- - "'00:00:00:00' | random_mac is match('^00:00:00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
- - "'00:00:00:00:00' | random_mac is match('^00:00:00:00:00:[a-f0-9][a-f0-9]$')"
- - "'00:00:00' | random_mac != '00:00:00' | random_mac"
-
-- name: Verify random_mac filter with seed
- assert:
- that:
- - "'00:00:00' | random_mac(seed='test') == '00:00:00' | random_mac(seed='test')"
- - "'00:00:00' | random_mac(seed='test') != '00:00:00' | random_mac(seed='another_test')"
diff --git a/test/integration/targets/firewalld/aliases b/test/integration/targets/firewalld/aliases
deleted file mode 100644
index dba2910226..0000000000
--- a/test/integration/targets/firewalld/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-destructive
-shippable/posix/group3
-skip/aix
-skip/freebsd
-skip/osx
diff --git a/test/integration/targets/firewalld/tasks/main.yml b/test/integration/targets/firewalld/tasks/main.yml
deleted file mode 100644
index 84af185bb0..0000000000
--- a/test/integration/targets/firewalld/tasks/main.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-# Test playbook for the firewalld module
-# (c) 2017, Adam Miller <admiller@redhat.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: Run firewalld tests
- block:
- - name: Ensure firewalld is installed
- package:
- name: firewalld
- state: present
- # This doesn't work for CentOS 6 because firewalld doesn't exist in CentOS6
-
- - name: Check to make sure the firewalld python module is available.
- shell: "{{ansible_python.executable}} -c 'import firewall'"
- register: check_output
- ignore_errors: true
-
- - name: Test Online Operations
- block:
- - name: start firewalld
- service:
- name: firewalld
- state: started
-
- - import_tasks: run_all_tests.yml
- when: check_output.rc == 0
-
- - name: Test Offline Operations
- block:
- - name: stop firewalld
- service:
- name: firewalld
- state: stopped
-
- - import_tasks: run_all_tests.yml
- when: check_output.rc == 0
-
- when:
- - ansible_facts.os_family == "RedHat" and ansible_facts.distribution_major_version is version('7', '>=')
- - not (ansible_distribution == "Ubuntu" and ansible_distribution_version is version('14.04', '=='))
- # Firewalld package on OpenSUSE (15+) require Python 3, so we skip on OpenSUSE running py2 on these newer distros
- - not (ansible_os_family == "Suse" and ansible_distribution_major_version|int != 42 and ansible_python.version.major != 3)
diff --git a/test/integration/targets/firewalld/tasks/port_test_cases.yml b/test/integration/targets/firewalld/tasks/port_test_cases.yml
deleted file mode 100644
index 5891e7520e..0000000000
--- a/test/integration/targets/firewalld/tasks/port_test_cases.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-# Test playbook for the firewalld module - port operations
-# (c) 2017, Adam Miller <admiller@redhat.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: firewalld port test permanent enabled
- firewalld:
- port: 8081/tcp
- permanent: true
- state: enabled
- register: result
-
-- name: assert firewalld port test permanent enabled worked
- assert:
- that:
- - result is changed
-
-- name: firewalld port test permanent enabled rerun (verify not changed)
- firewalld:
- port: 8081/tcp
- permanent: true
- state: enabled
- register: result
-
-- name: assert firewalld port test permanent enabled rerun worked (verify not changed)
- assert:
- that:
- - result is not changed
-
-- name: firewalld port test permanent disabled
- firewalld:
- port: 8081/tcp
- permanent: true
- state: disabled
- register: result
-
-- name: assert firewalld port test permanent disabled worked
- assert:
- that:
- - result is changed
-
-- name: firewalld port test permanent disabled rerun (verify not changed)
- firewalld:
- port: 8081/tcp
- permanent: true
- state: disabled
- register: result
-
-- name: assert firewalld port test permanent disabled rerun worked (verify not changed)
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/firewalld/tasks/run_all_tests.yml b/test/integration/targets/firewalld/tasks/run_all_tests.yml
deleted file mode 100644
index d463ef206f..0000000000
--- a/test/integration/targets/firewalld/tasks/run_all_tests.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-# Test playbook for the firewalld module
-# (c) 2017, Adam Miller <admiller@redhat.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: Ensure /run/firewalld exists
- file:
- path: /run/firewalld
- state: directory
-
-# firewalld service operation test cases
-- include_tasks: service_test_cases.yml
- # Skipping on CentOS 8 due to https://github.com/ansible/ansible/issues/64750
- when: not (ansible_facts.distribution == "CentOS" and ansible_distribution_major_version is version('8', '=='))
-
-# firewalld port operation test cases
-- include_tasks: port_test_cases.yml
- # Skipping on CentOS 8 due to https://github.com/ansible/ansible/issues/64750
- when: not (ansible_facts.distribution == "CentOS" and ansible_distribution_major_version is version('8', '=='))
-
-# firewalld source operation test cases
-- import_tasks: source_test_cases.yml
diff --git a/test/integration/targets/firewalld/tasks/service_test_cases.yml b/test/integration/targets/firewalld/tasks/service_test_cases.yml
deleted file mode 100644
index 3c95d81d25..0000000000
--- a/test/integration/targets/firewalld/tasks/service_test_cases.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-# Test playbook for the firewalld module - service operations
-# (c) 2017, Adam Miller <admiller@redhat.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: firewalld service test permanent enabled
- firewalld:
- service: https
- permanent: true
- state: enabled
- register: result
-
-- name: assert firewalld service test permanent enabled worked
- assert:
- that:
- - result is changed
-
-- name: firewalld service test permanent enabled rerun (verify not changed)
- firewalld:
- service: https
- permanent: true
- state: enabled
- register: result
-
-- name: assert firewalld service test permanent enabled rerun worked (verify not changed)
- assert:
- that:
- - result is not changed
-
-- name: firewalld service test permanent disabled
- firewalld:
- service: https
- permanent: true
- state: disabled
- register: result
-
-- name: assert firewalld service test permanent disabled worked
- assert:
- that:
- - result is changed
-
-- name: firewalld service test permanent disabled rerun (verify not changed)
- firewalld:
- service: https
- permanent: true
- state: disabled
- register: result
-
-- name: assert firewalld service test permanent disabled rerun worked (verify not changed)
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/firewalld/tasks/source_test_cases.yml b/test/integration/targets/firewalld/tasks/source_test_cases.yml
deleted file mode 100644
index f7c4f00f37..0000000000
--- a/test/integration/targets/firewalld/tasks/source_test_cases.yml
+++ /dev/null
@@ -1,85 +0,0 @@
-# Test playbook for the firewalld module - source operations
-# (c) 2019, Hideki Saito <saito@fgrep.org>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: firewalld source test permanent enabled
- firewalld:
- source: 192.0.2.0/24
- zone: internal
- permanent: True
- state: enabled
- register: result
-
-- name: assert firewalld source test permanent enabled worked
- assert:
- that:
- - result is changed
-
-- name: firewalld source test permanent enabled rerun (verify not changed)
- firewalld:
- source: 192.0.2.0/24
- zone: internal
- permanent: True
- state: enabled
- register: result
-
-- name: assert firewalld source test permanent enabled rerun worked (verify not changed)
- assert:
- that:
- - result is not changed
-
-- name: firewalld source test permanent disabled
- firewalld:
- source: 192.0.2.0/24
- zone: internal
- permanent: True
- state: disabled
- register: result
-
-- name: assert firewalld source test permanent disabled worked
- assert:
- that:
- - result is changed
-
-- name: firewalld source test permanent disabled rerun (verify not changed)
- firewalld:
- source: 192.0.2.0/24
- zone: internal
- permanent: True
- state: disabled
- register: result
-
-- name: assert firewalld source test permanent disabled rerun worked (verify not changed)
- assert:
- that:
- - result is not changed
-
-- name: firewalld source test permanent enabled is exclusive (verify exclusive error)
- firewalld:
- source: 192.0.2.0/24
- port: 8081/tcp
- zone: internal
- permanent: True
- state: enabled
- register: result
- ignore_errors: true
-
-- name: assert firewalld source test permanent enabled is exclusive (verify exclusive error)
- assert:
- that:
- - result is not changed
- - "result.msg == 'can only operate on port, service, rich_rule, masquerade, icmp_block, icmp_block_inversion, interface or source at once'"
diff --git a/test/integration/targets/flatpak/aliases b/test/integration/targets/flatpak/aliases
deleted file mode 100644
index ce0a136c17..0000000000
--- a/test/integration/targets/flatpak/aliases
+++ /dev/null
@@ -1,8 +0,0 @@
-unsupported
-destructive
-skip/aix
-skip/freebsd
-skip/osx
-skip/rhel
-needs/root
-needs/privileged
diff --git a/test/integration/targets/flatpak/meta/main.yml b/test/integration/targets/flatpak/meta/main.yml
deleted file mode 100644
index 07faa21776..0000000000
--- a/test/integration/targets/flatpak/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_tests
diff --git a/test/integration/targets/flatpak/tasks/check_mode.yml b/test/integration/targets/flatpak/tasks/check_mode.yml
deleted file mode 100644
index 065f10dfa7..0000000000
--- a/test/integration/targets/flatpak/tasks/check_mode.yml
+++ /dev/null
@@ -1,193 +0,0 @@
-# - Tests with absent flatpak --------------------------------------------------
-
-# state=present on absent flatpak
-
-- name: Test addition of absent flatpak (check mode)
- flatpak:
- name: org.gnome.Characters
- remote: flathub
- state: present
- register: addition_result
- check_mode: true
-
-- name: Verify addition of absent flatpak test result (check mode)
- assert:
- that:
- - "addition_result.changed == true"
- msg: "Adding an absent flatpak shall mark module execution as changed"
-
-- name: Test non-existent idempotency of addition of absent flatpak (check mode)
- flatpak:
- name: org.gnome.Characters
- remote: flathub
- state: present
- register: double_addition_result
- check_mode: true
-
-- name: Verify non-existent idempotency of addition of absent flatpak test result (check mode)
- assert:
- that:
- - "double_addition_result.changed == true"
- msg: |
- Adding an absent flatpak a second time shall still mark module execution
- as changed in check mode
-
-# state=absent on absent flatpak
-
-- name: Test removal of absent flatpak check mode
- flatpak:
- name: org.gnome.Characters
- state: absent
- register: removal_result
- check_mode: true
-
-- name: Verify removal of absent flatpak test result (check mode)
- assert:
- that:
- - "removal_result.changed == false"
- msg: "Removing an absent flatpak shall mark module execution as not changed"
-
-# state=present with url on absent flatpak
-
-- name: Test addition of absent flatpak with url (check mode)
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
- remote: flathub
- state: present
- register: url_addition_result
- check_mode: true
-
-- name: Verify addition of absent flatpak with url test result (check mode)
- assert:
- that:
- - "url_addition_result.changed == true"
- msg: "Adding an absent flatpak from URL shall mark module execution as changed"
-
-- name: Test non-existent idempotency of addition of absent flatpak with url (check mode)
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
- remote: flathub
- state: present
- register: double_url_addition_result
- check_mode: true
-
-- name: >
- Verify non-existent idempotency of additionof absent flatpak with url test
- result (check mode)
- assert:
- that:
- - "double_url_addition_result.changed == true"
- msg: |
- Adding an absent flatpak from URL a second time shall still mark module execution
- as changed in check mode
-
-# state=absent with url on absent flatpak
-
-- name: Test removal of absent flatpak with url not doing anything (check mode)
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
- state: absent
- register: url_removal_result
- check_mode: true
-
-- name: Verify removal of absent flatpak with url test result (check mode)
- assert:
- that:
- - "url_removal_result.changed == false"
- msg: "Removing an absent flatpak shall mark module execution as not changed"
-
-
-# - Tests with present flatpak -------------------------------------------------
-
-# state=present on present flatpak
-
-- name: Test addition of present flatpak (check mode)
- flatpak:
- name: org.gnome.Calculator
- remote: flathub
- state: present
- register: addition_present_result
- check_mode: true
-
-- name: Verify addition test result of present flatpak (check mode)
- assert:
- that:
- - "addition_present_result.changed == false"
- msg: "Adding an present flatpak shall mark module execution as not changed"
-
-# state=absent on present flatpak
-
-- name: Test removal of present flatpak (check mode)
- flatpak:
- name: org.gnome.Calculator
- state: absent
- register: removal_present_result
- check_mode: true
-
-- name: Verify removal of present flatpak test result (check mode)
- assert:
- that:
- - "removal_present_result.changed == true"
- msg: "Removing a present flatpak shall mark module execution as changed"
-
-- name: Test non-existent idempotency of removal (check mode)
- flatpak:
- name: org.gnome.Calculator
- state: absent
- register: double_removal_present_result
- check_mode: true
-
-- name: Verify non-existent idempotency of removal (check mode)
- assert:
- that:
- - "double_removal_present_result.changed == true"
- msg: |
- Removing a present flatpak a second time shall still mark module execution
- as changed in check mode
-
-# state=present with url on present flatpak
-
-- name: Test addition with url of present flatpak (check mode)
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Calculator.flatpakref
- remote: flathub
- state: present
- register: url_addition_present_result
- check_mode: true
-
-- name: Verify addition with url of present flatpak test result (check mode)
- assert:
- that:
- - "url_addition_present_result.changed == false"
- msg: "Adding a present flatpak from URL shall mark module execution as not changed"
-
-# state=absent with url on present flatpak
-
-- name: Test removal with url of present flatpak (check mode)
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Calculator.flatpakref
- state: absent
- register: url_removal_present_result
- check_mode: true
-
-- name: Verify removal with url of present flatpak test result (check mode)
- assert:
- that:
- - "url_removal_present_result.changed == true"
- msg: "Removing an absent flatpak shall mark module execution as not changed"
-
-- name: Test non-existent idempotency of removal with url of present flatpak (check mode)
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Calculator.flatpakref
- remote: flathub
- state: absent
- register: double_url_removal_present_result
- check_mode: true
-
-- name: >
- Verify non-existent idempotency of installation with url of present
- flatpak test result (check mode)
- assert:
- that:
- - "double_url_removal_present_result.changed == true"
- msg: Removing an absent flatpak a second time shall still mark module execution as changed
diff --git a/test/integration/targets/flatpak/tasks/main.yml b/test/integration/targets/flatpak/tasks/main.yml
deleted file mode 100644
index daa7d8cd17..0000000000
--- a/test/integration/targets/flatpak/tasks/main.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-# (c) 2018, Alexander Bethke <oolongbrothers@gmx.net>
-# (c) 2018, Ansible Project
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- block:
-
- - import_tasks: setup.yml
- become: true
-
- # executable override
-
- - name: Test executable override
- flatpak:
- name: org.gnome.Characters
- remote: flathub
- state: present
- executable: nothing-that-exists
- ignore_errors: true
- register: executable_override_result
-
- - name: Verify executable override test result
- assert:
- that:
- - "executable_override_result.failed == true"
- - "executable_override_result.changed == false"
- msg: "Specifying non-existing executable shall fail module execution"
-
- - import_tasks: check_mode.yml
- become: false
-
- - import_tasks: test.yml
- become: false
- vars:
- method: user
-
- - import_tasks: test.yml
- become: true
- vars:
- method: system
-
- when: |
- ansible_distribution in ('Fedora', 'Ubuntu')
diff --git a/test/integration/targets/flatpak/tasks/setup.yml b/test/integration/targets/flatpak/tasks/setup.yml
deleted file mode 100644
index 954d56a0ce..0000000000
--- a/test/integration/targets/flatpak/tasks/setup.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-- name: Install flatpak on Fedora
- dnf:
- name: flatpak
- state: present
- become: true
- when: ansible_distribution == 'Fedora'
-
-- block:
- - name: Activate flatpak ppa on Ubuntu
- apt_repository:
- repo: "ppa:alexlarsson/flatpak"
- state: present
- mode: 0644
-
- - name: Install flatpak package on Ubuntu
- apt:
- name: flatpak
- state: present
-
- become: true
- when: ansible_distribution == 'Ubuntu'
-
-- name: Enable flathub for user
- flatpak_remote:
- name: flathub
- state: present
- flatpakrepo_url: https://dl.flathub.org/repo/flathub.flatpakrepo
- method: user
-
-- name: Enable flathub for system
- flatpak_remote:
- name: flathub
- state: present
- flatpakrepo_url: https://dl.flathub.org/repo/flathub.flatpakrepo
- method: system
-
-- name: Add flatpak for testing check mode on present flatpak
- flatpak:
- name: org.gnome.Calculator
- remote: flathub
- state: present
diff --git a/test/integration/targets/flatpak/tasks/test.yml b/test/integration/targets/flatpak/tasks/test.yml
deleted file mode 100644
index 5677dda289..0000000000
--- a/test/integration/targets/flatpak/tasks/test.yml
+++ /dev/null
@@ -1,115 +0,0 @@
-# state=present
-
-- name: Test addition - {{ method }}
- flatpak:
- name: org.gnome.Characters
- remote: flathub
- state: present
- method: "{{ method }}"
- register: addition_result
-
-- name: Verify addition test result - {{ method }}
- assert:
- that:
- - "addition_result.changed == true"
- msg: "state=preset shall add flatpak when absent"
-
-- name: Test idempotency of addition - {{ method }}
- flatpak:
- name: org.gnome.Characters
- remote: flathub
- state: present
- method: "{{ method }}"
- register: double_addition_result
-
-- name: Verify idempotency of addition test result - {{ method }}
- assert:
- that:
- - "double_addition_result.changed == false"
- msg: "state=present shall not do anything when flatpak is already present"
-
-# state=absent
-
-- name: Test removal - {{ method }}
- flatpak:
- name: org.gnome.Characters
- state: absent
- method: "{{ method }}"
- register: removal_result
-
-- name: Verify removal test result - {{ method }}
- assert:
- that:
- - "removal_result.changed == true"
- msg: "state=absent shall remove flatpak when present"
-
-- name: Test idempotency of removal - {{ method }}
- flatpak:
- name: org.gnome.Characters
- state: absent
- method: "{{ method }}"
- register: double_removal_result
-
-- name: Verify idempotency of removal test result - {{ method }}
- assert:
- that:
- - "double_removal_result.changed == false"
- msg: "state=absent shall not do anything when flatpak is not present"
-
-# state=present with url as name
-
-- name: Test addition with url - {{ method }}
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
- remote: flathub
- state: present
- method: "{{ method }}"
- register: url_addition_result
-
-- name: Verify addition test result - {{ method }}
- assert:
- that:
- - "url_addition_result.changed == true"
- msg: "state=preset with url as name shall add flatpak when absent"
-
-- name: Test idempotency of addition with url - {{ method }}
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
- remote: flathub
- state: present
- method: "{{ method }}"
- register: double_url_addition_result
-
-- name: Verify idempotency of addition with url test result - {{ method }}
- assert:
- that:
- - "double_url_addition_result.changed == false"
- msg: "state=present with url as name shall not do anything when flatpak is already present"
-
-# state=absent with url as name
-
-- name: Test removal with url - {{ method }}
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
- state: absent
- method: "{{ method }}"
- register: url_removal_result
-
-- name: Verify removal test result - {{ method }}
- assert:
- that:
- - "url_removal_result.changed == true"
- msg: "state=absent with url as name shall remove flatpak when present"
-
-- name: Test idempotency of removal with url - {{ method }}
- flatpak:
- name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
- state: absent
- method: "{{ method }}"
- register: double_url_removal_result
-
-- name: Verify idempotency of removal with url test result - {{ method }}
- assert:
- that:
- - "double_url_removal_result.changed == false"
- msg: "state=absent with url as name shall not do anything when flatpak is not present"
diff --git a/test/integration/targets/flatpak_remote/aliases b/test/integration/targets/flatpak_remote/aliases
deleted file mode 100644
index 77796273ce..0000000000
--- a/test/integration/targets/flatpak_remote/aliases
+++ /dev/null
@@ -1,7 +0,0 @@
-shippable/posix/group3
-destructive
-skip/aix
-skip/freebsd
-skip/osx
-skip/rhel
-needs/root
diff --git a/test/integration/targets/flatpak_remote/meta/main.yml b/test/integration/targets/flatpak_remote/meta/main.yml
deleted file mode 100644
index 314f77eba9..0000000000
--- a/test/integration/targets/flatpak_remote/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-dependencies:
- - prepare_tests
- - setup_flatpak_remote
diff --git a/test/integration/targets/flatpak_remote/tasks/check_mode.yml b/test/integration/targets/flatpak_remote/tasks/check_mode.yml
deleted file mode 100644
index 7ce89a8c15..0000000000
--- a/test/integration/targets/flatpak_remote/tasks/check_mode.yml
+++ /dev/null
@@ -1,101 +0,0 @@
-# - Tests with absent flatpak remote -------------------------------------------
-
-# state=present
-
-- name: Test addition of absent flatpak remote (check mode)
- flatpak_remote:
- name: flatpak-test
- flatpakrepo_url: /tmp/flatpak/repo/dummy-repo.flatpakrepo
- state: present
- register: addition_result
- check_mode: true
-
-- name: Verify addition of absent flatpak remote test result (check mode)
- assert:
- that:
- - "addition_result.changed == true"
- msg: "Adding an absent flatpak remote shall mark module execution as changed"
-
-- name: Test non-existent idempotency of addition of absent flatpak remote (check mode)
- flatpak_remote:
- name: flatpak-test
- flatpakrepo_url: /tmp/flatpak/repo/dummy-repo.flatpakrepo
- state: present
- register: double_addition_result
- check_mode: true
-
-- name: >
- Verify non-existent idempotency of addition of absent flatpak remote
- test result (check mode)
- assert:
- that:
- - "double_addition_result.changed == true"
- msg: |
- Adding an absent flatpak remote a second time shall still mark module execution
- as changed in check mode
-
-# state=absent
-
-- name: Test removal of absent flatpak remote not doing anything in check mode
- flatpak_remote:
- name: flatpak-test
- state: absent
- register: removal_result
- check_mode: true
-
-- name: Verify removal of absent flatpak remote test result (check mode)
- assert:
- that:
- - "removal_result.changed == false"
- msg: "Removing an absent flatpak remote shall mark module execution as not changed"
-
-
-# - Tests with present flatpak remote -------------------------------------------
-
-# state=present
-
-- name: Test addition of present flatpak remote (check mode)
- flatpak_remote:
- name: check-mode-test-remote
- flatpakrepo_url: /tmp/flatpak/repo/dummy-repo.flatpakrepo
- state: present
- register: addition_result
- check_mode: true
-
-- name: Verify addition of present flatpak remote test result (check mode)
- assert:
- that:
- - "addition_result.changed == false"
- msg: "Adding a present flatpak remote shall mark module execution as not changed"
-
-# state=absent
-
-- name: Test removal of present flatpak remote not doing anything in check mode
- flatpak_remote:
- name: check-mode-test-remote
- state: absent
- register: removal_result
- check_mode: true
-
-- name: Verify removal of present flatpak remote test result (check mode)
- assert:
- that:
- - "removal_result.changed == true"
- msg: "Removing a present flatpak remote shall mark module execution as changed"
-
-- name: Test non-existent idempotency of removal of present flatpak remote (check mode)
- flatpak_remote:
- name: check-mode-test-remote
- state: absent
- register: double_removal_result
- check_mode: true
-
-- name: >
- Verify non-existent idempotency of removal of present flatpak remote
- test result (check mode)
- assert:
- that:
- - "double_removal_result.changed == true"
- msg: |
- Removing a present flatpak remote a second time shall still mark module execution
- as changed in check mode
diff --git a/test/integration/targets/flatpak_remote/tasks/main.yml b/test/integration/targets/flatpak_remote/tasks/main.yml
deleted file mode 100644
index 9c3ec6d798..0000000000
--- a/test/integration/targets/flatpak_remote/tasks/main.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-# (c) 2018, Alexander Bethke <oolongbrothers@gmx.net>
-# (c) 2018, Ansible Project
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- block:
-
- - import_tasks: setup.yml
- become: true
-
- # executable override
-
- - name: Test executable override
- flatpak_remote:
- name: irrelevant
- remote: irrelevant
- state: present
- executable: nothing-that-exists
- ignore_errors: true
- register: executable_override_result
-
- - name: Verify executable override test result
- assert:
- that:
- - "executable_override_result.failed == true"
- - "executable_override_result.changed == false"
- msg: "Specifying non-existing executable shall fail module execution"
-
- - import_tasks: check_mode.yml
- become: false
-
- - import_tasks: test.yml
- become: false
- vars:
- method: user
-
- - import_tasks: test.yml
- become: true
- vars:
- method: system
-
- when: |
- ansible_distribution == 'Fedora' or
- ansible_distribution == 'Ubuntu' and not ansible_distribution_major_version | int < 16
diff --git a/test/integration/targets/flatpak_remote/tasks/setup.yml b/test/integration/targets/flatpak_remote/tasks/setup.yml
deleted file mode 100644
index b2fd276604..0000000000
--- a/test/integration/targets/flatpak_remote/tasks/setup.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-- name: Install flatpak on Fedora
- dnf:
- name: flatpak
- state: present
-
- when: ansible_distribution == 'Fedora'
-
-- block:
- - name: Activate flatpak ppa on Ubuntu versions older than 18.04/bionic
- apt_repository:
- repo: "ppa:alexlarsson/flatpak"
- state: present
- mode: 0644
- when: ansible_lsb.major_release | int < 18
-
- - name: Install flatpak package on Ubuntu
- apt:
- name: flatpak
- state: present
-
- when: ansible_distribution == 'Ubuntu'
-
-- name: Install flatpak remote for testing check mode
- flatpak_remote:
- name: check-mode-test-remote
- flatpakrepo_url: /tmp/flatpak/repo/dummy-repo.flatpakrepo
- state: present
diff --git a/test/integration/targets/flatpak_remote/tasks/test.yml b/test/integration/targets/flatpak_remote/tasks/test.yml
deleted file mode 100644
index 97a13f0cbd..0000000000
--- a/test/integration/targets/flatpak_remote/tasks/test.yml
+++ /dev/null
@@ -1,72 +0,0 @@
-# state=present
-
-- name: Test addition - {{ method }}
- flatpak_remote:
- name: flatpak-test
- flatpakrepo_url: /tmp/flatpak/repo/dummy-repo.flatpakrepo
- state: present
- method: "{{ method }}"
- register: addition_result
-
-- name: Verify addition test result - {{ method }}
- assert:
- that:
- - "addition_result.changed == true"
- msg: "state=preset shall add flatpak when absent"
-
-- name: Test idempotency of addition - {{ method }}
- flatpak_remote:
- name: flatpak-test
- flatpakrepo_url: /tmp/flatpak/repo/dummy-repo.flatpakrepo
- state: present
- method: "{{ method }}"
- register: double_addition_result
-
-- name: Verify idempotency of addition test result - {{ method }}
- assert:
- that:
- - "double_addition_result.changed == false"
- msg: "state=present shall not do anything when flatpak is already present"
-
-- name: Test updating remote url does not do anything - {{ method }}
- flatpak_remote:
- name: flatpak-test
- flatpakrepo_url: https://a.different/repo.flatpakrepo
- state: present
- method: "{{ method }}"
- register: url_update_result
-
-- name: Verify updating remote url does not do anything - {{ method }}
- assert:
- that:
- - "url_update_result.changed == false"
- msg: "Trying to update the URL of an existing flatpak remote shall not do anything"
-
-
-# state=absent
-
-- name: Test removal - {{ method }}
- flatpak_remote:
- name: flatpak-test
- state: absent
- method: "{{ method }}"
- register: removal_result
-
-- name: Verify removal test result - {{ method }}
- assert:
- that:
- - "removal_result.changed == true"
- msg: "state=absent shall remove flatpak when present"
-
-- name: Test idempotency of removal - {{ method }}
- flatpak_remote:
- name: flatpak-test
- state: absent
- method: "{{ method }}"
- register: double_removal_result
-
-- name: Verify idempotency of removal test result - {{ method }}
- assert:
- that:
- - "double_removal_result.changed == false"
- msg: "state=absent shall not do anything when flatpak is not present"
diff --git a/test/integration/targets/gem/aliases b/test/integration/targets/gem/aliases
deleted file mode 100644
index a68be2b03b..0000000000
--- a/test/integration/targets/gem/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
diff --git a/test/integration/targets/gem/meta/main.yml b/test/integration/targets/gem/meta/main.yml
deleted file mode 100644
index 07faa21776..0000000000
--- a/test/integration/targets/gem/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_tests
diff --git a/test/integration/targets/gem/tasks/main.yml b/test/integration/targets/gem/tasks/main.yml
deleted file mode 100644
index 555701ff2f..0000000000
--- a/test/integration/targets/gem/tasks/main.yml
+++ /dev/null
@@ -1,175 +0,0 @@
-# test code for the gem module
-# (c) 2014, James Tanner <tanner.jc@gmail.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- include_vars: '{{ item }}'
- with_first_found:
- - files:
- - '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml'
- - '{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml'
- - '{{ ansible_os_family }}.yml'
- - 'default.yml'
- paths: '../vars'
-
-- name: Install dependencies for test
- package:
- name: "{{ item }}"
- state: present
- loop: "{{ test_packages }}"
- when: ansible_distribution != "MacOSX"
-
-- name: Install a gem
- gem:
- name: gist
- state: present
- register: install_gem_result
- ignore_errors: yes
-
-# when running as root on Fedora, '--install-dir' is set in the os defaults which is
-# incompatible with '--user-install', we ignore this error for this case only
-- name: fail if failed to install gem
- fail:
- msg: "failed to install gem: {{ install_gem_result.msg }}"
- when:
- - install_gem_result is failed
- - not (ansible_user_uid == 0 and "User --install-dir or --user-install but not both" not in install_gem_result.msg)
-
-- block:
- - name: List gems
- command: gem list
- register: current_gems
-
- - name: Ensure gem was installed
- assert:
- that:
- - install_gem_result is changed
- - current_gems.stdout is search('gist\s+\([0-9.]+\)')
-
- - name: Remove a gem
- gem:
- name: gist
- state: absent
- register: remove_gem_results
-
- - name: List gems
- command: gem list
- register: current_gems
-
- - name: Verify gem is not installed
- assert:
- that:
- - remove_gem_results is changed
- - current_gems.stdout is not search('gist\s+\([0-9.]+\)')
- when: not install_gem_result is failed
-
-# install gem in --no-user-install
-- block:
- - name: Install a gem with --no-user-install
- gem:
- name: gist
- state: present
- user_install: no
- register: install_gem_result
-
- - name: List gems
- command: gem list
- register: current_gems
-
- - name: Ensure gem was installed
- assert:
- that:
- - install_gem_result is changed
- - current_gems.stdout is search('gist\s+\([0-9.]+\)')
-
- - name: Remove a gem
- gem:
- name: gist
- state: absent
- register: remove_gem_results
-
- - name: List gems
- command: gem list
- register: current_gems
-
- - name: Verify gem is not installed
- assert:
- that:
- - remove_gem_results is changed
- - current_gems.stdout is not search('gist\s+\([0-9.]+\)')
- when: ansible_user_uid == 0
-
-# Check cutom gem directory
-- name: Install gem in a custom directory with incorrect options
- gem:
- name: gist
- state: present
- install_dir: "{{ output_dir }}/gems"
- ignore_errors: yes
- register: install_gem_fail_result
-
-- debug:
- var: install_gem_fail_result
- tags: debug
-
-- name: Ensure previous task failed
- assert:
- that:
- - install_gem_fail_result is failed
- - install_gem_fail_result.msg == 'install_dir requires user_install=false'
-
-- name: Install a gem in a custom directory
- gem:
- name: gist
- state: present
- user_install: no
- install_dir: "{{ output_dir }}/gems"
- register: install_gem_result
-
-- name: Find gems in custom directory
- find:
- paths: "{{ output_dir }}/gems/gems"
- file_type: directory
- contains: gist
- register: gem_search
-
-- name: Ensure gem was installed in custom directory
- assert:
- that:
- - install_gem_result is changed
- - gem_search.files[0].path is search('gist-[0-9.]+')
- ignore_errors: yes
-
-- name: Remove a gem in a custom directory
- gem:
- name: gist
- state: absent
- user_install: no
- install_dir: "{{ output_dir }}/gems"
- register: install_gem_result
-
-- name: Find gems in custom directory
- find:
- paths: "{{ output_dir }}/gems/gems"
- file_type: directory
- contains: gist
- register: gem_search
-
-- name: Ensure gem was removed in custom directory
- assert:
- that:
- - install_gem_result is changed
- - gem_search.files | length == 0
diff --git a/test/integration/targets/gem/vars/FreeBSD.yml b/test/integration/targets/gem/vars/FreeBSD.yml
deleted file mode 100644
index 84e0b483d5..0000000000
--- a/test/integration/targets/gem/vars/FreeBSD.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-test_packages:
- - "devel/ruby-gems"
- - "ruby"
diff --git a/test/integration/targets/gem/vars/RedHat.yml b/test/integration/targets/gem/vars/RedHat.yml
deleted file mode 100644
index c044d109b6..0000000000
--- a/test/integration/targets/gem/vars/RedHat.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-test_packages:
- - "rubygems"
diff --git a/test/integration/targets/gem/vars/default.yml b/test/integration/targets/gem/vars/default.yml
deleted file mode 100644
index 7d6e61ac46..0000000000
--- a/test/integration/targets/gem/vars/default.yml
+++ /dev/null
@@ -1 +0,0 @@
-test_packages: []
diff --git a/test/integration/targets/git_config/aliases b/test/integration/targets/git_config/aliases
deleted file mode 100644
index 757c99661d..0000000000
--- a/test/integration/targets/git_config/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/posix/group3
-skip/aix
diff --git a/test/integration/targets/git_config/files/gitconfig b/test/integration/targets/git_config/files/gitconfig
deleted file mode 100644
index 989aa1c8bf..0000000000
--- a/test/integration/targets/git_config/files/gitconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-[http]
- proxy = foo \ No newline at end of file
diff --git a/test/integration/targets/git_config/tasks/exclusion_state_list-all.yml b/test/integration/targets/git_config/tasks/exclusion_state_list-all.yml
deleted file mode 100644
index 09a6beee3e..0000000000
--- a/test/integration/targets/git_config/tasks/exclusion_state_list-all.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- import_tasks: setup_no_value.yml
-
-- name: testing exclusion between state and list_all parameters
- git_config:
- list_all: true
- state: absent
- register: result
- ignore_errors: yes
-
-- name: assert git_config failed
- assert:
- that:
- - result is failed
- - "result.msg == 'parameters are mutually exclusive: list_all|state'"
-...
diff --git a/test/integration/targets/git_config/tasks/get_set_no_state.yml b/test/integration/targets/git_config/tasks/get_set_no_state.yml
deleted file mode 100644
index 149a9b2d93..0000000000
--- a/test/integration/targets/git_config/tasks/get_set_no_state.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-- import_tasks: setup_no_value.yml
-
-- name: setting value without state
- git_config:
- name: "{{ option_name }}"
- value: "{{ option_value }}"
- scope: "{{ option_scope }}"
- register: set_result
-
-- name: getting value without state
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- register: get_result
-
-- name: assert set changed and value is correct
- assert:
- that:
- - set_result.changed == true
- - set_result.diff.before == "\n"
- - set_result.diff.after == option_value + "\n"
- - get_result.changed == false
- - get_result.config_value == option_value
-...
diff --git a/test/integration/targets/git_config/tasks/get_set_state_present.yml b/test/integration/targets/git_config/tasks/get_set_state_present.yml
deleted file mode 100644
index 59f3c9c0ee..0000000000
--- a/test/integration/targets/git_config/tasks/get_set_state_present.yml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-- import_tasks: setup_no_value.yml
-
-- name: setting value with state=present
- git_config:
- name: "{{ option_name }}"
- value: "{{ option_value }}"
- scope: "{{ option_scope }}"
- state: present
- register: result
-
-- name: getting value with state=present
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- state: present
- register: get_result
-
-- name: assert set changed and value is correct with state=present
- assert:
- that:
- - set_result.changed == true
- - set_result.diff.before == "\n"
- - set_result.diff.after == option_value + "\n"
- - get_result.changed == false
- - get_result.config_value == option_value
-...
diff --git a/test/integration/targets/git_config/tasks/main.yml b/test/integration/targets/git_config/tasks/main.yml
deleted file mode 100644
index 53f62edb44..0000000000
--- a/test/integration/targets/git_config/tasks/main.yml
+++ /dev/null
@@ -1,23 +0,0 @@
----
-# test code for the git_config module
-
-- name: setup
- import_tasks: setup.yml
-
-- block:
- # testing parameters exclusion: state and list_all
- - import_tasks: exclusion_state_list-all.yml
- # testing get/set option without state
- - import_tasks: get_set_no_state.yml
- # testing get/set option with state=present
- - import_tasks: get_set_state_present.yml
- # testing state=absent without value to delete
- - import_tasks: unset_no_value.yml
- # testing state=absent with value to delete
- - import_tasks: unset_value.yml
- # testing state=absent with value to delete and a defined value parameter
- - import_tasks: precedence_between_unset_and_value.yml
- # testing state=absent with check mode
- - import_tasks: unset_check_mode.yml
- when: git_installed is succeeded and git_version.stdout is version(git_version_supporting_includes, ">=")
-...
diff --git a/test/integration/targets/git_config/tasks/precedence_between_unset_and_value.yml b/test/integration/targets/git_config/tasks/precedence_between_unset_and_value.yml
deleted file mode 100644
index 24ef292015..0000000000
--- a/test/integration/targets/git_config/tasks/precedence_between_unset_and_value.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-- import_tasks: setup_value.yml
-
-- name: unsetting value
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- state: absent
- value: bar
- register: unset_result
-
-- name: getting value
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- register: get_result
-
-- name: assert unset changed and deleted value
- assert:
- that:
- - unset_result.changed == true
- - unset_result.diff.before == option_value + "\n"
- - unset_result.diff.after == "\n"
- - get_result.config_value == ''
-...
diff --git a/test/integration/targets/git_config/tasks/setup.yml b/test/integration/targets/git_config/tasks/setup.yml
deleted file mode 100644
index 85e168fe65..0000000000
--- a/test/integration/targets/git_config/tasks/setup.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-- name: verify that git is installed so this test can continue
- command: which git
- register: git_installed
- ignore_errors: yes
-
-- name: get git version, only newer than {{git_version_supporting_includes}} has includes option
- shell: "git --version | grep 'git version' | sed 's/git version //'"
- register: git_version
- ignore_errors: yes
-... \ No newline at end of file
diff --git a/test/integration/targets/git_config/tasks/setup_no_value.yml b/test/integration/targets/git_config/tasks/setup_no_value.yml
deleted file mode 100644
index 01a2c9735e..0000000000
--- a/test/integration/targets/git_config/tasks/setup_no_value.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-# ------
-# set up : deleting gitconfig file
-- name: set up without value
- file:
- path: ~/.gitconfig
- state: absent
-... \ No newline at end of file
diff --git a/test/integration/targets/git_config/tasks/setup_value.yml b/test/integration/targets/git_config/tasks/setup_value.yml
deleted file mode 100644
index f5e0565441..0000000000
--- a/test/integration/targets/git_config/tasks/setup_value.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-# ------
-# set up : set gitconfig with value
-- name: set up with value
- copy:
- src: gitconfig
- dest: ~/.gitconfig
-... \ No newline at end of file
diff --git a/test/integration/targets/git_config/tasks/unset_check_mode.yml b/test/integration/targets/git_config/tasks/unset_check_mode.yml
deleted file mode 100644
index c8fe00c0b7..0000000000
--- a/test/integration/targets/git_config/tasks/unset_check_mode.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-- import_tasks: setup_value.yml
-
-- name: unsetting value with check mode
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- state: absent
- check_mode: yes
- register: unset_result
-
-- name: getting value
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- register: get_result
-
-- name: assert unset changed but dit not delete value
- assert:
- that:
- - unset_result.changed == true
- - unset_result.diff.before == option_value + "\n"
- - unset_result.diff.after == "\n"
- - get_result.config_value == option_value
-...
diff --git a/test/integration/targets/git_config/tasks/unset_no_value.yml b/test/integration/targets/git_config/tasks/unset_no_value.yml
deleted file mode 100644
index 71568e3aa4..0000000000
--- a/test/integration/targets/git_config/tasks/unset_no_value.yml
+++ /dev/null
@@ -1,23 +0,0 @@
----
-- import_tasks: setup_no_value.yml
-
-- name: unsetting value
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- state: absent
- register: unset_result
-
-- name: getting value
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- register: get_result
-
-- name: assert unsetting didn't change
- assert:
- that:
- - unset_result.changed == false
- - unset_result.msg == 'no setting to unset'
- - get_result.config_value == ''
-...
diff --git a/test/integration/targets/git_config/tasks/unset_value.yml b/test/integration/targets/git_config/tasks/unset_value.yml
deleted file mode 100644
index a2308156aa..0000000000
--- a/test/integration/targets/git_config/tasks/unset_value.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-- import_tasks: setup_value.yml
-
-- name: unsetting value
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- state: absent
- register: unset_result
-
-- name: getting value
- git_config:
- name: "{{ option_name }}"
- scope: "{{ option_scope }}"
- register: get_result
-
-- name: assert unset changed and deleted value
- assert:
- that:
- - unset_result.changed == true
- - unset_result.diff.before == option_value + "\n"
- - unset_result.diff.after == "\n"
- - get_result.config_value == ''
-...
diff --git a/test/integration/targets/git_config/vars/main.yml b/test/integration/targets/git_config/vars/main.yml
deleted file mode 100644
index 545110a5bf..0000000000
--- a/test/integration/targets/git_config/vars/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-git_version_supporting_includes: 1.7.10
-option_name: http.proxy
-option_value: 'foo'
-option_scope: global
-... \ No newline at end of file
diff --git a/test/integration/targets/github_issue/aliases b/test/integration/targets/github_issue/aliases
deleted file mode 100644
index a4c92ef853..0000000000
--- a/test/integration/targets/github_issue/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-destructive
-shippable/posix/group1
diff --git a/test/integration/targets/github_issue/tasks/main.yml b/test/integration/targets/github_issue/tasks/main.yml
deleted file mode 100644
index 36fe9aeffd..0000000000
--- a/test/integration/targets/github_issue/tasks/main.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-# Test code for the github_issue module.
-#
-# Copyright: (c) 2017-2018, Abhijeet Kasurde <akasurde@redhat.com>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: Check if GitHub issue is closed or not
- github_issue:
- organization: "{{ organization }}"
- repo: "{{ repo }}"
- issue: "{{ issue }}"
- action: get_status
- register: get_status_0002
-
-- assert:
- that:
- - "{{ get_status_0002.changed == True }}"
- - "{{ get_status_0002.issue_status == 'closed' }}"
-
-- name: Check if GitHub issue is closed or not
- github_issue:
- organization: "{{ organization }}"
- repo: "{{ repo }}"
- issue: "{{ non_existent_issue }}"
- action: get_status
- register: get_status_0003
- ignore_errors: True
-
-- assert:
- that:
- - "{{ get_status_0003.changed == False }}"
- - "{{ get_status_0003.failed == True }}"
- - "{{ 'Failed' in get_status_0003.msg }}"
diff --git a/test/integration/targets/github_issue/vars/main.yml b/test/integration/targets/github_issue/vars/main.yml
deleted file mode 100644
index 52546d3f7c..0000000000
--- a/test/integration/targets/github_issue/vars/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-
-issue: 23642
-non_existent_issue: 1111111
-organization: ansible
-repo: ansible
diff --git a/test/integration/targets/gitlab_deploy_key/aliases b/test/integration/targets/gitlab_deploy_key/aliases
deleted file mode 100644
index ef7ed2e3b5..0000000000
--- a/test/integration/targets/gitlab_deploy_key/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group1
-gitlab/ci
-disabled
diff --git a/test/integration/targets/gitlab_deploy_key/defaults/main.yml b/test/integration/targets/gitlab_deploy_key/defaults/main.yml
deleted file mode 100644
index 4e47591941..0000000000
--- a/test/integration/targets/gitlab_deploy_key/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-gitlab_project_name: ansible_test_project
-gitlab_deploy_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJnTYY7CYk1F/wBklpdRxudxN6KeXgfhutkiCigSfPhe ansible_test"
diff --git a/test/integration/targets/gitlab_deploy_key/tasks/main.yml b/test/integration/targets/gitlab_deploy_key/tasks/main.yml
deleted file mode 100644
index 1e7edca23f..0000000000
--- a/test/integration/targets/gitlab_deploy_key/tasks/main.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-- name: Install required libs
- pip:
- name: python-gitlab
- state: present
-
-- name: Create {{ gitlab_project_name }}
- gitlab_project:
- server_url: "{{ gitlab_host }}"
- validate_certs: False
- login_token: "{{ gitlab_login_token }}"
- name: "{{ gitlab_project_name }}"
- state: present
-
-- name: Cleanup deploy key to {{ gitlab_project_name }}
- gitlab_deploy_key:
- login_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- server_url: "{{ gitlab_host }}"
- title: "{{ gitlab_project_name }}"
- key: "{{ gitlab_deploy_key }}"
- state: absent
-
-
-- name: Add deploy key to {{ gitlab_project_name }}
- gitlab_deploy_key:
- login_token: "{{ gitlab_login_token }}"
- project: "root/{{ gitlab_project_name }}"
- server_url: "{{ gitlab_host }}"
- title: "{{ gitlab_project_name }}"
- key: "{{ gitlab_deploy_key }}"
- state: present
- register: deploy_key_status
-
-- assert:
- that:
- - deploy_key_status is changed
diff --git a/test/integration/targets/gitlab_group/aliases b/test/integration/targets/gitlab_group/aliases
deleted file mode 100644
index ef7ed2e3b5..0000000000
--- a/test/integration/targets/gitlab_group/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group1
-gitlab/ci
-disabled
diff --git a/test/integration/targets/gitlab_group/defaults/main.yml b/test/integration/targets/gitlab_group/defaults/main.yml
deleted file mode 100644
index 630926d922..0000000000
--- a/test/integration/targets/gitlab_group/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-gitlab_group: ansible_test_project
diff --git a/test/integration/targets/gitlab_group/tasks/main.yml b/test/integration/targets/gitlab_group/tasks/main.yml
deleted file mode 100644
index ab87e45e61..0000000000
--- a/test/integration/targets/gitlab_group/tasks/main.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-- name: Install required libs
- pip:
- name: python-gitlab
- state: present
-
-- name: Cleanup GitLab Group
- gitlab_group:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- name: ansible_test_group
- path: ansible_test_group
- state: absent
-
-- name: Create GitLab Group
- gitlab_group:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- name: ansible_test_group
- path: ansible_test_group
- state: present
- register: gitlab_group_state
-
-- name: Test group created
- assert:
- that:
- - gitlab_group_state is changed
-
-
-- name: Create GitLab Group ( Idempotency test )
- gitlab_group:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- name: ansible_test_group
- path: ansible_test_group
- state: present
- register: gitlab_group_state_again
-
-- name: Test module is idempotent
- assert:
- that:
- - gitlab_group_state_again is not changed
diff --git a/test/integration/targets/gitlab_hook/aliases b/test/integration/targets/gitlab_hook/aliases
deleted file mode 100644
index ef7ed2e3b5..0000000000
--- a/test/integration/targets/gitlab_hook/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group1
-gitlab/ci
-disabled
diff --git a/test/integration/targets/gitlab_hook/defaults/main.yml b/test/integration/targets/gitlab_hook/defaults/main.yml
deleted file mode 100644
index eda34a26e6..0000000000
--- a/test/integration/targets/gitlab_hook/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-gitlab_project_name: ansible_test_project
-gitlab_hook_url: http://gitlab.example.com/hook
diff --git a/test/integration/targets/gitlab_hook/tasks/main.yml b/test/integration/targets/gitlab_hook/tasks/main.yml
deleted file mode 100644
index d8a6f6b4c1..0000000000
--- a/test/integration/targets/gitlab_hook/tasks/main.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-- name: Install required libs
- pip:
- name: python-gitlab
- state: present
-
-- name: Create {{ gitlab_project_name }}
- gitlab_project:
- server_url: "{{ gitlab_host }}"
- validate_certs: False
- login_token: "{{ gitlab_login_token }}"
- name: "{{ gitlab_project_name }}"
- state: present
-
-- name: Cleanup GitLab hook
- gitlab_hook:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- hook_url: "{{ gitlab_hook_url }}"
- project: "{{ gitlab_project_name }}"
- state: absent
-
-- name: Create GitLab Hook
- gitlab_hook:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- hook_url: "{{ gitlab_hook_url }}"
- project: "{{ gitlab_project_name }}"
- state: present
- register: gitlab_hook_state
-
-- name: Test group created
- assert:
- that:
- - gitlab_hook_state is changed
-
-
-- name: Create GitLab Hook ( Idempotency test )
- gitlab_hook:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- hook_url: "{{ gitlab_hook_url }}"
- project: "{{ gitlab_project_name }}"
- state: present
- register: gitlab_hook_state_again
-
-- name: Test module is idempotent
- assert:
- that:
- - gitlab_hook_state_again is not changed
-
-- name: Remove GitLab hook
- gitlab_hook:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- hook_url: "{{ gitlab_hook_url }}"
- project: "{{ gitlab_project_name }}"
- state: absent
- register: gitlab_hook_state_absent
-
-- name: Assert hook has been removed
- assert:
- that:
- - gitlab_hook_state_absent is changed
diff --git a/test/integration/targets/gitlab_project/aliases b/test/integration/targets/gitlab_project/aliases
deleted file mode 100644
index ef7ed2e3b5..0000000000
--- a/test/integration/targets/gitlab_project/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group1
-gitlab/ci
-disabled
diff --git a/test/integration/targets/gitlab_project/defaults/main.yml b/test/integration/targets/gitlab_project/defaults/main.yml
deleted file mode 100644
index 4e47591941..0000000000
--- a/test/integration/targets/gitlab_project/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-gitlab_project_name: ansible_test_project
-gitlab_deploy_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJnTYY7CYk1F/wBklpdRxudxN6KeXgfhutkiCigSfPhe ansible_test"
diff --git a/test/integration/targets/gitlab_project/tasks/main.yml b/test/integration/targets/gitlab_project/tasks/main.yml
deleted file mode 100644
index 4b8c4a4fd8..0000000000
--- a/test/integration/targets/gitlab_project/tasks/main.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-- name: Install required libs
- pip:
- name: python-gitlab
- state: present
-
-- name: Clean up {{ gitlab_project_name }}
- gitlab_project:
- server_url: "{{ gitlab_host }}"
- validate_certs: False
- login_token: "{{ gitlab_login_token }}"
- name: "{{ gitlab_project_name }}"
- state: absent
-
-- name: Create {{ gitlab_project_name }}
- gitlab_project:
- server_url: "{{ gitlab_host }}"
- validate_certs: False
- login_token: "{{ gitlab_login_token }}"
- name: "{{ gitlab_project_name }}"
- state: present
- register: gitlab_project_state
-
-
-- assert:
- that:
- - gitlab_project_state is changed
-
-- name: Create {{ gitlab_project_name }} (Test idempotency)
- gitlab_project:
- server_url: "{{ gitlab_host }}"
- validate_certs: False
- login_token: "{{ gitlab_login_token }}"
- name: "{{ gitlab_project_name }}"
- state: present
- register: gitlab_project_state_again
-
-
-- assert:
- that:
- - gitlab_project_state_again is not changed
diff --git a/test/integration/targets/gitlab_project_variable/aliases b/test/integration/targets/gitlab_project_variable/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/gitlab_project_variable/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/gitlab_project_variable/tasks/main.yml b/test/integration/targets/gitlab_project_variable/tasks/main.yml
deleted file mode 100644
index f66bddcfed..0000000000
--- a/test/integration/targets/gitlab_project_variable/tasks/main.yml
+++ /dev/null
@@ -1,431 +0,0 @@
-- name: Install required libs
- pip:
- name: python-gitlab
- state: present
-
-- name: purge all variables for check_mode test
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- purge: True
-
-- name: add a variable value in check_mode
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID: checkmode
- check_mode: yes
- register: gitlab_project_variable_state
-
-- name: check_mode state must be changed
- assert:
- that:
- - gitlab_project_variable_state is changed
-
-- name: apply add value from check_mode test
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID: checkmode
- register: gitlab_project_variable_state
-
-- name: state must be changed
- assert:
- that:
- - gitlab_project_variable_state is changed
-
-- name: test new format
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID:
- value: checkmode
- register: gitlab_project_variable_state
-
-- name: state must be not changed
- assert:
- that:
- - gitlab_project_variable_state is not changed
-
-- name: change protected attribute
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID:
- value: checkmode
- protected: True
- register: gitlab_project_variable_state
-
-- name: state must be changed
- assert:
- that:
- - gitlab_project_variable_state is changed
-
-- name: revert protected attribute
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID:
- value: checkmode
- protected: False
- register: gitlab_project_variable_state
-
-- name: state must be changed
- assert:
- that:
- - gitlab_project_variable_state is changed
-
-- name: change masked attribute
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID:
- value: checkmode
- masked: True
- register: gitlab_project_variable_state
-
-- name: state must be changed
- assert:
- that:
- - gitlab_project_variable_state is changed
-
-- name: revert masked attribute by not mention it
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID:
- value: checkmode
- register: gitlab_project_variable_state
-
-- name: state must be changed
- assert:
- that:
- - gitlab_project_variable_state is changed
-
-- name: revert again masked attribute by not mention it (idempotent)
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID:
- value: checkmode
- register: gitlab_project_variable_state
-
-- name: state must be not changed
- assert:
- that:
- - gitlab_project_variable_state is not changed
-
-- name: set both (masked and protected) attribute
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID:
- value: checkmode
- masked: True
- protected: True
- register: gitlab_project_variable_state
-
-- name: state must be changed
- assert:
- that:
- - gitlab_project_variable_state is changed
-
-- name: set again both (masked and protected) attribute (idempotent)
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID:
- value: checkmode
- masked: True
- protected: True
- register: gitlab_project_variable_state
-
-- name: state must not be changed
- assert:
- that:
- - gitlab_project_variable_state is not changed
-
-- name: revert both (masked and protected) attribute
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID:
- value: checkmode
- protected: False
- register: gitlab_project_variable_state
-
-- name: state must be changed
- assert:
- that:
- - gitlab_project_variable_state is changed
-
-- name: change a variable value in check_mode again
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID: checkmode
- check_mode: yes
- register: gitlab_project_variable_state
-
-- name: check_mode state must not be changed
- assert:
- that:
- - gitlab_project_variable_state is not changed
-
-- name: apply again the value change from check_mode test
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID: checkmode
- register: gitlab_project_variable_state
-
-- name: state must not be changed
- assert:
- that:
- - gitlab_project_variable_state is not changed
-
-- name: purge all variables at the beginning
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- purge: True
-
-- name: set two test variables
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID: abc123
- SECRET_ACCESS_KEY: 321cba
- register: gitlab_project_variable_state
-
-- name: set two test variables state must be changed
- assert:
- that:
- - gitlab_project_variable_state is changed
- - gitlab_project_variable_state.project_variable.added|length == 2
- - gitlab_project_variable_state.project_variable.untouched|length == 0
- - gitlab_project_variable_state.project_variable.removed|length == 0
- - gitlab_project_variable_state.project_variable.updated|length == 0
-
-- name: re-set two test variables
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID: abc123
- SECRET_ACCESS_KEY: 321cba
- register: gitlab_project_variable_state
-
-- name: re-set two test variables state must not be changed
- assert:
- that:
- - gitlab_project_variable_state is not changed
- - gitlab_project_variable_state.project_variable.added|length == 0
- - gitlab_project_variable_state.project_variable.untouched|length == 2
- - gitlab_project_variable_state.project_variable.removed|length == 0
- - gitlab_project_variable_state.project_variable.updated|length == 0
-
-- name: edit one variable
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID: changed
- purge: False
- register: gitlab_project_variable_state
-
-- name: edit one variable state must be changed
- assert:
- that:
- - gitlab_project_variable_state.changed
- - gitlab_project_variable_state.project_variable.added|length == 0
- - gitlab_project_variable_state.project_variable.untouched|length == 1
- - gitlab_project_variable_state.project_variable.removed|length == 0
- - gitlab_project_variable_state.project_variable.updated|length == 1
- - gitlab_project_variable_state.project_variable.updated[0] == "ACCESS_KEY_ID"
-
-- name: append one variable
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- some: value
- purge: False
- register: gitlab_project_variable_state
-
-- name: append one variable state must be changed
- assert:
- that:
- - gitlab_project_variable_state.changed
- - gitlab_project_variable_state.project_variable.added|length == 1
- - gitlab_project_variable_state.project_variable.untouched|length == 2
- - gitlab_project_variable_state.project_variable.removed|length == 0
- - gitlab_project_variable_state.project_variable.updated|length == 0
- - gitlab_project_variable_state.project_variable.added[0] == "some"
-
-- name: re-set all variables
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- ACCESS_KEY_ID: changed
- SECRET_ACCESS_KEY: 321cba
- some: value
- register: gitlab_project_variable_state
-
-- name: re-set all variables state must not be changed
- assert:
- that:
- - not gitlab_project_variable_state.changed
- - gitlab_project_variable_state.project_variable.added|length == 0
- - gitlab_project_variable_state.project_variable.untouched|length == 3
- - gitlab_project_variable_state.project_variable.removed|length == 0
- - gitlab_project_variable_state.project_variable.updated|length == 0
-
-- name: set one variables and purge all others
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- some: value
- purge: True
- register: gitlab_project_variable_state
-
-- name: set one variables and purge all others state must be changed
- assert:
- that:
- - gitlab_project_variable_state.changed
- - gitlab_project_variable_state.project_variable.added|length == 0
- - gitlab_project_variable_state.project_variable.untouched|length == 1
- - gitlab_project_variable_state.project_variable.removed|length == 2
- - gitlab_project_variable_state.project_variable.updated|length == 0
-
-- name: only one variable is left
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- some: value
- purge: False
- register: gitlab_project_variable_state
-
-- name: only one variable is left state must not be changed
- assert:
- that:
- - not gitlab_project_variable_state.changed
- - gitlab_project_variable_state.project_variable.added|length == 0
- - gitlab_project_variable_state.project_variable.untouched|length == 1
- - gitlab_project_variable_state.project_variable.removed|length == 0
- - gitlab_project_variable_state.project_variable.updated|length == 0
- - gitlab_project_variable_state.project_variable.untouched[0] == "some"
-
-- name: test integer values
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- some: 42
- purge: False
- register: gitlab_project_variable_state
-
-- name: only one variable is left state must be changed
- assert:
- that:
- - gitlab_project_variable_state.changed
- - gitlab_project_variable_state.project_variable.added|length == 0
- - gitlab_project_variable_state.project_variable.untouched|length == 0
- - gitlab_project_variable_state.project_variable.removed|length == 0
- - gitlab_project_variable_state.project_variable.updated|length == 1
-
-- name: test float values
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- vars:
- some: 42.23
- purge: False
- register: gitlab_project_variable_state
-
-- name: only one variable is left state must be changed
- assert:
- that:
- - gitlab_project_variable_state.changed
- - gitlab_project_variable_state.project_variable.added|length == 0
- - gitlab_project_variable_state.project_variable.untouched|length == 0
- - gitlab_project_variable_state.project_variable.removed|length == 0
- - gitlab_project_variable_state.project_variable.updated|length == 1
-
-- name: delete the last left variable
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- state: absent
- vars:
- some: value
- register: gitlab_project_variable_state
-
-- name: no variable is left state must be changed
- assert:
- that:
- - gitlab_project_variable_state.changed
- - gitlab_project_variable_state.project_variable.added|length == 0
- - gitlab_project_variable_state.project_variable.untouched|length == 0
- - gitlab_project_variable_state.project_variable.removed|length == 1
- - gitlab_project_variable_state.project_variable.updated|length == 0
- - gitlab_project_variable_state.project_variable.removed[0] == "some"
-
-- name: check that no variables are left
- gitlab_project_variable:
- api_url: "{{ gitlab_host }}"
- api_token: "{{ gitlab_login_token }}"
- project: "{{ gitlab_project_name }}"
- purge: True
- register: gitlab_project_variable_state
-
-- name: check that no variables are untoucheded state must be changed
- assert:
- that:
- - not gitlab_project_variable_state.changed
- - gitlab_project_variable_state.project_variable.added|length == 0
- - gitlab_project_variable_state.project_variable.untouched|length == 0
- - gitlab_project_variable_state.project_variable.removed|length == 0
- - gitlab_project_variable_state.project_variable.updated|length == 0
diff --git a/test/integration/targets/gitlab_runner/aliases b/test/integration/targets/gitlab_runner/aliases
deleted file mode 100644
index ef7ed2e3b5..0000000000
--- a/test/integration/targets/gitlab_runner/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group1
-gitlab/ci
-disabled
diff --git a/test/integration/targets/gitlab_runner/defaults/main.yml b/test/integration/targets/gitlab_runner/defaults/main.yml
deleted file mode 100644
index bed980a238..0000000000
--- a/test/integration/targets/gitlab_runner/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-gitlab_project_name: ansible_test_project
-gitlab_hook_url: http://gitlab.example.com/hook
-gitlab_runner_name: ansible_test_runner
diff --git a/test/integration/targets/gitlab_runner/tasks/main.yml b/test/integration/targets/gitlab_runner/tasks/main.yml
deleted file mode 100644
index b8320b3fc7..0000000000
--- a/test/integration/targets/gitlab_runner/tasks/main.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-- name: Install required libs
- pip:
- name: python-gitlab
- state: present
-
-- name: Create {{ gitlab_project_name }}
- gitlab_project:
- server_url: "{{ gitlab_host }}"
- validate_certs: False
- login_token: "{{ gitlab_login_token }}"
- name: "{{ gitlab_project_name }}"
- state: present
-
-- name: Cleanup GitLab runner
- gitlab_runner:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- description: "{{ gitlab_runner_name }}"
- registration_token: "{{ gitlab_runner_registration_token }}"
- state: absent
-
-- name: Create GitLab Runner
- gitlab_runner:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- description: "{{ gitlab_runner_name }}"
- registration_token: "{{ gitlab_runner_registration_token }}"
- state: present
- register: gitlab_runner_state
-
-- name: Test group created
- assert:
- that:
- - gitlab_runner_state is changed
-
-
-#### COMMENTED AS MODULE WILL UPDATE THE RUNNER IF EXISTS. TO BE DISCUSSED ####
-# - name: Create GitLab Runner ( Idempotency test )
-# gitlab_runner:
-# server_url: "{{ gitlab_host }}"
-# validate_certs: false
-# login_token: "{{ gitlab_login_token }}"
-# description: "{{ gitlab_runner_name }}"
-# registration_token: "{{ gitlab_runner_registration_token }}"
-# state: present
-# register: gitlab_runner_state_again
-
-# - name: Test module is idempotent
-# assert:
-# that:
-# - gitlab_runner_state_again is not changed
-
-- name: Remove GitLab Runner
- gitlab_runner:
- server_url: "{{ gitlab_host }}"
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- description: "{{ gitlab_runner_name }}"
- registration_token: "{{ gitlab_runner_registration_token }}"
- state: absent
- register: gitlab_runner_state_absent
-
-- name: Assert runner has been removed
- assert:
- that:
- - gitlab_runner_state_absent is changed
diff --git a/test/integration/targets/gitlab_user/aliases b/test/integration/targets/gitlab_user/aliases
deleted file mode 100644
index ef7ed2e3b5..0000000000
--- a/test/integration/targets/gitlab_user/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group1
-gitlab/ci
-disabled
diff --git a/test/integration/targets/gitlab_user/defaults/main.yml b/test/integration/targets/gitlab_user/defaults/main.yml
deleted file mode 100644
index a6755cf412..0000000000
--- a/test/integration/targets/gitlab_user/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-gitlab_user: ansible_test_user
-gitlab_user_pass: Secr3tPassw00rd
-gitlab_user_email: root@localhost
diff --git a/test/integration/targets/gitlab_user/tasks/main.yml b/test/integration/targets/gitlab_user/tasks/main.yml
deleted file mode 100644
index 63ee923f16..0000000000
--- a/test/integration/targets/gitlab_user/tasks/main.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-- name: Install required libs
- pip:
- name: python-gitlab
- state: present
-
-- name: Clean up gitlab user
- gitlab_user:
- server_url: "{{ gitlab_host }}"
- name: ansible_test_user
- username: ansible_test_user
- password: Secr3tPassw00rd
- email: root@localhost
- validate_certs: false
- login_token: "{{ gitlab_login_token }}"
- state: absent
-
-
-- name: Create gitlab user
- gitlab_user:
- server_url: "{{ gitlab_host }}"
- email: "{{ gitlab_user_email }}"
- name: "{{ gitlab_user }}"
- username: "{{ gitlab_user }}"
- password: "{{ gitlab_user_pass }}"
- validate_certs: False
- login_token: "{{ gitlab_login_token }}"
- state: present
- register: gitlab_user_state
-
-- name: Check user has been created correctly
- assert:
- that:
- - gitlab_user_state is changed
-
-- name: Create gitlab user again
- gitlab_user:
- server_url: "{{ gitlab_host }}"
- email: root@localhost
- name: ansible_test_user
- username: ansible_test_user
- password: Secr3tPassw00rd
- validate_certs: False
- login_token: "{{ gitlab_login_token }}"
- state: present
- register: gitlab_user_state_again
-
-- name: Check state is not changed
- assert:
- that:
- - gitlab_user_state_again is not changed
diff --git a/test/integration/targets/hg/aliases b/test/integration/targets/hg/aliases
deleted file mode 100644
index 2f2db5bc12..0000000000
--- a/test/integration/targets/hg/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group2
-skip/python3
-skip/aix
diff --git a/test/integration/targets/hg/meta/main.yml b/test/integration/targets/hg/meta/main.yml
deleted file mode 100644
index 07faa21776..0000000000
--- a/test/integration/targets/hg/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_tests
diff --git a/test/integration/targets/hg/tasks/install.yml b/test/integration/targets/hg/tasks/install.yml
deleted file mode 100644
index 4c9e5a41fc..0000000000
--- a/test/integration/targets/hg/tasks/install.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-- name: get the default python version
- command: "{{ ansible_python_interpreter }} -V"
- register: default_python_version
-
-- name: find the default python
- command: which python
- register: which_python
-
-- name: find the default pip
- command: which pip
- register: which_pip
-
-- name: preserve the default python
- command: cp -av "{{ which_python.stdout }}" "{{ which_python.stdout }}.default"
-
-- name: preserve the default pip
- command: cp -av "{{ which_pip.stdout }}" "{{ which_pip.stdout }}.default"
-
-# using the apt module prevents autoremove from working, so call apt-get via shell instead
-- name: install mercurial (apt)
- shell: apt-get -y update && apt-get -y install mercurial
- when: ansible_pkg_mgr == 'apt'
-
-- name: install mercurial (dnf)
- dnf:
- name: mercurial
- when: ansible_pkg_mgr == 'dnf'
-
-- name: install mercurial (yum)
- yum:
- name: mercurial
- when: ansible_pkg_mgr == 'yum'
-
-- name: install mercurial (pkgng)
- package:
- name: mercurial
- when: ansible_pkg_mgr == 'pkgng'
-
-- name: preserve the updated python
- command: cp -av "{{ which_python.stdout }}" "{{ which_python.stdout }}.updated"
-
-- name: preserve the updated pip
- command: cp -av "{{ which_pip.stdout }}" "{{ which_pip.stdout }}.updated"
-
-- name: locate mercurial
- command: which hg
- register: which_hg
-
-- name: get the mercurial interpreter
- command: head -n 1 "{{ which_hg.stdout }}"
- register: hg_interpreter
-
-- name: stat the mercurial interpreter
- stat:
- path: "{{ hg_interpreter.stdout[2:] }}"
- register: stat_hg_interpreter
-
-- name: bypass the mercurial python interpreter symlink (if needed)
- lineinfile:
- path: "{{ which_hg.stdout }}"
- regexp: "^#!.*$"
- line: "#!{{ stat_hg_interpreter.stat.lnk_source }}"
- when: stat_hg_interpreter.stat.islnk
-
-- name: restore the default python
- command: cp -av "{{ which_python.stdout }}.default" "{{ which_python.stdout }}"
-
-- name: restore the default pip
- command: cp -av "{{ which_pip.stdout }}.default" "{{ which_pip.stdout }}"
-
-- name: get the current python version
- command: "{{ ansible_python_interpreter }} -V"
- register: current_python_version
-
-- name: verify the python version has not changed
- assert:
- that:
- - default_python_version.stdout == current_python_version.stdout
diff --git a/test/integration/targets/hg/tasks/main.yml b/test/integration/targets/hg/tasks/main.yml
deleted file mode 100644
index 9ab7171b5a..0000000000
--- a/test/integration/targets/hg/tasks/main.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-# test code for the hg module
-# (c) 2014, James Tanner <tanner.jc@gmail.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: determine if mercurial is already installed
- command: which hg
- register: has_hg
- ignore_errors: yes
-
-- name: warn if the underlying system is not capable of running these tests
- debug:
- msg: >-
- The mercurial client is not able to check out Bitbucket repositories as per the changes mentioned here:
- https://bitbucket.org/blog/deprecating-tlsv1-tlsv1-1-2018-12-01 . Therefore these tests are skipped.
- when: (ansible_distribution == "Ubuntu" and ansible_distribution_version == "14.04") or ansible_python_version is version("2.7.9", "<")
-
-- block:
- - name: install mercurial
- include_tasks: install.yml
- when: has_hg is failed
-
- - name: test mercurial
- include_tasks: run-tests.yml
-
- - name: uninstall mercurial
- include_tasks: uninstall.yml
- when: has_hg is failed
-
- # As per the bitbucket changes in https://bitbucket.org/blog/deprecating-tlsv1-tlsv1-1-2018-12-01 , this
- # test will fail under certain circumstances, to avoid false positives, we skip these tests under the following
- # circumstances:
- #
- # - The ubuntu 14.04 image used on shippable runs python 2.7.6, so we skip explicitly for this image.
- # - When ansible_python_version is not 2.7.9 or higher, mercurial is likely to also run using this same (old)
- # python version, which causes issues as per the link above.
- when:
- - not (ansible_distribution == "Ubuntu" and ansible_distribution_version == "14.04")
- - ansible_python_version is version("2.7.9", ">=")
diff --git a/test/integration/targets/hg/tasks/run-tests.yml b/test/integration/targets/hg/tasks/run-tests.yml
deleted file mode 100644
index 008eb32c50..0000000000
--- a/test/integration/targets/hg/tasks/run-tests.yml
+++ /dev/null
@@ -1,86 +0,0 @@
-# test code for the hg module
-# (c) 2018, Ansible Project
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-
-- name: set where to extract the repo
- set_fact: checkout_dir={{ output_dir }}/epdb
-
-- name: set what repo to use
- set_fact: repo=https://bitbucket.org/rpathsync/epdb
-
-- name: clean out the output_dir
- shell: rm -rf {{ output_dir }}/*
-
-- name: verify that mercurial is installed so this test can continue
- shell: which hg
-
-- name: initial checkout
- hg: repo={{ repo }} dest={{ checkout_dir }}
- register: hg_result
-
-- debug: var=hg_result
-
-- shell: ls {{ checkout_dir }}
-
-- name: verify information about the initial clone
- assert:
- that:
- - "'before' in hg_result"
- - "'after' in hg_result"
- - "not hg_result.before"
- - "hg_result.changed"
-
-- name: repeated checkout
- hg: repo={{ repo }} dest={{ checkout_dir }}
- register: hg_result2
-
-- debug: var=hg_result2
-
-- name: check for tags
- stat: path={{ checkout_dir }}/.hgtags
- register: tags
-
-- name: check for remotes
- stat: path={{ checkout_dir }}/.hg/branch
- register: branches
-
-- debug: var=tags
-- debug: var=branches
-
-- name: assert presence of tags/trunk/branches
- assert:
- that:
- - "tags.stat.isreg"
- - "branches.stat.isreg"
-
-- name: verify on a reclone things are marked unchanged
- assert:
- that:
- - "not hg_result2.changed"
-
-- name: Checkout non-existent repo clone
- hg: repo=https://bitbucket.org/pyro46/pythonscript_1 clone=no update=no
- register: hg_result3
- ignore_errors: true
-
-- name: Verify result of non-existent repo clone
- assert:
- that:
- - hg_result3.msg
- - "'abort: HTTP Error 404: Not Found' in hg_result3.msg"
- - "not hg_result3.changed"
diff --git a/test/integration/targets/hg/tasks/uninstall.yml b/test/integration/targets/hg/tasks/uninstall.yml
deleted file mode 100644
index d1bede707d..0000000000
--- a/test/integration/targets/hg/tasks/uninstall.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-- name: restore the updated python
- command: mv "{{ which_python.stdout }}.updated" "{{ which_python.stdout }}"
-
-- name: restore the updated pip
- command: mv "{{ which_pip.stdout }}.updated" "{{ which_pip.stdout }}"
-
-- name: restore the mercurial python interpreter symlink (if needed)
- lineinfile:
- path: "{{ which_hg.stdout }}"
- regexp: "^#!.*$"
- line: "#!{{ stat_hg_interpreter.stat.path }}"
- when: stat_hg_interpreter.stat.islnk
-
-# using the apt module prevents autoremove from working, so call apt-get via shell instead
-- name: uninstall packages which were not originally installed (apt)
- shell: apt-get -y remove mercurial && apt-get -y autoremove
- when: ansible_pkg_mgr == 'apt'
-
-- name: uninstall packages which were not originally installed (dnf)
- dnf:
- name: mercurial
- state: absent
- autoremove: yes
- when: ansible_pkg_mgr == 'dnf'
-
-# the yum module does not have an autoremove parameter
-- name: uninstall packages which were not originally installed (yum)
- shell: yum -y autoremove mercurial
- when: ansible_pkg_mgr == 'yum'
-
-- name: uninstall packages which were not originally installed (pkgng)
- package:
- name: mercurial
- state: absent
- autoremove: yes
- when: ansible_pkg_mgr == 'pkgng'
-
-- name: restore the default python
- raw: mv "{{ which_python.stdout }}.default" "{{ which_python.stdout }}"
-
-- name: restore the default pip
- raw: mv "{{ which_pip.stdout }}.default" "{{ which_pip.stdout }}"
diff --git a/test/integration/targets/hwc_ecs_instance/aliases b/test/integration/targets/hwc_ecs_instance/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_ecs_instance/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_ecs_instance/tasks/main.yml b/test/integration/targets/hwc_ecs_instance/tasks/main.yml
deleted file mode 100644
index cdcdc24f72..0000000000
--- a/test/integration/targets/hwc_ecs_instance/tasks/main.yml
+++ /dev/null
@@ -1,310 +0,0 @@
----
-# Pre-test setup
-- name: create a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: present
- register: vpc
-- name: create a subnet
- hwc_vpc_subnet:
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: true
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- state: present
- register: subnet
-- name: create a eip
- hwc_vpc_eip:
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- type: "5_bgp"
- state: present
- register: eip
-- name: create a disk
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: present
- register: disk
-- name: delete a instance
- hwc_ecs_instance:
- data_volumes:
- - volume_id: "{{ disk.id }}"
- enable_auto_recovery: false
- eip_id: "{{ eip.id }}"
- name: "ansible_ecs_instance_test"
- availability_zone: "cn-north-1a"
- nics:
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.34"
- server_tags:
- my_server: "my_server"
- image_id: "8da46d6d-6079-4e31-ad6d-a7167efff892"
- flavor_name: "s3.small.1"
- vpc_id: "{{ vpc.id }}"
- root_volume:
- volume_type: "SAS"
- state: absent
-#----------------------------------------------------------
-- name: create a instance (check mode)
- hwc_ecs_instance:
- data_volumes:
- - volume_id: "{{ disk.id }}"
- enable_auto_recovery: false
- eip_id: "{{ eip.id }}"
- name: "ansible_ecs_instance_test"
- availability_zone: "cn-north-1a"
- nics:
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.34"
- server_tags:
- my_server: "my_server"
- image_id: "8da46d6d-6079-4e31-ad6d-a7167efff892"
- flavor_name: "s3.small.1"
- vpc_id: "{{ vpc.id }}"
- root_volume:
- volume_type: "SAS"
- state: present
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: create a instance
- hwc_ecs_instance:
- data_volumes:
- - volume_id: "{{ disk.id }}"
- enable_auto_recovery: false
- eip_id: "{{ eip.id }}"
- name: "ansible_ecs_instance_test"
- availability_zone: "cn-north-1a"
- nics:
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.34"
- server_tags:
- my_server: "my_server"
- image_id: "8da46d6d-6079-4e31-ad6d-a7167efff892"
- flavor_name: "s3.small.1"
- vpc_id: "{{ vpc.id }}"
- root_volume:
- volume_type: "SAS"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: create a instance (idemponent)
- hwc_ecs_instance:
- data_volumes:
- - volume_id: "{{ disk.id }}"
- enable_auto_recovery: false
- eip_id: "{{ eip.id }}"
- name: "ansible_ecs_instance_test"
- availability_zone: "cn-north-1a"
- nics:
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.34"
- server_tags:
- my_server: "my_server"
- image_id: "8da46d6d-6079-4e31-ad6d-a7167efff892"
- flavor_name: "s3.small.1"
- vpc_id: "{{ vpc.id }}"
- root_volume:
- volume_type: "SAS"
- state: present
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: create a instance that already exists
- hwc_ecs_instance:
- data_volumes:
- - volume_id: "{{ disk.id }}"
- enable_auto_recovery: false
- eip_id: "{{ eip.id }}"
- name: "ansible_ecs_instance_test"
- availability_zone: "cn-north-1a"
- nics:
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.34"
- server_tags:
- my_server: "my_server"
- image_id: "8da46d6d-6079-4e31-ad6d-a7167efff892"
- flavor_name: "s3.small.1"
- vpc_id: "{{ vpc.id }}"
- root_volume:
- volume_type: "SAS"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a instance (check mode)
- hwc_ecs_instance:
- data_volumes:
- - volume_id: "{{ disk.id }}"
- enable_auto_recovery: false
- eip_id: "{{ eip.id }}"
- name: "ansible_ecs_instance_test"
- availability_zone: "cn-north-1a"
- nics:
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.34"
- server_tags:
- my_server: "my_server"
- image_id: "8da46d6d-6079-4e31-ad6d-a7167efff892"
- flavor_name: "s3.small.1"
- vpc_id: "{{ vpc.id }}"
- root_volume:
- volume_type: "SAS"
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a instance
- hwc_ecs_instance:
- data_volumes:
- - volume_id: "{{ disk.id }}"
- enable_auto_recovery: false
- eip_id: "{{ eip.id }}"
- name: "ansible_ecs_instance_test"
- availability_zone: "cn-north-1a"
- nics:
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.34"
- server_tags:
- my_server: "my_server"
- image_id: "8da46d6d-6079-4e31-ad6d-a7167efff892"
- flavor_name: "s3.small.1"
- vpc_id: "{{ vpc.id }}"
- root_volume:
- volume_type: "SAS"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: delete a instance (idemponent)
- hwc_ecs_instance:
- data_volumes:
- - volume_id: "{{ disk.id }}"
- enable_auto_recovery: false
- eip_id: "{{ eip.id }}"
- name: "ansible_ecs_instance_test"
- availability_zone: "cn-north-1a"
- nics:
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.34"
- server_tags:
- my_server: "my_server"
- image_id: "8da46d6d-6079-4e31-ad6d-a7167efff892"
- flavor_name: "s3.small.1"
- vpc_id: "{{ vpc.id }}"
- root_volume:
- volume_type: "SAS"
- state: absent
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: delete a instance that does not exist
- hwc_ecs_instance:
- data_volumes:
- - volume_id: "{{ disk.id }}"
- enable_auto_recovery: false
- eip_id: "{{ eip.id }}"
- name: "ansible_ecs_instance_test"
- availability_zone: "cn-north-1a"
- nics:
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- - subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.34"
- server_tags:
- my_server: "my_server"
- image_id: "8da46d6d-6079-4e31-ad6d-a7167efff892"
- flavor_name: "s3.small.1"
- vpc_id: "{{ vpc.id }}"
- root_volume:
- volume_type: "SAS"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-- name: delete a disk
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: absent
- register: disk
-- name: delete a eip
- hwc_vpc_eip:
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- type: "5_bgp"
- state: absent
- register: eip
-- name: delete a subnet
- hwc_vpc_subnet:
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: true
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- state: absent
- register: subnet
-- name: delete a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: absent
- register: vpc
diff --git a/test/integration/targets/hwc_evs_disk/aliases b/test/integration/targets/hwc_evs_disk/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_evs_disk/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_evs_disk/tasks/main.yml b/test/integration/targets/hwc_evs_disk/tasks/main.yml
deleted file mode 100644
index 10a7ee4329..0000000000
--- a/test/integration/targets/hwc_evs_disk/tasks/main.yml
+++ /dev/null
@@ -1,104 +0,0 @@
----
-- name: delete a disk
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: absent
-#----------------------------------------------------------
-- name: create a disk
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-# ------------------------------------------------------------
-- name: test create a disk in check mode
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: present
- register: result
- check_mode: true
-- name: verify results of test create a disk in check mode
- assert:
- that:
- result is changed
-# ----------------------------------------------------------------------------
-- name: create a disk that already exists
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a disk (check mode)
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: delete a disk
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-# ----------------------------------------------------------------------------
-- name: delete a disk that does not exist (check mode)
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.changed == false
-# ----------------------------------------------------------------------------
-- name: delete a disk that does not exist
- hwc_evs_disk:
- availability_zone: "cn-north-1a"
- name: "ansible_evs_disk_test"
- volume_type: "SATA"
- size: 10
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
diff --git a/test/integration/targets/hwc_network_vpc/aliases b/test/integration/targets/hwc_network_vpc/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_network_vpc/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_network_vpc/tasks/main.yml b/test/integration/targets/hwc_network_vpc/tasks/main.yml
deleted file mode 100644
index ad551edeb5..0000000000
--- a/test/integration/targets/hwc_network_vpc/tasks/main.yml
+++ /dev/null
@@ -1,96 +0,0 @@
----
-# ----------------------------------------------------------------------------
-#
-# *** AUTO GENERATED CODE *** AUTO GENERATED CODE ***
-#
-# ----------------------------------------------------------------------------
-#
-# This file is automatically generated by Magic Modules and manual
-# changes will be clobbered when the file is regenerated.
-#
-# Please read more about how to change this file at
-# https://www.github.com/huaweicloud/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: delete a vpc
- hwc_network_vpc:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "vpc_1"
- cidr: "192.168.100.0/24"
- state: absent
-#----------------------------------------------------------
-- name: create a vpc
- hwc_network_vpc:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "vpc_1"
- cidr: "192.168.100.0/24"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-# ----------------------------------------------------------------------------
-- name: create a vpc that already exists
- hwc_network_vpc:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "vpc_1"
- cidr: "192.168.100.0/24"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a vpc
- hwc_network_vpc:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "vpc_1"
- cidr: "192.168.100.0/24"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-# ----------------------------------------------------------------------------
-- name: delete a vpc that does not exist
- hwc_network_vpc:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "vpc_1"
- cidr: "192.168.100.0/24"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
diff --git a/test/integration/targets/hwc_smn_topic/aliases b/test/integration/targets/hwc_smn_topic/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_smn_topic/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_smn_topic/tasks/main.yml b/test/integration/targets/hwc_smn_topic/tasks/main.yml
deleted file mode 100644
index f4d7093155..0000000000
--- a/test/integration/targets/hwc_smn_topic/tasks/main.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-- name: delete a smn topic
- hwc_smn_topic:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "ansible_smn_topic_test"
- state: absent
-#----------------------------------------------------------
-- name: create a smn topic
- hwc_smn_topic:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "ansible_smn_topic_test"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-# ----------------------------------------------------------------------------
-- name: create a smn topic that already exists
- hwc_smn_topic:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "ansible_smn_topic_test"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a smn topic
- hwc_smn_topic:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "ansible_smn_topic_test"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-# ----------------------------------------------------------------------------
-- name: delete a smn topic that does not exist
- hwc_smn_topic:
- identity_endpoint: "{{ identity_endpoint }}"
- user: "{{ user }}"
- password: "{{ password }}"
- domain: "{{ domain }}"
- project: "{{ project }}"
- region: "{{ region }}"
- name: "ansible_smn_topic_test"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
diff --git a/test/integration/targets/hwc_vpc_eip/aliases b/test/integration/targets/hwc_vpc_eip/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_vpc_eip/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_vpc_eip/tasks/main.yml b/test/integration/targets/hwc_vpc_eip/tasks/main.yml
deleted file mode 100644
index dc647ab668..0000000000
--- a/test/integration/targets/hwc_vpc_eip/tasks/main.yml
+++ /dev/null
@@ -1,181 +0,0 @@
----
-# Pre-test setup
-- name: create a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: present
- register: vpc
-- name: create a subnet
- hwc_vpc_subnet:
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- state: present
- register: subnet
-- name: create a port
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: present
- register: port
-- name: delete a eip
- hwc_vpc_eip:
- type: "5_bgp"
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- port_id: "{{ port.id }}"
- state: absent
-#----------------------------------------------------------
-- name: create a eip (check mode)
- hwc_vpc_eip:
- type: "5_bgp"
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- port_id: "{{ port.id }}"
- state: present
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: create a eip
- hwc_vpc_eip:
- type: "5_bgp"
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- port_id: "{{ port.id }}"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: create a eip (idemponent)
- hwc_vpc_eip:
- type: "5_bgp"
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- port_id: "{{ port.id }}"
- state: present
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: create a eip that already exists
- hwc_vpc_eip:
- type: "5_bgp"
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- port_id: "{{ port.id }}"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a eip (check mode)
- hwc_vpc_eip:
- type: "5_bgp"
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- port_id: "{{ port.id }}"
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a eip
- hwc_vpc_eip:
- type: "5_bgp"
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- port_id: "{{ port.id }}"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a eip (idemponent)
- hwc_vpc_eip:
- type: "5_bgp"
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- port_id: "{{ port.id }}"
- state: absent
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: delete a eip that does not exist
- hwc_vpc_eip:
- type: "5_bgp"
- dedicated_bandwidth:
- charge_mode: "traffic"
- name: "ansible_test_dedicated_bandwidth"
- size: 1
- port_id: "{{ port.id }}"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-- name: delete a port
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
- register: port
-- name: delete a subnet
- hwc_vpc_subnet:
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- state: absent
- register: subnet
-- name: delete a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: absent
- register: vpc
diff --git a/test/integration/targets/hwc_vpc_peering_connect/aliases b/test/integration/targets/hwc_vpc_peering_connect/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_vpc_peering_connect/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_vpc_peering_connect/tasks/main.yml b/test/integration/targets/hwc_vpc_peering_connect/tasks/main.yml
deleted file mode 100644
index 7af1e0bac3..0000000000
--- a/test/integration/targets/hwc_vpc_peering_connect/tasks/main.yml
+++ /dev/null
@@ -1,146 +0,0 @@
----
-# Pre-test setup
-- name: create a vpc
- hwc_network_vpc:
- cidr: "192.168.0.0/16"
- name: "ansible_network_vpc_test_local"
- state: present
- register: vpc1
-- name: create a vpc
- hwc_network_vpc:
- cidr: "192.168.0.0/16"
- name: "ansible_network_vpc_test_peering"
- state: present
- register: vpc2
-- name: delete a peering connect
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: absent
-#----------------------------------------------------------
-- name: create a peering connect (check mode)
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: present
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - not result.id
- - result.changed
-#----------------------------------------------------------
-- name: create a peering connect
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: create a peering connect (idemponent)
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: present
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: create a peering connect that already exists
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a peering connect (check mode)
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: delete a peering connect
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: delete a peering connect (idemponent)
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is false
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: delete a peering connect that does not exist
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-- name: delete a vpc
- hwc_network_vpc:
- cidr: "192.168.0.0/16"
- name: "ansible_network_vpc_test_peering"
- state: absent
- register: vpc2
-- name: delete a vpc
- hwc_network_vpc:
- cidr: "192.168.0.0/16"
- name: "ansible_network_vpc_test_local"
- state: absent
- register: vpc1
diff --git a/test/integration/targets/hwc_vpc_port/aliases b/test/integration/targets/hwc_vpc_port/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_vpc_port/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_vpc_port/tasks/main.yml b/test/integration/targets/hwc_vpc_port/tasks/main.yml
deleted file mode 100644
index e8912bf45b..0000000000
--- a/test/integration/targets/hwc_vpc_port/tasks/main.yml
+++ /dev/null
@@ -1,132 +0,0 @@
----
-# Pre-test setup
-- name: create a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: present
- register: vpc
-- name: create a subnet
- hwc_vpc_subnet:
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- state: present
- register: subnet
-- name: delete a port
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
-#----------------------------------------------------------
-- name: create a port (check mode)
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: present
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: create a port
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: create a port (idemponent)
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: present
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: create a port that already exists
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a port (check mode)
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a port
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a port (idemponent)
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: delete a port that does not exist
- hwc_vpc_port:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-- name: delete a subnet
- hwc_vpc_subnet:
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- state: absent
- register: subnet
-- name: delete a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: absent
- register: vpc
diff --git a/test/integration/targets/hwc_vpc_private_ip/aliases b/test/integration/targets/hwc_vpc_private_ip/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_vpc_private_ip/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_vpc_private_ip/tasks/main.yml b/test/integration/targets/hwc_vpc_private_ip/tasks/main.yml
deleted file mode 100644
index 3f894d7fa6..0000000000
--- a/test/integration/targets/hwc_vpc_private_ip/tasks/main.yml
+++ /dev/null
@@ -1,133 +0,0 @@
----
-# Pre-test setup
-- name: create a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: present
- register: vpc
-- name: create a subnet
- hwc_vpc_subnet:
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- state: present
- register: subnet
-- name: delete a private ip
- hwc_vpc_private_ip:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
-#----------------------------------------------------------
-- name: create a private ip (check mode)
- hwc_vpc_private_ip:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: present
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: create a private ip
- hwc_vpc_private_ip:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: create a private ip (idemponent)
- hwc_vpc_private_ip:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: present
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: create a private ip that already exists
- hwc_vpc_private_ip:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a private ip (check mode)
- hwc_vpc_private_ip:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a private ip
- hwc_vpc_private_ip:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a private ip (idemponent)
- hwc_vpc_private_ip:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: delete a private ip that does not exist
- hwc_vpc_private_ip:
- subnet_id: "{{ subnet.id }}"
- ip_address: "192.168.100.33"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-- name: delete a subnet
- hwc_vpc_subnet:
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- state: absent
- register: subnet
-- name: delete a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: absent
- register: vpc
diff --git a/test/integration/targets/hwc_vpc_route/aliases b/test/integration/targets/hwc_vpc_route/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_vpc_route/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_vpc_route/tasks/main.yml b/test/integration/targets/hwc_vpc_route/tasks/main.yml
deleted file mode 100644
index 1910155a2e..0000000000
--- a/test/integration/targets/hwc_vpc_route/tasks/main.yml
+++ /dev/null
@@ -1,150 +0,0 @@
----
-# Pre-test setup
-- name: create a vpc
- hwc_network_vpc:
- cidr: "192.168.0.0/16"
- name: "ansible_network_vpc_test_local"
- state: present
- register: vpc1
-- name: create a vpc
- hwc_network_vpc:
- cidr: "192.168.0.0/16"
- name: "ansible_network_vpc_test_peering"
- state: present
- register: vpc2
-- name: create a peering connect
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- filters:
- - "name"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: present
- register: connect
-- name: delete a route
- hwc_vpc_route:
- vpc_id: "{{ vpc1.id }}"
- destination: "192.168.0.0/16"
- next_hop: "{{ connect.id }}"
- state: absent
-#----------------------------------------------------------
-- name: create a route (check mode)
- hwc_vpc_route:
- vpc_id: "{{ vpc1.id }}"
- destination: "192.168.0.0/16"
- next_hop: "{{ connect.id }}"
- check_mode: yes
- register: result
-- assert:
- that:
- - not result.id
- - result.changed
-#----------------------------------------------------------
-- name: create a route
- hwc_vpc_route:
- vpc_id: "{{ vpc1.id }}"
- destination: "192.168.0.0/16"
- next_hop: "{{ connect.id }}"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-# ----------------------------------------------------------
-- name: create a route (idemponent)
- hwc_vpc_route:
- vpc_id: "{{ vpc1.id }}"
- destination: "192.168.0.0/16"
- next_hop: "{{ connect.id }}"
- state: present
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# -----------------------------------------------------------
-- name: create a route that already exists
- hwc_vpc_route:
- vpc_id: "{{ vpc1.id }}"
- destination: "192.168.0.0/16"
- next_hop: "{{ connect.id }}"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a route (check mode)
- hwc_vpc_route:
- vpc_id: "{{ vpc1.id }}"
- destination: "192.168.0.0/16"
- next_hop: "{{ connect.id }}"
- state: absent
- check_mode: yes
-#----------------------------------------------------------
-- name: delete a route
- hwc_vpc_route:
- vpc_id: "{{ vpc1.id }}"
- destination: "192.168.0.0/16"
- next_hop: "{{ connect.id }}"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: delete a (idemponent)
- hwc_vpc_route:
- vpc_id: "{{ vpc1.id }}"
- destination: "192.168.0.0/16"
- next_hop: "{{ connect.id }}"
- state: absent
- check_mode: yes
- register: result
-- name: not changed
- assert:
- that:
- not result.changed
-# ----------------------------------------------------------------------------
-- name: delete a route that does not exist
- hwc_vpc_route:
- vpc_id: "{{ vpc1.id }}"
- destination: "192.168.0.0/16"
- next_hop: "{{ connect.id }}"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-- name: delete a peering connect
- hwc_vpc_peering_connect:
- local_vpc_id: "{{ vpc1.id }}"
- name: "ansible_network_peering_test"
- filters:
- - "name"
- peering_vpc:
- vpc_id: "{{ vpc2.id }}"
- state: absent
- register: connect
-- name: delete a vpc
- hwc_network_vpc:
- cidr: "192.168.0.0/16"
- name: "ansible_network_vpc_test_peering"
- state: absent
- register: vpc2
-- name: delete a vpc
- hwc_network_vpc:
- cidr: "192.168.0.0/16"
- name: "ansible_network_vpc_test_local"
- state: absent
- register: vpc1
diff --git a/test/integration/targets/hwc_vpc_security_group/aliases b/test/integration/targets/hwc_vpc_security_group/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_vpc_security_group/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_vpc_security_group/tasks/main.yml b/test/integration/targets/hwc_vpc_security_group/tasks/main.yml
deleted file mode 100644
index 570523a77f..0000000000
--- a/test/integration/targets/hwc_vpc_security_group/tasks/main.yml
+++ /dev/null
@@ -1,82 +0,0 @@
----
-# Pre-test setup
-- name: delete a security group
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: absent
-#----------------------------------------------------------
-- name: create a security group (check mode)
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: present
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - not result.id
- - result.changed
-#----------------------------------------------------------
-- name: create a security group
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: create a security group (idemponent)
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: present
- check_mode: yes
- register: idemponent
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: create a security group that already exists
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a security group (check mode)
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: delete a security group
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-# ----------------------------------------------------------------------------
-- name: delete a security group that does not exist
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
diff --git a/test/integration/targets/hwc_vpc_security_group_rule/aliases b/test/integration/targets/hwc_vpc_security_group_rule/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_vpc_security_group_rule/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_vpc_security_group_rule/tasks/main.yml b/test/integration/targets/hwc_vpc_security_group_rule/tasks/main.yml
deleted file mode 100644
index c5313ec467..0000000000
--- a/test/integration/targets/hwc_vpc_security_group_rule/tasks/main.yml
+++ /dev/null
@@ -1,157 +0,0 @@
----
-# Pre-test setup
-- name: create a security group
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: present
- register: sg
-- name: delete a security group rule
- hwc_vpc_security_group_rule:
- direction: "ingress"
- protocol: "tcp"
- ethertype: "IPv4"
- port_range_max: 55
- security_group_id: "{{ sg.id }}"
- port_range_min: 22
- remote_ip_prefix: "0.0.0.0/0"
- state: absent
-#----------------------------------------------------------
-- name: create a security group rule (check mode)
- hwc_vpc_security_group_rule:
- direction: "ingress"
- protocol: "tcp"
- ethertype: "IPv4"
- port_range_max: 55
- security_group_id: "{{ sg.id }}"
- port_range_min: 22
- remote_ip_prefix: "0.0.0.0/0"
- state: present
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - not result.id
- - result.changed
-#----------------------------------------------------------
-- name: create a security group rule
- hwc_vpc_security_group_rule:
- direction: "ingress"
- protocol: "tcp"
- ethertype: "IPv4"
- port_range_max: 55
- security_group_id: "{{ sg.id }}"
- port_range_min: 22
- remote_ip_prefix: "0.0.0.0/0"
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: create a security group rule (idemponent)
- hwc_vpc_security_group_rule:
- direction: "ingress"
- protocol: "tcp"
- ethertype: "IPv4"
- port_range_max: 55
- security_group_id: "{{ sg.id }}"
- port_range_min: 22
- remote_ip_prefix: "0.0.0.0/0"
- state: present
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: create a security group rule that already exists
- hwc_vpc_security_group_rule:
- direction: "ingress"
- protocol: "tcp"
- ethertype: "IPv4"
- port_range_max: 55
- security_group_id: "{{ sg.id }}"
- port_range_min: 22
- remote_ip_prefix: "0.0.0.0/0"
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a security group rule (check mode)
- hwc_vpc_security_group_rule:
- direction: "ingress"
- protocol: "tcp"
- ethertype: "IPv4"
- port_range_max: 55
- security_group_id: "{{ sg.id }}"
- port_range_min: 22
- remote_ip_prefix: "0.0.0.0/0"
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a security group rule
- hwc_vpc_security_group_rule:
- direction: "ingress"
- protocol: "tcp"
- ethertype: "IPv4"
- port_range_max: 55
- security_group_id: "{{ sg.id }}"
- port_range_min: 22
- remote_ip_prefix: "0.0.0.0/0"
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a security group rule (idemponent)
- hwc_vpc_security_group_rule:
- direction: "ingress"
- protocol: "tcp"
- ethertype: "IPv4"
- port_range_max: 55
- security_group_id: "{{ sg.id }}"
- port_range_min: 22
- remote_ip_prefix: "0.0.0.0/0"
- state: absent
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: delete a security group rule that does not exist
- hwc_vpc_security_group_rule:
- direction: "ingress"
- protocol: "tcp"
- ethertype: "IPv4"
- port_range_max: 55
- security_group_id: "{{ sg.id }}"
- port_range_min: 22
- remote_ip_prefix: "0.0.0.0/0"
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-- name: delete a security group
- hwc_vpc_security_group:
- name: "ansible_network_security_group_test"
- state: absent
- register: sg
diff --git a/test/integration/targets/hwc_vpc_subnet/aliases b/test/integration/targets/hwc_vpc_subnet/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/hwc_vpc_subnet/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/hwc_vpc_subnet/tasks/main.yml b/test/integration/targets/hwc_vpc_subnet/tasks/main.yml
deleted file mode 100644
index dc6137c9fb..0000000000
--- a/test/integration/targets/hwc_vpc_subnet/tasks/main.yml
+++ /dev/null
@@ -1,143 +0,0 @@
----
-# Pre-test setup
-- name: create a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: present
- register: vpc
-- name: delete a subnet
- hwc_vpc_subnet:
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- state: absent
-#----------------------------------------------------------
-- name: create a subnet (check mode)
- hwc_vpc_subnet:
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- state: present
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - not result.id
- - result.changed
-#----------------------------------------------------------
-- name: create a subnet
- hwc_vpc_subnet:
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- state: present
- register: result
-- name: assert changed is true
- assert:
- that:
- result is changed
-#----------------------------------------------------------
-- name: create a subnet (idemponent)
- hwc_vpc_subnet:
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- state: present
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: create a subnet that already exists
- hwc_vpc_subnet:
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- state: present
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#----------------------------------------------------------
-- name: delete a subnet (check mode)
- hwc_vpc_subnet:
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- state: absent
- check_mode: yes
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a subnet
- hwc_vpc_subnet:
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- state: absent
- register: result
-- name: assert changed is true
- assert:
- that:
- - result is changed
-#----------------------------------------------------------
-- name: delete a subnet (idemponent)
- hwc_vpc_subnet:
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- state: absent
- check_mode: yes
- register: result
-- name: idemponent
- assert:
- that:
- - not result.changed
-# ----------------------------------------------------------------------------
-- name: delete a subnet that does not exist
- hwc_vpc_subnet:
- vpc_id: "{{ vpc.id }}"
- cidr: "192.168.100.0/26"
- gateway_ip: "192.168.100.32"
- name: "ansible_network_subnet_test"
- dhcp_enable: True
- state: absent
- register: result
-- name: assert changed is false
- assert:
- that:
- - result.failed == 0
- - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-- name: delete a vpc
- hwc_network_vpc:
- cidr: "192.168.100.0/24"
- name: "ansible_network_vpc_test"
- state: absent
- register: vpc
diff --git a/test/integration/targets/influxdb_user/aliases b/test/integration/targets/influxdb_user/aliases
deleted file mode 100644
index 3419dc45f3..0000000000
--- a/test/integration/targets/influxdb_user/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-disabled
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/influxdb_user/meta/main.yml b/test/integration/targets/influxdb_user/meta/main.yml
deleted file mode 100644
index 941117026f..0000000000
--- a/test/integration/targets/influxdb_user/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_influxdb
diff --git a/test/integration/targets/influxdb_user/tasks/main.yml b/test/integration/targets/influxdb_user/tasks/main.yml
deleted file mode 100644
index 2a978c7399..0000000000
--- a/test/integration/targets/influxdb_user/tasks/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-
-- include: tests.yml
- when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty'
diff --git a/test/integration/targets/influxdb_user/tasks/tests.yml b/test/integration/targets/influxdb_user/tasks/tests.yml
deleted file mode 100644
index b980e29094..0000000000
--- a/test/integration/targets/influxdb_user/tasks/tests.yml
+++ /dev/null
@@ -1,140 +0,0 @@
----
-
-- name: Install influxdb python module
- pip: name=influxdb
-
-- name: Test add admin user in check mode
- block:
- - name: Add admin user
- influxdb_user: user_name=admin user_password=admin admin=yes
- check_mode: true
- register: add_admin_user
-
- - name: Check that admin user adding succeeds with a change
- assert:
- that:
- - add_admin_user.changed == true
-
-- name: Test add admin user
- block:
- - name: Add admin user
- influxdb_user: user_name=admin user_password=admin admin=yes
- register: add_admin_user
-
- - name: Check that admin user adding succeeds with a change
- assert:
- that:
- - add_admin_user.changed == true
-
-- name: Test add admin user idempotence
- block:
- - name: Add admin user
- influxdb_user: user_name=admin user_password=admin admin=yes
- register: add_admin_user
-
- - name: Check that admin user adding succeeds without a change
- assert:
- that:
- - add_admin_user.changed == false
-
-- name: Enable authentication and restart service
- block:
- - name: Enable authentication
- lineinfile:
- path: /etc/influxdb/influxdb.conf
- regexp: 'auth-enabled ='
- line: ' auth-enabled = true'
-
- - name: Restart InfluxDB service
- service: name=influxdb state=restarted
-
-- name: Test add user in check mode when authentication enabled
- block:
- - name: Add user
- influxdb_user: user_name=user user_password=user login_username=admin login_password=admin
- check_mode: true
- register: add_user_with_auth_enabled
-
- - name: Check that adding user with enabled authentication succeeds with a change
- assert:
- that:
- - add_user_with_auth_enabled.changed == true
-
-- name: Test add user when authentication enabled
- block:
- - name: Add user
- influxdb_user: user_name=user user_password=user login_username=admin login_password=admin
- register: add_user_with_auth_enabled
-
- - name: Check that adding user with enabled authentication succeeds with a change
- assert:
- that:
- - add_user_with_auth_enabled.changed == true
-
-- name: Test add user when authentication enabled idempotence
- block:
- - name: Add the same user
- influxdb_user: user_name=user user_password=user login_username=admin login_password=admin
- register: same_user
-
- - name: Check that adding same user succeeds without a change
- assert:
- that:
- - same_user.changed == false
-
-- name: Test change user password in check mode
- block:
- - name: Change user password
- influxdb_user: user_name=user user_password=user2 login_username=admin login_password=admin
- check_mode: true
- register: change_password
-
- - name: Check that password changing succeeds with a change
- assert:
- that:
- - change_password.changed == true
-
-- name: Test change user password
- block:
- - name: Change user password
- influxdb_user: user_name=user user_password=user2 login_username=admin login_password=admin
- register: change_password
-
- - name: Check that password changing succeeds with a change
- assert:
- that:
- - change_password.changed == true
-
-- name: Test remove user in check mode
- block:
- - name: Remove user
- influxdb_user: user_name=user state=absent login_username=admin login_password=admin
- check_mode: true
- register: remove_user
-
- - name: Check that removing user succeeds with a change
- assert:
- that:
- - remove_user.changed == true
-
-- name: Test remove user
- block:
- - name: Remove user
- influxdb_user: user_name=user state=absent login_username=admin login_password=admin
- register: remove_user
-
- - name: Check that removing user succeeds with a change
- assert:
- that:
- - remove_user.changed == true
-
-- name: Test remove user idempotence
- block:
- - name: Remove user
- influxdb_user: user_name=user state=absent login_username=admin login_password=admin
- register: remove_user
-
- - name: Check that removing user succeeds without a change
- assert:
- that:
- - remove_user.changed == false
diff --git a/test/integration/targets/ini_file/aliases b/test/integration/targets/ini_file/aliases
deleted file mode 100644
index 765b70da79..0000000000
--- a/test/integration/targets/ini_file/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/posix/group2
diff --git a/test/integration/targets/ini_file/meta/main.yml b/test/integration/targets/ini_file/meta/main.yml
deleted file mode 100644
index 1810d4bec9..0000000000
--- a/test/integration/targets/ini_file/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_remote_tmp_dir
diff --git a/test/integration/targets/ini_file/tasks/main.yml b/test/integration/targets/ini_file/tasks/main.yml
deleted file mode 100644
index c54b905ab2..0000000000
--- a/test/integration/targets/ini_file/tasks/main.yml
+++ /dev/null
@@ -1,408 +0,0 @@
----
-# test code for ini_file plugins
-# (c) 2017 Red Hat Inc.
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: record the output directory
- set_fact: output_file={{ remote_tmp_dir }}/foo.ini
-
-- name: add "fav=lemonade" is in section "[drinks]" in specified file
- ini_file:
- path: "{{ output_file }}"
- section: drinks
- option: fav
- value: lemonade
- register: result1
-
-- name: verify ini_file 'changed' is true
- assert:
- that:
- - result1.changed == True
- - result1.msg == 'section and option added'
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: set expected content and get current ini file content
- set_fact:
- expected1: |
-
- [drinks]
- fav = lemonade
- content1: "{{ output_content.content | b64decode }}"
-
-- name: Verify content of ini file is as expected
- assert:
- that:
- - content1 == expected1
-
-- name: add "fav=lemonade" is in section "[drinks]" again
- ini_file:
- path: "{{ output_file }}"
- section: drinks
- option: fav
- value: lemonade
- register: result2
-
-- name: Ensure unchanged
- assert:
- that:
- - result2.changed == False
- - result2.msg == 'OK'
-
-- name: Ensure "beverage=coke" is in section "[drinks]"
- ini_file:
- path: "{{ output_file }}"
- section: drinks
- option: beverage
- value: coke
- register: result3
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: set expected content and get current ini file content
- set_fact:
- expected3: |
-
- [drinks]
- fav = lemonade
- beverage = coke
- content3: "{{ output_content.content | b64decode }}"
-
-- name: assert 'changed' is true and content is OK
- assert:
- that:
- - result3.changed == True
- - result3.msg == 'option added'
- - content3 == expected3
-
-- name: Remove option "beverage=coke"
- ini_file:
- path: "{{ output_file }}"
- section: drinks
- option: beverage
- state: absent
- register: result4
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: get ini file content
- set_fact:
- content4: "{{ output_content.content | b64decode }}"
-
-- name: assert changed and content is as expected
- assert:
- that:
- - result4.changed == True
- - result4.msg == 'option changed'
- - content4 == expected1
-
-- name: remove section 'drinks'
- ini_file:
- path: "{{ output_file }}"
- section: drinks
- state: absent
- register: result5
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: get current ini file content
- set_fact:
- content5: "{{ output_content.content | b64decode }}"
-
-- name: assert changed and content is empty
- assert:
- that:
- - result5.changed == True
- - result5.msg == 'section removed'
- - content5 == "\n"
-
-# allow_no_value
-
-- name: test allow_no_value
- ini_file:
- path: "{{ output_file }}"
- section: mysqld
- option: skip-name
- allow_no_value: yes
- register: result6
-
-- name: assert section and option added
- assert:
- that:
- - result6.changed == True
- - result6.msg == 'section and option added'
-
-- name: test allow_no_value idempotency
- ini_file:
- path: "{{ output_file }}"
- section: mysqld
- option: skip-name
- allow_no_value: yes
- register: result6
-
-- name: assert 'changed' false
- assert:
- that:
- - result6.changed == False
- - result6.msg == 'OK'
-
-- name: test allow_no_value with loop
- ini_file:
- path: "{{ output_file }}"
- section: mysqld
- option: "{{ item.o }}"
- value: "{{ item.v }}"
- allow_no_value: yes
- with_items:
- - { o: "skip-name-resolve", v: null }
- - { o: "max_connections", v: "500" }
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: set expected content and get current ini file content
- set_fact:
- content7: "{{ output_content.content | b64decode }}"
- expected7: |
-
- [mysqld]
- skip-name
- skip-name-resolve
- max_connections = 500
-
-- name: Verify content of ini file is as expected
- assert:
- that:
- - content7 == expected7
-
-- name: change option with no value to option with value
- ini_file:
- path: "{{ output_file }}"
- section: mysqld
- option: skip-name
- value: myvalue
- register: result8
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: set expected content and get current ini file content
- set_fact:
- content8: "{{ output_content.content | b64decode }}"
- expected8: |
-
- [mysqld]
- skip-name = myvalue
- skip-name-resolve
- max_connections = 500
-
-- name: assert 'changed' and msg 'option changed' and content is as expected
- assert:
- that:
- - result8.changed == True
- - result8.msg == 'option changed'
- - content8 == expected8
-
-- name: change option with value to option with no value
- ini_file:
- path: "{{ output_file }}"
- section: mysqld
- option: skip-name
- allow_no_value: yes
- register: result9
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: set expected content and get current ini file content
- set_fact:
- content9: "{{ output_content.content | b64decode }}"
- expected9: |
-
- [mysqld]
- skip-name
- skip-name-resolve
- max_connections = 500
-
-- name: assert 'changed' and msg 'option changed' and content is as expected
- assert:
- that:
- - result9.changed == True
- - result9.msg == 'option changed'
- - content9 == expected9
-
-- name: Remove option with no value
- ini_file:
- path: "{{ output_file }}"
- section: mysqld
- option: skip-name-resolve
- state: absent
- register: result10
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: set expected content and get current ini file content
- set_fact:
- content10: "{{ output_content.content | b64decode }}"
- expected10: |
-
- [mysqld]
- skip-name
- max_connections = 500
-
-- name: assert 'changed' and msg 'option changed' and content is as expected
- assert:
- that:
- - result10.changed == True
- - result10.msg == 'option changed'
- - content10 == expected10
-
-- name: Clean test file
- copy:
- content: ""
- dest: "{{ output_file }}"
- force: yes
-
-- name: Ensure "beverage=coke" is created within no section
- ini_file:
- section:
- path: "{{ output_file }}"
- option: beverage
- value: coke
- register: result11
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: set expected content and get current ini file content
- set_fact:
- expected11: "beverage = coke\n\n"
- content11: "{{ output_content.content | b64decode }}"
-
-- name: assert 'changed' is true and content is OK (no section)
- assert:
- that:
- - result11 is changed
- - result11.msg == 'option added'
- - content11 == expected11
-
-- name: Ensure "beverage=coke" is modified as "beverage=water" within no section
- ini_file:
- path: "{{ output_file }}"
- option: beverage
- value: water
- section:
- register: result12
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: set expected content and get current ini file content
- set_fact:
- expected12: "beverage = water\n\n"
-
- content12: "{{ output_content.content | b64decode }}"
-
-- name: assert 'changed' is true and content is OK (no section)
- assert:
- that:
- - result12 is changed
- - result12.msg == 'option changed'
- - content12 == expected12
-
-- name: remove option 'beverage' within no section
- ini_file:
- section:
- path: "{{ output_file }}"
- option: beverage
- state: absent
- register: result13
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: get current ini file content
- set_fact:
- content13: "{{ output_content.content | b64decode }}"
-
-- name: assert changed (no section)
- assert:
- that:
- - result13 is changed
- - result13.msg == 'option changed'
- - content13 == "\n"
-
-- name: Check add option without section before existing section
- block:
- - name: Add option with section
- ini_file:
- path: "{{ output_file }}"
- section: drinks
- option: beverage
- value: water
- - name: Add option without section
- ini_file:
- path: "{{ output_file }}"
- section:
- option: like
- value: tea
-
-- name: read content from output file
- slurp:
- src: "{{ output_file }}"
- register: output_content
-
-- name: set expected content and get current ini file content
- set_fact:
- expected14: |
- like = tea
-
- [drinks]
- beverage = water
- content14: "{{ output_content.content | b64decode }}"
-
-- name: Verify content of ini file is as expected
- assert:
- that:
- - content14 == expected14
diff --git a/test/integration/targets/intersight_info/aliases b/test/integration/targets/intersight_info/aliases
deleted file mode 100644
index f1ada40c2c..0000000000
--- a/test/integration/targets/intersight_info/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-# Not enabled, but can be used with Intersight by specifying API keys.
-# See tasks/main.yml for examples.
-unsupported
diff --git a/test/integration/targets/intersight_info/tasks/main.yml b/test/integration/targets/intersight_info/tasks/main.yml
deleted file mode 100644
index 0aa73be487..0000000000
--- a/test/integration/targets/intersight_info/tasks/main.yml
+++ /dev/null
@@ -1,37 +0,0 @@
----
-# Test code for the Cisco Intersight modules
-# Copyright 2019, David Soper (@dsoper2)
-
-- name: Setup API access variables
- debug: msg="Setup API keys"
- vars:
- api_info: &api_info
- api_private_key: "{{ api_private_key | default('~/Downloads/SSOSecretKey.txt') }}"
- api_key_id: "{{ api_key_id | default('596cc79e5d91b400010d15ad/596cc7945d91b400010d154e/5b6275df3437357030a7795f') }}"
-
-- name: Get infos for all servers
- intersight_info:
- <<: *api_info
- server_names:
- register: result
-
-- name: Verify info does not report a change
- assert:
- that:
- - result.changed == false
- - "'Name' in result.intersight_servers[0]"
- - "'Moid' in result.intersight_servers[0]"
-
-- name: Get info for servers by name
- intersight_info:
- <<: *api_info
- server_names:
- - CC7UCS-13-1-1
- register: result2
-
-- name: Verify info does not report a change
- assert:
- that:
- - result2.changed == false
- - "'Name' in result2.intersight_servers[0]"
- - "'Moid' in result2.intersight_servers[0]"
diff --git a/test/integration/targets/inventory_cloudscale/aliases b/test/integration/targets/inventory_cloudscale/aliases
deleted file mode 100644
index 1ce5f09122..0000000000
--- a/test/integration/targets/inventory_cloudscale/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-cloud/cloudscale
-unsupported
-needs/target/cloudscale_common
diff --git a/test/integration/targets/inventory_cloudscale/filter_plugins/group_name.py b/test/integration/targets/inventory_cloudscale/filter_plugins/group_name.py
deleted file mode 100644
index faddb23882..0000000000
--- a/test/integration/targets/inventory_cloudscale/filter_plugins/group_name.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from __future__ import absolute_import, division, print_function
-__metaclass__ = type
-
-from ansible.inventory.group import to_safe_group_name
-
-
-def safe_group_name(name):
- return to_safe_group_name(name)
-
-
-class FilterModule(object):
- filter_map = {
- 'safe_group_name': safe_group_name
- }
-
- def filters(self):
- return self.filter_map
diff --git a/test/integration/targets/inventory_cloudscale/inventory-private.yml b/test/integration/targets/inventory_cloudscale/inventory-private.yml
deleted file mode 100644
index 32000758e0..0000000000
--- a/test/integration/targets/inventory_cloudscale/inventory-private.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-plugin: cloudscale
-ansible_host: private
-inventory_hostname: name
-groups:
- ansible: inventory_hostname.startswith('ansible')
- private_net: (cloudscale.interfaces | selectattr('type', 'equalto', 'private') | list | length) > 0
-keyed_groups:
- - prefix: net
- key: (cloudscale.interfaces.0.addresses.0.address + '/' + cloudscale.interfaces.0.addresses.0.prefix_length | string) | ipaddr('network')
- - prefix: distro
- key: cloudscale.image.operating_system
-compose:
- flavor_image: cloudscale.flavor.slug + '_' + cloudscale.image.slug
-strict: False
diff --git a/test/integration/targets/inventory_cloudscale/inventory-public.yml b/test/integration/targets/inventory_cloudscale/inventory-public.yml
deleted file mode 100644
index 899f66f882..0000000000
--- a/test/integration/targets/inventory_cloudscale/inventory-public.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-plugin: cloudscale
-ansible_host: public_v4
-inventory_hostname: name
-groups:
- ansible: inventory_hostname.startswith('ansible')
- private_net: (cloudscale.interfaces | selectattr('type', 'equalto', 'private') | list | length) > 0
-keyed_groups:
- - prefix: net
- key: (cloudscale.interfaces.0.addresses.0.address + '/' + cloudscale.interfaces.0.addresses.0.prefix_length | string) | ipaddr('network')
- - prefix: distro
- key: cloudscale.image.operating_system
-compose:
- flavor_image: cloudscale.flavor.slug + '_' + cloudscale.image.slug
-strict: False
diff --git a/test/integration/targets/inventory_cloudscale/inventory-uuid.yml b/test/integration/targets/inventory_cloudscale/inventory-uuid.yml
deleted file mode 100644
index 8c72e0b34d..0000000000
--- a/test/integration/targets/inventory_cloudscale/inventory-uuid.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-plugin: cloudscale
-ansible_host: public_v4
-inventory_hostname: uuid
-groups:
- ansible: cloudscale.name.startswith('ansible')
- private_net: (cloudscale.interfaces | selectattr('type', 'equalto', 'private') | list | length) > 0
-keyed_groups:
- - prefix: net
- key: (cloudscale.interfaces.0.addresses.0.address + '/' + cloudscale.interfaces.0.addresses.0.prefix_length | string) | ipaddr('network')
- - prefix: distro
- key: cloudscale.image.operating_system
-compose:
- flavor_image: cloudscale.flavor.slug + '_' + cloudscale.image.slug
-strict: False
diff --git a/test/integration/targets/inventory_cloudscale/playbooks/change-inventory-config.yml b/test/integration/targets/inventory_cloudscale/playbooks/change-inventory-config.yml
deleted file mode 100644
index 74e9132de1..0000000000
--- a/test/integration/targets/inventory_cloudscale/playbooks/change-inventory-config.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-- name: Change inventory configuration to {{ inventory_config }}
- file:
- src: '{{ inventory_config }}'
- dest: ../inventory_cloudscale.yml
- state: link
-
-- name: Refresh inventory
- meta: refresh_inventory
diff --git a/test/integration/targets/inventory_cloudscale/playbooks/cleanup.yml b/test/integration/targets/inventory_cloudscale/playbooks/cleanup.yml
deleted file mode 100644
index acb3c907fc..0000000000
--- a/test/integration/targets/inventory_cloudscale/playbooks/cleanup.yml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: List all servers
- uri:
- url: 'https://api.cloudscale.ch/v1/servers'
- headers:
- Authorization: 'Bearer {{ lookup("env", "CLOUDSCALE_API_TOKEN") }}'
- status_code: 200
- register: server_list
-
-- name: Remove all servers created by this test run
- cloudscale_server:
- uuid: '{{ item.uuid }}'
- state: 'absent'
- when: cloudscale_resource_prefix in item.name
- with_items: '{{ server_list.json }}'
- loop_control:
- label: '{{ item.name }} ({{ item.uuid }})'
diff --git a/test/integration/targets/inventory_cloudscale/playbooks/common-asserts.yml b/test/integration/targets/inventory_cloudscale/playbooks/common-asserts.yml
deleted file mode 100644
index b83e4ffcf3..0000000000
--- a/test/integration/targets/inventory_cloudscale/playbooks/common-asserts.yml
+++ /dev/null
@@ -1,50 +0,0 @@
----
-- name: '{{ inventory }}: Verify basic inventory'
- assert:
- that:
- - server_public[identifier] in hostvars
- - server_private[identifier] in hostvars
- - server_public_private[identifier] in hostvars
- - server_unsafe_chars[identifier] in hostvars
-
-- name: '{{ inventory }}: Verify duplicate host names in inventory'
- assert:
- that:
- - cloudscale_resource_prefix + '-duplicate' not in hostvars
- - (cloudscale_resource_prefix + '-duplicate') | safe_group_name in groups
-
-- name: '{{ inventory }}: Verify constructed groups in inventory'
- assert:
- that:
- # Test for the "ansible" group
- - '"ansible" in groups'
- - server_public[identifier] in groups.ansible
- - server_private[identifier] in groups.ansible
- - server_public_private[identifier] in groups.ansible
- - server_unsafe_chars[identifier] in groups.ansible
- - server_other_prefix[identifier] not in groups.ansible
- # Tests for the "private_net" group
- - '"private_net" in groups'
- - server_public[identifier] not in groups["private_net"]
- - server_private[identifier] in groups["private_net"]
- - server_public_private[identifier] in groups["private_net"]
- # Tests for "distro" keyed group
- - '"distro_Debian" in groups'
- - '"distro_Ubuntu" in groups'
- - server_public[identifier] in groups.distro_Debian
- - server_private[identifier] not in groups.distro_Debian
- - server_public[identifier] not in groups.distro_Ubuntu
- - server_private[identifier] in groups.distro_Ubuntu
- # Test for flavor_image composed variable
- - hostvars[server_public[identifier]].flavor_image == 'flex-2_debian-9'
- - hostvars[server_private[identifier]].flavor_image == 'flex-2_ubuntu-18.04'
-
-- name: '{{ inventory }}: Verify cloudscale specific host variables'
- assert:
- that:
- - hostvars[item.0[identifier]].cloudscale[item.1] == item.0[item.1]
- with_nested:
- - [ '{{ server_public }}', '{{ server_private }}', '{{ server_public_private }}' ]
- - [ 'anti_affinity_with', 'flavor', 'href', 'image', 'interfaces', 'name', 'uuid', 'volumes' ]
- loop_control:
- label: '{{ item.0.name }} ({{ item.0.uuid }}): {{ item.1 }}'
diff --git a/test/integration/targets/inventory_cloudscale/playbooks/setup.yml b/test/integration/targets/inventory_cloudscale/playbooks/setup.yml
deleted file mode 100644
index 90a5755954..0000000000
--- a/test/integration/targets/inventory_cloudscale/playbooks/setup.yml
+++ /dev/null
@@ -1,74 +0,0 @@
----
-- name: Create server with public network only
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-inventory-public'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- use_public_network: True
- use_private_network: False
- register: server_public
-
-- name: Create server with private network only
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-inventory-private'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_alt_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- use_public_network: False
- use_private_network: True
- register: server_private
-
-- name: Create server with public and private network
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-inventory-public-private'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- use_public_network: True
- use_private_network: True
- register: server_public_private
-
-- name: Create servers with duplicate names
- # The cloudscale_server module does not allow creating two servers with the same
- # name. To do this the uri module has to be used.
- uri:
- url: 'https://api.cloudscale.ch/v1/servers'
- method: POST
- headers:
- Authorization: 'Bearer {{ lookup("env", "CLOUDSCALE_API_TOKEN") }}'
- body:
- name: '{{ cloudscale_resource_prefix }}-duplicate'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys:
- - '{{ cloudscale_test_ssh_key }}'
- body_format: json
- status_code: 201
- register: duplicate
- with_sequence: count=2
-
-- name: Create server with different prefix
- cloudscale_server:
- name: 'other-prefix-{{ cloudscale_resource_prefix }}-inventory'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- register: server_other_prefix
-
-# The API does not allow creation of a server with a name containing
-# characters not allowed in DNS names. So create a server and rename
-# it afterwards (which is possible). The resaon for this restriction is
-# that on creation a PTR entry for the server is created.
-- name: Create server to be renamed with unsafe characters
- cloudscale_server:
- name: '{{ cloudscale_resource_prefix }}-unsafe-chars'
- flavor: '{{ cloudscale_test_flavor }}'
- image: '{{ cloudscale_test_image }}'
- ssh_keys: '{{ cloudscale_test_ssh_key }}'
- register: server_unsafe_chars
-- name: Rename server to contain unsafe characters
- cloudscale_server:
- uuid: '{{ server_unsafe_chars.uuid }}'
- name: '{{ cloudscale_resource_prefix }}-snowmans-are-cool-☃!'
- register: server_unsafe_chars
diff --git a/test/integration/targets/inventory_cloudscale/playbooks/test-inventory.yml b/test/integration/targets/inventory_cloudscale/playbooks/test-inventory.yml
deleted file mode 100644
index 24fe38eeb9..0000000000
--- a/test/integration/targets/inventory_cloudscale/playbooks/test-inventory.yml
+++ /dev/null
@@ -1,68 +0,0 @@
----
-- name: Create servers and test cloudscale inventory plugin
- hosts: localhost
- gather_facts: False
- roles:
- - cloudscale_common
- tasks:
- - block:
- - import_tasks: setup.yml
-
- - import_tasks: change-inventory-config.yml
- vars:
- inventory_config: inventory-public.yml
-
- - import_tasks: common-asserts.yml
- vars:
- identifier: 'name'
- inventory: 'Public v4'
-
- - name: Verify inventory with public IP
- assert:
- that:
- # Test ansible_host setting
- - server_public.interfaces.0.addresses.0.address
- == hostvars[server_public.name].ansible_host
- - server_public_private.interfaces.0.addresses.0.address
- == hostvars[server_public_private.name].ansible_host
- - '"ansible_host" not in hostvars[server_private.name]'
-
- - import_tasks: change-inventory-config.yml
- vars:
- inventory_config: inventory-private.yml
-
- - import_tasks: common-asserts.yml
- vars:
- identifier: 'name'
- inventory: 'Private v4'
-
- - name: Verify inventory with private IP
- assert:
- that:
- # Test ansible_host setting
- - '"ansible_host" not in hostvars[server_public.name]'
- - server_private.interfaces.0.addresses.0.address
- == hostvars[server_private.name].ansible_host
- - server_public_private.interfaces.1.addresses.0.address
- == hostvars[server_public_private.name].ansible_host
-
- - import_tasks: change-inventory-config.yml
- vars:
- inventory_config: inventory-uuid.yml
-
- - import_tasks: common-asserts.yml
- vars:
- identifier: 'uuid'
- inventory: 'UUID'
-
- - name: Verify inventory with UUID
- assert:
- that:
- # Test server name groups
- - groups[server_public.name | safe_group_name] == [server_public.uuid]
- - groups[server_private.name | safe_group_name] == [server_private.uuid]
- - groups[server_public_private.name | safe_group_name] == [server_public_private.uuid]
- - groups[server_unsafe_chars.name | safe_group_name] == [server_unsafe_chars.uuid]
-
- always:
- - import_tasks: cleanup.yml
diff --git a/test/integration/targets/inventory_cloudscale/runme.sh b/test/integration/targets/inventory_cloudscale/runme.sh
deleted file mode 100755
index 25c2352d45..0000000000
--- a/test/integration/targets/inventory_cloudscale/runme.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-# Exit on errors, exit when accessing unset variables and print all commands
-set -eux
-
-# Set the role path so that the cloudscale_common role is available
-export ANSIBLE_ROLES_PATH="../"
-
-# Set the filter plugin search path so that the safe_group_name filter is available
-export ANSIBLE_FILTER_PLUGINS="./filter_plugins"
-
-rm -f inventory.yml
-export ANSIBLE_INVENTORY="./inventory_cloudscale.yml"
-
-# Run without converting invalid characters in group names
-export ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=never
-ansible-playbook playbooks/test-inventory.yml "$@"
-
-# Run with converting invalid characters in group names
-export ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS=always
-ansible-playbook playbooks/test-inventory.yml "$@"
diff --git a/test/integration/targets/inventory_docker_machine/aliases b/test/integration/targets/inventory_docker_machine/aliases
deleted file mode 100644
index 9928ea3e6a..0000000000
--- a/test/integration/targets/inventory_docker_machine/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-disabled
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # We need SSH access to the VM and need to be able to let
- # docker-machine install docker in the VM. This won't work
- # with tests running in docker containers.
-needs/root
diff --git a/test/integration/targets/inventory_docker_machine/docker-machine b/test/integration/targets/inventory_docker_machine/docker-machine
deleted file mode 100644
index be5d00c591..0000000000
--- a/test/integration/targets/inventory_docker_machine/docker-machine
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-# Mock Docker Machine wrapper for testing purposes
-
-[ "$MOCK_ERROR_IN" == "$1" ] && echo >&2 "Mock Docker Machine error" && exit 1
-case $1 in
- env)
- cat <<'EOF'
-export DOCKER_TLS_VERIFY="1"
-export DOCKER_HOST="tcp://134.209.204.160:2376"
-export DOCKER_CERT_PATH="/root/.docker/machine/machines/routinator"
-export DOCKER_MACHINE_NAME="routinator"
-# Run this command to configure your shell:
-# eval $(docker-machine env --shell=bash routinator)
-EOF
- ;;
-
- *)
- /usr/bin/docker-machine $*
- ;;
-esac
diff --git a/test/integration/targets/inventory_docker_machine/inventory_1.docker_machine.yml b/test/integration/targets/inventory_docker_machine/inventory_1.docker_machine.yml
deleted file mode 100644
index 17d64816ac..0000000000
--- a/test/integration/targets/inventory_docker_machine/inventory_1.docker_machine.yml
+++ /dev/null
@@ -1 +0,0 @@
-plugin: docker_machine
diff --git a/test/integration/targets/inventory_docker_machine/inventory_2.docker_machine.yml b/test/integration/targets/inventory_docker_machine/inventory_2.docker_machine.yml
deleted file mode 100644
index e6d5fd78a8..0000000000
--- a/test/integration/targets/inventory_docker_machine/inventory_2.docker_machine.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-plugin: docker_machine
-daemon_env: require \ No newline at end of file
diff --git a/test/integration/targets/inventory_docker_machine/inventory_3.docker_machine.yml b/test/integration/targets/inventory_docker_machine/inventory_3.docker_machine.yml
deleted file mode 100644
index c674bcddc8..0000000000
--- a/test/integration/targets/inventory_docker_machine/inventory_3.docker_machine.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-plugin: docker_machine
-daemon_env: optional \ No newline at end of file
diff --git a/test/integration/targets/inventory_docker_machine/meta/main.yml b/test/integration/targets/inventory_docker_machine/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/inventory_docker_machine/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/inventory_docker_machine/playbooks/pre-setup.yml b/test/integration/targets/inventory_docker_machine/playbooks/pre-setup.yml
deleted file mode 100644
index 9f526fb44d..0000000000
--- a/test/integration/targets/inventory_docker_machine/playbooks/pre-setup.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-- hosts: 127.0.0.1
- connection: local
- tasks:
- - name: Setup docker
- include_role:
- name: setup_docker
-
- # There seems to be no better way to install docker-machine. At least I couldn't find any packages for RHEL7/8.
- - name: Download docker-machine binary
- vars:
- docker_machine_version: "0.16.1"
- get_url:
- url: "https://github.com/docker/machine/releases/download/v{{ docker_machine_version }}/docker-machine-{{ ansible_system }}-{{ ansible_userspace_architecture }}"
- dest: /tmp/docker-machine
- - name: Install docker-machine binary
- command: install /tmp/docker-machine /usr/bin/docker-machine
- become: yes
diff --git a/test/integration/targets/inventory_docker_machine/playbooks/setup.yml b/test/integration/targets/inventory_docker_machine/playbooks/setup.yml
deleted file mode 100644
index 78042b6297..0000000000
--- a/test/integration/targets/inventory_docker_machine/playbooks/setup.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-- hosts: 127.0.0.1
- connection: local
- tasks:
- - name: Request Docker Machine to use this machine as a generic VM
- command: "docker-machine --debug create \
- --driver generic \
- --generic-ip-address=localhost \
- --generic-ssh-key {{ lookup('env', 'HOME') }}/.ssh/id_rsa \
- --generic-ssh-user root \
- vm"
diff --git a/test/integration/targets/inventory_docker_machine/playbooks/teardown.yml b/test/integration/targets/inventory_docker_machine/playbooks/teardown.yml
deleted file mode 100644
index b272c09472..0000000000
--- a/test/integration/targets/inventory_docker_machine/playbooks/teardown.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- hosts: 127.0.0.1
- connection: local
- tasks:
- - name: Request Docker Machine to remove this machine as a generic VM
- command: "docker-machine rm vm -f"
diff --git a/test/integration/targets/inventory_docker_machine/playbooks/test_inventory_1.yml b/test/integration/targets/inventory_docker_machine/playbooks/test_inventory_1.yml
deleted file mode 100644
index 476262f1ab..0000000000
--- a/test/integration/targets/inventory_docker_machine/playbooks/test_inventory_1.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-- hosts: 127.0.0.1
- gather_facts: no
- tasks:
- - name: sanity check Docker Machine output
- vars:
- dm_ls_format: !unsafe '{{.Name}} | {{.DriverName}} | {{.State}} | {{.URL}} | {{.Error}}'
- success_regex: "^vm | [^|]+ | Running | tcp://.+ |$"
- command: docker-machine ls --format '{{ dm_ls_format }}'
- register: result
- failed_when: result.rc != 0 or result.stdout is not match(success_regex)
-
- - name: verify Docker Machine ip
- command: docker-machine ip vm
- register: result
- failed_when: result.rc != 0 or result.stdout != hostvars['vm'].ansible_host
-
- - name: verify Docker Machine env
- command: docker-machine env --shell=sh vm
- register: result
-
- - debug: var=result.stdout
-
- - assert:
- that:
- - "'DOCKER_TLS_VERIFY=\"{{ hostvars['vm'].dm_DOCKER_TLS_VERIFY }}\"' in result.stdout"
- - "'DOCKER_HOST=\"{{ hostvars['vm'].dm_DOCKER_HOST }}\"' in result.stdout"
- - "'DOCKER_CERT_PATH=\"{{ hostvars['vm'].dm_DOCKER_CERT_PATH }}\"' in result.stdout"
- - "'DOCKER_MACHINE_NAME=\"{{ hostvars['vm'].dm_DOCKER_MACHINE_NAME }}\"' in result.stdout"
-
-- hosts: vm
- gather_facts: no
- tasks:
- - name: do something to verify that accept-new ssh setting was applied by the docker-machine inventory plugin
- raw: uname -a
- register: result
-
- - debug: var=result.stdout
-
-- hosts: 127.0.0.1
- gather_facts: no
- environment:
- DOCKER_CERT_PATH: "{{ hostvars['vm'].dm_DOCKER_CERT_PATH }}"
- DOCKER_HOST: "{{ hostvars['vm'].dm_DOCKER_HOST }}"
- DOCKER_MACHINE_NAME: "{{ hostvars['vm'].dm_DOCKER_MACHINE_NAME }}"
- DOCKER_TLS_VERIFY: "{{ hostvars['vm'].dm_DOCKER_TLS_VERIFY }}"
- tasks:
- - name: run a Docker container on the target Docker Machine host to verify that Docker daemon connection settings from the docker-machine inventory plugin work as expected
- docker_container:
- name: test
- image: hello-world:latest \ No newline at end of file
diff --git a/test/integration/targets/inventory_docker_machine/runme.sh b/test/integration/targets/inventory_docker_machine/runme.sh
deleted file mode 100755
index 074e64fc25..0000000000
--- a/test/integration/targets/inventory_docker_machine/runme.sh
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env bash
-
-SCRIPT_DIR=$(dirname "$0")
-
-echo "Who am I: $(whoami)"
-echo "Home: ${HOME}"
-echo "PWD: $(pwd)"
-echo "Script dir: ${SCRIPT_DIR}"
-
-# restrict Ansible just to our inventory plugin, to prevent inventory data being matched by the test but being provided
-# by some other dynamic inventory provider
-export ANSIBLE_INVENTORY_ENABLED=docker_machine
-
-[[ -n "$DEBUG" || -n "$ANSIBLE_DEBUG" ]] && set -x
-
-set -euo pipefail
-
-SAVED_PATH="$PATH"
-
-cleanup() {
- PATH="${SAVED_PATH}"
- echo "Cleanup"
- ansible-playbook -i teardown.docker_machine.yml playbooks/teardown.yml
- echo "Done"
-}
-
-trap cleanup INT TERM EXIT
-
-echo "Pre-setup (install docker, docker-machine)"
-ANSIBLE_ROLES_PATH=.. ansible-playbook playbooks/pre-setup.yml
-
-echo "Print docker-machine version"
-docker-machine --version
-
-echo "Check preconditions"
-# Host should NOT be known to Ansible before the test starts
-ansible-inventory -i inventory_1.docker_machine.yml --host vm >/dev/null && exit 1
-
-echo "Test that the docker_machine inventory plugin is being loaded"
-ANSIBLE_DEBUG=yes ansible-inventory -i inventory_1.docker_machine.yml --list | grep -F "Loading InventoryModule 'docker_machine'"
-
-echo "Setup"
-ansible-playbook playbooks/setup.yml
-
-echo "Test docker_machine inventory 1"
-ansible-playbook -i inventory_1.docker_machine.yml playbooks/test_inventory_1.yml
-
-echo "Activate Docker Machine mock"
-PATH=${SCRIPT_DIR}:$PATH
-
-echo "Test docker_machine inventory 2: daemon_env=require daemon env success=yes"
-ansible-inventory -i inventory_2.docker_machine.yml --list
-
-echo "Test docker_machine inventory 2: daemon_env=require daemon env success=no"
-export MOCK_ERROR_IN=env
-ansible-inventory -i inventory_2.docker_machine.yml --list
-unset MOCK_ERROR_IN
-
-echo "Test docker_machine inventory 3: daemon_env=optional daemon env success=yes"
-ansible-inventory -i inventory_3.docker_machine.yml --list
-
-echo "Test docker_machine inventory 3: daemon_env=optional daemon env success=no"
-export MOCK_ERROR_IN=env
-ansible-inventory -i inventory_2.docker_machine.yml --list
-unset MOCK_ERROR_IN
-
-echo "Deactivate Docker Machine mock"
-PATH="${SAVED_PATH}"
diff --git a/test/integration/targets/inventory_docker_machine/teardown.docker_machine.yml b/test/integration/targets/inventory_docker_machine/teardown.docker_machine.yml
deleted file mode 100644
index 6258853dd8..0000000000
--- a/test/integration/targets/inventory_docker_machine/teardown.docker_machine.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-plugin: docker_machine
-daemon_env: skip
-running_required: no
diff --git a/test/integration/targets/inventory_docker_swarm/aliases b/test/integration/targets/inventory_docker_swarm/aliases
deleted file mode 100644
index ed231329c0..0000000000
--- a/test/integration/targets/inventory_docker_swarm/aliases
+++ /dev/null
@@ -1,11 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-destructive
-skip/docker # The tests sometimes make docker daemon unstable; hence,
- # we skip all docker-based CI runs to avoid disrupting
- # the whole CI system. On VMs, we restart docker daemon
- # after finishing the tests to minimize potential effects
- # on other tests.
-needs/root
diff --git a/test/integration/targets/inventory_docker_swarm/inventory_1.docker_swarm.yml b/test/integration/targets/inventory_docker_swarm/inventory_1.docker_swarm.yml
deleted file mode 100644
index e8e6d55e5e..0000000000
--- a/test/integration/targets/inventory_docker_swarm/inventory_1.docker_swarm.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-plugin: docker_swarm
-docker_host: unix://var/run/docker.sock
diff --git a/test/integration/targets/inventory_docker_swarm/inventory_2.docker_swarm.yml b/test/integration/targets/inventory_docker_swarm/inventory_2.docker_swarm.yml
deleted file mode 100644
index e36bd00f93..0000000000
--- a/test/integration/targets/inventory_docker_swarm/inventory_2.docker_swarm.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-plugin: docker_swarm
-docker_host: unix://var/run/docker.sock
-verbose_output: no
-include_host_uri: yes
diff --git a/test/integration/targets/inventory_docker_swarm/meta/main.yml b/test/integration/targets/inventory_docker_swarm/meta/main.yml
deleted file mode 100644
index 07da8c6dda..0000000000
--- a/test/integration/targets/inventory_docker_swarm/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
- - setup_docker
diff --git a/test/integration/targets/inventory_docker_swarm/playbooks/swarm_cleanup.yml b/test/integration/targets/inventory_docker_swarm/playbooks/swarm_cleanup.yml
deleted file mode 100644
index 9cf87159c6..0000000000
--- a/test/integration/targets/inventory_docker_swarm/playbooks/swarm_cleanup.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-- hosts: 127.0.0.1
- connection: local
- gather_facts: yes
- tasks:
- - name: Make sure swarm is removed
- docker_swarm:
- state: absent
- force: yes
-
- - name: remove docker pagkages
- action: "{{ ansible_facts.pkg_mgr }}"
- args:
- name:
- - docker
- - docker-ce
- - docker-ce-cli
- state: absent
diff --git a/test/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml b/test/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml
deleted file mode 100644
index 5b59c51a4f..0000000000
--- a/test/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- hosts: 127.0.0.1
- connection: local
- vars:
- docker_skip_cleanup: yes
-
- tasks:
- - name: Setup docker
- import_role:
- name: setup_docker
-
- - name: Create a Swarm cluster
- docker_swarm:
- state: present
- advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
diff --git a/test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_1.yml b/test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_1.yml
deleted file mode 100644
index 600a89b1da..0000000000
--- a/test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_1.yml
+++ /dev/null
@@ -1,58 +0,0 @@
----
-- hosts: 127.0.0.1
- connection: local # otherwise Ansible will complain that it cannot connect via ssh to 127.0.0.1:22
- gather_facts: no
- tasks:
- - name: Show all groups
- debug:
- var: groups
- - name: Make sure docker_swarm groups are there
- assert:
- that:
- - groups.all | length > 0
- - groups.leader | length == 1
- - groups.manager | length > 0
- - groups.worker | length >= 0
- - groups.nonleaders | length >= 0
-
-- hosts: all
- connection: local # otherwise Ansible will complain that it cannot connect via ssh to 127.0.0.1:22
- vars:
- # for some reason, Ansible can't find the Python interpreter when connecting to the nodes,
- # which is in fact just localhost in disguise. That's why we use ansible_playbook_python.
- ansible_python_interpreter: "{{ ansible_playbook_python }}"
- tasks:
- - name: Check for groups
- assert:
- that:
- - "groups.manager | length > 0"
- - "groups.worker | length >= 0"
- - "groups.leader | length == 1"
- run_once: yes
-
- - name: List manager group
- debug:
- var: groups.manager
- run_once: yes
-
- - name: List worker group
- debug:
- var: groups.worker
- run_once: yes
-
- - name: List leader group
- debug:
- var: groups.leader
- run_once: yes
-
- - name: Print ansible_host per host
- debug:
- var: ansible_host
-
- - name: Make sure docker_swarm_node_attributes is available
- assert:
- that:
- - docker_swarm_node_attributes is not undefined
- - name: Print docker_swarm_node_attributes per host
- debug:
- var: docker_swarm_node_attributes
diff --git a/test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_2.yml b/test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_2.yml
deleted file mode 100644
index b2a794d35b..0000000000
--- a/test/integration/targets/inventory_docker_swarm/playbooks/test_inventory_2.yml
+++ /dev/null
@@ -1,35 +0,0 @@
----
-- hosts: 127.0.0.1
- connection: local # otherwise Ansible will complain that it cannot connect via ssh to 127.0.0.1:22
- gather_facts: no
- tasks:
- - name: Show all groups
- debug:
- var: groups
- - name: Make sure docker_swarm groups are there
- assert:
- that:
- - groups.all | length > 0
- - groups.leader | length == 1
- - groups.manager | length > 0
- - groups.worker | length >= 0
- - groups.nonleaders | length >= 0
-
-- hosts: all
- connection: local # otherwise Ansible will complain that it cannot connect via ssh to 127.0.0.1:22
- vars:
- # for some reason, Ansible can't find the Python interpreter when connecting to the nodes,
- # which is in fact just localhost in disguise. That's why we use ansible_playbook_python.
- ansible_python_interpreter: "{{ ansible_playbook_python }}"
- tasks:
- - name: Make sure docker_swarm_node_attributes is not available
- assert:
- that:
- - docker_swarm_node_attributes is undefined
- - name: Make sure ansible_host_uri is available
- assert:
- that:
- - ansible_host_uri is defined
- - name: Print ansible_host_uri
- debug:
- var: ansible_host_uri
diff --git a/test/integration/targets/inventory_docker_swarm/runme.sh b/test/integration/targets/inventory_docker_swarm/runme.sh
deleted file mode 100755
index e2ba6869e8..0000000000
--- a/test/integration/targets/inventory_docker_swarm/runme.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-
-[[ -n "$DEBUG" || -n "$ANSIBLE_DEBUG" ]] && set -x
-
-set -euo pipefail
-
-cleanup() {
- echo "Cleanup"
- ansible-playbook playbooks/swarm_cleanup.yml
- echo "Done"
- exit 0
-}
-
-trap cleanup INT TERM EXIT
-
-echo "Setup"
-ANSIBLE_ROLES_PATH=.. ansible-playbook playbooks/swarm_setup.yml
-
-echo "Test docker_swarm inventory 1"
-ansible-playbook -i inventory_1.docker_swarm.yml playbooks/test_inventory_1.yml
-
-echo "Test docker_swarm inventory 2"
-ansible-playbook -i inventory_2.docker_swarm.yml playbooks/test_inventory_2.yml
diff --git a/test/integration/targets/inventory_kubevirt/aliases b/test/integration/targets/inventory_kubevirt/aliases
deleted file mode 100644
index 765b70da79..0000000000
--- a/test/integration/targets/inventory_kubevirt/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/posix/group2
diff --git a/test/integration/targets/inventory_kubevirt/constraints.txt b/test/integration/targets/inventory_kubevirt/constraints.txt
deleted file mode 100644
index c44f44e9de..0000000000
--- a/test/integration/targets/inventory_kubevirt/constraints.txt
+++ /dev/null
@@ -1 +0,0 @@
-setuptools < 45 ; python_version <= '2.7' # setuptools 45 and later require python 3.5 or later
diff --git a/test/integration/targets/inventory_kubevirt/inventory_diff.py b/test/integration/targets/inventory_kubevirt/inventory_diff.py
deleted file mode 100755
index ad8b70aa65..0000000000
--- a/test/integration/targets/inventory_kubevirt/inventory_diff.py
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env python
-
-import json
-import sys
-
-
-def check_hosts(contrib, plugin):
- contrib_hosts = sorted(contrib['_meta']['hostvars'].keys())
- plugin_hosts = sorted(plugin['_meta']['hostvars'].keys())
- assert contrib_hosts == plugin_hosts
- return contrib_hosts, plugin_hosts
-
-
-def check_groups(contrib, plugin):
- contrib_groups = set(contrib.keys())
- plugin_groups = set(plugin.keys())
- missing_groups = contrib_groups.difference(plugin_groups)
- if missing_groups:
- print("groups: %s are missing from the plugin" % missing_groups)
- assert not missing_groups
- return contrib_groups, plugin_groups
-
-
-def check_host_vars(key, value, plugin, host):
- # tags are a dict in the plugin
- if key.startswith('ec2_tag'):
- print('assert tag', key, value)
- assert 'tags' in plugin['_meta']['hostvars'][host], 'b file does not have tags in host'
- btags = plugin['_meta']['hostvars'][host]['tags']
- tagkey = key.replace('ec2_tag_', '')
- assert tagkey in btags, '%s tag not in b file host tags' % tagkey
- assert value == btags[tagkey], '%s != %s' % (value, btags[tagkey])
- else:
- print('assert var', key, value, key in plugin['_meta']['hostvars'][host], plugin['_meta']['hostvars'][host].get(key))
- assert key in plugin['_meta']['hostvars'][host], "%s not in b's %s hostvars" % (key, host)
- assert value == plugin['_meta']['hostvars'][host][key], "%s != %s" % (value, plugin['_meta']['hostvars'][host][key])
-
-
-def main():
- # a should be the source of truth (the script output)
- a = sys.argv[1]
- # b should be the thing to check (the plugin output)
- b = sys.argv[2]
-
- with open(a, 'r') as f:
- adata = json.loads(f.read())
- with open(b, 'r') as f:
- bdata = json.loads(f.read())
-
- print(adata)
- print(bdata)
-
- # all hosts should be present obviously
- ahosts, bhosts = check_hosts(adata, bdata)
-
- # all groups should be present obviously
- agroups, bgroups = check_groups(adata, bdata)
-
- # check host vars can be reconstructed
- for ahost in ahosts:
- contrib_host_vars = adata['_meta']['hostvars'][ahost]
- for key, value in contrib_host_vars.items():
- check_host_vars(key, value, bdata, ahost)
-
-
-if __name__ == "__main__":
- main()
diff --git a/test/integration/targets/inventory_kubevirt/runme.sh b/test/integration/targets/inventory_kubevirt/runme.sh
deleted file mode 100755
index 47e0fb7162..0000000000
--- a/test/integration/targets/inventory_kubevirt/runme.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env bash
-
-if [[ $(python --version 2>&1) =~ 2\.6 ]]
- then
- echo "Openshift client is not supported on Python 2.6"
- exit 0
-fi
-
-set -eux
-
-source virtualenv.sh
-pip install openshift -c constraints.txt
-
-./server.py &
-
-# Fake auth file
-mkdir -p ~/.kube/
-cat <<EOF > ~/.kube/config
-apiVersion: v1
-clusters:
-- cluster:
- insecure-skip-tls-verify: true
- server: http://localhost:12345
- name: development
-contexts:
-- context:
- cluster: development
- user: developer
- name: dev-frontend
-current-context: dev-frontend
-kind: Config
-preferences: {}
-users:
-- name: developer
- user:
- token: ZDNg7LzSlp8a0u0fht_tRnPMTOjxqgJGCyi_iy0ecUw
-EOF
-
-#################################################
-# RUN THE PLUGIN
-#################################################
-
-# run the plugin second
-export ANSIBLE_INVENTORY_ENABLED=kubevirt
-export ANSIBLE_INVENTORY=test.kubevirt.yml
-
-cat << EOF > "$OUTPUT_DIR/test.kubevirt.yml"
-plugin: kubevirt
-connections:
- - namespaces:
- - default
-EOF
-
-ANSIBLE_JINJA2_NATIVE=1 ansible-inventory -vvvv -i "$OUTPUT_DIR/test.kubevirt.yml" --list --output="$OUTPUT_DIR/plugin.out"
-kill -9 "$(jobs -p)"
-
-#################################################
-# DIFF THE RESULTS
-#################################################
-
-./inventory_diff.py "$(pwd)/test.out" "$OUTPUT_DIR/plugin.out"
diff --git a/test/integration/targets/inventory_kubevirt/server.py b/test/integration/targets/inventory_kubevirt/server.py
deleted file mode 100755
index 0a4303e68d..0000000000
--- a/test/integration/targets/inventory_kubevirt/server.py
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/env python
-
-import json
-import os
-
-try:
- from http.server import HTTPServer
- from http.server import SimpleHTTPRequestHandler
-except ImportError:
- from BaseHTTPServer import HTTPServer
- from SimpleHTTPServer import SimpleHTTPRequestHandler
-
-from threading import Thread
-
-try:
- from urllib.parse import urlparse
-except ImportError:
- from urlparse import urlparse
-
-
-class TestHandler(SimpleHTTPRequestHandler):
- # Path handlers:
- handlers = {}
-
- def log_message(self, format, *args):
- """
- Empty method, so we don't mix output of HTTP server with tests
- """
- pass
-
- def do_GET(self):
- params = urlparse(self.path)
-
- if params.path in self.handlers:
- self.handlers[params.path](self)
- else:
- SimpleHTTPRequestHandler.do_GET(self)
-
- def do_POST(self):
- params = urlparse(self.path)
-
- if params.path in self.handlers:
- self.handlers[params.path](self)
- else:
- SimpleHTTPRequestHandler.do_POST(self)
-
-
-class TestServer(object):
- # The host and port and path used by the embedded tests web server:
- PORT = None
-
- # The embedded web server:
- _httpd = None
- # Thread for http server:
- _thread = None
-
- def set_json_response(self, path, code, body):
- def _handle_request(handler):
- handler.send_response(code)
- handler.send_header('Content-Type', 'application/json')
- handler.end_headers()
-
- data = json.dumps(body, ensure_ascii=False).encode('utf-8')
- handler.wfile.write(data)
-
- TestHandler.handlers[path] = _handle_request
-
- def start_server(self, host='localhost'):
- self._httpd = HTTPServer((host, 12345), TestHandler)
- self._thread = Thread(target=self._httpd.serve_forever)
- self._thread.start()
-
- def stop_server(self):
- self._httpd.shutdown()
- self._thread.join()
-
-
-if __name__ == '__main__':
- print(os.getpid())
- server = TestServer()
- server.start_server()
- server.set_json_response(path="/version", code=200, body={})
- server.set_json_response(path="/api", code=200, body={
- "kind": "APIVersions", "versions": ["v1"], "serverAddressByClientCIDRs": [{"clientCIDR": "0.0.0.0/0", "serverAddress": "localhost:12345"}]
- })
- server.set_json_response(path="/api/v1", code=200, body={'resources': {}})
- server.set_json_response(path="/apis", code=200, body={
- "kind": "APIGroupList", "apiVersion": "v1",
- "groups": [{
- "name": "kubevirt.io", "versions": [{"groupVersion": "kubevirt.io/v1alpha3", "version": "v1alpha3"}],
- "preferredVersion": {"groupVersion": "kubevirt.io/v1alpha3", "version": "v1alpha3"}
- }]
- })
- server.set_json_response(
- path="/apis/kubevirt.io/v1alpha3",
- code=200,
- body={
- "kind": "APIResourceList", "apiVersion": "v1", "groupVersion": "kubevirt.io/v1alpha3",
- "resources": [{
- "name": "virtualmachineinstances", "singularName": "virtualmachineinstance",
- "namespaced": True, "kind": "VirtualMachineInstance",
- "verbs": ["delete", "deletecollection", "get", "list", "patch", "create", "update", "watch"],
- "shortNames":["vmi", "vmis"]
- }]
- }
- )
- server.set_json_response(
- path="/apis/kubevirt.io/v1alpha3/namespaces/default/virtualmachineinstances",
- code=200,
- body={'apiVersion': 'kubevirt.io/v1alpha3',
- 'items': [{'apiVersion': 'kubevirt.io/v1alpha3',
- 'kind': 'VirtualMachineInstance',
- 'metadata': {'annotations': {'ansible': '{"data1": "yes", "data2": "no"}'},
- 'creationTimestamp': '2019-04-05T14:17:02Z',
- 'generateName': 'myvm',
- 'generation': 1,
- 'labels': {'kubevirt.io/nodeName': 'localhost',
- 'label': 'x',
- 'vm.cnv.io/name': 'myvm'},
- 'name': 'myvm',
- 'namespace': 'default',
- 'ownerReferences': [{'apiVersion': 'kubevirt.io/v1alpha3',
- 'blockOwnerDeletion': True,
- 'controller': True,
- 'kind': 'VirtualMachine',
- 'name': 'myvm',
- 'uid': 'f78ebe62-5666-11e9-a214-0800279ffc6b'}],
- 'resourceVersion': '1614085',
- 'selfLink': '/apis/kubevirt.io/v1alpha3/namespaces/default/virtualmachineinstances/myvm',
- 'uid': '7ba1b196-57ad-11e9-9e2e-0800279ffc6b'},
- 'spec': {'domain': {'devices': {'disks': [{'disk': {'bus': 'virtio'},
- 'name': 'containerdisk'},
- {'disk': {'bus': 'virtio'}, 'name': 'ansiblecloudinitdisk'}],
- 'interfaces': [{'bridge': {}, 'name': 'default'}]},
- 'firmware': {'uuid': 'cdf77e9e-871b-5acb-a707-80ef3d4b9849'},
- 'machine': {'type': ''},
- 'resources': {'requests': {'memory': '64M'}}},
- 'networks': [{'name': 'default', 'pod': {}}],
- 'volumes': [{'containerDisk': {'image': 'kubevirt/cirros-container-disk-demo:v0.11.0'},
- 'name': 'containerdisk'},
- {'cloudInitNoCloud': {'userData': '#cloud-config\npassword: password\nchpasswd: { expire: False }'},
- 'name': 'ansiblecloudinitdisk'}]},
- 'status': {'conditions': [{'lastProbeTime': None,
- 'lastTransitionTime': None,
- 'status': 'True',
- 'type': 'LiveMigratable'},
- {'lastProbeTime': None,
- 'lastTransitionTime': '2019-04-05T14:17:27Z',
- 'status': 'True',
- 'type': 'Ready'}],
- 'interfaces': [{'ipAddress': '172.17.0.19',
- 'mac': '02:42:ac:11:00:13',
- 'name': 'default'}],
- 'migrationMethod': 'BlockMigration',
- 'nodeName': 'localhost',
- 'phase': 'Running'}}],
- 'kind': 'VirtualMachineInstanceList',
- 'metadata': {'continue': '',
- 'resourceVersion': '1614862',
- 'selfLink': '/apis/kubevirt.io/v1alpha3/namespaces/default/virtualmachineinstances'}}
- )
diff --git a/test/integration/targets/inventory_kubevirt/test.out b/test/integration/targets/inventory_kubevirt/test.out
deleted file mode 100644
index 932aade09a..0000000000
--- a/test/integration/targets/inventory_kubevirt/test.out
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "_meta": {
- "hostvars": {
- "default-myvm-7ba1b196-57ad-11e9-9e2e-0800279ffc6b": {
- "annotations": {
- "ansible": "{\"data1\": \"yes\", \"data2\": \"no\"}"
- },
- "ansible_host": "172.17.0.19",
- "data1": "yes",
- "data2": "no",
- "labels": {
- "kubevirt.io/nodeName": "localhost",
- "label": "x",
- "vm.cnv.io/name": "myvm"
- },
- "object_type": "vm",
- "resource_version": "1614085",
- "uid": "7ba1b196-57ad-11e9-9e2e-0800279ffc6b"
- }
- }
- },
- "all": {
- "children": [
- "label_kubevirt_io_nodeName_localhost",
- "label_label_x",
- "label_vm_cnv_io_name_myvm",
- "localhost_12345",
- "ungrouped"
- ]
- },
- "label_kubevirt_io_nodeName_localhost": {
- "hosts": [
- "default-myvm-7ba1b196-57ad-11e9-9e2e-0800279ffc6b"
- ]
- },
- "label_label_x": {
- "hosts": [
- "default-myvm-7ba1b196-57ad-11e9-9e2e-0800279ffc6b"
- ]
- },
- "label_vm_cnv_io_name_myvm": {
- "hosts": [
- "default-myvm-7ba1b196-57ad-11e9-9e2e-0800279ffc6b"
- ]
- },
- "localhost_12345": {
- "children": [
- "namespace_default"
- ]
- },
- "namespace_default": {
- "children": [
- "namespace_default_vms"
- ]
- },
- "namespace_default_vms": {
- "hosts": [
- "default-myvm-7ba1b196-57ad-11e9-9e2e-0800279ffc6b"
- ]
- }
-}
diff --git a/test/integration/targets/ipify_facts/aliases b/test/integration/targets/ipify_facts/aliases
deleted file mode 100644
index 765b70da79..0000000000
--- a/test/integration/targets/ipify_facts/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/posix/group2
diff --git a/test/integration/targets/ipify_facts/tasks/main.yml b/test/integration/targets/ipify_facts/tasks/main.yml
deleted file mode 100644
index ad4a6d72e0..0000000000
--- a/test/integration/targets/ipify_facts/tasks/main.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-# Test code for the ipify_facts
-# (c) 2017, Abhijeet Kasurde <akasurde@redhat.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-- debug: var=ansible_distribution
-- debug: var=ansible_distribution_version
-
-- set_fact:
- validate_certs: false
- when: (ansible_distribution == "MacOSX" and ansible_distribution_version == "10.11.1")
-
-- name: get information about current IP using ipify facts
- ipify_facts:
- timeout: 30
- validate_certs: "{{ validate_certs }}"
- register: external_ip
- until: external_ip is successful
- retries: 5
- delay: 10
-
-- name: check if task was successful
- assert:
- that:
- - "{{ external_ip.changed == false }}"
- - "{{ external_ip['ansible_facts'] is defined }}"
- - "{{ external_ip['ansible_facts']['ipify_public_ip'] is defined }}"
diff --git a/test/integration/targets/ipify_facts/vars/main.yml b/test/integration/targets/ipify_facts/vars/main.yml
deleted file mode 100644
index 1ccaab4669..0000000000
--- a/test/integration/targets/ipify_facts/vars/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-validate_certs: true
diff --git a/test/integration/targets/ipwcli_dns/aliases b/test/integration/targets/ipwcli_dns/aliases
deleted file mode 100644
index bd8385aced..0000000000
--- a/test/integration/targets/ipwcli_dns/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-# There is no Ericsson IPWorks
-unsupported
diff --git a/test/integration/targets/ipwcli_dns/tasks/main.yml b/test/integration/targets/ipwcli_dns/tasks/main.yml
deleted file mode 100644
index 8dbac5b0c8..0000000000
--- a/test/integration/targets/ipwcli_dns/tasks/main.yml
+++ /dev/null
@@ -1,106 +0,0 @@
-# Test code for ipwcli_dns
-
-- name: variables username, password, container, tld must be set
- fail:
- msg: 'Please set the variables: username, password, container and tld.'
- when: username is not defined or password is not defined or container is not defined or tld is not defined
-
-- name: add a new A record
- ipwcli_dns:
- dnsname: example.{{ tld }}
- type: A
- container: '{{ container }}'
- address: 127.0.0.1
- ttl: 100
- username: '{{ username }}'
- password: '{{ password }}'
- register: result
-
-- name: assert the new A record is added
- assert:
- that:
- - result is not failed
- - result is changed
- - result.record == 'arecord example.{{ tld }} 127.0.0.1 -set ttl=100;container={{ container }}'
-
-- name: delete the A record
- ipwcli_dns:
- dnsname: example.{{ tld }}
- type: A
- container: '{{ container }}'
- address: 127.0.0.1
- ttl: 100
- username: '{{ username }}'
- password: '{{ password }}'
- state: absent
- register: result
-
-- name: assert the new A record is deleted
- assert:
- that:
- - result is not failed
- - result is changed
- - result.record == 'arecord example.{{ tld }} 127.0.0.1 -set ttl=100;container={{ container }}'
-
-- name: delete not existing SRV record
- ipwcli_dns:
- dnsname: _sip._tcp.test.example.{{ tld }}
- type: SRV
- container: '{{ container }}'
- target: example.{{ tld }}
- port: 5060
- username: '{{ username }}'
- password: '{{ password }}'
- state: absent
- register: result
-
-- name: assert the new a record
- assert:
- that:
- - result is not failed
- - result is not changed
- - result.record ==
- 'srvrecord _sip._tcp.test.example.{{ tld }} -set ttl=3600;container={{ container }};priority=10;weight=10;port=5060;target=example.{{ tld }}'
-
-- name: add a SRV record with weight > 65535 against RFC 2782
- ipwcli_dns:
- dnsname: _sip._tcp.test.example.{{ tld }}
- type: SRV
- container: '{{ container }}'
- ttl: 100
- target: example.{{ tld }}
- port: 5060
- weight: 65536
- username: '{{ username }}'
- password: '{{ password }}'
- register: result
- ignore_errors: yes
-
-- name: assert the failure of the new SRV record
- assert:
- that:
- - result is failed
- - result is not changed
- - "'Out of UINT16 range' in result.stderr"
-
-- name: add NAPTR record (check_mode)
- ipwcli_dns:
- dnsname: test.example.{{ tld }}
- type: NAPTR
- preference: 10
- container: '{{ container }}'
- ttl: 100
- order: 10
- service: 'SIP+D2T'
- replacement: '_sip._tcp.test.example.{{ tld }}.'
- flags: S
- username: '{{ username }}'
- password: '{{ password }}'
- check_mode: yes
- register: result
-
-- name: assert the NAPTR check_mode
- assert:
- that:
- - result is not failed
- - result is changed
diff --git a/test/integration/targets/iso_extract/aliases b/test/integration/targets/iso_extract/aliases
deleted file mode 100644
index 0b484bbab6..0000000000
--- a/test/integration/targets/iso_extract/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group1
-destructive
-skip/aix
diff --git a/test/integration/targets/iso_extract/files/test.iso b/test/integration/targets/iso_extract/files/test.iso
deleted file mode 100644
index d06ff73ca5..0000000000
--- a/test/integration/targets/iso_extract/files/test.iso
+++ /dev/null
Binary files differ
diff --git a/test/integration/targets/iso_extract/meta/main.yml b/test/integration/targets/iso_extract/meta/main.yml
deleted file mode 100644
index ffbb9b93a0..0000000000
--- a/test/integration/targets/iso_extract/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-dependencies:
- - prepare_tests
- - setup_epel
diff --git a/test/integration/targets/iso_extract/tasks/7zip.yml b/test/integration/targets/iso_extract/tasks/7zip.yml
deleted file mode 100644
index a6bf95ad84..0000000000
--- a/test/integration/targets/iso_extract/tasks/7zip.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Test code for the iso_extract module.
-# (c) 2017, James Tanner <tanner.jc@gmail.com>
-# (c) 2017, Dag Wieers <dag@wieers.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: Gather facts
- setup:
- become: yes
-
-- name: Include distribution specific variables
- include_vars: "{{ lookup('first_found', params) }}"
- vars:
- params:
- files:
- - "{{ ansible_facts.distribution }}.yml"
- - "{{ ansible_facts.os_family }}.yml"
- - default.yml
- paths:
- - "{{ role_path }}/vars"
-
-- name: "{{ ansible_facts.os_family | upper }} | Install 7zip package"
- action: "{{ ansible_facts.pkg_mgr }}"
- args:
- name: "{{ iso_extract_7zip_package }}"
- state: present
- when: ansible_facts.distribution != 'MacOSX'
-
-- name: macOS
- when: ansible_facts.distribution == 'MacOSX'
- block:
- - name: MACOS | Find brew binary
- command: which brew
- register: brew_which
- when: ansible_distribution in ['MacOSX']
-
- - name: MACOS | Get owner of brew binary
- stat:
- path: "{{ brew_which.stdout }}"
- register: brew_stat
- when: ansible_distribution in ['MacOSX']
-
- - name: MACOS | Install 7zip package
- homebrew:
- name: p7zip
- state: present
- update_homebrew: no
- become: yes
- become_user: "{{ brew_stat.stat.pw_name }}"
- # Newer versions of brew want to compile a package which takes a long time. Do not upgrade homebrew until a
- # proper solution can be found
- environment:
- HOMEBREW_NO_AUTO_UPDATE: True
diff --git a/test/integration/targets/iso_extract/tasks/main.yml b/test/integration/targets/iso_extract/tasks/main.yml
deleted file mode 100644
index c8eb6d1b3a..0000000000
--- a/test/integration/targets/iso_extract/tasks/main.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-# Test code for the iso_extract module.
-# (c) 2017, James Tanner <tanner.jc@gmail.com>
-# (c) 2017, Dag Wieers <dag@wieers.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- set_fact:
- output_dir_test: '{{ output_dir }}/test_iso_extract'
-
-- name: Install 7zip
- import_tasks: 7zip.yml
-
-- name: Prepare environment
- import_tasks: prepare.yml
-
-- name: Test in normal mode
- import_tasks: tests.yml
- vars:
- in_check_mode: no
-
-- name: Prepare environment
- import_tasks: prepare.yml
-
-- name: Test in check-mode
- import_tasks: tests.yml
- vars:
- in_check_mode: yes
- check_mode: yes
-
-# FIXME - fill this in after figuring out how to allow mounts
diff --git a/test/integration/targets/iso_extract/tasks/prepare.yml b/test/integration/targets/iso_extract/tasks/prepare.yml
deleted file mode 100644
index 78c06ad52c..0000000000
--- a/test/integration/targets/iso_extract/tasks/prepare.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-# Test code for the iso_extract module.
-# (c) 2017, James Tanner <tanner.jc@gmail.com>
-# (c) 2017, Dag Wieers <dag@wieers.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: Make sure our testing sub-directory does not exist
- file:
- path: '{{ output_dir_test }}'
- state: absent
-
-- name: Create our testing sub-directory
- file:
- path: '{{ output_dir_test }}'
- state: directory
-
-- name: copy the iso to the test dir
- copy:
- src: test.iso
- dest: '{{ output_dir_test }}'
diff --git a/test/integration/targets/iso_extract/tasks/tests.yml b/test/integration/targets/iso_extract/tasks/tests.yml
deleted file mode 100644
index f9182ba6ae..0000000000
--- a/test/integration/targets/iso_extract/tasks/tests.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-# Test code for the iso_extract module.
-# (c) 2017, James Tanner <tanner.jc@gmail.com>
-# (c) 2017, Dag Wieers <dag@wieers.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: Extract the iso
- iso_extract:
- image: '{{ output_dir_test }}/test.iso'
- dest: '{{ output_dir_test }}'
- files:
- - 1.txt
- - 2.txt
- register: iso_extract_test0
-
-- assert:
- that:
- - iso_extract_test0 is changed == true
-
-- name: Extract the iso again
- iso_extract:
- image: '{{ output_dir_test }}/test.iso'
- dest: '{{ output_dir_test }}'
- files:
- - 1.txt
- - 2.txt
- register: iso_extract_test0_again
-
-- name: Test iso_extract_test0_again (normal mode)
- assert:
- that:
- - iso_extract_test0_again is changed == false
- when: not in_check_mode
-
-- name: Test iso_extract_test0_again (check-mode)
- assert:
- that:
- - iso_extract_test0_again is changed == true
- when: in_check_mode
diff --git a/test/integration/targets/iso_extract/vars/FreeBSD.yml b/test/integration/targets/iso_extract/vars/FreeBSD.yml
deleted file mode 100644
index f9e7ca1a9a..0000000000
--- a/test/integration/targets/iso_extract/vars/FreeBSD.yml
+++ /dev/null
@@ -1 +0,0 @@
-iso_extract_7zip_package: p7zip
diff --git a/test/integration/targets/iso_extract/vars/RedHat.yml b/test/integration/targets/iso_extract/vars/RedHat.yml
deleted file mode 100644
index aa925a79e9..0000000000
--- a/test/integration/targets/iso_extract/vars/RedHat.yml
+++ /dev/null
@@ -1 +0,0 @@
-iso_extract_7zip_package: p7zip-plugins
diff --git a/test/integration/targets/iso_extract/vars/Suse.yml b/test/integration/targets/iso_extract/vars/Suse.yml
deleted file mode 100644
index f9e7ca1a9a..0000000000
--- a/test/integration/targets/iso_extract/vars/Suse.yml
+++ /dev/null
@@ -1 +0,0 @@
-iso_extract_7zip_package: p7zip
diff --git a/test/integration/targets/iso_extract/vars/Ubuntu.yml b/test/integration/targets/iso_extract/vars/Ubuntu.yml
deleted file mode 100644
index 219c495764..0000000000
--- a/test/integration/targets/iso_extract/vars/Ubuntu.yml
+++ /dev/null
@@ -1 +0,0 @@
-iso_extract_7zip_package: p7zip-full
diff --git a/test/integration/targets/iso_extract/vars/default.yml b/test/integration/targets/iso_extract/vars/default.yml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/iso_extract/vars/default.yml
+++ /dev/null
diff --git a/test/integration/targets/java_cert/aliases b/test/integration/targets/java_cert/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/java_cert/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/java_cert/defaults/main.yml b/test/integration/targets/java_cert/defaults/main.yml
deleted file mode 100644
index 22723ff177..0000000000
--- a/test/integration/targets/java_cert/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-test_pkcs12_path: testpkcs.p12
-test_keystore_path: keystore.jks \ No newline at end of file
diff --git a/test/integration/targets/java_cert/files/testpkcs.p12 b/test/integration/targets/java_cert/files/testpkcs.p12
deleted file mode 100644
index e0fee618c7..0000000000
--- a/test/integration/targets/java_cert/files/testpkcs.p12
+++ /dev/null
Binary files differ
diff --git a/test/integration/targets/java_cert/tasks/main.yml b/test/integration/targets/java_cert/tasks/main.yml
deleted file mode 100644
index 7d5a17e3c9..0000000000
--- a/test/integration/targets/java_cert/tasks/main.yml
+++ /dev/null
@@ -1,53 +0,0 @@
----
-- name: prep pkcs12 file
- copy: src="{{ test_pkcs12_path }}" dest="{{output_dir}}/{{ test_pkcs12_path }}"
-
-- name: import pkcs12
- java_cert:
- pkcs12_path: "{{output_dir}}/{{ test_pkcs12_path }}"
- pkcs12_password: changeit
- pkcs12_alias: default
- cert_alias: default
- keystore_path: "{{output_dir}}/{{ test_keystore_path }}"
- keystore_pass: changeme_keystore
- keystore_create: yes
- state: present
- register: result_success
-- name: verify success
- assert:
- that:
- - result_success is successful
-
-- name: import pkcs12 with wrong password
- java_cert:
- pkcs12_path: "{{output_dir}}/{{ test_pkcs12_path }}"
- pkcs12_password: wrong_pass
- pkcs12_alias: default
- cert_alias: default_new
- keystore_path: "{{output_dir}}/{{ test_keystore_path }}"
- keystore_pass: changeme_keystore
- keystore_create: yes
- state: present
- ignore_errors: true
- register: result_wrong_pass
-
-- name: verify fail with wrong import password
- assert:
- that:
- - result_wrong_pass is failed
-
-- name: test fail on mutually exclusive params
- java_cert:
- cert_path: ca.crt
- pkcs12_path: "{{output_dir}}/{{ test_pkcs12_path }}"
- cert_alias: default
- keystore_path: "{{output_dir}}/{{ test_keystore_path }}"
- keystore_pass: changeme_keystore
- keystore_create: yes
- state: present
- ignore_errors: true
- register: result_excl_params
-- name: verify failed exclusive params
- assert:
- that:
- - result_excl_params is failed
diff --git a/test/integration/targets/jboss/aliases b/test/integration/targets/jboss/aliases
deleted file mode 100644
index 8251a83e7f..0000000000
--- a/test/integration/targets/jboss/aliases
+++ /dev/null
@@ -1,7 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
-needs/root
diff --git a/test/integration/targets/jboss/meta/main.yml b/test/integration/targets/jboss/meta/main.yml
deleted file mode 100644
index 000178657d..0000000000
--- a/test/integration/targets/jboss/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
-- setup_wildfly_server
diff --git a/test/integration/targets/jboss/tasks/jboss.yml b/test/integration/targets/jboss/tasks/jboss.yml
deleted file mode 100644
index 9f9720a72f..0000000000
--- a/test/integration/targets/jboss/tasks/jboss.yml
+++ /dev/null
@@ -1,236 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# Integration tests for jboss module.
-
-# helloworld.war (got from https://github.com/aeimer/java-example-helloworld-war/) license:
-# MIT License
-#
-# Copyright (c) 2017 Alex Eimer
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#
-# ===============================
-# Module's note section contains:
-# "- The JBoss standalone deployment-scanner has to be enabled in standalone.xml"
-#
-# Also from https://docs.jboss.org/author/display/WFLY10/Application+deployment?_sscc=t
-# "Deployment content (for example, war, ear, jar, and sar files) can be placed
-# in the standalone/deployments directory of the WildFly distribution,
-# in order to be automatically deployed into the server runtime.
-# For this to work the deployment-scanner subsystem must be present.
-# The scanner periodically checks the contents of the deployments directory
-# and reacts to changes by updating the server."
-# Regarding the information above JBoss server must be installed and running for full test suite.
-# We use WildFly server, free alternative, instead. See setup_wildfly_server role for more information.
-
-- vars:
- war_file_1: 'helloworld-1.war'
- war_file_1_path: '{{ wf_homedir }}/{{ war_file_1 }}'
- fake_src_path: /fake/src
- test_deployment: helloworld-1.war
- task_parameters: &task_parameters
- become_user: '{{ wf_user }}'
- become: yes
- register: result
-
- block:
- - name: Create test files
- <<: *task_parameters
- get_url:
- url: 'https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/jboss/{{ war_file_1 }}'
- dest: '{{ wf_homedir }}'
-
- ##################
- # Start the tests:
-
- # Test if state=present and not deployed, check_mode:
- - name: jboss - deploy war in check_mode, the default deploy_path
- <<: *task_parameters
- jboss:
- deployment: '{{ war_file_1 }}'
- src: '{{ war_file_1_path }}'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
-
- # Check
- - name: check that nothing changed after the previous step
- <<: *task_parameters
- file:
- path: '{{ deploy_dir }}/{{ war_file_1 }}.deployed'
- ignore_errors: yes
-
- - assert:
- that:
- - "'is absent' in result.msg"
-
- # Test if state=present and not deployed, actual mode:
- - name: jboss - deploy war
- <<: *task_parameters
- jboss:
- deployment: helloworld-1.war
- deploy_path: '{{ deploy_dir }}'
- src: '{{ war_file_1_path }}'
-
- - assert:
- that:
- - result is changed
-
- # Check
- - name: check that the file is deployed after the previous step
- <<: *task_parameters
- file:
- path: '{{ deploy_dir }}/{{ war_file_1 }}.deployed'
-
- - assert:
- that:
- - result.state == 'file'
-
- # Test if state=present and deployed in check mode, try again:
- - name: jboss - try again to deploy war in check_mode, war is deployed now
- <<: *task_parameters
- jboss:
- deployment: '{{ war_file_1 }}'
- src: '{{ war_file_1_path }}'
- deploy_path: '{{ deploy_dir }}'
- check_mode: yes
-
- - assert:
- that:
- - result is not changed
-
- # Test if state=present and deployed, try again:
- - name: jboss - try again to deploy war in actual mode, war is deployed now
- <<: *task_parameters
- jboss:
- deployment: '{{ war_file_1 }}'
- src: '{{ war_file_1_path }}'
- deploy_path: '{{ deploy_dir }}'
-
- - assert:
- that:
- - result is not changed
-
- # Check
- - name: check that nothing changed after the previous step
- <<: *task_parameters
- file:
- path: '{{ deploy_dir }}/{{ war_file_1 }}.deployed'
-
- - assert:
- that:
- - result.state == 'file'
-
- # Test if state=absent and deployed:
- - name: jboss - undeploy war in check_mode, war is deployed
- <<: *task_parameters
- jboss:
- deployment: '{{ war_file_1 }}'
- deploy_path: '{{ deploy_dir }}'
- state: absent
- check_mode: yes
-
- - assert:
- that:
- - result is changed
-
- - name: check that nothing actually changed after the previous step
- <<: *task_parameters
- file:
- path: '{{ deploy_dir }}/{{ war_file_1 }}.deployed'
-
- - assert:
- that:
- - result.state == 'file'
-
- # Test if state=absent and deployed:
- - name: jboss - undeploy war in actual mode, war is deployed
- <<: *task_parameters
- jboss:
- deployment: '{{ war_file_1 }}'
- deploy_path: '{{ deploy_dir }}'
- state: absent
-
- - assert:
- that:
- - result is changed
-
- - name: check that file is undeployed after the previous step
- <<: *task_parameters
- file:
- path: '{{ deploy_dir }}/{{ war_file_1 }}.undeployed'
-
- - assert:
- that:
- - result.state == 'file'
-
- # Test if state=absent and undeployed:
- - name: jboss - undeploy war in check_mode, war is undeployed
- <<: *task_parameters
- jboss:
- deployment: '{{ war_file_1 }}'
- deploy_path: '{{ deploy_dir }}'
- state: absent
- check_mode: yes
-
- - assert:
- that:
- - result is not changed
-
- # Test if state=absent and undeployed:
- - name: jboss - undeploy war in actual_mode, war is undeployed
- <<: *task_parameters
- jboss:
- deployment: '{{ war_file_1 }}'
- deploy_path: '{{ deploy_dir }}'
- state: absent
-
- - assert:
- that:
- - result is not changed
-
- # Test fake src:
- - name: jboss - test fake src
- <<: *task_parameters
- jboss:
- deployment: '{{ war_file_1 }}'
- deploy_path: '{{ deploy_dir }}'
- src: '{{ fake_src_path }}'
- state: present
- ignore_errors: yes
-
- - assert:
- that:
- - result is failed
- - "'Source file {{ fake_src_path }} does not exist.' in result.msg"
-
- # Test errors where state=present and src is not passed:
- - name: jboss - must fail when state=present and src is not passed
- <<: *task_parameters
- jboss:
- deployment: '{{ war_file_1 }}'
- state: present
- ignore_errors: yes
-
- - assert:
- that:
- - result is failed
- - "'state is present but all of the following are missing: src' in result.msg"
diff --git a/test/integration/targets/jboss/tasks/main.yml b/test/integration/targets/jboss/tasks/main.yml
deleted file mode 100644
index 23c77b10c0..0000000000
--- a/test/integration/targets/jboss/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- import_tasks: jboss.yml
diff --git a/test/integration/targets/listen_ports_facts/aliases b/test/integration/targets/listen_ports_facts/aliases
deleted file mode 100644
index 89156bfdfc..0000000000
--- a/test/integration/targets/listen_ports_facts/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group3
-destructive
-skip/aix
-skip/osx
-skip/freebsd
diff --git a/test/integration/targets/listen_ports_facts/tasks/main.yml b/test/integration/targets/listen_ports_facts/tasks/main.yml
deleted file mode 100644
index 02d6ed57ca..0000000000
--- a/test/integration/targets/listen_ports_facts/tasks/main.yml
+++ /dev/null
@@ -1,85 +0,0 @@
-# Test playbook for the listen_ports_facts module
-# Copyright: (c) 2019, Nathan Davison <ndavison85@gmail.com>
-
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: install netstat and netcat on deb
- apt:
- name: "{{ item }}"
- state: latest
- with_items:
- - net-tools
- - netcat
- when: ansible_os_family == "Debian"
-
-- name: install netstat and netcat on rh < 7
- yum:
- name: "{{ item }}"
- state: latest
- with_items:
- - net-tools
- - nc.x86_64
- when: ansible_os_family == "RedHat" and ansible_distribution_major_version|int < 7
-
-- name: install netstat and netcat on rh >= 7
- yum:
- name: "{{ item }}"
- state: latest
- with_items:
- - net-tools
- - nmap-ncat
- when: ansible_os_family == "RedHat" and ansible_distribution_major_version|int >= 7
-
-- name: start UDP server on port 5555
- command: nc -u -l -p 5555
- async: 1000
- poll: 0
- when: (ansible_os_family == "RedHat" and ansible_distribution_major_version|int >= 7) or ansible_os_family == "Debian"
-
-- name: start UDP server on port 5555
- command: nc -u -l 5555
- async: 1000
- poll: 0
- when: ansible_os_family == "RedHat" and ansible_distribution_major_version|int < 7
-
-- name: start TCP server on port 5556
- command: "nc -l -p 5556"
- async: 1000
- poll: 0
- when: (ansible_os_family == "RedHat" and ansible_distribution_major_version|int >= 7) or ansible_os_family == "Debian"
-
-- name: start TCP server on port 5556
- command: "nc -l 5556"
- async: 1000
- poll: 0
- when: ansible_os_family == "RedHat" and ansible_distribution_major_version|int < 7
-
-- name: Gather listening ports facts
- listen_ports_facts:
- when: ansible_os_family == "RedHat" or ansible_os_family == "Debian"
-
-- name: check for ansible_facts.udp_listen exists
- assert:
- that: ansible_facts.udp_listen is defined
- when: ansible_os_family == "RedHat" or ansible_os_family == "Debian"
-
-- name: check for ansible_facts.tcp_listen exists
- assert:
- that: ansible_facts.tcp_listen is defined
- when: ansible_os_family == "RedHat" or ansible_os_family == "Debian"
-
-- name: check TCP 5556 is in listening ports
- assert:
- that: 5556 in ansible_facts.tcp_listen | map(attribute='port') | sort | list
- when: (ansible_os_family == "RedHat" and ansible_distribution_major_version|int >= 7) or ansible_os_family == "Debian"
-
-- name: check UDP 5555 is in listening ports
- assert:
- that: 5555 in ansible_facts.udp_listen | map(attribute='port') | sort | list
- when: (ansible_os_family == "RedHat" and ansible_distribution_major_version|int >= 7) or ansible_os_family == "Debian"
-
-- name: kill all async commands
- command: "kill -9 {{ item.pid }}"
- loop: "{{ [tcp_listen, udp_listen]|flatten }}"
- when: item.name == 'nc'
- ignore_errors: true
diff --git a/test/integration/targets/locale_gen/aliases b/test/integration/targets/locale_gen/aliases
deleted file mode 100644
index be6db963e7..0000000000
--- a/test/integration/targets/locale_gen/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-needs/root
-shippable/posix/group3
-skip/aix
diff --git a/test/integration/targets/locale_gen/meta/main.yml b/test/integration/targets/locale_gen/meta/main.yml
deleted file mode 100644
index 07faa21776..0000000000
--- a/test/integration/targets/locale_gen/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_tests
diff --git a/test/integration/targets/locale_gen/tasks/locale_gen.yml b/test/integration/targets/locale_gen/tasks/locale_gen.yml
deleted file mode 100644
index ae316977f5..0000000000
--- a/test/integration/targets/locale_gen/tasks/locale_gen.yml
+++ /dev/null
@@ -1,94 +0,0 @@
-- name: Is the locale we're going to test against installed?
- shell: locale -a | grep pt_BR
- register: initial_state
- ignore_errors: True
-
-- name: Make sure the locale is not installed
- locale_gen:
- name: pt_BR
- state: absent
-
-- name: Is the locale present?
- shell: locale -a | grep pt_BR
- register: cleaned
- ignore_errors: True
-
-- name: Make sure the locale is not present
- assert:
- that:
- - "cleaned.rc == 1"
-
-- name: Install the locale
- locale_gen:
- name: pt_BR
- state: present
- register: output
-
-- name: Is the locale present?
- shell: locale -a | grep pt_BR
- register: post_check_output
- ignore_errors: True
-
-- name: Make sure the locale is present and we say we installed it
- assert:
- that:
- - "post_check_output.rc == 0"
- - "output.changed"
-
-- name: Install the locale a second time
- locale_gen:
- name: pt_BR
- state: present
- register: output
-
-- name: Is the locale present?
- shell: locale -a | grep pt_BR
- register: post_check_output
- ignore_errors: True
-
-- name: Make sure the locale is present and we reported no change
- assert:
- that:
- - "post_check_output.rc == 0"
- - "not output.changed"
-
-- name: Remove the locale
- locale_gen:
- name: pt_BR
- state: absent
- register: output
-
-- name: Is the locale present?
- shell: locale -a | grep pt_BR
- register: post_check_output
- ignore_errors: True
-
-- name: Make sure the locale is absent and we reported a change
- assert:
- that:
- - "post_check_output.rc == 1"
- - "output.changed"
-
-- name: Remove the locale a second time
- locale_gen:
- name: pt_BR
- state: absent
- register: output
-
-- name: Is the locale present?
- shell: locale -a | grep pt_BR
- register: post_check_output
- ignore_errors: True
-
-- name: Make sure the locale is absent and we reported no change
- assert:
- that:
- - "post_check_output.rc == 1"
- - "not output.changed"
-
-# Cleanup
-- name: Reinstall the locale we tested against if it was initially installed
- locale_gen:
- name: pt_BR
- state: present
- when: initial_state.rc == 0
diff --git a/test/integration/targets/locale_gen/tasks/main.yml b/test/integration/targets/locale_gen/tasks/main.yml
deleted file mode 100644
index 4fb1b9dd28..0000000000
--- a/test/integration/targets/locale_gen/tasks/main.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-# (c) 2014, James Tanner <tanner.jc@gmail.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- include: 'locale_gen.yml'
- when: ansible_distribution in ('Ubuntu', 'Debian')
diff --git a/test/integration/targets/lookup_cartesian/aliases b/test/integration/targets/lookup_cartesian/aliases
deleted file mode 100644
index 07b8702010..0000000000
--- a/test/integration/targets/lookup_cartesian/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group1
-skip/aix
-skip/python2.6 # lookups are controller only, and we no longer support Python 2.6 on the controller
diff --git a/test/integration/targets/lookup_cartesian/tasks/main.yml b/test/integration/targets/lookup_cartesian/tasks/main.yml
deleted file mode 100644
index 3624d58948..0000000000
--- a/test/integration/targets/lookup_cartesian/tasks/main.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-- name: Test cartesian lookup
- debug: var=item
- with_cartesian:
- - ["A", "B", "C"]
- - ["1", "2", "3"]
- register: product
-
-- name: Verify cartesian lookup
- assert:
- that:
- - product.results[0]['item'] == ["A", "1"]
- - product.results[1]['item'] == ["A", "2"]
- - product.results[2]['item'] == ["A", "3"]
- - product.results[3]['item'] == ["B", "1"]
- - product.results[4]['item'] == ["B", "2"]
- - product.results[5]['item'] == ["B", "3"]
- - product.results[6]['item'] == ["C", "1"]
- - product.results[7]['item'] == ["C", "2"]
- - product.results[8]['item'] == ["C", "3"]
diff --git a/test/integration/targets/lookup_flattened/aliases b/test/integration/targets/lookup_flattened/aliases
deleted file mode 100644
index bc987654d9..0000000000
--- a/test/integration/targets/lookup_flattened/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/python2.6 # lookups are controller only, and we no longer support Python 2.6 on the controller
diff --git a/test/integration/targets/lookup_flattened/tasks/main.yml b/test/integration/targets/lookup_flattened/tasks/main.yml
deleted file mode 100644
index 6725fa722d..0000000000
--- a/test/integration/targets/lookup_flattened/tasks/main.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-- name: test with_flattened
- set_fact: "{{ item }}=flattened"
- with_flattened:
- - [ 'a__' ]
- - [ 'b__', ['c__', 'd__'] ]
-
-- name: verify with_flattened results
- assert:
- that:
- - "a__ == 'flattened'"
- - "b__ == 'flattened'"
- - "c__ == 'flattened'"
- - "d__ == 'flattened'"
diff --git a/test/integration/targets/lookup_hashi_vault/aliases b/test/integration/targets/lookup_hashi_vault/aliases
deleted file mode 100644
index d3acfde9f7..0000000000
--- a/test/integration/targets/lookup_hashi_vault/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-shippable/posix/group2
-destructive
-needs/target/setup_openssl
-needs/file/test/lib/ansible_test/_data/requirements/constraints.txt
-skip/aix
-skip/python2.6 # lookups are controller only, and we no longer support Python 2.6 on the controller
diff --git a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/defaults/main.yml b/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/defaults/main.yml
deleted file mode 100644
index f1f6dd981d..0000000000
--- a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/defaults/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-vault_gen_path: 'gen/testproject'
-vault_kv1_path: 'kv1/testproject'
-vault_kv2_path: 'kv2/data/testproject'
diff --git a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/approle_setup.yml b/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/approle_setup.yml
deleted file mode 100644
index 63307728a3..0000000000
--- a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/approle_setup.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-- name: 'Create an approle policy'
- shell: "echo '{{ policy }}' | {{ vault_cmd }} policy write approle-policy -"
- vars:
- policy: |
- path "auth/approle/login" {
- capabilities = [ "create", "read" ]
- }
-
-- name: 'Enable the AppRole auth method'
- command: '{{ vault_cmd }} auth enable approle'
-
-- name: 'Create a named role'
- command: '{{ vault_cmd }} write auth/approle/role/test-role policies="test-policy,approle-policy"'
-
-- name: 'Fetch the RoleID of the AppRole'
- command: '{{ vault_cmd }} read -field=role_id auth/approle/role/test-role/role-id'
- register: role_id_cmd
-
-- name: 'Get a SecretID issued against the AppRole'
- command: '{{ vault_cmd }} write -field=secret_id -f auth/approle/role/test-role/secret-id'
- register: secret_id_cmd
diff --git a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/approle_test.yml b/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/approle_test.yml
deleted file mode 100644
index 44eb5ed18d..0000000000
--- a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/approle_test.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-- vars:
- role_id: '{{ role_id_cmd.stdout }}'
- secret_id: '{{ secret_id_cmd.stdout }}'
- block:
- - name: 'Fetch secrets using "hashi_vault" lookup'
- set_fact:
- secret1: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret1 auth_method=approle secret_id=' ~ secret_id ~ ' role_id=' ~ role_id) }}"
- secret2: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret2 auth_method=approle secret_id=' ~ secret_id ~ ' role_id=' ~ role_id) }}"
-
- - name: 'Check secret values'
- fail:
- msg: 'unexpected secret values'
- when: secret1['value'] != 'foo1' or secret2['value'] != 'foo2'
-
- - name: 'Failure expected when erroneous credentials are used'
- vars:
- secret_wrong_cred: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret2 auth_method=approle secret_id=toto role_id=' ~ role_id) }}"
- debug:
- msg: 'Failure is expected ({{ secret_wrong_cred }})'
- register: test_wrong_cred
- ignore_errors: true
-
- - name: 'Failure expected when unauthorized secret is read'
- vars:
- secret_unauthorized: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret3 auth_method=approle secret_id=' ~ secret_id ~ ' role_id=' ~ role_id) }}"
- debug:
- msg: 'Failure is expected ({{ secret_unauthorized }})'
- register: test_unauthorized
- ignore_errors: true
-
- - name: 'Failure expected when inexistent secret is read'
- vars:
- secret_inexistent: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret4 auth_method=approle secret_id=' ~ secret_id ~ ' role_id=' ~ role_id) }}"
- debug:
- msg: 'Failure is expected ({{ secret_inexistent }})'
- register: test_inexistent
- ignore_errors: true
-
- - name: 'Check expected failures'
- assert:
- msg: "an expected failure didn't occur"
- that:
- - test_wrong_cred is failed
- - test_unauthorized is failed
- - test_inexistent is failed
diff --git a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/main.yml b/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/main.yml
deleted file mode 100644
index 42fd0907f3..0000000000
--- a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/main.yml
+++ /dev/null
@@ -1,155 +0,0 @@
----
-- name: Install Hashi Vault on controlled node and test
-
- vars:
- vault_version: '0.11.0'
- vault_uri: 'https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/lookup_hashi_vault/vault_{{ vault_version }}_{{ ansible_system | lower }}_{{ vault_arch }}.zip'
- vault_cmd: '{{ local_temp_dir }}/vault'
-
- block:
- - name: Create a local temporary directory
- tempfile:
- state: directory
- register: tempfile_result
-
- - set_fact:
- local_temp_dir: '{{ tempfile_result.path }}'
-
- - when: pyopenssl_version.stdout is version('0.15', '>=')
- block:
- - name: Generate privatekey
- openssl_privatekey:
- path: '{{ local_temp_dir }}/privatekey.pem'
-
- - name: Generate CSR
- openssl_csr:
- path: '{{ local_temp_dir }}/csr.csr'
- privatekey_path: '{{ local_temp_dir }}/privatekey.pem'
- subject:
- commonName: localhost
-
- - name: Generate selfsigned certificate
- openssl_certificate:
- path: '{{ local_temp_dir }}/cert.pem'
- csr_path: '{{ local_temp_dir }}/csr.csr'
- privatekey_path: '{{ local_temp_dir }}/privatekey.pem'
- provider: selfsigned
- selfsigned_digest: sha256
- register: selfsigned_certificate
-
- - name: 'Install unzip'
- package:
- name: unzip
- when: ansible_distribution != "MacOSX" # unzip already installed
-
- - assert:
- # Linux: x86_64, FreeBSD: amd64
- that: ansible_architecture in ['i386', 'x86_64', 'amd64']
- - set_fact:
- vault_arch: '386'
- when: ansible_architecture == 'i386'
- - set_fact:
- vault_arch: amd64
- when: ansible_architecture in ['x86_64', 'amd64']
-
- - name: 'Download vault binary'
- unarchive:
- src: '{{ vault_uri }}'
- dest: '{{ local_temp_dir }}'
- remote_src: true
-
- - environment:
- # used by vault command
- VAULT_DEV_ROOT_TOKEN_ID: '47542cbc-6bf8-4fba-8eda-02e0a0d29a0a'
- block:
- - name: 'Create configuration file'
- template:
- src: vault_config.hcl.j2
- dest: '{{ local_temp_dir }}/vault_config.hcl'
-
- - name: 'Start vault service'
- environment:
- VAULT_ADDR: 'http://localhost:8200'
- block:
- - name: 'Start vault server (dev mode enabled)'
- shell: 'nohup {{ vault_cmd }} server -dev -config {{ local_temp_dir }}/vault_config.hcl </dev/null >/dev/null 2>&1 &'
-
- - name: 'Create generic secrets engine'
- command: '{{ vault_cmd }} secrets enable -path=gen generic'
-
- - name: 'Create KV v1 secrets engine'
- command: '{{ vault_cmd }} secrets enable -path=kv1 -version=1 kv'
-
- - name: 'Create KV v2 secrets engine'
- command: '{{ vault_cmd }} secrets enable -path=kv2 -version=2 kv'
-
- - name: 'Create a test policy'
- shell: "echo '{{ policy }}' | {{ vault_cmd }} policy write test-policy -"
- vars:
- policy: |
- path "{{ vault_gen_path }}/secret1" {
- capabilities = ["read"]
- }
- path "{{ vault_gen_path }}/secret2" {
- capabilities = ["read", "update"]
- }
- path "{{ vault_gen_path }}/secret3" {
- capabilities = ["deny"]
- }
- path "{{ vault_kv1_path }}/secret1" {
- capabilities = ["read"]
- }
- path "{{ vault_kv1_path }}/secret2" {
- capabilities = ["read", "update"]
- }
- path "{{ vault_kv1_path }}/secret3" {
- capabilities = ["deny"]
- }
- path "{{ vault_kv2_path }}/secret1" {
- capabilities = ["read"]
- }
- path "{{ vault_kv2_path }}/secret2" {
- capabilities = ["read", "update"]
- }
- path "{{ vault_kv2_path }}/secret3" {
- capabilities = ["deny"]
- }
-
- - name: 'Create generic secrets'
- command: '{{ vault_cmd }} write {{ vault_gen_path }}/secret{{ item }} value=foo{{ item }}'
- loop: [1, 2, 3]
-
- - name: 'Create KV v1 secrets'
- command: '{{ vault_cmd }} kv put {{ vault_kv1_path }}/secret{{ item }} value=foo{{ item }}'
- loop: [1, 2, 3]
-
- - name: 'Create KV v2 secrets'
- command: '{{ vault_cmd }} kv put {{ vault_kv2_path | regex_replace("/data") }}/secret{{ item }} value=foo{{ item }}'
- loop: [1, 2, 3]
-
- - name: setup approle auth
- import_tasks: approle_setup.yml
- when: ansible_distribution != 'RedHat' or ansible_distribution_major_version is version('7', '>')
-
- - name: setup token auth
- import_tasks: token_setup.yml
-
- - import_tasks: tests.yml
- vars:
- auth_type: approle
- when: ansible_distribution != 'RedHat' or ansible_distribution_major_version is version('7', '>')
-
- - import_tasks: tests.yml
- vars:
- auth_type: token
-
- always:
- - name: 'Kill vault process'
- shell: "kill $(cat {{ local_temp_dir }}/vault.pid)"
- ignore_errors: true
-
- always:
- - name: 'Delete temp dir'
- file:
- path: '{{ local_temp_dir }}'
- state: absent
diff --git a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/tests.yml b/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/tests.yml
deleted file mode 100644
index 198f587a77..0000000000
--- a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/tests.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-- name: 'test {{ auth_type }} auth without SSL (lookup parameters)'
- include_tasks: '{{ auth_type }}_test.yml'
- vars:
- conn_params: 'url=http://localhost:8200 '
-
-- name: 'test {{ auth_type }} auth without SSL (environment variable)'
- include_tasks: '{{ auth_type }}_test.yml'
- args:
- apply:
- vars:
- conn_params: ''
- environment:
- VAULT_ADDR: 'http://localhost:8200'
-
-- when: pyopenssl_version.stdout is version('0.15', '>=')
- block:
- - name: 'test {{ auth_type }} auth with certs (validation enabled, lookup parameters)'
- include_tasks: '{{ auth_type }}_test.yml'
- vars:
- conn_params: 'url=https://localhost:8201 ca_cert={{ local_temp_dir }}/cert.pem validate_certs=True '
-
- - name: 'test {{ auth_type }} auth with certs (validation enabled, environment variables)'
- include_tasks: '{{ auth_type }}_test.yml'
- args:
- apply:
- vars:
- conn_params: ''
- environment:
- VAULT_ADDR: 'https://localhost:8201'
- VAULT_CACERT: '{{ local_temp_dir }}/cert.pem'
-
- - name: 'test {{ auth_type }} auth with certs (validation disabled, lookup parameters)'
- include_tasks: '{{ auth_type }}_test.yml'
- vars:
- conn_params: 'url=https://localhost:8201 validate_certs=False '
diff --git a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/token_setup.yml b/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/token_setup.yml
deleted file mode 100644
index d5ce280346..0000000000
--- a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/token_setup.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-- name: 'Create a test credentials (token)'
- command: '{{ vault_cmd }} token create -policy test-policy -field token'
- register: user_token_cmd
diff --git a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/token_test.yml b/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/token_test.yml
deleted file mode 100644
index 20c1af791e..0000000000
--- a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/tasks/token_test.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-- vars:
- user_token: '{{ user_token_cmd.stdout }}'
- block:
- - name: 'Fetch secrets using "hashi_vault" lookup'
- set_fact:
- gen_secret1: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_gen_path ~ '/secret1 auth_method=token token=' ~ user_token) }}"
- gen_secret2: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_gen_path ~ '/secret2 token=' ~ user_token) }}"
- kv1_secret1: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv1_path ~ '/secret1 auth_method=token token=' ~ user_token) }}"
- kv1_secret2: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv1_path ~ '/secret2 token=' ~ user_token) }}"
- kv2_secret1: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret1 auth_method=token token=' ~ user_token) }}"
- kv2_secret2: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret2 token=' ~ user_token) }}"
-
- - name: 'Check secret generic values'
- fail:
- msg: 'unexpected secret values'
- when: gen_secret1['value'] != 'foo1' or gen_secret2['value'] != 'foo2'
-
- - name: 'Check secret kv1 values'
- fail:
- msg: 'unexpected secret values'
- when: kv1_secret1['value'] != 'foo1' or kv1_secret2['value'] != 'foo2'
-
- - name: 'Check secret kv2 values'
- fail:
- msg: 'unexpected secret values'
- when: kv2_secret1['value'] != 'foo1' or kv2_secret2['value'] != 'foo2'
-
- - name: 'Failure expected when erroneous credentials are used'
- vars:
- secret_wrong_cred: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret2 auth_method=token token=wrong_token') }}"
- debug:
- msg: 'Failure is expected ({{ secret_wrong_cred }})'
- register: test_wrong_cred
- ignore_errors: true
-
- - name: 'Failure expected when unauthorized secret is read'
- vars:
- secret_unauthorized: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret3 token=' ~ user_token) }}"
- debug:
- msg: 'Failure is expected ({{ secret_unauthorized }})'
- register: test_unauthorized
- ignore_errors: true
-
- - name: 'Failure expected when inexistent secret is read'
- vars:
- secret_inexistent: "{{ lookup('hashi_vault', conn_params ~ 'secret=' ~ vault_kv2_path ~ '/secret4 token=' ~ user_token) }}"
- debug:
- msg: 'Failure is expected ({{ secret_inexistent }})'
- register: test_inexistent
- ignore_errors: true
-
- - name: 'Check expected failures'
- assert:
- msg: "an expected failure didn't occur"
- that:
- - test_wrong_cred is failed
- - test_unauthorized is failed
- - test_inexistent is failed
diff --git a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/templates/vault_config.hcl.j2 b/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/templates/vault_config.hcl.j2
deleted file mode 100644
index effc90ba90..0000000000
--- a/test/integration/targets/lookup_hashi_vault/lookup_hashi_vault/templates/vault_config.hcl.j2
+++ /dev/null
@@ -1,10 +0,0 @@
-# {{ ansible_managed }}
-pid_file = "{{ local_temp_dir }}/vault.pid"
-{% if pyopenssl_version.stdout is version('0.15', '>=') %}
-listener "tcp" {
- tls_key_file = "{{ local_temp_dir }}/privatekey.pem"
- tls_cert_file = "{{ local_temp_dir }}/cert.pem"
- tls_disable = false
- address = "localhost:8201"
-}
-{% endif %}
diff --git a/test/integration/targets/lookup_hashi_vault/playbooks/install_dependencies.yml b/test/integration/targets/lookup_hashi_vault/playbooks/install_dependencies.yml
deleted file mode 100644
index 868fac01ab..0000000000
--- a/test/integration/targets/lookup_hashi_vault/playbooks/install_dependencies.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-- hosts: localhost
- tasks:
- - name: Install openssl
- import_role:
- name: setup_openssl
-
- - name: "RedHat <= 7, select last version compatible with request 2.6.0 (this version doesn't support approle auth)"
- set_fact:
- hvac_package: 'hvac==0.2.5'
- when: ansible_distribution == 'RedHat' and ansible_distribution_major_version is version('7', '<=')
-
- - name: 'CentOS < 7, select last version compatible with Python 2.6'
- set_fact:
- hvac_package: 'hvac==0.5.0'
- when: ansible_distribution == 'CentOS' and ansible_distribution_major_version is version('7', '<')
-
- - name: 'Install hvac Python package'
- pip:
- name: "{{ hvac_package|default('hvac') }}"
diff --git a/test/integration/targets/lookup_hashi_vault/playbooks/test_lookup_hashi_vault.yml b/test/integration/targets/lookup_hashi_vault/playbooks/test_lookup_hashi_vault.yml
deleted file mode 100644
index 8d3f320103..0000000000
--- a/test/integration/targets/lookup_hashi_vault/playbooks/test_lookup_hashi_vault.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-- hosts: localhost
- tasks:
- - name: register pyOpenSSL version
- command: "{{ ansible_python.executable }} -c 'import OpenSSL; print(OpenSSL.__version__)'"
- register: pyopenssl_version
-
- - name: Test lookup hashi_vault
- import_role:
- name: lookup_hashi_vault/lookup_hashi_vault
diff --git a/test/integration/targets/lookup_hashi_vault/runme.sh b/test/integration/targets/lookup_hashi_vault/runme.sh
deleted file mode 100755
index e5e0df347f..0000000000
--- a/test/integration/targets/lookup_hashi_vault/runme.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-
-set -eux
-
-# First install pyOpenSSL, then test lookup in a second playbook in order to
-# workaround this error which occurs on OS X 10.11 only:
-#
-# TASK [lookup_hashi_vault : test token auth with certs (validation enabled, lookup parameters)] ***
-# included: lookup_hashi_vault/tasks/token_test.yml for testhost
-#
-# TASK [lookup_hashi_vault : Fetch secrets using "hashi_vault" lookup] ***
-# From cffi callback <function _verify_callback at 0x106f995f0>:
-# Traceback (most recent call last):
-# File "/usr/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 309, in wrapper
-# _lib.X509_up_ref(x509)
-# AttributeError: 'module' object has no attribute 'X509_up_ref'
-# fatal: [testhost]: FAILED! => { "msg": "An unhandled exception occurred while running the lookup plugin 'hashi_vault'. Error was a <class 'requests.exceptions.SSLError'>, original message: HTTPSConnectionPool(host='localhost', port=8201): Max retries exceeded with url: /v1/auth/token/lookup-self (Caused by SSLError(SSLError(\"bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)\",),))"}
-
-ANSIBLE_ROLES_PATH=../ \
- ansible-playbook playbooks/install_dependencies.yml -v "$@"
-
-ANSIBLE_ROLES_PATH=../ \
- ansible-playbook playbooks/test_lookup_hashi_vault.yml -v "$@"
diff --git a/test/integration/targets/lookup_lmdb_kv/aliases b/test/integration/targets/lookup_lmdb_kv/aliases
deleted file mode 100644
index 08496766ce..0000000000
--- a/test/integration/targets/lookup_lmdb_kv/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-shippable/posix/group2
-destructive
-skip/aix
-skip/python2.6 # lookups are controller only, and we no longer support Python 2.6 on the controller
diff --git a/test/integration/targets/lookup_lmdb_kv/dependencies.yml b/test/integration/targets/lookup_lmdb_kv/dependencies.yml
deleted file mode 100644
index db14f6cafd..0000000000
--- a/test/integration/targets/lookup_lmdb_kv/dependencies.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-- hosts: localhost
- tasks:
- - name: Install LMDB Python package
- pip:
- name: lmdb
- - name: Setup test data
- script: test_db.py
- args:
- executable: "{{ ansible_python.executable }}"
diff --git a/test/integration/targets/lookup_lmdb_kv/runme.sh b/test/integration/targets/lookup_lmdb_kv/runme.sh
deleted file mode 100755
index afdff7bb9d..0000000000
--- a/test/integration/targets/lookup_lmdb_kv/runme.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-set -eux
-
-ANSIBLE_ROLES_PATH=../ \
- ansible-playbook dependencies.yml -v "$@"
-
-ANSIBLE_ROLES_PATH=../ \
- ansible-playbook test.yml -v "$@"
diff --git a/test/integration/targets/lookup_lmdb_kv/test.yml b/test/integration/targets/lookup_lmdb_kv/test.yml
deleted file mode 100644
index 2f713e9609..0000000000
--- a/test/integration/targets/lookup_lmdb_kv/test.yml
+++ /dev/null
@@ -1,31 +0,0 @@
----
-- hosts: localhost
- tasks:
- - debug:
- msg: "{{ query('lmdb_kv', 'nl', 'be', 'lu', db='jp.mdb') }}"
-
- - debug:
- var: item.1
- loop: "{{ query('lmdb_kv', db='jp.mdb') }}"
-
- - assert:
- that:
- - query('lmdb_kv', 'nl', 'be', 'lu', db='jp.mdb') == ['Netherlands', 'Belgium', 'Luxembourg']
- - query('lmdb_kv', db='jp.mdb')|length == 5
-
- - assert:
- that:
- - item.0 == 'nl'
- - item.1 == 'Netherlands'
- vars:
- - lmdb_kv_db: jp.mdb
- with_lmdb_kv:
- - "n*"
-
- - assert:
- that:
- - item == 'Belgium'
- vars:
- - lmdb_kv_db: jp.mdb
- with_lmdb_kv:
- - be
diff --git a/test/integration/targets/lookup_lmdb_kv/test_db.py b/test/integration/targets/lookup_lmdb_kv/test_db.py
deleted file mode 100644
index f251b7f4a5..0000000000
--- a/test/integration/targets/lookup_lmdb_kv/test_db.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-import lmdb
-map_size = 1024 * 100
-env = lmdb.open('./jp.mdb', map_size=map_size)
-with env.begin(write=True) as txn:
- txn.put('fr'.encode(), 'France'.encode())
- txn.put('nl'.encode(), 'Netherlands'.encode())
- txn.put('es'.encode(), 'Spain'.encode())
- txn.put('be'.encode(), 'Belgium'.encode())
- txn.put('lu'.encode(), 'Luxembourg'.encode())
diff --git a/test/integration/targets/lookup_passwordstore/aliases b/test/integration/targets/lookup_passwordstore/aliases
deleted file mode 100644
index 1c21d9b739..0000000000
--- a/test/integration/targets/lookup_passwordstore/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group4
-destructive
-skip/aix
-skip/rhel
-skip/python2.6 # lookups are controller only, and we no longer support Python 2.6 on the controller
diff --git a/test/integration/targets/lookup_passwordstore/tasks/main.yml b/test/integration/targets/lookup_passwordstore/tasks/main.yml
deleted file mode 100644
index 51de05cf6e..0000000000
--- a/test/integration/targets/lookup_passwordstore/tasks/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-- block:
- - include_tasks: package.yml
- - include_tasks: tests.yml
- when:
- # The pass package is no longer available in EPEL, so only test on Fedora, OpenSUSE, FreeBSD, macOS, and Ubuntu
- # https://lists.zx2c4.com/pipermail/password-store/2019-July/003689.html
- - ansible_facts.distribution in ['FreeBSD', 'MacOSX', 'openSUSE Leap', 'Ubuntu']
diff --git a/test/integration/targets/lookup_passwordstore/tasks/package.yml b/test/integration/targets/lookup_passwordstore/tasks/package.yml
deleted file mode 100644
index fdb3bf7c81..0000000000
--- a/test/integration/targets/lookup_passwordstore/tasks/package.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-- name: Include distribution specific variables
- include_vars: "{{ lookup('first_found', params) }}"
- vars:
- params:
- files:
- - "{{ ansible_facts.distribution }}.yml"
- - "{{ ansible_facts.os_family }}.yml"
- - default.yml
- paths:
- - "{{ role_path }}/vars"
-
-- name: Install package
- action: "{{ ansible_facts.pkg_mgr }}"
- args:
- name: "{{ passwordstore_packages }}"
- state: present
- when: ansible_facts.pkg_mgr in ['apt', 'dnf', 'yum', 'pkgng']
-
-- block:
- # OpenSUSE Leap>=15.0 don't include password-store in main repo
- - name: SUSE | Add security:privacy repo
- template:
- src: security-privacy.repo.j2
- dest: /etc/zypp/repos.d/security:privacy.repo
-
- - name: SUSE | Install package
- package:
- name: password-store
- state: present
- update_cache: yes
- disable_gpg_check: yes
- when: ansible_pkg_mgr == 'zypper'
-
-- name: Install on macOS
- when: ansible_facts.distribution == 'MacOSX'
- block:
- - name: MACOS | Find brew binary
- command: which brew
- register: brew_which
-
- - name: MACOS | Get owner of brew binary
- stat:
- path: "{{ brew_which.stdout }}"
- register: brew_stat
-
- - name: MACOS | Install package
- homebrew:
- name:
- - gnupg2
- - pass
- state: present
- update_homebrew: no
- become: yes
- become_user: "{{ brew_stat.stat.pw_name }}"
- # Newer versions of brew want to compile a package which takes a long time. Do not upgrade homebrew until a
- # proper solution can be found
- environment:
- HOMEBREW_NO_AUTO_UPDATE: True
diff --git a/test/integration/targets/lookup_passwordstore/tasks/tests.yml b/test/integration/targets/lookup_passwordstore/tasks/tests.yml
deleted file mode 100644
index 50937f7da2..0000000000
--- a/test/integration/targets/lookup_passwordstore/tasks/tests.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-- name: Check name of gpg2 binary
- command: which gpg2
- register: gpg2_check
- ignore_errors: true
-
-- name: Set gpg2 binary name
- set_fact:
- gpg2_bin: '{{ "gpg2" if gpg2_check is successful else "gpg" }}'
-
-- name: Stop gpg-agent so we can remove any locks on the GnuPG dir
- command: gpgconf --kill gpg-agent
- ignore_errors: yes
-
-- name: Remove previous password files and directory
- file:
- dest: "{{ item }}"
- state: absent
- loop:
- - "~/.gnupg"
- - "~/.password-store"
-
-# How to generate a new GPG key:
-# gpg2 --batch --gen-key input # See templates/input
-# gpg2 --list-secret-keys --keyid-format LONG
-# gpg2 --armor --export-secret-keys [key id]
-# # Get the fingerprint
-# gpg2 --fingerprint --keyid-format LONG | grep [key id] -A 1 | tail -1 | tr -d '[:space:]' | awk -F '=' '{print $2":6:"}'
-
-- name: Import GPG private key
- shell: echo "{{ passwordstore_privkey }}" | {{ gpg2_bin }} --import --allow-secret-key-import -
-
-- name: Trust key
- shell: echo "D3E1CC8934E97270CEB066023AF1BD3619AB496A:6:" | {{ gpg2_bin }} --import-ownertrust
-
-- name: Initialise passwordstore
- command: pass init ansible-test
-
-- name: Create a password
- set_fact:
- newpass: "{{ lookup('passwordstore', 'test-pass length=8 create=yes') }}"
-
-- name: Fetch password from an existing file
- set_fact:
- readpass: "{{ lookup('passwordstore', 'test-pass') }}"
-
-- name: Verify password
- assert:
- that:
- - readpass == newpass
diff --git a/test/integration/targets/lookup_passwordstore/templates/input b/test/integration/targets/lookup_passwordstore/templates/input
deleted file mode 100644
index d639accdb9..0000000000
--- a/test/integration/targets/lookup_passwordstore/templates/input
+++ /dev/null
@@ -1,9 +0,0 @@
-%echo Generating a Ansible Test PGP key
-Key-Type: RSA
-Key-Length: 4096
-Subkey-Type: RSA
-Subkey-Length: 4096
-Name-Real: ansible-test
-Expire-Date: 0
-%commit
-%echo done
diff --git a/test/integration/targets/lookup_passwordstore/templates/security-privacy.repo.j2 b/test/integration/targets/lookup_passwordstore/templates/security-privacy.repo.j2
deleted file mode 100644
index e698129aa1..0000000000
--- a/test/integration/targets/lookup_passwordstore/templates/security-privacy.repo.j2
+++ /dev/null
@@ -1,7 +0,0 @@
-[security_privacy]
-name=Crypto applications and utilities (openSUSE_Leap_{{ ansible_distribution_version }})
-type=rpm-md
-baseurl=http://download.opensuse.org/repositories/security:/privacy/openSUSE_Leap_{{ ansible_distribution_version }}/
-gpgcheck=1
-gpgkey=http://download.opensuse.org/repositories/security:/privacy/openSUSE_Leap_{{ ansible_distribution_version }}/repodata/repomd.xml.key
-enabled=1
diff --git a/test/integration/targets/lookup_passwordstore/vars/Debian.yml b/test/integration/targets/lookup_passwordstore/vars/Debian.yml
deleted file mode 100644
index 3d1c4d45d5..0000000000
--- a/test/integration/targets/lookup_passwordstore/vars/Debian.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-passwordstore_packages:
- - pass
diff --git a/test/integration/targets/lookup_passwordstore/vars/Fedora.yml b/test/integration/targets/lookup_passwordstore/vars/Fedora.yml
deleted file mode 100644
index 3d1c4d45d5..0000000000
--- a/test/integration/targets/lookup_passwordstore/vars/Fedora.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-passwordstore_packages:
- - pass
diff --git a/test/integration/targets/lookup_passwordstore/vars/FreeBSD.yml b/test/integration/targets/lookup_passwordstore/vars/FreeBSD.yml
deleted file mode 100644
index 39e51fbc2e..0000000000
--- a/test/integration/targets/lookup_passwordstore/vars/FreeBSD.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-passwordstore_packages:
- - gnupg
- - password-store
diff --git a/test/integration/targets/lookup_passwordstore/vars/default.yml b/test/integration/targets/lookup_passwordstore/vars/default.yml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/lookup_passwordstore/vars/default.yml
+++ /dev/null
diff --git a/test/integration/targets/lookup_passwordstore/vars/main.yml b/test/integration/targets/lookup_passwordstore/vars/main.yml
deleted file mode 100644
index be954d7d2a..0000000000
--- a/test/integration/targets/lookup_passwordstore/vars/main.yml
+++ /dev/null
@@ -1,117 +0,0 @@
-passwordstore_privkey: |
- -----BEGIN PGP PRIVATE KEY BLOCK-----
- Version: GnuPG v2.0.22 (GNU/Linux)
-
- lQcYBF0L9gUBEACrYsKIj/rXFQPURHz+YKg54BW6utIvwoF/CbQarc8iXoXfPZW4
- wQnFaX+dLifkvX5f4xIUVD94qyMXT2oNg+HZXH2y7VwqBFeG9TrNqfgJsYTbTlgP
- 0MOD3FtZkMy/6TrJyOzY7x7oHUwWY1S5YeBDBsRqWwhS5fIfHLGbZLwoHC/53mlP
- ve0zL1u28y3Kh8JvYBSlcYrbMlbKQb1g0TSb8gVwq+Iv2CriEmHipUvLI02z02Ny
- XnT0+rzOEEynaoF7zX1S0eoIwKz46/sen1L5YAYhLM16gq4WSquxUz8klff+jVD5
- uLgUKzEkhBdBuTvWKjknk6Wu2aDPC6IQXUjm+5dIh+/IyD4SKPA+HY1QZjIF/6nH
- KV43RRzB8YWkAEW/iQdKCXWyNz1o8zYiun/PxiJtgV2qpz4z5M+ANx1VCj31eMTE
- A0exSnMLjbUknE3JX2bnBfTgbiKbeXQcL6FNrKIPJrwgNlP3g48JzY6aPT3Tej8Q
- pd6DqamU0sQfoi2K8zs/Ltl+REocKqzQ9cz0dj7ykQqAMf+TunQfC3pY8yI7IKCr
- YM2L3aJbiqLTp31dCfwxBSZJ+oalUzp2l91ugu1k1mjuik7ZJaflfBNEFWK9ig3v
- qhv8FwdoPFNh8TC11btfU1wphcBl65pCaPff2s94/Gj2aQ0PrFYuhPtzqwARAQAB
- AA//UMXH1yK8XrfJyTXKDv0w663fr9SykM3DyEKjfltiHtmbkF3u/VcFKuQQv9xr
- 8tMYB0r2T1xxWYaWkDreSaZZP97mYviZEjhfo/xZjWpIuxDOA6nFuRZzvuaQqwKi
- bOQXz9gBQDBaSZzdKkQAPyqQziYXVeS3ZJJ47Q7R6eGtB95ZAhM/YNSrQQ9V00CC
- 2UvoaCNJN7vubGYqH0KiZUnT2JdU1wg7Hr9rXoa5WV77/K4Txeefm9xGlNrDNv7Z
- kaGRiu6K3QiPmzZrjxlwjbsbGOqXmPULlmyWbW0dxAHu5WhEq9SgUEEtiFve2k3i
- xBfvyny12SAt2t04e7wI0luUqnpQR8j3JPFXcCiFszIauMbXhIAd0QhRfS6/pRCf
- iBRliFqvQpgmz9w8/enfQtBvyAwZLr3p2vk4OyRW/GLFnfkoKcCvgZtL5vNDPYJm
- Y1koC+jAsiiFRmUvP9SLyNabVTANz5Hg/jZmcdh+OTWs1xdZl1JyjUOxV6n1n1pW
- BPc0FaNvFS+wkx6Rp9DgryTP1oTD6wjacNljFh3A9LJ0DTnQgsghoi5ArBKnRP7R
- 9i0DKUqywoukm+GQHoZlB6bglDBVc3wKZvtw17/SgD6GnKZ3zH+Y8yx3K3MI9wjT
- Od1jMxQxzKWMxrv72mtzchm/utkubL5BpM5hn6fg32NEkxEIAMhc2f01fuv/UZ1i
- zlkqXkcMzrd/+9+Mv53meLMJsW2biOwRF52ZXi3k9ulUwHB21FaAXeyOFhueKrh/
- iKu5Hpydxruj0XCgMRArgvghPL4KLfhh54xvXGKxWw7B0IWkOnvELPikOl3h17cY
- lQ5rN5mQtlxaqqrJKOxkseEFTvVJudZXZH9oArlVXO88HklDeEHtV4xjdiyvtFKg
- qWUvo6oNT0LmpFdgstoKJ8H5gKiV3wfl2QJQxqWT40wUFVnNEAoBYC7PbHWajxmD
- 7ZGoKE9o3ythg11D4rH23uTUFLd5Hc5xeQ2/+OhEKv4Qe0X+okv8/RpM94ObfsW9
- HdQBsgMIANr6B/SzwhPn8eK0c6wrOYU/B/V370qgTBRpWgrNRCvtN8NuSJKOJRU/
- qYm74dCsVxBfvUlEPRp9DEsE9djvwZLdIqOfn4amDoLZmYdMQ5LQCOaHlrnEx+ng
- uHUklFUXIHDNcVRWzhrHm4KQWeB7RrCRL1nEimW/nhh8y++4TmxZQ1Zr2fdUWdMs
- dSWryw3RE5nwDd7nW8+Wgm3TfS4jhhn3DcKFZxLzG1eo4ZaXoPa4j7zps3xFyBtF
- KMPgrvAAxzqFwklQKjwXcthYUQ5OzXTt94m8VqOz0nZGoizaGBFRz1l1q9QQxTv4
- BUI+2OeyfrzWIaKEu+9gsNbx/OfxmzkH/2quLKJj0FQ+aEYkeGXVtf2DsceQXB1l
- QtBo/qvBWP2XYk6GzAfwjvI8ifEG4MzXCZxm5SKtQ8UljrCo2T6OArG2FK1FSJDX
- UlQBXPLYWIJCkC9X8SB6UztPSXPoNS6Ktc0K5XFxvGzIDpxAE+zE4UAe3gWGaROe
- bwxbuRb9/aHAEk6CU3mrgEUUqet+4qUNRpAzJdwYIN6nOAVghHWiVY4OoCSCgMYY
- 4B9Aa9bVeDQH9S88X5ux3bDW1DPjiewNIYo+0z53gfY3HZeDfHFWD4iM6vaJjSVb
- 65trGHyGhElkWub56Q3nHXPOxiAKeRBn3iL54wDNiGMlfw/tkoAkTuaNI7QMYW5z
- aWJsZS10ZXN0iQI5BBMBAgAjBQJdC/YFAhsvBwsJCAcDAgEGFQgCCQoLBBYCAwEC
- HgECF4AACgkQOvG9NhmrSWo7YhAAhsp+j13R3bJkv/esJwaDa0dbdm1iJzKB9bkf
- Bi10qMFmJUEDyHHKL9OBiAgSCKna5F4EuEFnaV9YPs1n6PVE+FX3m5UAfCULR6Qk
- G064+nd25LWEjSJ3I85WHfJNz/fPr3fQvQNH67GEdTZIr7hrWeZHH1nnpGrZ6xx6
- sVBxKMp3g8wNXey/DJSaDcry5cQ8cZW2RrUzmfXgcSlwAIVBkmHKA1UtgAGu1kq/
- LzaCJus7ffMdUZd7IYAM5fIdnNEf0fi8/oKcWiv9TqynGJmu2AxjSUu9EG9idESu
- bZtXZntM2ODbqepfQ0i44ew9Y3HQS8ciP8uhbQYFZuhbMQobXNIkvO6XA1cePSt2
- Wh4qCh+ymk9u2qBqb4JkqORyOCJhLdOj6TGU0o9TQ8h0EqjB/Wx69ppA0GFQh5si
- CG7GnwZhabgiPIxoCPQuhDPv+rXgFx5YiGofMddst9DFn0nR/fFx9hqaTuZ4iiuH
- UzvqQAMGtIMxiOdJKSSI9emsNfQvXTMHjB+s6Cjiw7nF0+G2ciXlLTPbtTFePZVN
- seDosuN6uMqwm8KNZVJpU0O0qXu5EdI7ptbOooSR7WZSJdQ+MWyr0vGYKKFGYkwp
- jl/pDzXCA1d3AxK4Mzmb+KvFQvh+9X7VwI9Pgg4HHE5KeyX8wXhrvT2itPoznnC2
- 33tCCZmdBxcEXQv2BQEQANtkIv93lunfgRUt7X4hJXT8rw/Y787b+xQ/FcApQnfd
- 5Zg6pubrMPbOoIKFJG4vzNBSmXGSBmqGIdIYqT2eR9eBDoOv5Cl8tCQ+zNoC2V0Q
- uCOLZV86hoakduHniCv8cKSbsG6mm5oFP61/82yJLlPUarT+EGSuWCR6W1pGC5WR
- GElnE9VFpaQ5TZ8A3EBWky2YhdX7vOzbjP8x0Jd/3UFfpNd5gRnxfJLx8rrdKt20
- xYxR4FPUbu9kQFZIyUr2kxNi30R1+oK4hcXbID6gqxt1oW5PWGkNOXYTY6r/Vv6D
- zU4Bf4gngWc7hgwbtGRkv2jR8Zv3ZIUbo4ZwMAMMs3Un7RWjjEJkrtUzdaIdjtwM
- jZIH7xMNz/NK748EB3uMKiIOkmWqHrWkU2aa86V8heuTg/AWluKFG6J+WHzzYnPE
- pb+WbWbZi2PcIQlDY2EDQyluXN0YKdHeFRXdo5QllN+oZ54e0EVioYzpUlzyD4/m
- sqfGS/ZF//r7EoTeIbrqBJDbEc9pjB3cphpWWHLxxbo42u27w+Gvda6B+1ad2bZX
- lBp8tnQl2y5JtMPWW7kVZs5EBPS8OY5NRWqVAFPBg1OlnC6OYC2c1rW7tqZll0T0
- UORR+zdhayYDtLZhJdD5QcSVLRe26jlyeT4920dOUvjI8ANiRSjSOx3wwcnnhtLt
- ABEBAAEAD/jW435kO/7VlNYaqKG2qUDHFbljDFnXhCCp9CCZ19ADGJWKRei0xilv
- lXQiY8cLJka2xjEFzMH8FOWLpBwg/qffrclJsz8IY90Oo3SDFcdSIM48Ao2IeQrL
- Vswa+W2np9utX9GwkABZHEsC5hDIfpWiBq1+Glx0QVCUakSQZ4txNG1VeGE0xMM5
- 1+bvlygk3KfMQVjV/31Ngr7YNzLZMaTGI6iSZbDOeHpMdDAMWBVkk2vrxUa01Z7T
- XJ6n5SNFCb+FfZKyu9xjrdlZswgiT71JaC52ncE7JHjj7pnxI6lSIkc14MHJ2ugk
- 9WiW84v9ybCyOvEsk2Uh+7BwPfLJCee7SIWcVses55mVUm0YNoU68isQfuuuF2+B
- OwTaoFT5sDwGlE7exdgk7DyUYxIIB3aRTUfNYeAIVW2uR5GruOgTLUw54KPa1N7O
- NAfiC4OAfc+s6KBTU/Reozdq6mewLEM0UBccEmBtWevet64p5TWleyaL1TtEPZlX
- DnrkTXA/ZRTCteuSLwmMDpcFEYc3IcgZIQfvqtHO2cDJ67AjlsgvEDwTV65l1MnN
- krYIgUh8yFMnFGZPO1jw3mRtuU0QottdPj14Xcn855GS2C4CZ31N3YJq7eR+j5Bh
- SmXk6k5ys8eF/gw4rbEaBbXFTjw8eb1q7Nwus0W+0yrq4r9/J1fxCADkCFXD95jm
- sddOHz0Dih6c3KEvpkiPLzITOSp5/nPyd3K7T3xx0L2sBQQt2QGT0zeJCwAB5uTE
- uTb6AjKcvOn7KlPQQqP9O2mgHo7Zzwr/I69DkYLuLGNCsr0XGi5sn9aaDG0dpFqg
- 2VzItHVTCefoVF5EOmOaDwB1QYunKwXy3vtgNBJ7LwJb4rm1TgNHsheT/rtUsVYP
- Z7lAxcLGa2xNm215nf8fzmbjZnCfPEyRpMgqlN+YUzGiDJwfN/fwr8OgFnjDSqOL
- htbqCiLv7vTbsw6TWIuKr21QVEc3Qcqu96v0dNXk6wr4PTnPmezswSK0+Dc2+5JZ
- PBkYIkbE5eYxCAD2THuc0iiqX4ZFS8KhbjWvmng08xulj45BpHCkY8oRcaMCRD0c
- AoEDZyPEfwfb8SMNb2NHzvYi8djM0uU5NzqURKUF22bAAbxkgPyBKp8CBECD0X50
- O4HpJIYShbfUD/XWKLvxGxKYlrOvwHuUboPPnMqsaMLwezu0MoaUztbTlr/OZgA0
- 8/hwiyXDcsrf7yg5BPfAZghC1OYEvhEiS43VefAPVv/bvwz3Aml0kQLH14eZxGxL
- z7mb0qoZJ0Qkn36QQ2L9GcWYRfBDgUXcxfZm6JW+UZWuWMBAPMSaPoRd9yt+MMPC
- QsmyUrBxT9vTLFysUIJYQThycucvO9Xud/19CADt0G5p1u8uRzKi5Qnbtd79V0v5
- Obud6LRooXJNprYVLhPE6lr0aeeZK6QDIrmRrZqeByQ2kfY6XP6Tl4/9wZX2ajS/
- 8GJGmv7HP6vqfJdrOQhnAjQkUYYm72C/eicAsm8e/fiOSrpf1ithyPKOArFqVyth
- pVkAnteqNDABBNellUbqS//XUKnk/Cd2WWaGe4J/nIuj78MphBEzSO4CmWkdbH5G
- CPyXdq6LEnDp1By3LNmZTwqbeMUtzVcaJVh6k4jW3OEL9h0PIWQ8Ol42+0Wn57Pn
- 5vPzGwKaf7zFhJlLRCiCdJJl4QOjXo0jvQHBvelQ8NVpeCCAabWmR9OwldqOhJiJ
- BD4EGAECAAkFAl0L9gUCGy4CKQkQOvG9NhmrSWrBXSAEGQECAAYFAl0L9gUACgkQ
- kjr8nlUnTh1fBBAAqFbBzvU44nvoxYtBz0b3ZJ8TBCu8rCAwXEquvb+sXWYj52jh
- ThW+ke24rX178JZDPu6f8EZwF98voZCDxU5XTexqMugTubVSMmTGbJ63YN99Nl5P
- jjdwO4r1LaBJ7ef30YLT0ZIUI73dDTolQ0ENHxwtD1xnwx8JvXpmQdDJ9/HINQlU
- HRSt2qWHRSgrutRLFlO7trWQZXIrUwjY3qgKJMPYc2tJqmfsoD6EeISyZOVOJ7m5
- xgs1f7UgtbVrHYhQOxRiMIAbMDbukRKwlvp1af8R7e+EoFMIcewaObe6/PUTuOFL
- 0VkCWoHBBKWAJQJ7vHmzW1tgyrDjchHSUAGMqZOEL84uOCWqMQ/6HCj/zaEqiOqg
- fuoh54K05lKE5OOIBWITVGgqsT9tli29Lov9vJb2p4csN4kSrdKJpLCgP21V8Utk
- ZWR1OgDhD7h40Eobpph4KauYoAZiAfu3cb4BzNhUAJ69fJ5lrOlKP1GLmYyQ5jfx
- s73TDCNfj42OBeUCO6tncTSPXs/9P2FziynVLxkCT8cbVq1C4H87BO7TEW9FuxKJ
- hLfpVGbt/yG1HrvGJ/kRPk0sXu2md9quWkh6qPHF5EThCOrlfbwLD5Pqvt0ZPZlR
- xxMSRP9L9w09ZYO1Y7f6gegElTpEh/aFLq1jjUxm8h/cO6A9lJ3Bjxb/xmoKoBAA
- ieGiHu3YgsN0jmxvlnf7GwB89BNajyH6D0tbdsH+OeSU8e6xItxpe6s5GfonWAt+
- ngPutPSPhgS5AUx8GrxHGu3Sx+wmGvGKpsH+2Tu1ciUN34K/sfrzKjxCuvnpcBTd
- rOSiEObnKnb6OI6sW329ZH4z/r5tVoetWr45xspc9IE8TVIuavOlJkuInX5/B3Sa
- DPwAH/aQAYc71j7yDr7ezFzx07h+pH4ePeGsnfdKy6ZWoQ1mmM35j93ZhH8P8YCC
- N8lklRhxvZhXkHWt4ns/QzT+QawW2sR8Kkha3ydzx9cEcalmNq7nG+QkwSlliazE
- 6peVL6ga2H1+XM+1p/P/qCsvbLmRobWSyfMURKkL05iykNjnHOYno+A+NaM3IR12
- uf5tWvNfiJpNXbUf8Yjh0ep73aZfF1kODIcLR1AHtVVt0Yc05XKEwFfv4kADi1Mh
- Pp0s4MHRMjPCgPU1j2b5ulGZGZKlCECu3799bw8yb7n9Hpj42hL0ZOEsMdMHbCfd
- 7eQUNNncVW/KDnwrJQAabr/771xSTauWDDdpEJEc2Mdx3m6e7doQvboYaKYvK4kg
- x/Vi7pcHS1xQO0zC8BPPBq9tMyy5QGSybfVSvMPo+7nIsumZ9fvJwjjRHreZP4pa
- nbE9Gt4CrEbWoo6jbcscycpQbduEhGtvwj8UFXe5z+M=
- =o0Ig
- -----END PGP PRIVATE KEY BLOCK-----
diff --git a/test/integration/targets/lookup_rabbitmq/aliases b/test/integration/targets/lookup_rabbitmq/aliases
deleted file mode 100644
index ea7b5233dc..0000000000
--- a/test/integration/targets/lookup_rabbitmq/aliases
+++ /dev/null
@@ -1,7 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
-skip/python2.6 # lookups are controller only, and we no longer support Python 2.6 on the controller
diff --git a/test/integration/targets/lookup_rabbitmq/meta/main.yml b/test/integration/targets/lookup_rabbitmq/meta/main.yml
deleted file mode 100644
index 05ab59000b..0000000000
--- a/test/integration/targets/lookup_rabbitmq/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_rabbitmq
diff --git a/test/integration/targets/lookup_rabbitmq/tasks/main.yml b/test/integration/targets/lookup_rabbitmq/tasks/main.yml
deleted file mode 100644
index 740f899805..0000000000
--- a/test/integration/targets/lookup_rabbitmq/tasks/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Rabbitmq lookup
-- include: ubuntu.yml
- when:
- - ansible_distribution == 'Ubuntu'
- - ansible_distribution_release != 'trusty'
diff --git a/test/integration/targets/lookup_rabbitmq/tasks/ubuntu.yml b/test/integration/targets/lookup_rabbitmq/tasks/ubuntu.yml
deleted file mode 100644
index 3b007edecc..0000000000
--- a/test/integration/targets/lookup_rabbitmq/tasks/ubuntu.yml
+++ /dev/null
@@ -1,138 +0,0 @@
-- name: Test failure without pika installed
- set_fact:
- rabbit_missing_pika: "{{ lookup('rabbitmq', url='amqp://guest:guest@192.168.250.1:5672/%2F', queue='hello', count=3) }}"
- ignore_errors: yes
- register: rabbitmq_missing_pika_error
-
-- assert:
- that:
- - "'pika python package is required' in rabbitmq_missing_pika_error.msg"
-
-- name: Install pika and requests
- pip:
- name: pika<1.0.0,requests
- state: latest
-
-- name: Test that giving an incorrect amqp protocol in URL will error
- set_fact:
- rabbitmq_test_protocol: "{{ lookup('rabbitmq', url='zzzamqp://guest:guest@192.168.250.1:5672/%2F', queue='hello', count=3) }}"
- ignore_errors: yes
- register: rabbitmq_protocol_error
-
-- assert:
- that:
- - "rabbitmq_protocol_error is failed"
- - "'URL malformed' in rabbitmq_protocol_error.msg"
-
-- name: Test that giving an incorrect IP address in URL will error
- set_fact:
- rabbitmq_test_protocol: "{{ lookup('rabbitmq', url='amqp://guest:guest@xxxxx192.112312368.250.1:5672/%2F', queue='hello', count=3) }}"
- ignore_errors: yes
- register: rabbitmq_ip_error
-
-- assert:
- that:
- - "rabbitmq_ip_error is failed"
- - "'Connection issue' in rabbitmq_ip_error.msg"
-
-- name: Test missing parameters will error
- set_fact:
- rabbitmq_test_protocol: "{{ lookup('rabbitmq') }}"
- ignore_errors: yes
- register: rabbitmq_params_error
-
-- assert:
- that:
- - "rabbitmq_params_error is failed"
- - "'URL is required for rabbitmq lookup.' in rabbitmq_params_error.msg"
-
-- name: Test missing queue will error
- set_fact:
- rabbitmq_queue_protocol: "{{ lookup('rabbitmq', url='amqp://guest:guest@192.168.250.1:5672/%2F') }}"
- ignore_errors: yes
- register: rabbitmq_queue_error
-
-- assert:
- that:
- - "rabbitmq_queue_error is failed"
- - "'Queue is required for rabbitmq lookup' in rabbitmq_queue_error.msg"
-
-- name: Enables the rabbitmq_management plugin
- rabbitmq_plugin:
- names: rabbitmq_management
- state: enabled
-
-- name: Setup test queue
- rabbitmq_queue:
- name: hello
-
-- name: Post test message to the exchange (string)
- uri:
- url: http://localhost:15672/api/exchanges/%2f/amq.default/publish
- method: POST
- body: '{"properties":{},"routing_key":"hello","payload":"ansible-test","payload_encoding":"string"}'
- user: guest
- password: guest
- force_basic_auth: yes
- return_content: yes
- headers:
- Content-Type: "application/json"
- register: post_data
-
-
-- name: Post test message to the exchange (json)
- uri:
- url: http://localhost:15672/api/exchanges/%2f/amq.default/publish
- method: POST
- body: '{"properties":{"content_type": "application/json"},"routing_key":"hello","payload":"{\"key\": \"value\" }","payload_encoding":"string"}'
- user: guest
- password: guest
- force_basic_auth: yes
- return_content: yes
- headers:
- Content-Type: "application/json"
- register: post_data_json
-
-- name: Test retrieve messages
- set_fact:
- rabbitmq_msg: "{{ lookup('rabbitmq', url='amqp://guest:guest@localhost:5672/%2f/hello', queue='hello') }}"
- ignore_errors: yes
- register: rabbitmq_msg_error
-
-- name: Ensure two messages received
- assert:
- that:
- - "rabbitmq_msg_error is not failed"
- - rabbitmq_msg | length == 2
-
-- name: Ensure first message is a string
- assert:
- that:
- - rabbitmq_msg[0].msg == "ansible-test"
-
-- name: Ensure second message is json
- assert:
- that:
- - rabbitmq_msg[1].json.key == "value"
-
-- name: Test missing vhost
- set_fact:
- rabbitmq_msg: "{{ lookup('rabbitmq', url='amqp://guest:guest@localhost:5672/missing/', queue='hello') }}"
- ignore_errors: yes
- register: rabbitmq_vhost_error
-
-- assert:
- that:
- - "rabbitmq_vhost_error is failed"
- - "'NOT_ALLOWED' in rabbitmq_vhost_error.msg"
-
-# Tidy up
-- name: Uninstall pika and requests
- pip:
- name: pika,requests
- state: absent
-
-- name: Disable the rabbitmq_management plugin
- rabbitmq_plugin:
- names: rabbitmq_management
- state: disabled
diff --git a/test/integration/targets/lvg/aliases b/test/integration/targets/lvg/aliases
deleted file mode 100644
index 647b42805a..0000000000
--- a/test/integration/targets/lvg/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-needs/privileged
-shippable/posix/group1
-skip/aix
-skip/freebsd
-skip/osx
diff --git a/test/integration/targets/lvg/meta/main.yml b/test/integration/targets/lvg/meta/main.yml
deleted file mode 100644
index 1810d4bec9..0000000000
--- a/test/integration/targets/lvg/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_remote_tmp_dir
diff --git a/test/integration/targets/lvg/tasks/main.yml b/test/integration/targets/lvg/tasks/main.yml
deleted file mode 100644
index a57f591bf0..0000000000
--- a/test/integration/targets/lvg/tasks/main.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-- name: Install required packages (Linux)
- package:
- name: lvm2
- state: present
- when: ansible_system == 'Linux'
-
-- name: Test lvg module
- block:
- - import_tasks: setup.yml
-
- - import_tasks: test_indempotency.yml
-
- - import_tasks: test_grow_reduce.yml
- always:
- - import_tasks: teardown.yml
diff --git a/test/integration/targets/lvg/tasks/setup.yml b/test/integration/targets/lvg/tasks/setup.yml
deleted file mode 100644
index e63c2d641e..0000000000
--- a/test/integration/targets/lvg/tasks/setup.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-- name: "Create files to use as a disk devices"
- command: "dd if=/dev/zero of={{ remote_tmp_dir }}/img{{ item }} bs=1M count=10"
- with_sequence: 'count=2'
-
-- name: "Create loop device for file"
- command: "losetup --show -f {{ remote_tmp_dir }}/img{{ item }}"
- with_sequence: 'count=2'
- register: loop_devices
-
-- name: "Affect name on disk to work on"
- set_fact:
- loop_device1: "{{ loop_devices.results[0] }}"
- loop_device2: "{{ loop_devices.results[1] }}"
diff --git a/test/integration/targets/lvg/tasks/teardown.yml b/test/integration/targets/lvg/tasks/teardown.yml
deleted file mode 100644
index ed662f1e1f..0000000000
--- a/test/integration/targets/lvg/tasks/teardown.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-- name: Remove test volume group
- lvg:
- vg: testvg
- state: absent
-
-- name: Detach loop device
- command: "losetup -d {{ item.stdout }}"
- loop: "{{ loop_devices.results|default([]) }}"
- when:
- - item.stdout is defined
- - item.stdout is match("/dev/.*")
-
-- name: Remove device files
- file:
- path: "{{ remote_tmp_dir }}/img{{ item }}"
- state: absent
- with_sequence: 'count={{ loop_devices.results|length }}'
diff --git a/test/integration/targets/lvg/tasks/test_grow_reduce.yml b/test/integration/targets/lvg/tasks/test_grow_reduce.yml
deleted file mode 100644
index 1e98804538..0000000000
--- a/test/integration/targets/lvg/tasks/test_grow_reduce.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-- name: "Create volume group on first disk"
- lvg:
- vg: testvg
- pvs: "{{ loop_device1.stdout }}"
-
-- name: "get lvm facts"
- setup:
-
-- debug: var=ansible_lvm
-
-- name: "Assert the testvg span only on first disk"
- assert:
- that:
- - ansible_lvm.pvs[loop_device1.stdout].vg == "testvg"
- - 'loop_device2.stdout not in ansible_lvm.pvs or
- ansible_lvm.pvs[loop_device2.stdout].vg == ""'
-
-- name: "Extend to second disk AND reduce from the first disk"
- lvg:
- vg: testvg
- pvs: "{{ loop_device2.stdout }}"
-
-- name: "get lvm facts"
- setup:
-
-- debug: var=ansible_lvm
-
-- name: "Assert the testvg span only on first disk"
- assert:
- that:
- - 'loop_device1.stdout not in ansible_lvm.pvs or
- ansible_lvm.pvs[loop_device1.stdout].vg == ""'
- - ansible_lvm.pvs[loop_device2.stdout].vg == "testvg"
diff --git a/test/integration/targets/lvg/tasks/test_indempotency.yml b/test/integration/targets/lvg/tasks/test_indempotency.yml
deleted file mode 100644
index 5007e56a5b..0000000000
--- a/test/integration/targets/lvg/tasks/test_indempotency.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-- name: Create volume group on disk device
- lvg:
- vg: testvg
- pvs: "{{ loop_device1.stdout }}"
-
-- name: Create the volume group again to verify idempotence
- lvg:
- vg: testvg
- pvs: "{{ loop_device1.stdout }}"
- register: repeat_vg_create
-
-- name: Do all assertions to verify expected results
- assert:
- that:
- - repeat_vg_create is not changed
diff --git a/test/integration/targets/mail/aliases b/test/integration/targets/mail/aliases
deleted file mode 100644
index a6dafcf8cd..0000000000
--- a/test/integration/targets/mail/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/posix/group1
diff --git a/test/integration/targets/mail/files/smtpserver.crt b/test/integration/targets/mail/files/smtpserver.crt
deleted file mode 100644
index 44c18a243e..0000000000
--- a/test/integration/targets/mail/files/smtpserver.crt
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDrzCCApegAwIBAgIJAJyHQUcqSOQpMA0GCSqGSIb3DQEBCwUAMG4xCzAJBgNV
-BAYTAkJFMRMwEQYDVQQIDApWbGFhbmRlcmVuMQ0wCwYDVQQHDARHZW50MQ4wDAYD
-VQQKDAVEYWdpdDELMAkGA1UECwwCSVQxHjAcBgNVBAMMFWxvY2FsaG9zdC5sb2Nh
-bGRvbWFpbjAeFw0xODExMjgxMjQ3MzlaFw0yODExMjUxMjQ3MzlaMG4xCzAJBgNV
-BAYTAkJFMRMwEQYDVQQIDApWbGFhbmRlcmVuMQ0wCwYDVQQHDARHZW50MQ4wDAYD
-VQQKDAVEYWdpdDELMAkGA1UECwwCSVQxHjAcBgNVBAMMFWxvY2FsaG9zdC5sb2Nh
-bGRvbWFpbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANLqBGgIF44U
-zRhNupGwSKAeTIXT4nXPIJKlIi1kTSQwtywQmBw6leBlvj1qwU73+nhqwSclIrYx
-3ltvrpKHAWG1jqqsExuLRaKRdWgx1YC2WPgZwYC0C+LkE8vs/Kl1v0HgPuPMkzeK
-hDctQfWOaykFOy0mB/BfP2vSVoEckffMlDjG/bHwNt7cG8BnqKd8e9VR+ZcBazFK
-bnKhht0ldR84Wbp+5wpuCr1R1R0ltdO2O+LACrXzvH9Kf0CGhKXGccwGpi43eXyK
-CDbubkGcLjg9Fo7kZ6uW5nU2vHJ1iDGnvUl8X96qKoOFU0EvBveCisc1bY433uG1
-NjEZ1xLPGK8CAwEAAaNQME4wHQYDVR0OBBYEFO6nDFzJBZBLJt4yza+VrUEOy3Zl
-MB8GA1UdIwQYMBaAFO6nDFzJBZBLJt4yza+VrUEOy3ZlMAwGA1UdEwQFMAMBAf8w
-DQYJKoZIhvcNAQELBQADggEBALTq0ycKhEr/3KOsfKBup4bs5Oqv0x7ePaUNxyef
-JSyKTjD0gPY8YNAeNA7gU5XGjMr4h9cNpRmJ0TyfwWJxH4uK4d2p5k1ZpQWKv8jG
-4U9sZTQzkh8nqRBaEl94qsiCIRCllb6VveWbIGE6eqt4rT0V9l9fvbw+hSXdiYXT
-KkkX5VZxctV2OMkbP1mbOYIA22jqZKQiIvAVcMA6vSnlDAJKTi9/kw99/zjUQ9Jb
-8bF2gcnzAijJAWsCqf8hZVq9+pogptBd/bkKUCuTA4MACX5ppgQltkgX2mLrj6Ep
-Po2euqzUZREzKl2cUaP85m+8tClYk0Wjfm0RjxPRa8fgUfM=
------END CERTIFICATE-----
diff --git a/test/integration/targets/mail/files/smtpserver.key b/test/integration/targets/mail/files/smtpserver.key
deleted file mode 100644
index 48ddf644c9..0000000000
--- a/test/integration/targets/mail/files/smtpserver.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDS6gRoCBeOFM0Y
-TbqRsEigHkyF0+J1zyCSpSItZE0kMLcsEJgcOpXgZb49asFO9/p4asEnJSK2Md5b
-b66ShwFhtY6qrBMbi0WikXVoMdWAtlj4GcGAtAvi5BPL7Pypdb9B4D7jzJM3ioQ3
-LUH1jmspBTstJgfwXz9r0laBHJH3zJQ4xv2x8Dbe3BvAZ6infHvVUfmXAWsxSm5y
-oYbdJXUfOFm6fucKbgq9UdUdJbXTtjviwAq187x/Sn9AhoSlxnHMBqYuN3l8igg2
-7m5BnC44PRaO5GerluZ1NrxydYgxp71JfF/eqiqDhVNBLwb3gorHNW2ON97htTYx
-GdcSzxivAgMBAAECggEALDCRucYwQTmEexoWA94+aSXP/J4XLX23ImJs1bvVGccH
-KblUVV3E9x36DN4oIEZ+eOpNC8mRC0FJiDjPB643kOQ8PvAMlNHKRjRZt/nw9KW/
-4ENtMm0GrIQCzdAaY9ritoeoRYwgMBvadcEKt8seEpsg+eWk9izOmeWY8DYvMw6N
-hNu5zQLkMGTTqfDxkl7KnyKPhjW/++eUdgsTIA31/wHsJSiNR5Pkoy2fOVtNO7JN
-EghcKE3lYKKzOW6vg0LBY8xVQ4KMbCVgnYNI3MU9qpG2bYxy1hlWIrsjrt9PyRp8
-jDSKnLD4Zvv4L6gj2fhelES/YQ/055YyzG801Q+gUQKBgQDohqr5fwQj8Awrc0K/
-DodaIkVwXHkQAhSWidrqxZXmtn4ZsgDA3V82ZTIjWe2v7ES5U4jeYKGoUweCUodr
-PPT0IKEFmS2Fq1AZZx7Ry+ihA7gw6PV5DbG5DwyNYlhn6F6Bghl8pKAcXPGuwtgd
-BKXj7utEp57Q9ue3P00cGNokKQKBgQDoNNFMPnfv5UQp+K0A89cKW8q6sf93/ul4
-kjh72q/KbK57ouhWPNib3tJLvkl7P8S45nrUGQZtd6zLhU/6SzAnGGnNZ7gNAs3l
-SWidcmZDqIiIXh6BF4/4WxXMXJdhfrux9/O8Xk89v+EDAbLbN8jSrvy87+6mOmRM
-r/MAXToxFwKBgHpGbtxalbPMRKoIp33OxxB32yoWBreLUIZFIfC5THWRW8hpWYoS
-H0J8fpwmax5K0WzfZ6cBC6F3YAiBG6Mh3/IMwoAuJ8kV6D4jgwpx/vfE+/QEXSl2
-MRIOvtwObkzd3eyenIZ2D5g6rADphznjOtUcy21D8/kRDZLIX+U5kGTZAoGBAIYg
-/ETuUJlh9V3JJyXFtBFntFLjPo4x0Oq0i6v/RkvHO4JvN4WY4AYpT5Aw+oEW9KtZ
-dtnNGslgt49YEjqh886ha3wazVW2qPgozyUjT68FSth6hWRMF/19n7nMQiUu73x9
-nWzRjTQ+Aduav5WhQ39vVM5OSav7TrR9bgBn2ZVBAoGBAN4Hle/PIFzApQYQRIT0
-wPpOvEVx56+c70ZMvLv5UgmY2jLKZKFUV6oGGUZlJXfh1ZMnXShWY1pjvi/FnIIi
-AKDB9N17DE5AmpzuXFjU3YwXde98MjuUY03P3yaFQ4cXYryqgZxuMPgyGFM9vtMd
-WXFdvCtm0c3WMpPJSr9kgy6Q
------END PRIVATE KEY-----
diff --git a/test/integration/targets/mail/files/smtpserver.py b/test/integration/targets/mail/files/smtpserver.py
deleted file mode 100755
index 01b257e189..0000000000
--- a/test/integration/targets/mail/files/smtpserver.py
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2018, Dag Wieers (@dagwieers) <dag@wieers.com>
-# 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 asyncore
-import os.path
-import ssl
-import sys
-
-# Handle TLS and non-TLS support
-try:
- import smtpd_tls
- HAS_TLS = True
-except ImportError:
- import smtpd
- HAS_TLS = False
- print('Library smtpd-tls is missing or not supported, hence starttls is NOT supported.')
-
-# Handle custom ports
-port = '25:465'
-if len(sys.argv) > 1:
- port = sys.argv[1]
-ports = port.split(':')
-if len(ports) > 1:
- port1, port2 = int(ports[0]), int(ports[1])
-else:
- port1, port2 = int(port), None
-
-# Handle custom certificate
-basename = os.path.splitext(sys.argv[0])[0]
-certfile = basename + '.crt'
-if len(sys.argv) > 2:
- certfile = sys.argv[2]
-
-# Handle custom key
-keyfile = basename + '.key'
-if len(sys.argv) > 3:
- keyfile = sys.argv[3]
-
-try:
- ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
-except AttributeError:
- ssl_ctx = None
- if HAS_TLS:
- print('Python ssl library does not support SSLContext, hence starttls and TLS are not supported.')
- import smtpd
-
-if HAS_TLS and ssl_ctx is not None:
- print('Using %s and %s' % (certfile, keyfile))
- ssl_ctx.load_cert_chain(certfile=certfile, keyfile=keyfile)
-
- print('Start SMTP server on port', port1)
- smtp_server1 = smtpd_tls.DebuggingServer(('127.0.0.1', port1), None, ssl_ctx=ssl_ctx, starttls=True)
- if port2:
- print('Start TLS SMTP server on port', port2)
- smtp_server2 = smtpd_tls.DebuggingServer(('127.0.0.1', port2), None, ssl_ctx=ssl_ctx, starttls=False)
-else:
- print('Start SMTP server on port', port1)
- smtp_server1 = smtpd.DebuggingServer(('127.0.0.1', port1), None)
- if port2:
- print('WARNING: TLS is NOT supported on this system, not listening on port %s.' % port2)
-
-asyncore.loop()
diff --git a/test/integration/targets/mail/tasks/main.yml b/test/integration/targets/mail/tasks/main.yml
deleted file mode 100644
index 8a3280d77d..0000000000
--- a/test/integration/targets/mail/tasks/main.yml
+++ /dev/null
@@ -1,85 +0,0 @@
-# TODO: Our current implementation does not handle SMTP authentication
-
-# NOTE: If the system does not support smtpd-tls (python 2.6 and older) we do basic tests
-- name: Attempt to install smtpd-tls
- pip:
- name: smtpd-tls
- state: present
- ignore_errors: yes
- register: smtpd_tls
-
-- name: Install test smtpserver
- copy:
- src: '{{ item }}'
- dest: '{{ output_dir }}/{{ item }}'
- loop:
- - smtpserver.py
- - smtpserver.crt
- - smtpserver.key
-
-# FIXME: Verify the mail after it was send would be nice
-# This would require either dumping the content, or registering async task output
-- name: Start test smtpserver
- shell: '{{ ansible_python.executable }} {{ output_dir }}/smtpserver.py 10025:10465'
- async: 30
- poll: 0
- register: smtpserver
-
-- name: Send a basic test-mail
- mail:
- port: 10025
- subject: Test mail 1 (smtp)
- secure: never
-
-- name: Send a test-mail with body and specific recipient
- mail:
- port: 10025
- from: ansible@localhost
- to: root@localhost
- subject: Test mail 2 (smtp + body)
- body: Test body 2
- secure: never
-
-- name: Send a test-mail with attachment
- mail:
- port: 10025
- from: ansible@localhost
- to: root@localhost
- subject: Test mail 3 (smtp + body + attachment)
- body: Test body 3
- attach: /etc/group
- secure: never
-
-# NOTE: This might fail if smtpd-tls is missing or python 2.7.8 or older is used
-- name: Send a test-mail using starttls
- mail:
- port: 10025
- from: ansible@localhost
- to: root@localhost
- subject: Test mail 4 (smtp + starttls + body + attachment)
- body: Test body 4
- attach: /etc/group
- secure: starttls
- ignore_errors: yes
- register: starttls_support
-
-# NOTE: This might fail if smtpd-tls is missing or python 2.7.8 or older is used
-- name: Send a test-mail using TLS
- mail:
- port: 10465
- from: ansible@localhost
- to: root@localhost
- subject: Test mail 5 (smtp + tls + body + attachment)
- body: Test body 5
- attach: /etc/group
- secure: always
- ignore_errors: yes
- register: tls_support
-
-- fail:
- msg: Sending mail using starttls failed.
- when: smtpd_tls is succeeded and starttls_support is failed and tls_support is succeeded
-
-- fail:
- msg: Send mail using TLS failed.
- when: smtpd_tls is succeeded and tls_support is failed and starttls_support is succeeded
diff --git a/test/integration/targets/mariadb_replication/aliases b/test/integration/targets/mariadb_replication/aliases
deleted file mode 100644
index 1065935fc1..0000000000
--- a/test/integration/targets/mariadb_replication/aliases
+++ /dev/null
@@ -1,7 +0,0 @@
-destructive
-unsupported # these tests conflict with mysql_replication tests and do not run on changes to the mysql_replication module
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
-needs/root
diff --git a/test/integration/targets/mariadb_replication/defaults/main.yml b/test/integration/targets/mariadb_replication/defaults/main.yml
deleted file mode 100644
index 3751f4ef1c..0000000000
--- a/test/integration/targets/mariadb_replication/defaults/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-master_port: 3306
-standby_port: 3307
-test_db: test_db
-replication_user: replication_user
-replication_pass: replication_pass
-dump_path: /tmp/dump.sql
-conn_name: master-1
diff --git a/test/integration/targets/mariadb_replication/meta/main.yml b/test/integration/targets/mariadb_replication/meta/main.yml
deleted file mode 100644
index 7198617132..0000000000
--- a/test/integration/targets/mariadb_replication/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
-- setup_mariadb
diff --git a/test/integration/targets/mariadb_replication/tasks/main.yml b/test/integration/targets/mariadb_replication/tasks/main.yml
deleted file mode 100644
index 4ea76a9e84..0000000000
--- a/test/integration/targets/mariadb_replication/tasks/main.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Initial CI tests of mysql_replication module
-- import_tasks: mariadb_replication_initial.yml
- when:
- - ansible_facts.distribution == 'CentOS'
- - ansible_facts.distribution_major_version is version('7', '>=')
-
-# Tests of master_use_gtid parameter
-# https://github.com/ansible/ansible/pull/62648
-- import_tasks: mariadb_master_use_gtid.yml
- when:
- - ansible_facts.distribution == 'CentOS'
- - ansible_facts.distribution_major_version is version('7', '>=')
-
-# Tests of connection_name parameter
-- import_tasks: mariadb_replication_connection_name.yml
- when:
- - ansible_facts.distribution == 'CentOS'
- - ansible_facts.distribution_major_version is version('7', '>=')
diff --git a/test/integration/targets/mariadb_replication/tasks/mariadb_master_use_gtid.yml b/test/integration/targets/mariadb_replication/tasks/mariadb_master_use_gtid.yml
deleted file mode 100644
index e3e760589d..0000000000
--- a/test/integration/targets/mariadb_replication/tasks/mariadb_master_use_gtid.yml
+++ /dev/null
@@ -1,173 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Tests for master_use_gtid parameter.
-# https://github.com/ansible/ansible/pull/62648
-
-#############################
-# master_use_gtid: "disabled"
-#############################
-
-# Auxiliary step:
-- name: Get master status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ primary_db.port }}"
- mode: getmaster
- register: primary_status
-
-# Set master_use_gtid disabled:
-- name: Run replication
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: changemaster
- master_host: 127.0.0.1
- master_port: "{{ primary_db.port }}"
- master_user: "{{ replication_user }}"
- master_password: "{{ replication_pass }}"
- master_log_file: mysql-bin.000001
- master_log_pos: '{{ primary_status.Position }}'
- master_use_gtid: disabled
- register: result
-
-- assert:
- that:
- - result is changed
-
-# Start standby for further tests:
-- name: Start standby
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ primary_db.port }}"
- mode: startslave
-
-- name: Get standby status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: getslave
- register: slave_status
-
-- assert:
- that:
- - slave_status.Using_Gtid == 'No'
-
-# Stop standby for further tests:
-- name: Stop standby
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: stopslave
-
-################################
-# master_use_gtid: "current_pos"
-################################
-
-# Auxiliary step:
-- name: Get master status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ primary_db.port }}"
- mode: getmaster
- register: primary_status
-
-# Set master_use_gtid current_pos:
-- name: Run replication
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: changemaster
- master_host: 127.0.0.1
- master_port: "{{ primary_db.port }}"
- master_user: "{{ replication_user }}"
- master_password: "{{ replication_pass }}"
- master_log_file: mysql-bin.000001
- master_log_pos: '{{ primary_status.Position }}'
- master_use_gtid: current_pos
- register: result
-
-- assert:
- that:
- - result is changed
-
-# Start standby for further tests:
-- name: Start standby
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ primary_db.port }}"
- mode: startslave
-
-- name: Get standby status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: getslave
- register: slave_status
-
-- assert:
- that:
- - slave_status.Using_Gtid == 'Current_Pos'
-
-# Stop standby for further tests:
-- name: Stop standby
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: stopslave
-
-##############################
-# master_use_gtid: "slave_pos"
-##############################
-
-# Auxiliary step:
-- name: Get master status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ primary_db.port }}"
- mode: getmaster
- register: primary_status
-
-# Set master_use_gtid slave_pos:
-- name: Run replication
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: changemaster
- master_host: 127.0.0.1
- master_port: "{{ primary_db.port }}"
- master_user: "{{ replication_user }}"
- master_password: "{{ replication_pass }}"
- master_log_file: mysql-bin.000001
- master_log_pos: '{{ primary_status.Position }}'
- master_use_gtid: slave_pos
- register: result
-
-- assert:
- that:
- - result is changed
-
-# Start standby for further tests:
-- name: Start standby
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ primary_db.port }}"
- mode: startslave
-
-- name: Get standby status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: getslave
- register: slave_status
-
-- assert:
- that:
- - slave_status.Using_Gtid == 'Slave_Pos'
-
-# Stop standby for further tests:
-- name: Stop standby
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: stopslave
diff --git a/test/integration/targets/mariadb_replication/tasks/mariadb_replication_connection_name.yml b/test/integration/targets/mariadb_replication/tasks/mariadb_replication_connection_name.yml
deleted file mode 100644
index 98fa5fe62d..0000000000
--- a/test/integration/targets/mariadb_replication/tasks/mariadb_replication_connection_name.yml
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Needs for further tests:
-- name: Stop slave
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: stopslave
-
-- name: Reset slave all
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: resetslaveall
-
-# Get master log pos:
-- name: Get master status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ primary_db.port }}"
- mode: getmaster
- register: primary_status
-
-# Test changemaster mode:
-- name: Run replication with connection_name
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: changemaster
- master_host: 127.0.0.1
- master_port: "{{ primary_db.port }}"
- master_user: "{{ replication_user }}"
- master_password: "{{ replication_pass }}"
- master_log_file: mysql-bin.000001
- master_log_pos: '{{ primary_status.Position }}'
- connection_name: '{{ conn_name }}'
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries[0] is match("CHANGE MASTER ('\S+' )?TO MASTER_HOST='[0-9.]+',MASTER_USER='\w+',MASTER_PASSWORD='[*]{8}',MASTER_PORT=\d+,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=\d+")
-
-# Test startslave mode:
-- name: Start slave with connection_name
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: startslave
- connection_name: "{{ conn_name }}"
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["START SLAVE \'{{ conn_name }}\'"]
-
-# Test getslave mode:
-- name: Get standby statu with connection_name
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: getslave
- connection_name: "{{ conn_name }}"
- register: slave_status
-
-- assert:
- that:
- - slave_status.Is_Slave == true
- - slave_status.Master_Host == '127.0.0.1'
- - slave_status.Exec_Master_Log_Pos == primary_status.Position
- - slave_status.Master_Port == {{ primary_db.port }}
- - slave_status.Last_IO_Errno == 0
- - slave_status.Last_IO_Error == ''
- - slave_status is not changed
-
-# Test stopslave mode:
-- name: Stop slave with connection_name
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: stopslave
- connection_name: "{{ conn_name }}"
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["STOP SLAVE \'{{ conn_name }}\'"]
-
-# Test reset
-- name: Reset slave with connection_name
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: resetslave
- connection_name: "{{ conn_name }}"
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["RESET SLAVE \'{{ conn_name }}\'"]
-
-# Test reset all
-- name: Reset slave all with connection_name
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: resetslaveall
- connection_name: "{{ conn_name }}"
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["RESET SLAVE \'{{ conn_name }}\' ALL"]
diff --git a/test/integration/targets/mariadb_replication/tasks/mariadb_replication_initial.yml b/test/integration/targets/mariadb_replication/tasks/mariadb_replication_initial.yml
deleted file mode 100644
index 86a67606da..0000000000
--- a/test/integration/targets/mariadb_replication/tasks/mariadb_replication_initial.yml
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Preparation:
-- name: Create user for replication
- shell: "echo \"GRANT REPLICATION SLAVE ON *.* TO '{{ replication_user }}'@'localhost' IDENTIFIED BY '{{ replication_pass }}'; FLUSH PRIVILEGES;\" | mysql -P {{ primary_db.port }} -h 127.0.0.1"
-
-- name: Create test database
- mysql_db:
- login_host: 127.0.0.1
- login_port: '{{ primary_db.port }}'
- state: present
- name: '{{ test_db }}'
-
-- name: Dump all databases from the master
- shell: 'mysqldump -P {{ primary_db.port }} -h 127.0.01 --all-databases --master-data=2 > {{ dump_path }}'
-
-- name: Restore the dump to the replica
- shell: 'mysql -P {{ replica_db.port }} -h 127.0.0.1 < {{ dump_path }}'
-
-# Test getmaster mode:
-- name: Get master status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ primary_db.port }}"
- mode: getmaster
- register: master_status
-
-- assert:
- that:
- - master_status.Is_Master == true
- - master_status.Position != 0
- - master_status is not changed
-
-# Test changemaster mode:
-- name: Run replication
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: changemaster
- master_host: 127.0.0.1
- master_port: "{{ primary_db.port }}"
- master_user: "{{ replication_user }}"
- master_password: "{{ replication_pass }}"
- master_log_file: mysql-bin.000001
- master_log_pos: '{{ master_status.Position }}'
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries[0] is match("CHANGE MASTER ('\S+' )?TO MASTER_HOST='[0-9.]+',MASTER_USER='\w+',MASTER_PASSWORD='[*]{8}',MASTER_PORT=\d+,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=\d+")
-
-# Test startslave mode:
-- name: Start slave
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: startslave
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["START SLAVE"]
-
-# Test getslave mode:
-- name: Get replica status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: getslave
- register: slave_status
-
-- assert:
- that:
- - slave_status.Is_Slave == true
- - slave_status.Master_Host == '127.0.0.1'
- - slave_status.Exec_Master_Log_Pos == master_status.Position
- - slave_status.Master_Port == {{ primary_db.port }}
- - slave_status.Last_IO_Errno == 0
- - slave_status.Last_IO_Error == ''
- - slave_status is not changed
-
-# Test stopslave mode:
-- name: Stop slave
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ replica_db.port }}"
- mode: stopslave
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["STOP SLAVE"]
diff --git a/test/integration/targets/mas/aliases b/test/integration/targets/mas/aliases
deleted file mode 100644
index 57c4f1c080..0000000000
--- a/test/integration/targets/mas/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-needs/root
-unsupported \ No newline at end of file
diff --git a/test/integration/targets/mas/tasks/main.yml b/test/integration/targets/mas/tasks/main.yml
deleted file mode 100644
index dbdbd0bc47..0000000000
--- a/test/integration/targets/mas/tasks/main.yml
+++ /dev/null
@@ -1,151 +0,0 @@
-# Test code for the mas module.
-# Copyright: (c) 2020, Lukas Bestle <project-ansible@lukasbestle.com>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-# Test preparation
-- name: Uninstall Rested to ensure consistent starting point
- mas:
- id: 421879749
- state: absent
- become: yes
-
-- name: Determine whether the app is installed
- stat:
- path: /Applications/Rested.app
- register: install_status
-
-- name: Ensure the app is uninstalled
- assert:
- that:
- - install_status.stat.exists == false
-
-- name: Wait until the OS-internal cache was updated
- pause:
- seconds: 5
-
-# Installation
-- name: Check if Rested needs to be installed
- mas:
- id: 421879749
- state: present
- register: install_check
- check_mode: yes
-
-- name: Ensure that the status would have changed
- assert:
- that:
- - install_check is changed
- - install_check.msg == "Installed 1 app(s)"
-
-- name: Determine whether the app is installed
- stat:
- path: /Applications/Rested.app
- register: install_status
-
-- name: Ensure the app is not yet installed
- assert:
- that:
- - install_status.stat.exists == false
-
-- name: Install Rested
- mas:
- id: 421879749
- state: present
- register: install
-
-- name: Ensure that the status changed
- assert:
- that:
- - install is changed
- - install.msg == "Installed 1 app(s)"
-
-- name: Determine whether the app is installed
- stat:
- path: /Applications/Rested.app
- register: install_status
-
-- name: Ensure the app is installed
- assert:
- that:
- - install_status.stat.exists == true
-
-- name: Wait until the OS-internal cache was updated
- pause:
- seconds: 5
-
-- name: Install Rested again
- mas:
- id: 421879749
- state: present
- register: install_again
-
-- name: Ensure that the status is unchanged (already installed)
- assert:
- that:
- - install_again is not changed
- - "'msg' not in install_again"
-
-# Uninstallation
-- name: Check if Rested needs to be uninstalled
- mas:
- id: 421879749
- state: absent
- register: uninstall_check
- become: yes
- check_mode: yes
-
-- name: Ensure that the status would have changed
- assert:
- that:
- - uninstall_check is changed
- - uninstall_check.msg == "Uninstalled 1 app(s)"
-
-- name: Determine whether the app is installed
- stat:
- path: /Applications/Rested.app
- register: install_status
-
-- name: Ensure the app is not yet uninstalled
- assert:
- that:
- - install_status.stat.exists == true
-
-- name: Unistall Rested
- mas:
- id: 421879749
- state: absent
- register: uninstall
- become: yes
-
-- name: Ensure that the status changed
- assert:
- that:
- - uninstall is changed
- - uninstall.msg == "Uninstalled 1 app(s)"
-
-- name: Determine whether the app is installed
- stat:
- path: /Applications/Rested.app
- register: uninstall_status
-
-- name: Ensure the app is uninstalled
- assert:
- that:
- - uninstall_status.stat.exists == false
-
-- name: Wait until the OS-internal cache was updated
- pause:
- seconds: 5
-
-- name: Uninstall Rested again
- mas:
- id: 421879749
- state: absent
- register: uninstall_again
- become: yes
-
-- name: Ensure that the status is unchanged (already uninstalled)
- assert:
- that:
- - uninstall_again is not changed
- - "'msg' not in uninstall_again"
diff --git a/test/integration/targets/memset_dns_reload/aliases b/test/integration/targets/memset_dns_reload/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/memset_dns_reload/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/memset_dns_reload/meta/main.yml b/test/integration/targets/memset_dns_reload/meta/main.yml
deleted file mode 100644
index 73b314ff7c..0000000000
--- a/test/integration/targets/memset_dns_reload/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
---- \ No newline at end of file
diff --git a/test/integration/targets/memset_dns_reload/tasks/main.yml b/test/integration/targets/memset_dns_reload/tasks/main.yml
deleted file mode 100644
index b2dcad599c..0000000000
--- a/test/integration/targets/memset_dns_reload/tasks/main.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-- name: request reload with invalid API key
- memset_dns_reload:
- api_key: "wa9aerahhie0eekee9iaphoorovooyia"
- ignore_errors: true
- register: result
-
-- name: check API response with invalid API key
- assert:
- that:
- - "'Memset API returned a 403 response (ApiErrorForbidden, Bad api_key)' in result.msg"
- - result is not successful
-
-- name: request reload and poll
- memset_dns_reload:
- api_key: "{{ api_key }}"
- poll: true
- register: result
-
-- name: check reload succeeded
- assert:
- that:
- - result is changed
- - result is successful
diff --git a/test/integration/targets/memset_memstore_info/aliases b/test/integration/targets/memset_memstore_info/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/memset_memstore_info/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/memset_memstore_info/meta/main.yml b/test/integration/targets/memset_memstore_info/meta/main.yml
deleted file mode 100644
index 73b314ff7c..0000000000
--- a/test/integration/targets/memset_memstore_info/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
---- \ No newline at end of file
diff --git a/test/integration/targets/memset_memstore_info/tasks/main.yml b/test/integration/targets/memset_memstore_info/tasks/main.yml
deleted file mode 100644
index a26e7dba6a..0000000000
--- a/test/integration/targets/memset_memstore_info/tasks/main.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-- name: query API with invalid API key
- memset_memstore_info:
- api_key: 'wa9aerahhie0eekee9iaphoorovooyia'
- name: 'mstestyaa1'
- ignore_errors: true
- register: result
-
-- name: check API response with invalid API key
- assert:
- that:
- - "'Memset API returned a 403 response (ApiErrorForbidden, Bad api_key)' in result.msg"
- - result is not successful
-
-- name: request memstore infos
- memset_memstore_info:
- api_key: "{{ api_key }}"
- name: 'mstestyaa1'
- register: result
-
-- name: check the request succeeded
- assert:
- that:
- - result is not changed
- - result is successful
diff --git a/test/integration/targets/memset_server_info/aliases b/test/integration/targets/memset_server_info/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/memset_server_info/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/memset_server_info/meta/main.yml b/test/integration/targets/memset_server_info/meta/main.yml
deleted file mode 100644
index 73b314ff7c..0000000000
--- a/test/integration/targets/memset_server_info/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
---- \ No newline at end of file
diff --git a/test/integration/targets/memset_server_info/tasks/main.yml b/test/integration/targets/memset_server_info/tasks/main.yml
deleted file mode 100644
index 86de45f2b0..0000000000
--- a/test/integration/targets/memset_server_info/tasks/main.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-- name: query API with invalid API key
- memset_server_info:
- api_key: 'wa9aerahhie0eekee9iaphoorovooyia'
- name: 'testyaa1'
- ignore_errors: true
- register: result
-
-- name: check API response with invalid API key
- assert:
- that:
- - "'Memset API returned a 403 response (ApiErrorForbidden, Bad api_key)' in result.msg"
- - result is not successful
-
-- name: request server infos
- memset_server_info:
- api_key: "{{ api_key }}"
- name: 'testyaa1'
- register: result
-
-- name: check the request succeeded
- assert:
- that:
- - result is not changed
- - result is successful
diff --git a/test/integration/targets/memset_zone/aliases b/test/integration/targets/memset_zone/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/memset_zone/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/memset_zone/meta/main.yml b/test/integration/targets/memset_zone/meta/main.yml
deleted file mode 100644
index ed97d539c0..0000000000
--- a/test/integration/targets/memset_zone/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
----
diff --git a/test/integration/targets/memset_zone/tasks/main.yml b/test/integration/targets/memset_zone/tasks/main.yml
deleted file mode 100644
index f80e52d82a..0000000000
--- a/test/integration/targets/memset_zone/tasks/main.yml
+++ /dev/null
@@ -1,116 +0,0 @@
----
-- name: create random string
- set_fact:
- zone_name: "{{ 65535 | random | string }}.ansible.example.com"
-
-- name: create zone with incorrect API key
- memset_zone:
- api_key: "wa9aerahhie0eekee9iaphoorovooyia"
- state: present
- name: "{{ zone_name }}"
- ttl: 300
- ignore_errors: true
- register: result
-
-- name: check API response with invalid API key
- assert:
- that:
- - "'Memset API returned a 403 response (ApiErrorForbidden, Bad api_key)' in result.msg"
- - result is not successful
-
-- name: test creating zone
- memset_zone:
- api_key: "{{ api_key }}"
- state: present
- name: "{{ zone_name }}"
- ttl: 300
- check_mode: true
- register: result
-
-- name: check if the zone would be created
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: create zone
- memset_zone:
- api_key: "{{ api_key }}"
- state: present
- name: "{{ zone_name }}"
- ttl: 300
- register: result
-
-- name: create the zone
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: create duplicate zone
- memset_zone:
- api_key: "{{ api_key }}"
- state: present
- name: "{{ zone_name }}"
- ttl: 300
- register: result
-
-- name: ensure we can't create duplicate zones
- assert:
- that:
- - result is not changed
-
-- name: test deleting zone
- memset_zone:
- api_key: "{{ api_key }}"
- state: absent
- name: "{{ zone_name }}"
- check_mode: true
- register: result
-
-- name: check if the zone would be deleted
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: delete empty zone
- memset_zone:
- api_key: "{{ api_key }}"
- state: absent
- name: "{{ zone_name }}"
- force: false
- register: result
-
-- name: delete the zone
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: create zone for deletion test
- memset_zone:
- api_key: "{{ api_key }}"
- state: present
- name: "{{ zone_name }}"
- register: result
-
-- name: ensure we can't create duplicate zones
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: delete zone with force
- memset_zone:
- api_key: "{{ api_key }}"
- state: absent
- name: "{{ zone_name }}"
- force: true
- register: result
-
-- name: ensure force is respected
- assert:
- that:
- - result is changed
- - result is successful
diff --git a/test/integration/targets/memset_zone/vars/main.yml b/test/integration/targets/memset_zone/vars/main.yml
deleted file mode 100644
index 1f8f2eba1e..0000000000
--- a/test/integration/targets/memset_zone/vars/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-random_string: "baiqui8ci6miedoo9eivohJ0aixei7oo"
diff --git a/test/integration/targets/memset_zone_domain/aliases b/test/integration/targets/memset_zone_domain/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/memset_zone_domain/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/memset_zone_domain/meta/main.yml b/test/integration/targets/memset_zone_domain/meta/main.yml
deleted file mode 100644
index 73b314ff7c..0000000000
--- a/test/integration/targets/memset_zone_domain/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
---- \ No newline at end of file
diff --git a/test/integration/targets/memset_zone_domain/tasks/main.yml b/test/integration/targets/memset_zone_domain/tasks/main.yml
deleted file mode 100644
index f41cf869c2..0000000000
--- a/test/integration/targets/memset_zone_domain/tasks/main.yml
+++ /dev/null
@@ -1,143 +0,0 @@
----
-- name: create domain with invalid API key
- memset_zone_domain:
- api_key: "wa9aerahhie0eekee9iaphoorovooyia"
- state: present
- domain: "{{ test_domain }}"
- zone: "{{ target_zone }}"
- ignore_errors: true
- register: result
-
-- name: check API response with invalid API key
- assert:
- that:
- - "'Memset API returned a 403 response (ApiErrorForbidden, Bad api_key)' in result.msg"
- - result is not successful
-
-- name: create domain over 250 chars
- memset_zone_domain:
- api_key: "{{ api_key }}"
- state: present
- domain: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com'
- zone: "{{ target_zone }}"
- ignore_errors: true
- register: result
-
-- name: test domain length is validated
- assert:
- that:
- - result is failed
- - "'Zone domain must be less than 250 characters in length' in result.stderr"
-
-- name: create domain in non-existent zone
- memset_zone_domain:
- api_key: "{{ api_key }}"
- state: present
- domain: "{{ test_domain }}"
- zone: "non-existent-zone"
- ignore_errors: true
- register: result
-
-- name: fail if zone does not exist
- assert:
- that:
- - result is failed
- - "'does not exist, cannot create domain.' in result.stderr"
-
-- name: create domain in non-unique zone
- memset_zone_domain:
- api_key: "{{ api_key }}"
- state: present
- domain: "{{ test_domain }}"
- zone: "{{ duplicate_zone }}"
- ignore_errors: true
- register: result
-
-- name: fail if the zone is not unique
- assert:
- that:
- - result is failed
- - "'matches multiple zones, cannot create domain' in result.stderr"
-
-- name: test creating domain
- memset_zone_domain:
- api_key: "{{ api_key }}"
- state: present
- domain: "{{ test_domain }}"
- zone: "{{ target_zone }}"
- check_mode: true
- register: result
-
-- name: create domain with check mode
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: create domain
- memset_zone_domain:
- api_key: "{{ api_key }}"
- state: present
- domain: "{{ test_domain }}"
- zone: "{{ target_zone }}"
- register: result
-
-- name: create domain
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: create existing domain
- memset_zone_domain:
- api_key: "{{ api_key }}"
- state: present
- domain: "{{ test_domain }}"
- zone: "{{ target_zone }}"
- register: result
-
-- name: create existing domain
- assert:
- that:
- - result is not changed
-
-- name: test deleting domain
- memset_zone_domain:
- api_key: "{{ api_key }}"
- state: absent
- domain: "{{ test_domain }}"
- zone: "{{ target_zone }}"
- check_mode: true
- register: result
-
-- name: delete domain with check mode
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: delete domain
- memset_zone_domain:
- api_key: "{{ api_key }}"
- state: absent
- domain: "{{ test_domain }}"
- zone: "{{ target_zone }}"
- register: result
-
-- name: delete domain
- assert:
- that:
- - result is changed
-
-- name: delete non-existent domain
- memset_zone_domain:
- api_key: "{{ api_key }}"
- state: absent
- domain: "{{ test_domain }}"
- zone: "{{ target_zone }}"
- register: result
-
-- name: delete absent domain
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/memset_zone_domain/vars/main.yml b/test/integration/targets/memset_zone_domain/vars/main.yml
deleted file mode 100644
index 022e6a3cfc..0000000000
--- a/test/integration/targets/memset_zone_domain/vars/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-test_domain: ansible.example.com
-target_zone: ansible-dns-zone
-duplicate_zone: ansible-dns-zone-dupe
diff --git a/test/integration/targets/memset_zone_record/aliases b/test/integration/targets/memset_zone_record/aliases
deleted file mode 100644
index ad7ccf7ada..0000000000
--- a/test/integration/targets/memset_zone_record/aliases
+++ /dev/null
@@ -1 +0,0 @@
-unsupported
diff --git a/test/integration/targets/memset_zone_record/meta/main.yml b/test/integration/targets/memset_zone_record/meta/main.yml
deleted file mode 100644
index ed97d539c0..0000000000
--- a/test/integration/targets/memset_zone_record/meta/main.yml
+++ /dev/null
@@ -1 +0,0 @@
----
diff --git a/test/integration/targets/memset_zone_record/tasks/main.yml b/test/integration/targets/memset_zone_record/tasks/main.yml
deleted file mode 100644
index 0171188415..0000000000
--- a/test/integration/targets/memset_zone_record/tasks/main.yml
+++ /dev/null
@@ -1,225 +0,0 @@
-- name: create record with incorrect API key
- memset_zone_record:
- api_key: "wa9aerahhie0eekee9iaphoorovooyia"
- state: present
- zone: "{{ test_zone }}"
- type: A
- address: 127.0.0.1
- ignore_errors: true
- register: result
-
-- assert:
- that:
- - "'Memset API returned a 403 response (ApiErrorForbidden, Bad api_key)' in result.msg"
- - result is not successful
-
-- name: create record in non-existent zone
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: present
- zone: "a-non-existent-zone"
- type: A
- address: 127.0.0.1
- ignore_errors: true
- register: result
-
-- name: assert that record is not created
- assert:
- that:
- - "'DNS zone a-non-existent-zone does not exist.' in result.msg"
- - result is not successful
-
-- name: create record in non-unique zone
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: present
- zone: "{{ duplicate_zone }}"
- type: A
- address: 127.0.0.1
- ignore_errors: true
- register: result
-
-- name: assert that record is not created
- assert:
- that:
- - "'ansible-dns-zone-dupe matches multiple zones.' in result.msg"
- - result is not successful
-
-- name: create record with invalid priority
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: present
- zone: "{{ test_zone }}"
- type: SRV
- address: "0 5269 hostname.example.com"
- record: "_jabber._tcp"
- priority: 1001
- ignore_errors: true
- register: result
-
-- name: assert that priority was out of range
- assert:
- that:
- - "'Priority must be in the range 0 > 999 (inclusive).' in result.msg"
- - result is not successful
-
-- name: create record with address longer than 250 chars
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: present
- zone: "{{ test_zone }}"
- type: CNAME
- address: "aaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com"
- record: "aaa.ansible.com"
- ignore_errors: true
- register: result
-
-- name: assert that address was longer than allowed
- assert:
- that:
- - "'Address must be less than 250 characters in length.' in result.msg"
- - result is not successful
-
-- name: create record longer than 63 chars
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: present
- zone: "{{ test_zone }}"
- type: A
- address: 127.0.0.1
- record: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- ignore_errors: true
- register: result
-
-- name: assert that record was longer than allowed
- assert:
- that:
- - "'Record must be less than 63 characters in length.' in result.msg"
- - result is not successful
-
-- name: create record which cannot have relative enabled
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: present
- zone: "{{ test_zone }}"
- type: A
- address: 127.0.0.1
- relative: true
- ignore_errors: true
- register: result
-
-- name: assert that setting relative failed
- assert:
- that:
- - "'Relative is only valid for CNAME, MX, NS and SRV record types' in result.msg"
- - result is not successful
-
-- name: test creating valid A record
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: present
- zone: "{{ test_zone }}"
- type: A
- address: 127.0.0.1
- record: "www"
- check_mode: true
- register: result
-
-- name: assert that result would have changed
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: actually create valid A record
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: present
- zone: "{{ test_zone }}"
- type: A
- address: 127.0.0.1
- record: "www"
- register: result
-
-- name: assert that result changed
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: create valid SPF record
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: present
- zone: "{{ test_zone }}"
- type: TXT
- address: "v=spf1 +a +mx +ip4:127.0.0.1 ?all"
- register: result
-
-- name: assert that result changed
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: test deleting A record
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: absent
- zone: "{{ test_zone }}"
- type: A
- address: 127.0.0.1
- record: "www"
- check_mode: true
- register: result
-
-- name: assert that result changed
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: actually delete A record
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: absent
- zone: "{{ test_zone }}"
- type: A
- address: 127.0.0.1
- record: "www"
- register: result
-
-- name: assert that result changed
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: delete SPF record
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: absent
- zone: "{{ test_zone }}"
- type: TXT
- address: "v=spf1 +a +mx +ip4:127.0.0.1 ?all"
- register: result
-
-- name: assert that result changed
- assert:
- that:
- - result is changed
- - result is successful
-
-- name: delete non-existent SPF record
- memset_zone_record:
- api_key: "{{ api_key }}"
- state: absent
- zone: "{{ test_zone }}"
- type: TXT
- address: "v=spf1 +a +mx +ip4:127.0.0.1 ?all"
- register: result
-
-- name: assert that result changed
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/memset_zone_record/vars/main.yml b/test/integration/targets/memset_zone_record/vars/main.yml
deleted file mode 100644
index ae0598bd6f..0000000000
--- a/test/integration/targets/memset_zone_record/vars/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-test_zone: ansible-dns-record-tests
-duplicate_zone: ansible-dns-zone-dupe
diff --git a/test/integration/targets/mqtt/aliases b/test/integration/targets/mqtt/aliases
deleted file mode 100644
index 8f81886769..0000000000
--- a/test/integration/targets/mqtt/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-notification/mqtt
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/mqtt/meta/main.yml b/test/integration/targets/mqtt/meta/main.yml
deleted file mode 100644
index 86f3d04363..0000000000
--- a/test/integration/targets/mqtt/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_mosquitto
diff --git a/test/integration/targets/mqtt/tasks/main.yml b/test/integration/targets/mqtt/tasks/main.yml
deleted file mode 100644
index 37442abfec..0000000000
--- a/test/integration/targets/mqtt/tasks/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- include: ubuntu.yml
- when:
- - ansible_distribution == 'Ubuntu'
- - ansible_distribution_release != 'trusty'
diff --git a/test/integration/targets/mqtt/tasks/ubuntu.yml b/test/integration/targets/mqtt/tasks/ubuntu.yml
deleted file mode 100644
index 71ff3e90bc..0000000000
--- a/test/integration/targets/mqtt/tasks/ubuntu.yml
+++ /dev/null
@@ -1,142 +0,0 @@
-- name: Install pip packages
- pip:
- name: paho-mqtt>=1.4.0
- state: present
-
-- name: MQTT non-TLS endpoint
- mqtt:
- topic: /node/s/bar/blurb
- payload: foo
- qos: 1
- client_id: me001
- register: result
-
-- assert:
- that:
- - result is success
-
-- name: Send a test message to TLS1.1 endpoint, no client version specified
- mqtt:
- topic: /node/s/bar/blurb
- payload: foo-tls
- qos: 1
- client_id: me001
- ca_certs: /tls/ca_certificate.pem
- certfile: /tls/client_certificate.pem
- keyfile: /tls/client_key.pem
- port: 8883
- register: result
-
-- assert:
- that:
- - result is success
-
-- name: Send a test message to TLS1.2 endpoint, no client version specified
- mqtt:
- topic: /node/s/bar/blurb
- payload: foo-tls
- qos: 1
- client_id: me001
- ca_certs: /tls/ca_certificate.pem
- certfile: /tls/client_certificate.pem
- keyfile: /tls/client_key.pem
- port: 8884
- register: result
-
-- assert:
- that:
- - result is success
-
-# TODO(Uncomment when TLS1.3 is supported in moquitto and ubuntu version)
-#
-# - name: Send a test message to TLS1.3 endpoint
-# mqtt:
-# topic: /node/s/bar/blurb
-# payload: foo-tls
-# qos: 1
-# client_id: me001
-# ca_certs: /tls/ca_certificate.pem
-# certfile: /tls/client_certificate.pem
-# keyfile: /tls/client_key.pem
-# port: 8885
-# register: result
-
-#- assert:
-# that:
-# - result is success
-
-- name: Send a message, client TLS1.1, server (required) TLS1.2 - Expected failure
- mqtt:
- topic: /node/s/bar/blurb
- payload: foo-tls
- qos: 1
- client_id: me001
- ca_certs: /tls/ca_certificate.pem
- certfile: /tls/client_certificate.pem
- keyfile: /tls/client_key.pem
- tls_version: tlsv1.1
- port: 8884
- register: result
- failed_when: result is success
-
-- assert:
- that:
- - result is success
-
-# TODO(Uncomment when TLS1.3 is supported in moquitto and ubuntu version)
-#
-# - name: Send a message, client TLS1.1, server (required) TLS1.3 - Expected failure
-# mqtt:
-# topic: /node/s/bar/blurb
-# payload: foo-tls
-# qos: 1
-# client_id: me001
-# ca_certs: /tls/ca_certificate.pem
-# certfile: /tls/client_certificate.pem
-# keyfile: /tls/client_key.pem
-# tls_version: tlsv1.1
-# port: 8885
-# register: result
-# failed_when: result is success
-
-# - assert:
-# that:
-# - result is success
-
-- name: Send a message, client TLS1.2, server (required) TLS1.1 - Expected failure
- mqtt:
- topic: /node/s/bar/blurb
- payload: foo-tls
- qos: 1
- client_id: me001
- ca_certs: /tls/ca_certificate.pem
- certfile: /tls/client_certificate.pem
- keyfile: /tls/client_key.pem
- tls_version: tlsv1.2
- port: 8883
- register: result
- failed_when: result is success
-
-- assert:
- that:
- - result is success
-
-# TODO(Uncomment when TLS1.3 is supported in moquitto and ubuntu version)
-#
-# - name: Send a message, client TLS1.2, server (required) TLS1.3 - Expected failure
-# mqtt:
-# topic: /node/s/bar/blurb
-# payload: foo-tls
-# qos: 1
-# client_id: me001
-# ca_certs: /tls/ca_certificate.pem
-# certfile: /tls/client_certificate.pem
-# keyfile: /tls/client_key.pem
-# tls_version: tlsv1.2
-# port: 8885
-# register: result
-# failed_when: result is success
-
-# - assert:
-# that:
-# - result is success
diff --git a/test/integration/targets/mysql_db/aliases b/test/integration/targets/mysql_db/aliases
deleted file mode 100644
index ee2c7af58f..0000000000
--- a/test/integration/targets/mysql_db/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-destructive
-shippable/posix/group5
-skip/aix
-skip/osx
-skip/freebsd
diff --git a/test/integration/targets/mysql_db/defaults/main.yml b/test/integration/targets/mysql_db/defaults/main.yml
deleted file mode 100644
index 764064bcd6..0000000000
--- a/test/integration/targets/mysql_db/defaults/main.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-# defaults file for test_mysql_db
-db_name: 'data'
-db_name2: 'data2'
-db_user1: 'datauser1'
-db_user2: 'datauser2'
-
-tmp_dir: '/tmp'
-db_latin1_name: 'db_latin1'
-file4: 'latin1_file'
diff --git a/test/integration/targets/mysql_db/meta/main.yml b/test/integration/targets/mysql_db/meta/main.yml
deleted file mode 100644
index 4aa170dc06..0000000000
--- a/test/integration/targets/mysql_db/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_mysql_db
diff --git a/test/integration/targets/mysql_db/tasks/encoding_dump_import.yml b/test/integration/targets/mysql_db/tasks/encoding_dump_import.yml
deleted file mode 100644
index a1bacd1862..0000000000
--- a/test/integration/targets/mysql_db/tasks/encoding_dump_import.yml
+++ /dev/null
@@ -1,78 +0,0 @@
----
-
-- set_fact:
- latin1_file1="{{tmp_dir}}/{{file}}"
-
-- name: Deleting Latin1 encoded Database
- mysql_db:
- name: '{{ db_latin1_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: create Latin1 encoded database
- mysql_db:
- name: '{{ db_latin1_name }}'
- state: present
- encoding: latin1
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: create a table in Latin1 database
- command: mysql {{ db_latin1_name }} -e 'create table testlatin1(id int, name varchar(100));'
-
-
-# Inserting a string in latin1 into table, , this string be tested later,
-# so report any change of content in the test too
-- name: inserting data into Latin1 database
- command: mysql {{ db_latin1_name }} -e "insert into testlatin1 value(47,'Amédée Bôlüt');"
-
-- name: selecting table
- command: mysql {{ db_latin1_name }} -e "select * from testlatin1;"
- register: output
-
-- name: Dumping a table in Latin1 database
- mysql_db:
- name: "{{ db_latin1_name }}"
- encoding: latin1
- target: "{{ latin1_file1 }}"
- state: dump
- login_unix_socket: '{{ mysql_socket }}'
- register: dump_result
-
-- assert:
- that:
- - result is changed
-
-- name: state dump - file name should exist
- file: name={{ latin1_file1 }} state=file
-
-- name: od the file and check of latin1 encoded string is present
- shell: grep -a 47 {{ latin1_file1 }} | od -c |grep "A m 351 d 351 e B 364\|A m 303 251 d 303 251 e B 303"
-
-- name: Dropping {{ db_latin1_name }} database
- mysql_db:
- name: '{{ db_latin1_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: Importing the latin1 mysql script
- mysql_db:
- state: import
- encoding: latin1
- name: '{{ db_latin1_name }}'
- target: "{{ latin1_file1 }}"
- login_unix_socket: '{{ mysql_socket }}'
-
-- assert:
- that:
- - result is changed
-
-- name: check encoding of table
- shell: mysql {{ db_latin1_name }} -e "SHOW FULL COLUMNS FROM testlatin1;"
- register: output
- failed_when: '"latin1_swedish_ci" not in output.stdout'
-
-- name: remove database
- mysql_db:
- name: '{{ db_latin1_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
diff --git a/test/integration/targets/mysql_db/tasks/main.yml b/test/integration/targets/mysql_db/tasks/main.yml
deleted file mode 100644
index 7c79d327c9..0000000000
--- a/test/integration/targets/mysql_db/tasks/main.yml
+++ /dev/null
@@ -1,260 +0,0 @@
-# test code for the mysql_db module
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-
-- name: remove database if it exists
- command: >
- mysql -sse "drop database {{db_name}};"
- ignore_errors: True
-
-- name: make sure the test database is not there
- command: mysql {{db_name}}
- register: mysql_db_check
- failed_when: "'1049' not in mysql_db_check.stderr"
-
-- name: test state=present for a database name (expect changed=true)
- mysql_db:
- name: '{{ db_name }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message that database exist
- assert:
- that:
- - result is changed
- - result.db == '{{ db_name }}'
- - result.executed_commands == ["CREATE DATABASE `{{ db_name }}`"]
-
-- name: run command to test state=present for a database name (expect db_name in stdout)
- command: mysql "-e show databases like '{{ db_name }}';"
- register: result
-
-- name: assert database exist
- assert: { that: "'{{ db_name }}' in result.stdout" }
-
-# ============================================================
-- name: test state=absent for a database name (expect changed=true)
- mysql_db:
- name: '{{ db_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message that database does not exist
- assert:
- that:
- - result is changed
- - result.db == '{{ db_name }}'
- - result.executed_commands == ["DROP DATABASE `{{ db_name }}`"]
-
-- name: run command to test state=absent for a database name (expect db_name not in stdout)
- command: mysql "-e show databases like '{{ db_name }}';"
- register: result
-
-- name: assert database does not exist
- assert: { that: "'{{ db_name }}' not in result.stdout" }
-
-# ============================================================
-- name: test mysql_db encoding param not valid - issue 8075
- mysql_db:
- name: datanotvalid
- state: present
- encoding: notvalid
- login_unix_socket: '{{ mysql_socket }}'
- register: result
- ignore_errors: true
-
-- name: assert test mysql_db encoding param not valid - issue 8075 (failed=true)
- assert:
- that:
- - "result.failed == true"
- - "'Traceback' not in result.msg"
- - "'Unknown character set' in result.msg"
-
-# ============================================================
-- name: test mysql_db using a valid encoding utf8 (expect changed=true)
- mysql_db:
- name: 'en{{ db_name }}'
- state: present
- encoding: utf8
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message created a database
- assert:
- that:
- - result is changed
- - result.executed_commands == ["CREATE DATABASE `en{{ db_name }}` CHARACTER SET 'utf8'"]
-
-- name: test database was created
- command: mysql "-e SHOW CREATE DATABASE en{{ db_name }};"
- register: result
-
-- name: assert created database is of encoding utf8
- assert: { that: "'utf8' in result.stdout" }
-
-- name: remove database
- mysql_db:
- name: 'en{{ db_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-# ============================================================
-- name: test mysql_db using valid encoding binary (expect changed=true)
- mysql_db:
- name: 'en{{ db_name }}'
- state: present
- encoding: binary
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message that database was created
- assert:
- that:
- - result is changed
- - result.executed_commands == ["CREATE DATABASE `en{{ db_name }}` CHARACTER SET 'binary'"]
-
-- name: run command to test database was created
- command: mysql "-e SHOW CREATE DATABASE en{{ db_name }};"
- register: result
-
-- name: assert created database is of encoding binary
- assert: { that: "'binary' in result.stdout" }
-
-- name: remove database
- mysql_db:
- name: 'en{{ db_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-# ============================================================
-- name: create user1 to access database dbuser1
- mysql_user:
- name: user1
- password: 'Hfd6fds^dfA8Ga'
- priv: '*.*:ALL'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: create database dbuser1 using user1
- mysql_db:
- name: '{{ db_user1 }}'
- state: present
- login_user: user1
- login_password: 'Hfd6fds^dfA8Ga'
- register: result
-
-- name: assert output message that database was created
- assert: { that: "result.changed == true" }
-
-- name: run command to test database was created using user1
- command: mysql "-e show databases like '{{ db_user1 }}';"
- register: result
-
-- name: assert database exist
- assert: { that: "'{{ db_user1 }}' in result.stdout" }
-
-# ============================================================
-- name: create user2 to access database with privilege select only
- mysql_user:
- name: user2
- password: 'kjsfd&F7safjad'
- priv: '*.*:SELECT'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: create database dbuser2 using user2 with no privilege to create (expect failed=true)
- mysql_db:
- name: '{{ db_user2 }}'
- state: present
- login_user: user2
- login_password: 'kjsfd&F7safjad'
- register: result
- ignore_errors: true
-
-- name: assert output message that database was not created using dbuser2
- assert:
- that:
- - "result.failed == true"
- - "'Access denied' in result.msg"
-
-- name: run command to test that database was not created
- command: mysql "-e show databases like '{{ db_user2 }}';"
- register: result
-
-- name: assert database does not exist
- assert: { that: "'{{ db_user2 }}' not in result.stdout" }
-
-# ============================================================
-- name: delete database using user2 with no privilege to delete (expect failed=true)
- mysql_db:
- name: '{{ db_user1 }}'
- state: absent
- login_user: user2
- login_password: 'kjsfd&F7safjad'
- register: result
- ignore_errors: true
-
-- name: assert output message that database was not deleted using dbuser2
- assert:
- that:
- - "result.failed == true"
- - "'Access denied' in result.msg"
-
-- name: run command to test database was not deleted
- command: mysql "-e show databases like '{{ db_user1 }}';"
- register: result
-
-- name: assert database still exist
- assert: { that: "'{{ db_user1 }}' in result.stdout" }
-
-# ============================================================
-- name: delete database using user1 with all privilege to delete a database (expect changed=true)
- mysql_db:
- name: '{{ db_user1 }}'
- state: absent
- login_user: user1
- login_password: 'Hfd6fds^dfA8Ga'
- register: result
- ignore_errors: true
-
-- name: assert output message that database was deleted using user1
- assert:
- that:
- - result is changed
- - result.executed_commands == ["DROP DATABASE `{{ db_user1 }}`"]
-
-- name: run command to test database was deleted using user1
- command: mysql "-e show databases like '{{ db_name }}';"
- register: result
-
-- name: assert database does not exist
- assert: { that: "'{{ db_user1 }}' not in result.stdout" }
-
-# ============================================================
-- include: state_dump_import.yml format_type=sql file=dbdata.sql format_msg_type=ASCII file2=dump2.sql file3=dump3.sql file4=dump4.sql
-
-- include: state_dump_import.yml format_type=gz file=dbdata.gz format_msg_type=gzip file2=dump2.gz file3=dump3.gz file4=dump4.gz
-
-- include: state_dump_import.yml format_type=bz2 file=dbdata.bz2 format_msg_type=bzip2 file2=dump2.bz2 file3=dump3.bz2 file4=dump4.bz2
-
-- include: multi_db_create_delete.yml
-
-- include: encoding_dump_import.yml file=latin1.sql format_msg_type=ASCII
diff --git a/test/integration/targets/mysql_db/tasks/multi_db_create_delete.yml b/test/integration/targets/mysql_db/tasks/multi_db_create_delete.yml
deleted file mode 100644
index da8a94e819..0000000000
--- a/test/integration/targets/mysql_db/tasks/multi_db_create_delete.yml
+++ /dev/null
@@ -1,557 +0,0 @@
-# Copyright (c) 2019, Pratik Gadiya <pratikgadiya1@gmail.com>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- set_fact:
- db1_name="database1"
- db2_name="database2"
- db3_name="database3"
- db4_name="database4"
- db5_name="database5"
- dump1_file="/tmp/dump1_file.sql"
- dump2_file="/tmp/all.sql"
-
-# ============================== CREATE TEST ===============================
-#
-# ==========================================================================
-# Initial check - To confirm that database does not exist before executing check mode tasks
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases does not exist
- assert:
- that:
- - "'{{ db1_name }}' not in mysql_result.stdout"
- - "'{{ db2_name }}' not in mysql_result.stdout"
- - "'{{ db3_name }}' not in mysql_result.stdout"
-
-# ==========================================================================
-# Create multiple databases that does not exists (check mode)
-- name: Create multiple databases that does not exists (check mode)
- mysql_db:
- name:
- - '{{ db1_name }}'
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: check_mode_result
- check_mode: yes
-
-- name: assert successful completion of create database using check_mode since databases does not exist prior
- assert:
- that:
- - check_mode_result.changed == true
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases does not exist (since created via check mode)
- assert:
- that:
- - "'{{ db1_name }}' not in mysql_result.stdout"
- - "'{{ db2_name }}' not in mysql_result.stdout"
- - "'{{ db3_name }}' not in mysql_result.stdout"
-
-# ==========================================================================
-# Create multiple databases
-- name: Create multiple databases
- mysql_db:
- name:
- - '{{ db1_name }}'
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert successful completion of create database
- assert:
- that:
- - result.changed == true
- - result.db_list == ['{{ db1_name }}', '{{ db2_name }}', '{{ db3_name }}']
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases exist after creation
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
-
-# =========================================================================
-# Recreate already existing databases (check mode)
-- name: Recreate already existing databases (check mode)
- mysql_db:
- name:
- - '{{ db1_name }}'
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: check_mode_result
- check_mode: yes
-
-- name: assert that recreation of existing databases does not make change (since recreated using check mode)
- assert:
- that:
- - check_mode_result.changed == false
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases exist (since performed recreation of existing databases via check mode)
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
-
-# ==========================================================================
-# Recreate same databases
-- name: Recreate multiple databases
- mysql_db:
- name:
- - '{{ db1_name }}'
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert that recreation of existing databases does not make change
- assert:
- that:
- - result.changed == false
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases does priorly exist
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
-
-# ==========================================================================
-# Delete one of the databases (db2 here)
-- name: Delete db2 database
- mysql_db:
- name:
- - '{{ db2_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert successful completion of deleting database
- assert:
- that:
- - result.changed == true
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that only db2 database does not exist
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' not in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
-
-# =========================================================================
-# Recreate multiple databases in which few databases does not exists (check mode)
-- name: Recreate multiple databases in which few databases does not exists (check mode)
- mysql_db:
- name:
- - '{{ db1_name }}'
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: check_mode_result
- check_mode: yes
-
-- name: assert successful completion of recreation of partially existing database using check mode
- assert:
- that:
- - check_mode_result.changed == true
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that recreated non existing databases does not exist (since created via check mode)
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' not in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
-
-# ==========================================================================
-# Create multiple databases
-- name: Create multiple databases
- mysql_db:
- name:
- - '{{ db1_name }}'
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert successful completion of create database
- assert:
- that:
- - result.changed == true
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases exist
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
-
-# ============================== DUMP TEST =================================
-#
-# ==========================================================================
-# Check that dump file does not exist
-- name: Dump file does not exist
- file: name={{ dump1_file }} state=absent
-
-# ==========================================================================
-# Dump existing databases (check mode)
-- name: Dump existing databases (check mode)
- mysql_db:
- name:
- - '{{ db1_name }}'
- - '{{ db3_name }}'
- state: dump
- target: '{{ dump1_file }}'
- login_unix_socket: '{{ mysql_socket }}'
- register: check_mode_dump_result
- check_mode: yes
-
-- name: assert successful completion of dump operation using check mode
- assert:
- that:
- - check_mode_dump_result.changed == true
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases exist (check mode)
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
-
-- name: state dump - file name should not exist (since dumped via check mode)
- file: name={{ dump1_file }} state=absent
-
-# ==========================================================================
-# Dump existing and non-existing databases (check mode)
-- name: Dump existing and non-existing databases (check mode)
- mysql_db:
- name:
- - "{{ db1_name }}"
- - "{{ db4_name }}"
- - "{{ db3_name }}"
- state: dump
- login_unix_socket: '{{ mysql_socket }}'
- target: "{{ dump1_file }}"
- register: check_mode_dump_result
- ignore_errors: True
- check_mode: yes
-
-- name: assert that dump operation of existing and non existing databases does not make change (using check mode)
- assert:
- that:
- - "'Cannot dump database' in check_mode_dump_result['msg']"
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases exist (since check mode)
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
- - "'{{ db4_name }}' not in mysql_result.stdout"
-
-- name: state dump - file name should not exist (since prior dump operation performed via check mode)
- file: name={{ dump1_file }} state=absent
-
-# ==========================================================================
-# Dump non-existing databases (check mode)
-- name: Dump non-existing databases (check mode)
- mysql_db:
- name:
- - "{{ db4_name }}"
- - "{{ db5_name }}"
- state: dump
- target: "{{ dump1_file }}"
- login_unix_socket: '{{ mysql_socket }}'
- register: check_mode_dump_result
- ignore_errors: True
- check_mode: yes
-
-- name: assert successful completion of dump operation using check mode
- assert:
- that:
- - "'Cannot dump database' in check_mode_dump_result['msg']"
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases exist (since delete via check mode)
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
- - "'{{ db4_name }}' not in mysql_result.stdout"
- - "'{{ db5_name }}' not in mysql_result.stdout"
-
-- name: state dump - file name should not exist (since prior dump operation performed via check mode)
- file: name={{ dump1_file }} state=absent
-
-# ==========================================================================
-# Dump existing databases
-- name: Dump existing databases
- mysql_db:
- name:
- - '{{ db1_name }}'
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- state: dump
- target: '{{ dump1_file }}'
- login_unix_socket: '{{ mysql_socket }}'
- register: dump_result
-
-- name: assert successful completion of dump operation
- assert:
- that:
- - dump_result.changed == true
- - dump_result.db_list == ['{{ db1_name }}', '{{ db2_name }}', '{{ db3_name }}']
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases exist
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
-
-- name: state dump - file name should exist
- file: name={{ dump1_file }} state=file
-
-- name: Check if db1 database create command is present in the dumped file
- shell: "grep -i 'CREATE DATABASE.*`{{ db1_name }}`' {{ dump1_file }}"
-
-- name: Check if db2 database create command is present in the dumped file
- shell: "grep -i 'CREATE DATABASE.*`{{ db2_name }}`' {{ dump1_file }}"
-
-- name: Check if db3 database create command is present in the dumped file
- shell: "grep -i 'CREATE DATABASE.*`{{ db3_name }}`' {{ dump1_file }}"
-
-# ==========================================================================
-# Dump all databases
-
-- name: state dump - dump2 file name should not exist
- file: name={{ dump2_file }} state=absent
-
-- name: Dump existing databases
- mysql_db:
- name: all
- state: dump
- target: '{{ dump2_file }}'
- login_unix_socket: '{{ mysql_socket }}'
- register: dump_result
-
-- name: assert successful completion of dump operation
- assert:
- that:
- - dump_result.changed == true
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases exist
- assert:
- that:
- - "'{{ db1_name }}' in mysql_result.stdout"
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
- - "'{{ db4_name }}' not in mysql_result.stdout"
- - "'{{ db5_name }}' not in mysql_result.stdout"
-
-- name: state dump - file name should exist
- file: name={{ dump2_file }} state=file
-
-# ============================ DELETE TEST =================================
-#
-# ==========================================================================
-# Delete multiple databases which already exists (check mode)
-- name: Delete multiple databases which already exists (check mode)
- mysql_db:
- name:
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: check_mode_result
- check_mode: yes
-
-- name: assert successful completion of delete databases which already exists using check mode
- assert:
- that:
- - check_mode_result.changed == true
-
-- name: run command to test state=absent for a database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases exist even after deleting (since deleted via check mode)
- assert:
- that:
- - "'{{ db2_name }}' in mysql_result.stdout"
- - "'{{ db3_name }}' in mysql_result.stdout"
-
-# ==========================================================================
-# Delete multiple databases
-- name: Delete multiple databases
- mysql_db:
- name:
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert successful completion of deleting database
- assert:
- that:
- - result.changed == true
- - result.db_list == ['{{ db2_name }}', '{{ db3_name }}']
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases does not exist
- assert:
- that:
- - "'{{ db2_name }}' not in mysql_result.stdout"
- - "'{{ db3_name }}' not in mysql_result.stdout"
-
-# ==========================================================================
-# Delete non existing databases (check mode)
-- name: Delete non existing databases (check mode)
- mysql_db:
- name:
- - '{{ db2_name }}'
- - '{{ db4_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: check_mode_result
- check_mode: yes
-
-- name: assert that deletion of non existing databases does not make change (using check mode)
- assert:
- that:
- - check_mode_result.changed == false
-
-- name: run command to test state=absent for a database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases does not exist since were deleted priorly (check mode)
- assert:
- that:
- - "'{{ db2_name }}' not in mysql_result.stdout"
- - "'{{ db4_name }}' not in mysql_result.stdout"
-
-# ==========================================================================
-# Delete already deleted databases
-- name: Delete already deleted databases
- mysql_db:
- name:
- - '{{ db2_name }}'
- - '{{ db4_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert that deletion of non existing databases does not make change
- assert:
- that:
- - result.changed == false
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that databases does not exists
- assert:
- that:
- - "'{{ db2_name }}' not in mysql_result.stdout"
- - "'{{ db4_name }}' not in mysql_result.stdout"
-
-# ==========================================================================
-# Delete all databases
-- name: Delete all databases
- mysql_db:
- name:
- - '{{ db1_name }}'
- - '{{ db2_name }}'
- - '{{ db3_name }}'
- - '{{ db4_name }}'
- - '{{ db5_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert successful completion of deleting database
- assert:
- that:
- - result.changed == true
-
-- name: run command to list databases like specified database name
- command: mysql "-e show databases like 'database%';"
- register: mysql_result
-
-- name: assert that specific databases does not exist
- assert:
- that:
- - "'{{ db1_name }}' not in mysql_result.stdout"
- - "'{{ db2_name }}' not in mysql_result.stdout"
- - "'{{ db3_name }}' not in mysql_result.stdout"
- - "'{{ db4_name }}' not in mysql_result.stdout"
- - "'{{ db5_name }}' not in mysql_result.stdout"
-
-- name: state dump - dump 1 file name should be removed
- file: name={{ dump1_file }} state=absent
-
-- name: state dump - dump 2 file name should be removed
- file: name={{ dump2_file }} state=absent
diff --git a/test/integration/targets/mysql_db/tasks/state_dump_import.yml b/test/integration/targets/mysql_db/tasks/state_dump_import.yml
deleted file mode 100644
index abd655727b..0000000000
--- a/test/integration/targets/mysql_db/tasks/state_dump_import.yml
+++ /dev/null
@@ -1,346 +0,0 @@
-# test code for state dump and import for mysql_db module
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-- set_fact:
- db_file_name="{{tmp_dir}}/{{file}}"
- wrong_sql_file="{{tmp_dir}}/wrong.sql"
- dump_file1="{{tmp_dir}}/{{file2}}"
- dump_file2="{{tmp_dir}}/{{file3}}"
-
-- name: state dump/import - create database
- mysql_db:
- name: '{{ db_name }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: create database
- mysql_db:
- name: '{{ db_name2 }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: state dump/import - create table department
- command: mysql {{ db_name }} '-e create table department(id int, name varchar(100));'
-
-- name: state dump/import - create table employee
- command: mysql {{ db_name }} '-e create table employee(id int, name varchar(100));'
-
-- name: state dump/import - insert data into table employee
- command: mysql {{ db_name }} "-e insert into employee value(47,'Joe Smith');"
-
-- name: state dump/import - insert data into table department
- command: mysql {{ db_name }} "-e insert into department value(2,'Engineering');"
-
-- name: state dump/import - file name should not exist
- file: name={{ db_file_name }} state=absent
-
-- name: database dump file1 should not exist
- file: name={{ dump_file1 }} state=absent
-
-- name: database dump file2 should not exist
- file: name={{ dump_file2 }} state=absent
-
-- name: state dump without department table.
- mysql_db:
- name: "{{ db_name }}"
- state: dump
- target: "{{ db_file_name }}"
- ignore_tables:
- - "{{ db_name }}.department"
- login_unix_socket: '{{ mysql_socket }}'
- force: yes
- master_data: 1
- skip_lock_tables: yes
- dump_extra_args: --skip-triggers
- register: result
-
-- name: assert successful completion of dump operation
- assert:
- that:
- - result is changed
- - result.executed_commands[0] is search("mysqldump --force --socket={{ mysql_socket }} {{ db_name }} --skip-lock-tables --quick --ignore-table={{ db_name }}.department --master-data=1 --skip-triggers")
-
-- name: state dump/import - file name should exist
- file: name={{ db_file_name }} state=file
-
-- name: state dump with multiple databases in comma separated form.
- mysql_db:
- name: "{{ db_name }},{{ db_name2 }}"
- state: dump
- target: "{{ dump_file1 }}"
- login_unix_socket: '{{ mysql_socket }}'
- register: dump_result1
-
-- name: assert successful completion of dump operation (with multiple databases in comma separated form)
- assert:
- that:
- - "dump_result1.changed == true"
-
-- name: state dump - dump file1 should exist
- file: name={{ dump_file1 }} state=file
-
-- name: state dump with multiple databases in list form via check_mode
- mysql_db:
- name:
- - "{{ db_name }}"
- - "{{ db_name2 }}"
- state: dump
- target: "{{ dump_file2 }}"
- login_unix_socket: '{{ mysql_socket }}'
- register: dump_result
- check_mode: yes
-
-- name: assert successful completion of dump operation (with multiple databases in list form) via check mode
- assert:
- that:
- - "dump_result.changed == true"
-
-- name: database dump file2 should not exist
- stat:
- path: "{{ dump_file2 }}"
- register: stat_result
-
-- name: assert that check_mode does not create dump file for databases
- assert:
- that:
- - stat_result.stat.exists is defined and not stat_result.stat.exists
-
-- name: state dump with multiple databases in list form.
- mysql_db:
- name:
- - "{{ db_name }}"
- - "{{ db_name2 }}"
- state: dump
- target: "{{ dump_file2 }}"
- login_unix_socket: '{{ mysql_socket }}'
- register: dump_result2
-
-- name: assert successful completion of dump operation (with multiple databases in list form)
- assert:
- that:
- - "dump_result2.changed == true"
-
-- name: state dump - dump file2 should exist
- file: name={{ dump_file2 }} state=file
-
-- name: state dump/import - remove database
- mysql_db:
- name: '{{ db_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: remove database
- mysql_db:
- name: '{{ db_name2 }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: test state=import to restore the database of type {{ format_type }} (expect changed=true)
- mysql_db:
- name: '{{ db_name }}'
- state: import
- target: '{{ db_file_name }}'
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: show the tables
- command: mysql {{ db_name }} "-e show tables;"
- register: result
-
-- name: assert that the department table is absent.
- assert:
- that:
- - "'department' not in result.stdout"
-
-- name: test state=import to restore a database from multiple database dumped file1
- mysql_db:
- name: '{{ db_name2 }}'
- state: import
- target: '{{ dump_file1 }}'
- login_unix_socket: '{{ mysql_socket }}'
- register: import_result
-
-- name: assert output message restored a database from dump file1
- assert: { that: "import_result.changed == true" }
-
-- name: remove database
- mysql_db:
- name: '{{ db_name2 }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: run command to list databases
- command: mysql "-e show databases like 'data%';"
- register: mysql_result
-
-- name: assert that db_name2 database does not exist
- assert:
- that:
- - "'{{ db_name2 }}' not in mysql_result.stdout"
-
-- name: test state=import to restore a database from dumped file2 (check mode)
- mysql_db:
- name: '{{ db_name2 }}'
- state: import
- target: '{{ dump_file2 }}'
- login_unix_socket: '{{ mysql_socket }}'
- register: check_import_result
- check_mode: yes
-
-- name: assert output message restored a database from dump file2 (check mode)
- assert: { that: "check_import_result.changed == true" }
-
-- name: run command to list databases
- command: mysql "-e show databases like 'data%';"
- register: mysql_result
-
-- name: assert that db_name2 database does not exist (check mode)
- assert:
- that:
- - "'{{ db_name2 }}' not in mysql_result.stdout"
-
-- name: test state=import to restore a database from multiple database dumped file2
- mysql_db:
- name: '{{ db_name2 }}'
- state: import
- target: '{{ dump_file2 }}'
- login_unix_socket: '{{ mysql_socket }}'
- register: import_result2
-
-- name: assert output message restored a database from dump file2
- assert:
- that:
- - import_result2.changed == true
- - import_result2.db_list == ['{{ db_name2 }}']
-
-- name: run command to list databases
- command: mysql "-e show databases like 'data%';"
- register: mysql_result
-
-- name: assert that db_name2 database does exist after import
- assert:
- that:
- - "'{{ db_name2 }}' in mysql_result.stdout"
-
-- name: test state=dump to backup the database of type {{ format_type }} (expect changed=true)
- mysql_db:
- name: '{{ db_name }}'
- state: dump
- target: '{{ db_file_name }}'
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message backup the database
- assert:
- that:
- - "result.changed == true"
- - "result.db =='{{ db_name }}'"
-
-- name: assert database was backed up successfully
- command: file {{ db_file_name }}
- register: result
-
-- name: assert file format type
- assert: { that: "'{{format_msg_type}}' in result.stdout" }
-
-- name: update database table employee
- command: mysql {{ db_name }} "-e update employee set name='John Doe' where id=47;"
-
-- name: test state=import to restore the database of type {{ format_type }} (expect changed=true)
- mysql_db:
- name: '{{ db_name }}'
- state: import
- target: '{{ db_file_name }}'
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message restore the database
- assert: { that: "result.changed == true" }
-
-- name: select data from table employee
- command: mysql {{ db_name }} "-e select * from employee;"
- register: result
-
-- name: assert data in database is from the restore database
- assert:
- that:
- - "'47' in result.stdout"
- - "'Joe Smith' in result.stdout"
-
-##########################
-# Test ``force`` parameter
-##########################
-
-- name: create wrong sql file
- shell: echo 'CREATE TABLE hello (id int); CREATE ELBAT ehlo (int id);' >> '{{ wrong_sql_file }}'
-
-- name: try to import without force parameter, must fail
- mysql_db:
- name: '{{ db_name }}'
- state: import
- target: '{{ wrong_sql_file }}'
- login_unix_socket: '{{ mysql_socket }}'
- force: no
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.failed == true
-
-- name: try to import with force parameter
- mysql_db:
- name: '{{ db_name }}'
- state: import
- target: '{{ wrong_sql_file }}'
- login_unix_socket: '{{ mysql_socket }}'
- force: yes
- register: result
-
-- assert:
- that:
- - result is changed
-
-##########
-# Clean up
-##########
-
-- name: remove database name
- mysql_db:
- name: '{{ db_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: remove database
- mysql_db:
- name: '{{ db_name2 }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: remove file name
- file: name={{ db_file_name }} state=absent
-
-- name: remove file name
- file: name={{ wrong_sql_file }} state=absent
-
-- name: remove dump file1
- file: name={{ dump_file1 }} state=absent
-
-- name: remove dump file2
- file: name={{ dump_file2 }} state=absent
diff --git a/test/integration/targets/mysql_info/aliases b/test/integration/targets/mysql_info/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/mysql_info/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/mysql_info/defaults/main.yml b/test/integration/targets/mysql_info/defaults/main.yml
deleted file mode 100644
index 6d44dbd377..0000000000
--- a/test/integration/targets/mysql_info/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-# defaults file for test_mysql_info
-db_name: data
-user_name: alice
-user_pass: alice
diff --git a/test/integration/targets/mysql_info/meta/main.yml b/test/integration/targets/mysql_info/meta/main.yml
deleted file mode 100644
index 1892924b21..0000000000
--- a/test/integration/targets/mysql_info/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-dependencies:
- - setup_mysql_db
- - setup_remote_tmp_dir
diff --git a/test/integration/targets/mysql_info/tasks/main.yml b/test/integration/targets/mysql_info/tasks/main.yml
deleted file mode 100644
index f58d3878e8..0000000000
--- a/test/integration/targets/mysql_info/tasks/main.yml
+++ /dev/null
@@ -1,190 +0,0 @@
-# Test code for mysql_info module
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-###################
-# Prepare for tests
-#
-
-# Create role for tests
-- name: mysql_info - create mysql user {{ user_name }}
- mysql_user:
- name: '{{ user_name }}'
- password: '{{ user_pass }}'
- state: present
- priv: '*.*:ALL'
- login_unix_socket: '{{ mysql_socket }}'
-
-# Create default MySQL config file with credentials
-- name: mysql_info - create default config file
- template:
- src: my.cnf.j2
- dest: '/root/.my.cnf'
- mode: 0400
-
-# Create non-default MySQL config file with credentials
-- name: mysql_info - create non-default config file
- template:
- src: my.cnf.j2
- dest: '/root/non-default_my.cnf'
- mode: 0400
-
-###############
-# Do tests
-
-# Access by default cred file
-- name: mysql_info - collect default cred file
- mysql_info:
- login_user: '{{ user_name }}'
- register: result
-
-- assert:
- that:
- - result.changed == false
- - result.version != {}
- - result.settings != {}
- - result.global_status != {}
- - result.databases != {}
- - result.engines != {}
- - result.users != {}
-
-# Access by non-default cred file
-- name: mysql_info - check non-default cred file
- mysql_info:
- login_user: '{{ user_name }}'
- config_file: '/root/non-default_my.cnf'
- register: result
-
-- assert:
- that:
- - result.changed == false
- - result.version != {}
-
-# Remove cred files
-- name: mysql_info - remove cred files
- file:
- path: '{{ item }}'
- state: absent
- with_items:
- - '/root/.my.cnf'
- - '/root/non-default_my.cnf'
-
-# Access with password
-- name: mysql_info - check access with password
- mysql_info:
- login_user: '{{ user_name }}'
- login_password: '{{ user_pass }}'
- register: result
-
-- assert:
- that:
- - result.changed == false
- - result.version != {}
-
-# Test excluding
-- name: Collect all info except settings and users
- mysql_info:
- login_user: '{{ user_name }}'
- login_password: '{{ user_pass }}'
- filter: "!settings,!users"
- register: result
-
-- assert:
- that:
- - result.changed == false
- - result.version != {}
- - result.global_status != {}
- - result.databases != {}
- - result.engines != {}
- - result.settings is not defined
- - result.users is not defined
-
-# Test including
-- name: Collect info only about version and databases
- mysql_info:
- login_user: '{{ user_name }}'
- login_password: '{{ user_pass }}'
- filter:
- - version
- - databases
- register: result
-
-- assert:
- that:
- - result.changed == false
- - result.version != {}
- - result.databases != {}
- - result.engines is not defined
- - result.settings is not defined
- - result.global_status is not defined
- - result.users is not defined
-
-# Test exclude_fields: db_size
-# 'unsupported' element is passed to check that an unsupported value
-# won't break anything (will be ignored regarding to the module's documentation).
-- name: Collect info about databases excluding their sizes
- mysql_info:
- login_user: '{{ user_name }}'
- login_password: '{{ user_pass }}'
- filter:
- - databases
- exclude_fields:
- - db_size
- - unsupported
- register: result
-
-- assert:
- that:
- - result.changed == false
- - result.databases != {}
- - result.databases.mysql == {}
-
-########################################################
-# Issue #65727, empty databases must be in returned dict
-#
-- name: Create empty database acme
- mysql_db:
- login_user: '{{ user_name }}'
- login_password: '{{ user_pass }}'
- name: acme
-
-- name: Collect info about databases
- mysql_info:
- login_user: '{{ user_name }}'
- login_password: '{{ user_pass }}'
- filter:
- - databases
- return_empty_dbs: yes
- register: result
-
-# Check acme is in returned dict
-- assert:
- that:
- - result.changed == false
- - result.databases.acme.size == 0
- - result.databases.mysql != {}
-
-- name: Collect info about databases excluding their sizes
- mysql_info:
- login_user: '{{ user_name }}'
- login_password: '{{ user_pass }}'
- filter:
- - databases
- exclude_fields:
- - db_size
- return_empty_dbs: yes
- register: result
-
-# Check acme is in returned dict
-- assert:
- that:
- - result.changed == false
- - result.databases.acme == {}
- - result.databases.mysql == {}
-
-- name: Remove acme database
- mysql_db:
- login_user: '{{ user_name }}'
- login_password: '{{ user_pass }}'
- name: acme
- state: absent
diff --git a/test/integration/targets/mysql_info/templates/my.cnf.j2 b/test/integration/targets/mysql_info/templates/my.cnf.j2
deleted file mode 100644
index 467afa0746..0000000000
--- a/test/integration/targets/mysql_info/templates/my.cnf.j2
+++ /dev/null
@@ -1,3 +0,0 @@
-[client]
-user={{ user_name }}
-password={{ user_pass }}
diff --git a/test/integration/targets/mysql_query/aliases b/test/integration/targets/mysql_query/aliases
deleted file mode 100644
index c72bb40e18..0000000000
--- a/test/integration/targets/mysql_query/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group3
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/mysql_query/defaults/main.yml b/test/integration/targets/mysql_query/defaults/main.yml
deleted file mode 100644
index 9fa44b650e..0000000000
--- a/test/integration/targets/mysql_query/defaults/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-root_user: root
-db_name: data
-test_db: testdb
-test_table1: test1
-test_table2: test2
-test_script_path: /tmp/test.sql
diff --git a/test/integration/targets/mysql_query/meta/main.yml b/test/integration/targets/mysql_query/meta/main.yml
deleted file mode 100644
index 3b3414c6ca..0000000000
--- a/test/integration/targets/mysql_query/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
-- setup_mysql8
diff --git a/test/integration/targets/mysql_query/tasks/main.yml b/test/integration/targets/mysql_query/tasks/main.yml
deleted file mode 100644
index 72ff4798a3..0000000000
--- a/test/integration/targets/mysql_query/tasks/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# mysql_query module initial CI tests
-- import_tasks: mysql_query_initial.yml
- when:
- - ansible_distribution == 'CentOS'
- - ansible_distribution_major_version >= '7'
diff --git a/test/integration/targets/mysql_query/tasks/mysql_query_initial.yml b/test/integration/targets/mysql_query/tasks/mysql_query_initial.yml
deleted file mode 100644
index 4c3a99789e..0000000000
--- a/test/integration/targets/mysql_query/tasks/mysql_query_initial.yml
+++ /dev/null
@@ -1,249 +0,0 @@
-# Test code for mysql_query module
-# Copyright: (c) 2020, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-- vars:
- mysql_parameters: &mysql_params
- login_unix_socket: '{{ mysql_socket }}'
- login_user: '{{ root_user }}'
- login_password: '{{ root_pass }}'
-
- block:
-
- - name: Create db {{ test_db }}
- mysql_query:
- <<: *mysql_params
- query: 'CREATE DATABASE {{ test_db }}'
- register: result
-
- - assert:
- that:
- - result is changed
- - result.executed_queries == ['CREATE DATABASE {{ test_db }}']
-
- - name: Create {{ test_table1 }}
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'CREATE TABLE {{ test_table1 }} (id int)'
- register: result
-
- - assert:
- that:
- - result is changed
- - result.executed_queries == ['CREATE TABLE {{ test_table1 }} (id int)']
-
- - name: Insert test data
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query:
- - 'INSERT INTO {{ test_table1 }} VALUES (1), (2)'
- - 'INSERT INTO {{ test_table1 }} VALUES (3)'
- single_transaction: yes
- register: result
-
- - assert:
- that:
- - result is changed
- - result.rowcount == [2, 1]
- - result.executed_queries == ['INSERT INTO {{ test_table1 }} VALUES (1), (2)', 'INSERT INTO {{ test_table1 }} VALUES (3)']
-
- - name: Check data in {{ test_table1 }}
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'SELECT * FROM {{ test_table1 }}'
- register: result
-
- - assert:
- that:
- - result is not changed
- - result.executed_queries == ['SELECT * FROM {{ test_table1 }}']
- - result.rowcount == [3]
- - result.query_result[0][0].id == 1
- - result.query_result[0][1].id == 2
- - result.query_result[0][2].id == 3
-
- - name: Check data in {{ test_table1 }} using positional args
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'SELECT * FROM {{ test_table1 }} WHERE id = %s'
- positional_args:
- - 1
- register: result
-
- - assert:
- that:
- - result is not changed
- - result.executed_queries == ["SELECT * FROM {{ test_table1 }} WHERE id = 1"]
- - result.rowcount == [1]
- - result.query_result[0][0].id == 1
-
- - name: Check data in {{ test_table1 }} using named args
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'SELECT * FROM {{ test_table1 }} WHERE id = %(some_id)s'
- named_args:
- some_id: 1
- register: result
-
- - assert:
- that:
- - result is not changed
- - result.executed_queries == ["SELECT * FROM {{ test_table1 }} WHERE id = 1"]
- - result.rowcount == [1]
- - result.query_result[0][0].id == 1
-
- - name: Update data in {{ test_table1 }}
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'UPDATE {{ test_table1 }} SET id = %(new_id)s WHERE id = %(current_id)s'
- named_args:
- current_id: 1
- new_id: 0
- register: result
-
- - assert:
- that:
- - result is changed
- - result.executed_queries == ['UPDATE {{ test_table1 }} SET id = 0 WHERE id = 1']
- - result.rowcount == [1]
-
- - name: Check the prev update - row with value 1 does not exist anymore
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'SELECT * FROM {{ test_table1 }} WHERE id = %(some_id)s'
- named_args:
- some_id: 1
- register: result
-
- - assert:
- that:
- - result is not changed
- - result.executed_queries == ['SELECT * FROM {{ test_table1 }} WHERE id = 1']
- - result.rowcount == [0]
-
- - name: Check the prev update - row with value - exist
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'SELECT * FROM {{ test_table1 }} WHERE id = %(some_id)s'
- named_args:
- some_id: 0
- register: result
-
- - assert:
- that:
- - result is not changed
- - result.executed_queries == ['SELECT * FROM {{ test_table1 }} WHERE id = 0']
- - result.rowcount == [1]
-
- - name: Update data in {{ test_table1 }} again
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'UPDATE {{ test_table1 }} SET id = %(new_id)s WHERE id = %(current_id)s'
- named_args:
- current_id: 1
- new_id: 0
- register: result
-
- - assert:
- that:
- - result is not changed
- - result.executed_queries == ['UPDATE {{ test_table1 }} SET id = 0 WHERE id = 1']
- - result.rowcount == [0]
-
- - name: Delete data from {{ test_table1 }}
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query:
- - 'DELETE FROM {{ test_table1 }} WHERE id = 0'
- - 'SELECT * FROM {{ test_table1 }} WHERE id = 0'
- register: result
-
- - assert:
- that:
- - result is changed
- - result.executed_queries == ['DELETE FROM {{ test_table1 }} WHERE id = 0', 'SELECT * FROM {{ test_table1 }} WHERE id = 0']
- - result.rowcount == [1, 0]
-
- - name: Delete data from {{ test_table1 }} again
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'DELETE FROM {{ test_table1 }} WHERE id = 0'
- register: result
-
- - assert:
- that:
- - result is not changed
- - result.executed_queries == ['DELETE FROM {{ test_table1 }} WHERE id = 0']
- - result.rowcount == [0]
-
- - name: Truncate {{ test_table1 }}
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query:
- - 'TRUNCATE {{ test_table1 }}'
- - 'SELECT * FROM {{ test_table1 }}'
- register: result
-
- - assert:
- that:
- - result is changed
- - result.executed_queries == ['TRUNCATE {{ test_table1 }}', 'SELECT * FROM {{ test_table1 }}']
- - result.rowcount == [0, 0]
-
- - name: Rename {{ test_table1 }}
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'RENAME TABLE {{ test_table1 }} TO {{ test_table2 }}'
- register: result
-
- - assert:
- that:
- - result is changed
- - result.executed_queries == ['RENAME TABLE {{ test_table1 }} TO {{ test_table2 }}']
- - result.rowcount == [0]
-
- - name: Check the prev rename
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'SELECT * FROM {{ test_table1 }}'
- register: result
- ignore_errors: yes
-
- - assert:
- that:
- - result.failed == true
-
- - name: Check the prev rename
- mysql_query:
- <<: *mysql_params
- login_db: '{{ test_db }}'
- query: 'SELECT * FROM {{ test_table2 }}'
- register: result
-
- - assert:
- that:
- - result.rowcount == [0]
-
- - name: Drop db {{ test_db }}
- mysql_query:
- <<: *mysql_params
- query: 'DROP DATABASE {{ test_db }}'
- register: result
-
- - assert:
- that:
- - result is changed
- - result.executed_queries == ['DROP DATABASE {{ test_db }}']
diff --git a/test/integration/targets/mysql_replication/aliases b/test/integration/targets/mysql_replication/aliases
deleted file mode 100644
index fca5c0258a..0000000000
--- a/test/integration/targets/mysql_replication/aliases
+++ /dev/null
@@ -1,8 +0,0 @@
-destructive
-shippable/posix/group4
-# Make sure that this test runs in a different group than mariadb_replication!
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
-needs/root
diff --git a/test/integration/targets/mysql_replication/defaults/main.yml b/test/integration/targets/mysql_replication/defaults/main.yml
deleted file mode 100644
index b22578600d..0000000000
--- a/test/integration/targets/mysql_replication/defaults/main.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-master_port: 3306
-standby_port: 3307
-test_db: test_db
-test_table: test_table
-test_master_delay: 60
-replication_user: replication_user
-replication_pass: replication_pass
-dump_path: /tmp/dump.sql
-test_channel: test_channel-1
diff --git a/test/integration/targets/mysql_replication/meta/main.yml b/test/integration/targets/mysql_replication/meta/main.yml
deleted file mode 100644
index 73c6abad84..0000000000
--- a/test/integration/targets/mysql_replication/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
-- setup_mysql_replication
diff --git a/test/integration/targets/mysql_replication/tasks/main.yml b/test/integration/targets/mysql_replication/tasks/main.yml
deleted file mode 100644
index 6538d89ad2..0000000000
--- a/test/integration/targets/mysql_replication/tasks/main.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Initial CI tests of mysql_replication module:
-- import_tasks: mysql_replication_initial.yml
- when:
- - ansible_facts.distribution == 'CentOS'
- - ansible_facts.distribution_major_version is version('7', '==')
-
-# Tests of master_delay parameter:
-- import_tasks: mysql_replication_master_delay.yml
- when:
- - ansible_facts.distribution == 'CentOS'
- - ansible_facts.distribution_major_version is version('7', '==')
-
-# Tests of channel parameter:
-- import_tasks: mysql_replication_channel.yml
- when:
- - ansible_facts.distribution == 'CentOS'
- - ansible_facts.distribution_major_version is version('7', '==')
-
-# Tests of resetmaster mode:
-- import_tasks: mysql_replication_resetmaster_mode.yml
- when:
- - ansible_facts.distribution == 'CentOS'
- - ansible_facts.distribution_major_version is version('7', '==')
diff --git a/test/integration/targets/mysql_replication/tasks/mysql_replication_channel.yml b/test/integration/targets/mysql_replication/tasks/mysql_replication_channel.yml
deleted file mode 100644
index aeab2b6d00..0000000000
--- a/test/integration/targets/mysql_replication/tasks/mysql_replication_channel.yml
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Needs for further tests:
-- name: Stop slave
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: stopslave
-
-- name: Reset slave all
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: resetslaveall
-
-# Get master log file and log pos:
-- name: Get master status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ master_port }}"
- mode: getmaster
- register: master_status
-
-# Test changemaster mode:
-- name: Run replication with channel
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: changemaster
- master_host: 127.0.0.1
- master_port: "{{ master_port }}"
- master_user: "{{ replication_user }}"
- master_password: "{{ replication_pass }}"
- master_log_file: "{{ master_status.File }}"
- master_log_pos: "{{ master_status.Position }}"
- channel: "{{ test_channel }}"
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_USER='replication_user',MASTER_PASSWORD='********',MASTER_PORT=3306,MASTER_LOG_FILE='{{ master_status.File }}',MASTER_LOG_POS={{ master_status.Position }} FOR CHANNEL '{{ test_channel }}'"]
-
-# Test startslave mode:
-- name: Start slave with channel
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: startslave
- channel: '{{ test_channel }}'
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["START SLAVE FOR CHANNEL '{{ test_channel }}'"]
-
-# Test getslave mode:
-- name: Get standby status with channel
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: getslave
- channel: '{{ test_channel }}'
- register: slave_status
-
-- assert:
- that:
- - slave_status.Is_Slave == true
- - slave_status.Master_Host == '127.0.0.1'
- - slave_status.Exec_Master_Log_Pos == master_status.Position
- - slave_status.Master_Port == {{ master_port }}
- - slave_status.Last_IO_Errno == 0
- - slave_status.Last_IO_Error == ''
- - slave_status.Channel_Name == '{{ test_channel }}'
- - slave_status is not changed
-
-# Test stopslave mode:
-- name: Stop slave with channel
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: stopslave
- channel: '{{ test_channel }}'
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["STOP SLAVE FOR CHANNEL '{{ test_channel }}'"]
-
-# Test reset
-- name: Reset slave with channel
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: resetslave
- channel: '{{ test_channel }}'
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["RESET SLAVE FOR CHANNEL '{{ test_channel }}'"]
-
-# Test reset all
-- name: Reset slave all with channel
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: resetslaveall
- channel: '{{ test_channel }}'
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["RESET SLAVE ALL FOR CHANNEL '{{ test_channel }}'"]
diff --git a/test/integration/targets/mysql_replication/tasks/mysql_replication_initial.yml b/test/integration/targets/mysql_replication/tasks/mysql_replication_initial.yml
deleted file mode 100644
index f0c8f1e7bb..0000000000
--- a/test/integration/targets/mysql_replication/tasks/mysql_replication_initial.yml
+++ /dev/null
@@ -1,191 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Preparation:
-- name: Create user for replication
- shell: "echo \"GRANT REPLICATION SLAVE ON *.* TO '{{ replication_user }}'@'localhost' IDENTIFIED BY '{{ replication_pass }}'; FLUSH PRIVILEGES;\" | mysql -P {{ master_port }} -h 127.0.0.1"
-
-- name: Create test database
- mysql_db:
- login_host: 127.0.0.1
- login_port: '{{ master_port }}'
- state: present
- name: '{{ test_db }}'
-
-- name: Dump all databases from the master
- shell: 'mysqldump -P {{ master_port }} -h 127.0.0.1 --all-databases --master-data=2 > {{ dump_path }}'
-
-- name: Restore the dump to the standby
- shell: 'mysql -P {{ standby_port }} -h 127.0.0.1 < {{ dump_path }}'
-
-# Test getmaster mode:
-- name: Get master status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ master_port }}"
- mode: getmaster
- register: master_status
-
-- assert:
- that:
- - master_status.Is_Master == true
- - master_status.Position != 0
- - master_status is not changed
-
-# Test startslave fails without changemaster first. This needs fail_on_error
-- name: Start slave and fail because master is not specified; failing on error as requested
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: startslave
- fail_on_error: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is failed
-
-# Test startslave doesn't fail if fail_on_error: no
-- name: Start slave and fail without propagating it to ansible as we were asked not to
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: startslave
- fail_on_error: no
- register: result
-
-- assert:
- that:
- - result is not failed
-
-# Test startslave doesn't fail if there is no fail_on_error.
-# This is suboptimal because nothing happens, but it's the old behavior.
-- name: Start slave and fail without propagating it to ansible as previous versions did not fail on error
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: startslave
- register: result
-
-- assert:
- that:
- - result is not failed
-
-# Test changemaster mode:
-# master_ssl_ca will be set as '' to check the module's behaviour for #23976,
-# must be converted to an empty string
-- name: Run replication
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: changemaster
- master_host: 127.0.0.1
- master_port: "{{ master_port }}"
- master_user: "{{ replication_user }}"
- master_password: "{{ replication_pass }}"
- master_log_file: "{{ master_status.File }}"
- master_log_pos: "{{ master_status.Position }}"
- master_ssl_ca: ''
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_USER='replication_user',MASTER_PASSWORD='********',MASTER_PORT=3306,MASTER_LOG_FILE='{{ master_status.File }}',MASTER_LOG_POS={{ master_status.Position }},MASTER_SSL_CA=''"]
-
-# Test startslave mode:
-- name: Start slave
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: startslave
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["START SLAVE"]
-
-# Test getslave mode:
-- name: Get standby status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: getslave
- register: slave_status
-
-- assert:
- that:
- - slave_status.Is_Slave == true
- - slave_status.Master_Host == '127.0.0.1'
- - slave_status.Exec_Master_Log_Pos == master_status.Position
- - slave_status.Master_Port == {{ master_port }}
- - slave_status.Last_IO_Errno == 0
- - slave_status.Last_IO_Error == ''
- - slave_status is not changed
-
-# Create test table and add data to it:
-- name: Create test table
- shell: "echo \"CREATE TABLE {{ test_table }} (id int);\" | mysql -P {{ master_port }} -h 127.0.0.1 {{ test_db }}"
-
-- name: Insert data
- shell: >
- echo "INSERT INTO {{ test_table }} (id) VALUES (1), (2), (3); FLUSH LOGS;" |
- mysql -P {{ master_port }} -h 127.0.0.1 {{ test_db }}
-
-- name: Small pause to be sure the bin log, which was flushed previously, reached the slave
- pause:
- seconds: 2
-
-# Test master log pos has been changed:
-- name: Get standby status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: getslave
- register: slave_status
-
-# master_status.Position is not actual and it has been changed by the prev step,
-# so slave_status.Exec_Master_Log_Pos must be different:
-- assert:
- that:
- - slave_status.Exec_Master_Log_Pos != master_status.Position
-
-- name: Start slave that is already running
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: startslave
- fail_on_error: true
- register: result
-
-- assert:
- that:
- - result is not changed
-
-# Test stopslave mode:
-- name: Stop slave
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: stopslave
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["STOP SLAVE"]
-
-# Test stopslave mode:
-- name: Stop slave that is no longer running
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: stopslave
- fail_on_error: true
- register: result
-
-- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/mysql_replication/tasks/mysql_replication_master_delay.yml b/test/integration/targets/mysql_replication/tasks/mysql_replication_master_delay.yml
deleted file mode 100644
index c6b329283c..0000000000
--- a/test/integration/targets/mysql_replication/tasks/mysql_replication_master_delay.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Test master_delay mode:
-- name: Run replication
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: changemaster
- master_delay: '{{ test_master_delay }}'
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["CHANGE MASTER TO MASTER_DELAY=60"]
-
-# Auxiliary step:
-- name: Start slave
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: startslave
- register: result
-
-# Check master_delay:
-- name: Get standby status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: getslave
- register: slave_status
-
-- assert:
- that:
- - slave_status.SQL_Delay == {{ test_master_delay }}
- - slave_status is not changed
-
-# Stop standby for further tests:
-- name: Stop slave
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: stopslave
diff --git a/test/integration/targets/mysql_replication/tasks/mysql_replication_resetmaster_mode.yml b/test/integration/targets/mysql_replication/tasks/mysql_replication_resetmaster_mode.yml
deleted file mode 100644
index 19ea4ab4d3..0000000000
--- a/test/integration/targets/mysql_replication/tasks/mysql_replication_resetmaster_mode.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Needs for further tests:
-- name: Stop slave
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: stopslave
-
-- name: Reset slave all
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ standby_port }}"
- mode: resetslaveall
-
-# Get master initial status:
-- name: Get master status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ master_port }}"
- mode: getmaster
- register: master_initial_status
-
-# Test resetmaster mode:
-- name: Reset master
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ master_port }}"
- mode: resetmaster
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["RESET MASTER"]
-
-# Get master final status:
-- name: Get master status
- mysql_replication:
- login_host: 127.0.0.1
- login_port: "{{ master_port }}"
- mode: getmaster
- register: master_final_status
-
-- assert:
- that:
- - master_initial_status.File != master_final_status.File
diff --git a/test/integration/targets/mysql_user/aliases b/test/integration/targets/mysql_user/aliases
deleted file mode 100644
index e93cd86b56..0000000000
--- a/test/integration/targets/mysql_user/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
diff --git a/test/integration/targets/mysql_user/defaults/main.yml b/test/integration/targets/mysql_user/defaults/main.yml
deleted file mode 100644
index 7522aba14f..0000000000
--- a/test/integration/targets/mysql_user/defaults/main.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-# defaults file for test_mysql_user
-db_name: 'data'
-user_name_1: 'db_user1'
-user_name_2: 'db_user2'
-user_name_3: 'db_user3'
-
-user_password_1: 'gadfFDSdtTU^Sdfuj'
-user_password_2: 'jkFKUdfhdso78yi&td'
-user_password_3: 'jkFKUdfhdso78yi&tk'
-
-root_password: 'zevuR6oPh7'
-
-db_names:
- - clientdb
- - employeedb
- - providerdb
-
-tmp_dir: '/tmp'
diff --git a/test/integration/targets/mysql_user/files/create-function.sql b/test/integration/targets/mysql_user/files/create-function.sql
deleted file mode 100644
index dda7bd7fbf..0000000000
--- a/test/integration/targets/mysql_user/files/create-function.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-USE foo;
-DELIMITER ;;
-CREATE FUNCTION `function` () RETURNS tinyint(4)
-BEGIN
- DECLARE NAME_FOUND tinyint DEFAULT 0;
- RETURN NAME_FOUND;
-END;;
-DELIMITER ;
diff --git a/test/integration/targets/mysql_user/files/create-procedure.sql b/test/integration/targets/mysql_user/files/create-procedure.sql
deleted file mode 100644
index d0d45aa4c3..0000000000
--- a/test/integration/targets/mysql_user/files/create-procedure.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-USE bar;
-DELIMITER ;;
-CREATE PROCEDURE `procedure` ()
-SELECT * FROM bar;;
-DELIMITER ;
diff --git a/test/integration/targets/mysql_user/meta/main.yml b/test/integration/targets/mysql_user/meta/main.yml
deleted file mode 100644
index 1892924b21..0000000000
--- a/test/integration/targets/mysql_user/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-dependencies:
- - setup_mysql_db
- - setup_remote_tmp_dir
diff --git a/test/integration/targets/mysql_user/tasks/assert_no_user.yml b/test/integration/targets/mysql_user/tasks/assert_no_user.yml
deleted file mode 100644
index 0031a6887b..0000000000
--- a/test/integration/targets/mysql_user/tasks/assert_no_user.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# test code to assert no mysql user
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-- name: run command to query for mysql user
- command: mysql "-e SELECT User FROM mysql.user where user='{{ user_name }}';"
- register: result
-
-- name: assert mysql user is not present
- assert: { that: "'{{ user_name }}' not in result.stdout" }
diff --git a/test/integration/targets/mysql_user/tasks/assert_user.yml b/test/integration/targets/mysql_user/tasks/assert_user.yml
deleted file mode 100644
index 9ac7cbff13..0000000000
--- a/test/integration/targets/mysql_user/tasks/assert_user.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-# test code to assert mysql user
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-- name: run command to query for mysql user
- command: mysql "-e SELECT User FROM mysql.user where user='{{ user_name }}';"
- register: result
-
-- name: assert mysql user is present
- assert: { that: "'{{ user_name }}' in result.stdout" }
-
-- name: run command to show privileges for user (expect privileges in stdout)
- command: mysql "-e SHOW GRANTS FOR '{{ user_name }}'@'localhost';"
- register: result
- when: priv is defined
-
-- name: assert user has giving privileges
- assert: { that: "'GRANT {{priv}} ON *.*' in result.stdout" }
- when: priv is defined
diff --git a/test/integration/targets/mysql_user/tasks/create_user.yml b/test/integration/targets/mysql_user/tasks/create_user.yml
deleted file mode 100644
index 15f1eb9dbd..0000000000
--- a/test/integration/targets/mysql_user/tasks/create_user.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-# test code to create mysql user
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-- name: create mysql user {{user_name}}
- mysql_user:
- name: '{{user_name}}'
- password: '{{user_password}}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message mysql user was created
- assert: { that: "result.changed == true" }
diff --git a/test/integration/targets/mysql_user/tasks/issue-29511.yaml b/test/integration/targets/mysql_user/tasks/issue-29511.yaml
deleted file mode 100644
index fa5d8eddc4..0000000000
--- a/test/integration/targets/mysql_user/tasks/issue-29511.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
----
-
-- name: Issue test setup - drop database
- mysql_db:
- name: "{{ item }}"
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- loop:
- - foo
- - bar
-
-- name: Issue test setup - create database
- mysql_db:
- name: "{{ item }}"
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- loop:
- - foo
- - bar
-
-- name: Copy SQL scripts to remote
- copy:
- src: "{{ item }}"
- dest: "{{ remote_tmp_dir }}/{{ item | basename }}"
- with_items:
- - create-function.sql
- - create-procedure.sql
-
-- name: Create function for test
- shell: "mysql < {{ remote_tmp_dir }}/create-function.sql"
-
-- name: Create procedure for test
- shell: "mysql < {{ remote_tmp_dir }}/create-procedure.sql"
-
-- name: Create user with FUNCTION and PROCEDURE privileges
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- state: present
- priv: 'FUNCTION foo.function:EXECUTE/foo.*:SELECT/PROCEDURE bar.procedure:EXECUTE'
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: Assert Create user with FUNCTION and PROCEDURE privileges
- assert:
- that:
- - result is success
- - result is changed
-
-- name: Create user with FUNCTION and PROCEDURE privileges - Idempotent check
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- state: present
- priv: 'FUNCTION foo.function:EXECUTE/foo.*:SELECT/PROCEDURE bar.procedure:EXECUTE'
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: Assert Create user with FUNCTION and PROCEDURE privileges
- assert:
- that:
- - result is success
- - result is not changed
-
-- name: Remove user
- mysql_user:
- name: '{{ user_name_2 }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: Issue test teardown - cleanup databases
- mysql_db:
- name: "{{ item }}"
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- loop:
- - foo
- - bar
diff --git a/test/integration/targets/mysql_user/tasks/issue-64560.yaml b/test/integration/targets/mysql_user/tasks/issue-64560.yaml
deleted file mode 100644
index 3851d859ed..0000000000
--- a/test/integration/targets/mysql_user/tasks/issue-64560.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-
-- name: Set root password
- mysql_user:
- name: root
- password: '{{ root_password }}'
- login_user: root
- login_password: '{{ root_password }}'
- check_implicit_admin: yes
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert root password is changed
- assert: { that: "result.changed == true" }
-
-- name: Set root password again
- mysql_user:
- name: root
- password: '{{ root_password }}'
- login_user: root
- login_password: '{{ root_password }}'
- check_implicit_admin: yes
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: Assert root password is not changed
- assert: { that: "result.changed == false" }
diff --git a/test/integration/targets/mysql_user/tasks/main.yml b/test/integration/targets/mysql_user/tasks/main.yml
deleted file mode 100644
index 7d2a10c014..0000000000
--- a/test/integration/targets/mysql_user/tasks/main.yml
+++ /dev/null
@@ -1,220 +0,0 @@
-# test code for the mysql_user module
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 dof the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-# create mysql user and verify user is added to mysql database
-#
-- include: create_user.yml user_name={{user_name_1}} user_password={{ user_password_1 }}
-
-- include: assert_user.yml user_name={{user_name_1}}
-
-- include: remove_user.yml user_name={{user_name_1}} user_password={{ user_password_1 }}
-
-- include: assert_no_user.yml user_name={{user_name_1}}
-
-# ============================================================
-# Create mysql user that already exist on mysql database
-#
-- include: create_user.yml user_name={{user_name_1}} user_password={{ user_password_1 }}
-
-- name: create mysql user that already exist (expect changed=false)
- mysql_user:
- name: '{{user_name_1}}'
- password: '{{user_password_1}}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message mysql user was not created
- assert: { that: "result.changed == false" }
-
-# ============================================================
-# remove mysql user and verify user is removed from mysql database
-#
-- name: remove mysql user state=absent (expect changed=true)
- mysql_user:
- name: '{{ user_name_1 }}'
- password: '{{ user_password_1 }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message mysql user was removed
- assert: { that: "result.changed == true" }
-
-- include: assert_no_user.yml user_name={{user_name_1}}
-
-# ============================================================
-# remove mysql user that does not exist on mysql database
-#
-- name: remove mysql user that does not exist state=absent (expect changed=false)
- mysql_user:
- name: '{{ user_name_1 }}'
- password: '{{ user_password_1 }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message mysql user that does not exist
- assert: { that: "result.changed == false" }
-
-- include: assert_no_user.yml user_name={{user_name_1}}
-
-# ============================================================
-# Create user with no privileges and verify default privileges are assign
-#
-- name: create user with select privilege state=present (expect changed=true)
- mysql_user:
- name: '{{ user_name_1 }}'
- password: '{{ user_password_1 }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- include: assert_user.yml user_name={{user_name_1}} priv=USAGE
-
-- include: remove_user.yml user_name={{user_name_1}} user_password={{ user_password_1 }}
-
-- include: assert_no_user.yml user_name={{user_name_1}}
-
-# ============================================================
-# Create user with select privileges and verify select privileges are assign
-#
-- name: create user with select privilege state=present (expect changed=true)
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- state: present
- priv: '*.*:SELECT'
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- include: assert_user.yml user_name={{user_name_2}} priv=SELECT
-
-- include: remove_user.yml user_name={{user_name_2}} user_password={{ user_password_2 }}
-
-- include: assert_no_user.yml user_name={{user_name_2}}
-
-# ============================================================
-# Assert user has access to multiple databases
-#
-- name: give users access to multiple databases
- mysql_user:
- name: '{{ item[0] }}'
- priv: '{{ item[1] }}.*:ALL'
- append_privs: yes
- password: '{{ user_password_1 }}'
- login_unix_socket: '{{ mysql_socket }}'
- with_nested:
- - [ '{{ user_name_1 }}', '{{ user_name_2 }}']
- - "{{db_names}}"
-
-- name: show grants access for user1 on multiple database
- command: mysql "-e SHOW GRANTS FOR '{{ user_name_1 }}'@'localhost';"
- register: result
-
-- name: assert grant access for user1 on multiple database
- assert: { that: "'{{ item }}' in result.stdout" }
- with_items: "{{db_names}}"
-
-- name: show grants access for user2 on multiple database
- command: mysql "-e SHOW GRANTS FOR '{{ user_name_2 }}'@'localhost';"
- register: result
-
-- name: assert grant access for user2 on multiple database
- assert: { that: "'{{ item }}' in result.stdout" }
- with_items: "{{db_names}}"
-
-- include: remove_user.yml user_name={{user_name_1}} user_password={{ user_password_1 }}
-
-- include: remove_user.yml user_name={{user_name_2}} user_password={{ user_password_1 }}
-
-- name: give user access to database via wildcard
- mysql_user:
- name: '{{ user_name_1 }}'
- priv: '%db.*:SELECT'
- append_privs: yes
- password: '{{ user_password_1 }}'
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: show grants access for user1 on multiple database
- command: mysql "-e SHOW GRANTS FOR '{{ user_name_1 }}'@'localhost';"
- register: result
-
-- name: assert grant access for user1 on multiple database
- assert:
- that:
- - "'%db' in result.stdout"
- - "'SELECT' in result.stdout"
-
-- name: change user access to database via wildcard
- mysql_user:
- name: '{{ user_name_1 }}'
- priv: '%db.*:INSERT'
- append_privs: yes
- password: '{{ user_password_1 }}'
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: show grants access for user1 on multiple database
- command: mysql "-e SHOW GRANTS FOR '{{ user_name_1 }}'@'localhost';"
- register: result
-
-- name: assert grant access for user1 on multiple database
- assert:
- that:
- - "'%db' in result.stdout"
- - "'INSERT' in result.stdout"
-
-- include: remove_user.yml user_name={{user_name_1}} user_password={{ user_password_1 }}
-
-# ============================================================
-# Update user password for a user.
-# Assert the user password is updated and old password can no longer be used.
-#
-#- include: user_password_update_test.yml
-
-# ============================================================
-# Assert create user with SELECT privileges, attempt to create database and update privileges to create database
-#
-- include: test_privs.yml current_privilege=SELECT current_append_privs=no
-
-# ============================================================
-# Assert creating user with SELECT privileges, attempt to create database and append privileges to create database
-#
-- include: test_privs.yml current_privilege=DROP current_append_privs=yes
-
-# ============================================================
-# Assert create user with SELECT privileges, attempt to create database and update privileges to create database
-#
-- include: test_privs.yml current_privilege='UPDATE,ALTER' current_append_privs=no
-
-# ============================================================
-# Assert creating user with SELECT privileges, attempt to create database and append privileges to create database
-#
-- include: test_privs.yml current_privilege='INSERT,DELETE' current_append_privs=yes
-
-# Tests for the priv parameter with dict value (https://github.com/ansible/ansible/issues/57533)
-- include: test_priv_dict.yml
-
-- import_tasks: issue-29511.yaml
- tags:
- - issue-29511
-
-- import_tasks: issue-64560.yaml
- tags:
- - issue-64560
diff --git a/test/integration/targets/mysql_user/tasks/remove_user.yml b/test/integration/targets/mysql_user/tasks/remove_user.yml
deleted file mode 100644
index 9546760e17..0000000000
--- a/test/integration/targets/mysql_user/tasks/remove_user.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# test code to remove mysql user
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-- name: remove mysql user {{user_name}}
- mysql_user:
- name: '{{user_name}}'
- password: '{{user_password}}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message mysql user was removed
- assert: { that: "result.changed == true" }
-
-# ============================================================
-- name: create blank mysql user to be removed later
- mysql_user:
- name: ""
- state: present
- password: 'KJFDY&D*Sfuydsgf'
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: remove blank mysql user with hosts=all (expect changed)
- mysql_user:
- user: ""
- host_all: true
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert changed is true for removing all blank users
- assert: { that: "result.changed == true" }
-
-- name: remove blank mysql user with hosts=all (expect ok)
- mysql_user:
- user: ""
- host_all: true
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert changed is true for removing all blank users
- assert: { that: "result.changed == false" }
diff --git a/test/integration/targets/mysql_user/tasks/test_priv_dict.yml b/test/integration/targets/mysql_user/tasks/test_priv_dict.yml
deleted file mode 100644
index a28cc806f6..0000000000
--- a/test/integration/targets/mysql_user/tasks/test_priv_dict.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-# Tests for priv parameter value passed as a dict
-- name: Create test databases
- mysql_db:
- name: '{{ item }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- loop:
- - data1
- - data2
-
-- name: Create user with privileges
- mysql_user:
- name: '{{ user_name_3 }}'
- password: '{{ user_password_3 }}'
- priv:
- "data1.*": "SELECT"
- "data2.*": "SELECT"
- state: present
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: Run command to show privileges for user (expect privileges in stdout)
- command: mysql "-e SHOW GRANTS FOR '{{ user_name_3 }}'@'localhost';"
- register: result
-
-- name: Assert user has giving privileges
- assert:
- that:
- - "'GRANT SELECT ON `data1`.*' in result.stdout"
- - "'GRANT SELECT ON `data2`.*' in result.stdout"
-
-##########
-# Clean up
-- name: Drop test databases
- mysql_db:
- name: '{{ item }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- loop:
- - data1
- - data2
-
-- name: Drop test user
- mysql_user:
- name: '{{ user_name_3 }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
diff --git a/test/integration/targets/mysql_user/tasks/test_privs.yml b/test/integration/targets/mysql_user/tasks/test_privs.yml
deleted file mode 100644
index 70b33c2947..0000000000
--- a/test/integration/targets/mysql_user/tasks/test_privs.yml
+++ /dev/null
@@ -1,130 +0,0 @@
-# test code for privileges for mysql_user module
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-- name: create user with basic select privileges
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- priv: '*.*:SELECT'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- when: current_append_privs == "yes"
-
-- include: assert_user.yml user_name={{user_name_2}} priv='SELECT'
- when: current_append_privs == "yes"
-
-- name: create user with current privileges (expect changed=true)
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- priv: '*.*:{{current_privilege}}'
- append_privs: '{{current_append_privs}}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: assert output message for current privileges
- assert: { that: "result.changed == true" }
-
-- name: run command to show privileges for user (expect privileges in stdout)
- command: mysql "-e SHOW GRANTS FOR '{{user_name_2}}'@'localhost';"
- register: result
-
-- name: assert user has correct privileges
- assert: { that: "'GRANT {{current_privilege | replace(',', ', ')}} ON *.*' in result.stdout" }
- when: current_append_privs == "no"
-
-- name: assert user has correct privileges
- assert: { that: "'GRANT SELECT, {{current_privilege | replace(',', ', ')}} ON *.*' in result.stdout" }
- when: current_append_privs == "yes"
-
-- name: create database using user current privileges
- mysql_db:
- name: '{{ db_name }}'
- state: present
- login_user: '{{ user_name_2 }}'
- login_password: '{{ user_password_2 }}'
- ignore_errors: true
-
-- name: run command to test that database was not created
- command: mysql "-e show databases like '{{ db_name }}';"
- register: result
-
-- name: assert database was not created
- assert: { that: "'{{ db_name }}' not in result.stdout" }
-
-# ============================================================
-- name: Add privs to a specific table (expect changed)
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- priv: 'jmainguy.jmainguy:ALL'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: Assert that priv changed
- assert: { that: "result.changed == true" }
-
-- name: Add privs to a specific table (expect ok)
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- priv: 'jmainguy.jmainguy:ALL'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- name: Assert that priv did not change
- assert: { that: "result.changed == false" }
-
-# ============================================================
-- name: update user with all privileges
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- priv: '*.*:ALL'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
-
-- include: assert_user.yml user_name={{user_name_2}} priv='ALL PRIVILEGES'
-
-- name: create database using user
- mysql_db:
- name: '{{ db_name }}'
- state: present
- login_user: '{{ user_name_2 }}'
- login_password: '{{ user_password_2 }}'
-
-- name: run command to test database was created using user new privileges
- command: mysql "-e SHOW CREATE DATABASE {{ db_name }};"
-
-- name: drop database using user
- mysql_db:
- name: '{{ db_name }}'
- state: absent
- login_user: '{{ user_name_2 }}'
- login_password: '{{ user_password_2 }}'
-
-- name: remove username
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
diff --git a/test/integration/targets/mysql_user/tasks/user_password_update_test.yml b/test/integration/targets/mysql_user/tasks/user_password_update_test.yml
deleted file mode 100644
index 1f126c48b5..0000000000
--- a/test/integration/targets/mysql_user/tasks/user_password_update_test.yml
+++ /dev/null
@@ -1,156 +0,0 @@
-# test code update password for the mysql_user module
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 dof the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-# Update user password for a user.
-# Assert the user password is updated and old password can no longer be used.
-#
-- name: create user1 state=present with a password
- mysql_user:
- name: '{{ user_name_1 }}'
- password: '{{ user_password_1 }}'
- priv: '*.*:ALL'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: create user2 state=present with a password
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_2 }}'
- priv: '*.*:ALL'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: store user2 grants with old password (mysql 5.7.6 and newer)
- command: mysql "-e SHOW CREATE USER '{{ user_name_2 }}'@'localhost';"
- register: user_password_old_create
- ignore_errors: yes
-
-- name: store user2 grants with old password (mysql 5.7.5 and older)
- command: mysql "-e SHOW GRANTS FOR '{{ user_name_2 }}'@'localhost';"
- register: user_password_old
- when: user_password_old_create is failed
-
-# FIXME: not sure why this is failing, but it looks like it should expect changed=true
-#- name: update user2 state=present with same password (expect changed=false)
-# mysql_user:
-# name: '{{ user_name_2 }}'
-# password: '{{ user_password_2 }}'
-# priv: '*.*:ALL'
-# state: present
-# login_unix_socket: '{{ mysql_socket }}'
-# register: result
-#
-#- name: assert output user2 was not updated
-# assert: { that: "result.changed == false" }
-
-- include: assert_user.yml user_name={{user_name_2}} priv='ALL PRIVILEGES'
-
-- name: update user2 state=present with a new password (expect changed=true)
- mysql_user:
- name: '{{ user_name_2 }}'
- password: '{{ user_password_1 }}'
- state: present
- login_unix_socket: '{{ mysql_socket }}'
- register: result
-
-- include: assert_user.yml user_name={{user_name_2}} priv='ALL PRIVILEGES'
-
-- name: store user2 grants with old password (mysql 5.7.6 and newer)
- command: mysql "-e SHOW CREATE USER '{{ user_name_2 }}'@'localhost';"
- register: user_password_new_create
- ignore_errors: yes
-
-- name: store user2 grants with new password
- command: mysql "-e SHOW GRANTS FOR '{{ user_name_2 }}'@'localhost';"
- register: user_password_new
- when: user_password_new_create is failed
-
-- name: assert output message password was update for user2 (mysql 5.7.6 and newer)
- assert: { that: "user_password_old_create.stdout != user_password_new_create.stdout" }
- when: user_password_new_create is not failed
-
-- name: assert output message password was update for user2 (mysql 5.7.5 and older)
- assert: { that: "user_password_old.stdout != user_password_new.stdout" }
- when: user_password_new_create is failed
-
-- name: create database using user2 and old password
- mysql_db:
- name: '{{ db_name }}'
- state: present
- login_user: '{{ user_name_2 }}'
- login_password: '{{ user_password_2 }}'
- ignore_errors: true
- register: result
-
-- debug: var=result.msg
-- name: assert output message that database not create with old password
- assert:
- that:
- - "result.failed == true"
-
-- name: create database using user2 and new password
- mysql_db:
- name: '{{ db_name }}'
- state: present
- login_user: '{{ user_name_2 }}'
- login_password: '{{ user_password_1 }}'
- register: result
-
-- name: assert output message that database is created with new password
- assert: { that: "result.changed == true" }
-
-- name: remove database
- mysql_db:
- name: '{{ db_name }}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
-
-- include: remove_user.yml user_name={{user_name_1}} user_password={{ user_password_1 }}
-
-- include: remove_user.yml user_name={{user_name_2}} user_password={{ user_password_1 }}
-
-- name: Create user with Fdt8fd^34ds using hash. (expect changed=true)
- mysql_user:
- name: jmainguy
- password: '*0cb5b86f23fdc24db19a29b8854eb860cbc47793'
- encrypted: yes
- login_unix_socket: '{{ mysql_socket }}'
- register: encrypt_result
-
-- name: Check that the module made a change
- assert:
- that:
- - "encrypt_result.changed == True"
-
-- name: See if the password needs to be updated. (expect changed=false)
- mysql_user:
- name: jmainguy
- password: 'Fdt8fd^34ds'
- login_unix_socket: '{{ mysql_socket }}'
- register: plain_result
-
-- name: Check that the module did not change the password
- assert:
- that:
- - "plain_result.changed == False"
-
-- name: Remove user (cleanup)
- mysql_user:
- name: jmainguy
- state: absent
diff --git a/test/integration/targets/mysql_variables/aliases b/test/integration/targets/mysql_variables/aliases
deleted file mode 100644
index c72bb40e18..0000000000
--- a/test/integration/targets/mysql_variables/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group3
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/mysql_variables/defaults/main.yml b/test/integration/targets/mysql_variables/defaults/main.yml
deleted file mode 100644
index e7860ac026..0000000000
--- a/test/integration/targets/mysql_variables/defaults/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-# defaults file for test_mysql_variables
-user: 'user1'
-password: 'khH&DYigjg1#'
diff --git a/test/integration/targets/mysql_variables/meta/main.yml b/test/integration/targets/mysql_variables/meta/main.yml
deleted file mode 100644
index e7631b066f..0000000000
--- a/test/integration/targets/mysql_variables/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_mysql8
diff --git a/test/integration/targets/mysql_variables/tasks/assert_fail_msg.yml b/test/integration/targets/mysql_variables/tasks/assert_fail_msg.yml
deleted file mode 100644
index ba51b9d67c..0000000000
--- a/test/integration/targets/mysql_variables/tasks/assert_fail_msg.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# test code to assert message in mysql_variables module
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-# Assert message failure and confirm failed=true
-#
-- name: assert message failure (expect failed=true)
- assert:
- that:
- - "output.failed == true"
diff --git a/test/integration/targets/mysql_variables/tasks/assert_var.yml b/test/integration/targets/mysql_variables/tasks/assert_var.yml
deleted file mode 100644
index 1f4d2736b4..0000000000
--- a/test/integration/targets/mysql_variables/tasks/assert_var.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-# test code to assert variables in mysql_variables module
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-# Assert mysql variable name and value from mysql database
-#
-- name: assert output message changed value
- assert: { that: "output.changed == {{changed}}" }
-
-- name: run mysql command to show variable
- command: "mysql -uroot -p{{ root_pass }} \"-e show variables like '{{var_name}}';\""
- register: result
-
-- name: assert output mysql variable name and value
- assert:
- that:
- - "result.changed == true"
- - "'{{var_name}}' in result.stdout"
- - "'{{var_value}}' in result.stdout"
diff --git a/test/integration/targets/mysql_variables/tasks/assert_var_output.yml b/test/integration/targets/mysql_variables/tasks/assert_var_output.yml
deleted file mode 100644
index 869381679a..0000000000
--- a/test/integration/targets/mysql_variables/tasks/assert_var_output.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-# test code to assert variables in mysql_variables module
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-# Assert output variable name/value match mysql variable name/value
-#
-- name: assert output message changed value
- assert: { that: "output.changed == {{changed}}" }
-
-- set_fact:
- key_name: "{{var_name}}"
- key_value: "{{output.msg[0][0]}}"
-
-- name: run mysql command to show variable
- command: "mysql -uroot -p{{ root_pass }} \"-e show variables like '{{var_name}}';\""
- register: result
-
-- name: assert output variable info match mysql variable info
- assert:
- that:
- - "result.changed == true"
- - "key_name in result.stdout"
- - "key_value in result.stdout"
diff --git a/test/integration/targets/mysql_variables/tasks/main.yml b/test/integration/targets/mysql_variables/tasks/main.yml
deleted file mode 100644
index 801fa7733b..0000000000
--- a/test/integration/targets/mysql_variables/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-- import_tasks: mysql_variables.yml
- when: ansible_distribution == 'CentOS' and ansible_distribution_major_version >= '7'
diff --git a/test/integration/targets/mysql_variables/tasks/mysql_variables.yml b/test/integration/targets/mysql_variables/tasks/mysql_variables.yml
deleted file mode 100644
index be42bcee71..0000000000
--- a/test/integration/targets/mysql_variables/tasks/mysql_variables.yml
+++ /dev/null
@@ -1,412 +0,0 @@
-# test code for the mysql_variables module
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-# Verify mysql_variable successfully queries a variable
-#
-- set_fact: set_name='version'
-
-- name: read mysql variables (expect changed=false)
- mysql_variables:
- variable: '{{set_name}}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
-
-- include: assert_var_output.yml changed=false output={{result}} var_name={{set_name}}
-
-# ============================================================
-# Verify mysql_variable successfully updates a variable (issue:4568)
-#
-- set_fact:
- set_name: 'delay_key_write'
- set_value: 'ON'
-
-- name: set mysql variable
- mysql_variables:
- variable: '{{set_name}}'
- value: '{{set_value}}'
- login_user: root
- login_password: '{{ root_pass }}'
- login_unix_socket: '{{ mysql_socket }}'
-
-- name: update mysql variable to same value (expect changed=false)
- mysql_variables:
- variable: '{{set_name}}'
- value: '{{set_value}}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
-
-- include: assert_var.yml changed=false output={{result}} var_name={{set_name}} var_value={{set_value}}
-
-# ============================================================
-# Verify mysql_variable successfully updates a variable using single quotes
-#
-- set_fact:
- set_name: 'wait_timeout'
- set_value: '300'
-
-- name: set mysql variable to a temp value
- mysql_variables:
- variable: '{{set_name}}'
- value: '200'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
-
-- name: update mysql variable value (expect changed=true)
- mysql_variables:
- variable: '{{set_name}}'
- value: '{{set_value}}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
-
-- assert:
- that:
- - result.queries == ["SET GLOBAL `{{ set_name }}` = {{ set_value }}"]
-
-- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
-
-# ============================================================
-# Verify mysql_variable successfully updates a variable using double quotes
-#
-- set_fact:
- set_name: "wait_timeout"
- set_value: "400"
-
-- name: set mysql variable to a temp value
- mysql_variables:
- variable: '{{set_name}}'
- value: "200"
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
-
-- name: update mysql variable value (expect changed=true)
- mysql_variables:
- variable: '{{set_name}}'
- value: '{{set_value}}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
-
-- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
-
-# ============================================================
-# Verify mysql_variable successfully updates a variable using no quotes
-#
-- set_fact:
- set_name: wait_timeout
- set_value: 500
-
-- name: set mysql variable to a temp value
- mysql_variables:
- variable: '{{set_name}}'
- value: 200
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
-
-- name: update mysql variable value (expect changed=true)
- mysql_variables:
- variable: '{{set_name}}'
- value: '{{set_value}}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
-
-- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
-
-# ============================================================
-# Verify mysql_variable successfully updates a variable using an expression (e.g. 1024*4)
-#
-- name: set mysql variable value to an expression
- mysql_variables:
- variable: max_tmp_tables
- value: "1024*4"
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
- ignore_errors: true
-
-- include: assert_fail_msg.yml output={{result}} msg='Incorrect argument type to variable'
-
-# ============================================================
-# Verify mysql_variable fails when setting an incorrect value (out of range)
-#
-- name: set mysql variable value to a number out of range
- mysql_variables:
- variable: max_tmp_tables
- value: -1
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
- ignore_errors: true
-
-- include: assert_fail_msg.yml output={{result}} msg='Truncated incorrect'
-
-# ============================================================
-# Verify mysql_variable fails when setting an incorrect value (incorrect type)
-#
-- name: set mysql variable value to a non-valid value number
- mysql_variables:
- variable: max_tmp_tables
- value: TEST
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
- ignore_errors: true
-
-- include: assert_fail_msg.yml output={{result}} msg='Incorrect argument type to variable'
-
-# ============================================================
-# Verify mysql_variable fails when setting an unknown variable
-#
-- name: set a non mysql variable
- mysql_variables:
- variable: my_sql_variable
- value: ON
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
- ignore_errors: true
-
-- include: assert_fail_msg.yml output={{result}} msg='Variable not available'
-
-# ============================================================
-# Verify mysql_variable fails when setting a read-only variable
-#
-- name: set value of a read only mysql variable
- mysql_variables:
- variable: character_set_system
- value: utf16
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- register: result
- ignore_errors: true
-
-- include: assert_fail_msg.yml output={{result}} msg='read only variable'
-
-#=============================================================
-# Verify mysql_variable works with the login_user and login_password parameters
-#
-- name: create mysql user
- mysql_user:
- name: '{{user}}'
- password: '{{password}}'
- state: present
- priv: '*.*:ALL'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
-
-- set_fact:
- set_name: wait_timeout
- set_value: 77
-
-- name: query mysql_variable using login_user and password_password
- mysql_variables:
- variable: '{{set_name}}'
- login_user: '{{user}}'
- login_password: '{{password}}'
- register: result
-
-- include: assert_var_output.yml changed=false output={{result}} var_name={{set_name}}
-
-- name: set mysql variable to temp value using user login and password (expect changed=true)
- mysql_variables:
- variable: '{{set_name}}'
- value: 20
- login_user: '{{user}}'
- login_password: '{{password}}'
- register: result
-
-- name: update mysql variable value using user login and password (expect changed=true)
- mysql_variables:
- variable: '{{set_name}}'
- value: '{{set_value}}'
- login_user: '{{user}}'
- login_password: '{{password}}'
- register: result
-
-- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
-
-#============================================================
-# Verify mysql_variable fails with an incorrect login_password parameter
-#
-- set_fact:
- set_name: connect_timeout
- set_value: 10
-
-- name: query mysql_variable using incorrect login_password
- mysql_variables:
- variable: '{{set_name}}'
- login_user: '{{user}}'
- login_password: 'wrongpassword'
- register: result
- ignore_errors: true
-
-- include: assert_fail_msg.yml output={{result}} msg='unable to connect to database'
-
-- name: update mysql variable value using incorrect login_password (expect failed=true)
- mysql_variables:
- variable: '{{set_name}}'
- value: '{{set_value}}'
- login_user: '{{user}}'
- login_password: 'this is an incorrect password'
- register: result
- ignore_errors: true
-
-- include: assert_fail_msg.yml output={{result}} msg='unable to connect to database'
-
-#============================================================
-# Verify mysql_variable fails with an incorrect login_host parameter
-#
-- name: query mysql_variable using incorrect login_host
- mysql_variables:
- variable: wait_timeout
- login_host: '12.0.0.9'
- login_user: '{{user}}'
- login_password: '{{password}}'
- connect_timeout: 5
- register: result
- ignore_errors: true
-
-- include: assert_fail_msg.yml output={{result}} msg='unable to connect to database'
-
-- name: remove mysql_user {{user}}
- mysql_user:
- name: '{{user}}'
- state: absent
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
-
-#=========================================
-# Check mode 'persist' and 'persist_only':
-#
-- name: update mysql variable value (expect changed=true) in persist mode
- mysql_variables:
- variable: '{{ set_name }}'
- value: '{{ set_value }}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- mode: persist
- register: result
-
-- assert:
- that:
- - result.queries == ["SET PERSIST `{{ set_name }}` = {{ set_value }}"]
-
-- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
-
-- name: try to update mysql variable value (expect changed=false) in persist mode again
- mysql_variables:
- variable: '{{ set_name }}'
- value: '{{ set_value }}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- mode: persist
- register: result
-
-- include: assert_var.yml changed=false output={{result}} var_name={{set_name}} var_value='{{set_value}}'
-
-- name: set mysql variable to a temp value
- mysql_variables:
- variable: '{{ set_name }}'
- value: '200'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- mode: persist
-
-- name: update mysql variable value (expect changed=true) in persist_only mode
- mysql_variables:
- variable: '{{ set_name }}'
- value: '{{ set_value }}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- mode: persist_only
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["SET PERSIST_ONLY `{{ set_name }}` = {{ set_value }}"]
-
-- name: try to update mysql variable value (expect changed=false) in persist_only mode again
- mysql_variables:
- variable: '{{ set_name }}'
- value: '{{ set_value }}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- mode: persist_only
- register: result
-
-- assert:
- that:
- - result is not changed
-
-- set_fact:
- set_name: max_connections
- set_value: 105
- def_val: 151
-
-- name: update mysql variable value (expect changed=true) in persist_only mode
- mysql_variables:
- variable: '{{ set_name }}'
- value: '{{ set_value }}'
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- mode: persist_only
- register: result
-
-- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{def_val}}'
-
-# Bugfix of https://github.com/ansible/ansible/issues/54239
-- name: set variable containing dot
- mysql_variables:
- login_unix_socket: '{{ mysql_socket }}'
- login_user: root
- login_password: '{{ root_pass }}'
- variable: validate_password.policy
- value: LOW
- mode: persist_only
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["SET PERSIST_ONLY `validate_password`.`policy` = LOW"]
diff --git a/test/integration/targets/netapp_e_alerts/aliases b/test/integration/targets/netapp_e_alerts/aliases
deleted file mode 100644
index d314d14a74..0000000000
--- a/test/integration/targets/netapp_e_alerts/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 10.113.1.111:8443
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_alerts/tasks/main.yml b/test/integration/targets/netapp_e_alerts/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_alerts/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_alerts/tasks/run.yml b/test/integration/targets/netapp_e_alerts/tasks/run.yml
deleted file mode 100644
index a647d62878..0000000000
--- a/test/integration/targets/netapp_e_alerts/tasks/run.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Test code for the netapp_e_iscsi_interface module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: NetApp Test ASUP module
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined
- or netapp_e_api_host is undefined or netapp_e_ssid is undefined
- vars:
- defaults: &defaults
- api_url: "https://{{ netapp_e_api_host }}/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: no
- state: enabled
- server: mail.example.com
- sender: noreply@example.com
- recipients:
- - noreply@example.com
-
-- name: set default vars
- set_fact:
- vars: *defaults
-
-- name: Set the initial alerting settings
- netapp_e_alerts:
- <<: *defaults
- register: result
-
-- name: Validate the idempotency of the module
- netapp_e_alerts:
- <<: *defaults
- register: result
-
-- name: Ensure we still have the same settings, but had no change
- assert:
- that: not result.changed
diff --git a/test/integration/targets/netapp_e_asup/aliases b/test/integration/targets/netapp_e_asup/aliases
deleted file mode 100644
index d314d14a74..0000000000
--- a/test/integration/targets/netapp_e_asup/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 10.113.1.111:8443
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_asup/tasks/main.yml b/test/integration/targets/netapp_e_asup/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_asup/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_asup/tasks/run.yml b/test/integration/targets/netapp_e_asup/tasks/run.yml
deleted file mode 100644
index e3325ac8a7..0000000000
--- a/test/integration/targets/netapp_e_asup/tasks/run.yml
+++ /dev/null
@@ -1,233 +0,0 @@
-# Test code for the netapp_e_iscsi_interface module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: NetApp Test ASUP module
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined
- or netapp_e_api_host is undefined or netapp_e_ssid is undefined
- vars: &vars
- credentials: &creds
- api_url: "https://{{ netapp_e_api_host }}/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: no
-
-- name: set credentials
- set_fact:
- credentials: *creds
-
-- name: Show some debug information
- debug:
- msg: "Using user={{ credentials.api_username }} on server={{ credentials.api_url }}."
-
-# ****************************************************
-# *** Enable auto-support using all default values ***
-# ****************************************************
-- name: Enable auto-support using default values
- netapp_e_asup:
- <<: *creds
- verbose: true
-
-- name: Collect auto-support state information from the array
- uri:
- url: "{{ credentials.api_url }}/device-asup"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- name: Validate auto-support expected default state
- assert:
- that: "{{ current.json.asupEnabled and
- current.json.onDemandEnabled and
- current.json.remoteDiagsEnabled and
- current.json.schedule.dailyMinTime == 0 and
- current.json.schedule.dailyMaxTime == 1439 }}"
- msg: "Unexpected auto-support state"
-
-- name: Validate auto-support schedule
- assert:
- that: "{{ item in current.json.schedule.daysOfWeek }}"
- msg: "{{ item }} is missing from the schedule"
- loop: "{{ lookup('list', ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']) }}"
-
-# ****************************
-# *** Disable auto-support ***
-# ****************************
-- name: Disable auto-support
- netapp_e_asup:
- <<: *creds
- state: disabled
-
-- name: Collect auto-support state information from the array
- uri:
- url: "{{ credentials.api_url }}/device-asup"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- name: Validate auto-support is disabled
- assert:
- that: "{{ not current.json.asupEnabled }}"
- msg: "Auto-support failed to be disabled"
-
-# ****************************************************
-# *** Enable auto-support using specific values ***
-# ****************************************************
-- name: Enable auto-support using specific values
- netapp_e_asup:
- <<: *creds
- state: enabled
- active: true
- start: 22
- end: 24
- days:
- - friday
- - saturday
- verbose: true
-
-- name: Collect auto-support state information from the array
- uri:
- url: "{{ credentials.api_url }}/device-asup"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- name: Validate auto-support expected state
- assert:
- that: "{{ current.json.asupEnabled and
- current.json.onDemandEnabled and
- current.json.remoteDiagsEnabled and
- current.json.schedule.dailyMinTime == (22 * 60) and
- current.json.schedule.dailyMaxTime == (24 * 60 - 1) }}"
- msg: "Unexpected auto-support state"
-
-- name: Validate auto-support schedule
- assert:
- that: "{{ item in current.json.schedule.daysOfWeek }}"
- msg: "{{ item }} is missing from the schedule"
- loop: "{{ lookup('list', ['friday', 'saturday']) }}"
-
-# ***********************************
-# *** Alter auto-support schedule ***
-# ***********************************
-- name: Auto auto-support schedule
- netapp_e_asup:
- <<: *creds
- state: enabled
- active: true
- start: 0
- end: 5
- days:
- - monday
- - thursday
- - sunday
- verbose: true
-
-- name: Collect auto-support state information from the array
- uri:
- url: "{{ credentials.api_url }}/device-asup"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- name: Validate auto-support expected state
- assert:
- that: "{{ current.json.asupEnabled and
- current.json.onDemandEnabled and
- current.json.remoteDiagsEnabled and
- current.json.schedule.dailyMinTime == (0 * 60) and
- current.json.schedule.dailyMaxTime == (5 * 60) }}"
- msg: "Unexpected auto-support state"
-
-- name: Validate auto-support schedule
- assert:
- that: "{{ item in current.json.schedule.daysOfWeek }}"
- msg: "{{ item }} is missing from the schedule"
- loop: "{{ lookup('list', ['monday', 'thursday', 'sunday']) }}"
-
-# *************************************************************
-# *** Repeat previous test to verify state remains the same ***
-# *************************************************************
-- name: Repeat auto-support schedule change to verify idempotency
- netapp_e_asup:
- <<: *creds
- state: enabled
- active: true
- start: 0
- end: 5
- days:
- - monday
- - thursday
- - sunday
- verbose: true
- register: result
-
-- name: Collect auto-support state information from the array
- uri:
- url: "{{ credentials.api_url }}/device-asup"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- name: Validate auto-support expected state
- assert:
- that: "{{ current.json.asupEnabled and
- current.json.onDemandEnabled and
- current.json.remoteDiagsEnabled and
- current.json.schedule.dailyMinTime == (0 * 60) and
- current.json.schedule.dailyMaxTime == (5 * 60) }}"
- msg: "Unexpected auto-support state"
-
-- name: Validate auto-support schedule
- assert:
- that: "{{ item in current.json.schedule.daysOfWeek }}"
- msg: "{{ item }} is missing from the schedule"
- loop: "{{ lookup('list', ['monday', 'thursday', 'sunday']) }}"
-
-- name: Validate change was not detected
- assert:
- that: "{{ not result.changed }}"
- msg: "Invalid change was detected"
-
-# ***********************************
-# *** Disable auto-support active ***
-# ***********************************
-- name: Auto auto-support schedule
- netapp_e_asup:
- <<: *creds
- state: enabled
- active: false
- start: 0
- end: 5
- days:
- - monday
- - thursday
- - sunday
- verbose: true
-
-- name: Collect auto-support state information from the array
- uri:
- url: "{{ credentials.api_url }}/device-asup"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- name: Validate auto-support expected state
- assert:
- that: "{{ current.json.asupEnabled and not current.json.onDemandEnabled and not current.json.remoteDiagsEnabled }}"
- msg: "Unexpected auto-support state"
diff --git a/test/integration/targets/netapp_e_drive_firmware/aliases b/test/integration/targets/netapp_e_drive_firmware/aliases
deleted file mode 100644
index a1eba80911..0000000000
--- a/test/integration/targets/netapp_e_drive_firmware/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 192.168.1.1000
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_drive_firmware/tasks/main.yml b/test/integration/targets/netapp_e_drive_firmware/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_drive_firmware/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_drive_firmware/tasks/run.yml b/test/integration/targets/netapp_e_drive_firmware/tasks/run.yml
deleted file mode 100644
index 84de0e95ec..0000000000
--- a/test/integration/targets/netapp_e_drive_firmware/tasks/run.yml
+++ /dev/null
@@ -1,209 +0,0 @@
-# Test code for the netapp_e_iscsi_interface module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Existing symbol issue: occasionally symbol will return 422 which causes Ansible to fail; however the drive firmware download will complete.
-# Work-around: Remove all storage provisioning before commencing test.
-
-- name: NetApp Test ASUP module
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined
- or netapp_e_api_host is undefined or netapp_e_ssid is undefined
-
-- set_fact:
- firmware:
- downgrade:
- list:
- - "/home/swartzn/Downloads/drive firmware/D_PX04SVQ160_DOWNGRADE_MS00toMSB6_801.dlp"
- - "/home/swartzn/Downloads/drive firmware/D_ST1200MM0017_DNGRADE_MS02toMS00_6600_802.dlp"
- check:
- - firmware: "D_PX04SVQ160_DOWNGRADE_MS00toMSB6_801.dlp"
- drive: "PX04SVQ160"
- version: "MSB6"
- - firmware: "D_ST1200MM0017_DNGRADE_MS02toMS00_6600_802.dlp"
- drive: "ST1200MM0017"
- version: "MS00"
- upgrade:
- list:
- - "/home/swartzn/Downloads/drive firmware/D_PX04SVQ160_30603183_MS00_6600_001.dlp"
- - "/home/swartzn/Downloads/drive firmware/D_ST1200MM0017_30602214_MS02_5600_002.dlp"
- check:
- - firmware: "D_PX04SVQ160_30603183_MS00_6600_001.dlp"
- drive: "PX04SVQ160"
- version: "MS00"
- - firmware: "D_ST1200MM0017_30602214_MS02_5600_002.dlp"
- drive: "ST1200MM0017"
- version: "MS02"
-
-- name: Set drive firmware (baseline, maybe change)
- netapp_e_drive_firmware:
- api_url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: false
- firmware: "{{ firmware['downgrade']['list'] }}"
- wait_for_completion: true
- ignore_inaccessible_drives: true
- upgrade_drives_online: false
- register: drive_firmware
-- pause:
- seconds: 60
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_ssid }}/drives"
- user: "{{ netapp_e_api_username }}"
- password: "{{ netapp_e_api_password }}"
- validate_certs: no
- register: current_drive_firmware
-- name: Check if drive firmware is the expected versions
- assert:
- that: "{{ (item['productID'].strip() not in [firmware['downgrade']['check'][0]['drive'], firmware['downgrade']['check'][1]['drive']]) or
- (firmware['downgrade']['check'][0]['drive'] == item['productID'].strip() and
- firmware['downgrade']['check'][0]['version'] == item['softwareVersion']) or
- (firmware['downgrade']['check'][1]['drive'] == item['productID'].strip() and
- firmware['downgrade']['check'][1]['version'] == item['softwareVersion']) }}"
- msg: "Drive firmware failed to update all drives"
- loop: "{{ lookup('list', current_drive_firmware['json']) }}"
-
-- name: Set drive firmware (upgrade, change-checkmode)
- netapp_e_drive_firmware:
- api_url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: false
- firmware: "{{ firmware['upgrade']['list'] }}"
- wait_for_completion: true
- ignore_inaccessible_drives: true
- upgrade_drives_online: false
- register: drive_firmware
- check_mode: true
-- pause:
- seconds: 60
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_ssid }}/drives"
- user: "{{ netapp_e_api_username }}"
- password: "{{ netapp_e_api_password }}"
- validate_certs: no
- register: current_drive_firmware
-- name: Validate change status
- assert:
- that: "{{ drive_firmware.changed }}"
- msg: "Change status is incorrect."
-- name: Check if drive firmware is the expected versions
- assert:
- that: "{{ (item['productID'].strip() not in [firmware['downgrade']['check'][0]['drive'], firmware['downgrade']['check'][1]['drive']]) or
- (firmware['downgrade']['check'][0]['drive'] == item['productID'].strip() and
- firmware['downgrade']['check'][0]['version'] == item['softwareVersion']) or
- (firmware['downgrade']['check'][1]['drive'] == item['productID'].strip() and
- firmware['downgrade']['check'][1]['version'] == item['softwareVersion']) }}"
- msg: "Drive firmware failed to update all drives"
- loop: "{{ lookup('list', current_drive_firmware['json']) }}"
-
-- name: Set drive firmware (upgrade, change)
- netapp_e_drive_firmware:
- api_url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: false
- firmware: "{{ firmware['upgrade']['list'] }}"
- wait_for_completion: true
- ignore_inaccessible_drives: true
- upgrade_drives_online: false
- register: drive_firmware
-- pause:
- seconds: 60
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_ssid }}/drives"
- user: "{{ netapp_e_api_username }}"
- password: "{{ netapp_e_api_password }}"
- validate_certs: no
- register: current_drive_firmware
-- name: Validate change status
- assert:
- that: "{{ drive_firmware.changed }}"
- msg: "Change status is incorrect."
-- name: Check if drive firmware is the expected versions
- assert:
- that: "{{ (item['productID'].strip() not in [firmware['downgrade']['check'][0]['drive'], firmware['downgrade']['check'][1]['drive']]) or
- (firmware['upgrade']['check'][0]['drive'] == item['productID'].strip() and
- firmware['upgrade']['check'][0]['version'] == item['softwareVersion']) or
- (firmware['upgrade']['check'][1]['drive'] == item['productID'].strip() and
- firmware['upgrade']['check'][1]['version'] == item['softwareVersion']) }}"
- msg: "Drive firmware failed to update all drives"
- loop: "{{ lookup('list', current_drive_firmware['json']) }}"
-
-- name: Set drive firmware (upgrade, no change)
- netapp_e_drive_firmware:
- api_url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: false
- firmware: "{{ firmware['upgrade']['list'] }}"
- wait_for_completion: true
- ignore_inaccessible_drives: true
- upgrade_drives_online: false
- register: drive_firmware
-- pause:
- seconds: 60
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_ssid }}/drives"
- user: "{{ netapp_e_api_username }}"
- password: "{{ netapp_e_api_password }}"
- validate_certs: no
- register: current_drive_firmware
-- name: Validate change status
- assert:
- that: "{{ not drive_firmware.changed }}"
- msg: "Change status is incorrect."
-- name: Check if drive firmware is the expected versions
- assert:
- that: "{{ (item['productID'].strip() not in [firmware['downgrade']['check'][0]['drive'], firmware['downgrade']['check'][1]['drive']]) or
- (firmware['upgrade']['check'][0]['drive'] == item['productID'].strip() and
- firmware['upgrade']['check'][0]['version'] == item['softwareVersion']) or
- (firmware['upgrade']['check'][1]['drive'] == item['productID'].strip() and
- firmware['upgrade']['check'][1]['version'] == item['softwareVersion']) }}"
- msg: "Drive firmware failed to update all drives"
- loop: "{{ lookup('list', current_drive_firmware['json']) }}"
-
-- name: Set drive firmware (downgrade, change)
- netapp_e_drive_firmware:
- api_url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: false
- firmware: "{{ firmware['downgrade']['list'] }}"
- wait_for_completion: true
- ignore_inaccessible_drives: true
- upgrade_drives_online: false
- register: drive_firmware
-- pause:
- seconds: 60
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_ssid }}/drives"
- user: "{{ netapp_e_api_username }}"
- password: "{{ netapp_e_api_password }}"
- validate_certs: no
- register: current_drive_firmware
-- name: Validate change status
- assert:
- that: "{{ drive_firmware.changed }}"
- msg: "Change status is incorrect."
-- name: Check if drive firmware is the expected versions
- assert:
- that: "{{ (item['productID'].strip() not in [firmware['downgrade']['check'][0]['drive'], firmware['downgrade']['check'][1]['drive']]) or
- (firmware['downgrade']['check'][0]['drive'] == item['productID'].strip() and
- firmware['downgrade']['check'][0]['version'] == item['softwareVersion']) or
- (firmware['downgrade']['check'][1]['drive'] == item['productID'].strip() and
- firmware['downgrade']['check'][1]['version'] == item['softwareVersion']) }}"
- msg: "Drive firmware failed to update all drives"
- loop: "{{ lookup('list', current_drive_firmware['json']) }}"
diff --git a/test/integration/targets/netapp_e_firmware/aliases b/test/integration/targets/netapp_e_firmware/aliases
deleted file mode 100644
index 97edccfc3d..0000000000
--- a/test/integration/targets/netapp_e_firmware/aliases
+++ /dev/null
@@ -1,15 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-netapp_e_embedded_api_host: 192.168.1.1
-netapp_e_embedded_api_username: admin
-netapp_e_embedded_api_password: adminPass
-netapp_e_embedded_ssid: 1
-
-netapp_e_proxy_api_host: 192.168.1.100
-netapp_e_proxy_api_username: admin
-netapp_e_proxy_api_password: adminPass
-netapp_e_proxy_ssid: 10
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_firmware/tasks/main.yml b/test/integration/targets/netapp_e_firmware/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_firmware/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_firmware/tasks/run.yml b/test/integration/targets/netapp_e_firmware/tasks/run.yml
deleted file mode 100644
index 73bfdecacf..0000000000
--- a/test/integration/targets/netapp_e_firmware/tasks/run.yml
+++ /dev/null
@@ -1,348 +0,0 @@
-# Test code for the netapp_e_firmware module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# TODO: MUST BE DOWNGRADE BEFORE EXECUTING INTEGRATION TO RCB_11.40.3R2_280x_5c7d81b3.dlp and N280X-842834-D02.dlp
-# loadControllerFirmware_MT swartzn@10.113.1.250 /home/swartzn/Downloads/RCB_11.40.3R2_280x_5c7d81b3.dlp /home/swartzn/Downloads/N280X-842834-D02.dlp
-
-# This integration test will validate upgrade functionality for firmware-only, firmware-and-nvsram, and check mode.
-
-- name: NetApp Test ASUP module
- fail:
- msg: "Please define netapp_e_embedded_api_host, netapp_e_embedded_api_username, netapp_e_embedded_api_password, netapp_e_embedded_ssid,
- netapp_e_proxy_api_host, netapp_e_proxy_api_username, netapp_e_proxy_api_password, and netapp_e_proxy_ssid."
- when: "netapp_e_embedded_api_host is undefined or netapp_e_embedded_api_username is undefined or netapp_e_embedded_api_password is undefined or
- netapp_e_embedded_ssid is undefined or netapp_e_proxy_api_host is undefined or netapp_e_proxy_api_username is undefined or
- netapp_e_proxy_api_password is undefined or netapp_e_proxy_ssid is undefined"
-
-- set_fact:
- path: "/home/swartzn/Downloads/"
- upgrades:
- - firmware: "RCB_11.40.3R2_280x_5c7d81b3.dlp"
- nvsram: "N280X-842834-D02.dlp"
- expected_firmware_version: "08.42.30.05"
- expected_nvsram_version: "N280X-842834-D02"
- - firmware: "RCB_11.40.5_280x_5ceef00e.dlp"
- nvsram: "N280X-842834-D02.dlp"
- expected_firmware_version: "08.42.50.00"
- expected_nvsram_version: "N280X-842834-D02"
- - firmware: "RCB_11.50.2_280x_5ce8501f.dlp"
- nvsram: "N280X-852834-D02.dlp"
- expected_firmware_version: "08.52.00.00"
- expected_nvsram_version: "N280X-852834-D02"
-
-- name: Perform firmware upgrade using the Web Services REST API (checkmode-no change, firmware only)
- netapp_e_firmware:
- ssid: "{{ netapp_e_embedded_ssid }}"
- api_url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_embedded_api_username }}"
- api_password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- nvsram: "{{ path }}{{ upgrades[0]['nvsram'] }}"
- firmware: "{{ path }}{{ upgrades[0]['firmware'] }}"
- wait_for_completion: true
- ignore_health_check: true
- check_mode: true
- register: netapp_e_firmware
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_embedded_ssid }}/graph/xpath-filter?query=/sa/saData/fwVersion"
- user: "{{ netapp_e_embedded_api_username }}"
- password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- register: current_firmware
-- name: Retrieve current nvsram version
- uri:
- url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_embedded_ssid }}/graph/xpath-filter?query=/sa/saData/nvsramVersion"
- user: "{{ netapp_e_embedded_api_username }}"
- password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- register: current_nvsram
-- name: Verify change status
- assert:
- that: "{{ netapp_e_firmware.changed == False }}"
- msg: "Failed to return unchanged."
-- name: Verify current firmware version
- assert:
- that: "{{ current_firmware['json'][0] == upgrades[0]['expected_firmware_version'] }}"
- msg: "Unexpected firmware version."
-- name: Verify current nvsram version
- assert:
- that: "{{ current_nvsram['json'][0] == upgrades[0]['expected_nvsram_version'] }}"
- msg: "Unexpected nvsram version."
-
-- name: Perform firmware upgrade using the Web Services REST API (no change, firmware only)
- netapp_e_firmware:
- ssid: "{{ netapp_e_embedded_ssid }}"
- api_url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_embedded_api_username }}"
- api_password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- nvsram: "{{ path }}{{ upgrades[0]['nvsram'] }}"
- firmware: "{{ path }}{{ upgrades[0]['firmware'] }}"
- wait_for_completion: true
- ignore_health_check: true
- register: netapp_e_firmware
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_embedded_ssid }}/graph/xpath-filter?query=/sa/saData/fwVersion"
- user: "{{ netapp_e_embedded_api_username }}"
- password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- register: current_firmware
-- name: Retrieve current nvsram version
- uri:
- url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_embedded_ssid }}/graph/xpath-filter?query=/sa/saData/nvsramVersion"
- user: "{{ netapp_e_embedded_api_username }}"
- password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- register: current_nvsram
-- name: Verify change status
- assert:
- that: "{{ netapp_e_firmware.changed == False }}"
- msg: "Failed to return changed."
-- name: Verify current firmware version
- assert:
- that: "{{ current_firmware['json'][0] == upgrades[0]['expected_firmware_version'] }}"
- msg: "Unexpected firmware version."
-- name: Verify current nvsram version
- assert:
- that: "{{ current_nvsram['json'][0] == upgrades[0]['expected_nvsram_version'] }}"
- msg: "Unexpected nvsram version."
-
-- name: Perform firmware upgrade using the Web Services REST API (checkmode-change, firmware)
- netapp_e_firmware:
- ssid: "{{ netapp_e_embedded_ssid }}"
- api_url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_embedded_api_username }}"
- api_password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- nvsram: "{{ path }}{{ upgrades[1]['nvsram'] }}"
- firmware: "{{ path }}{{ upgrades[1]['firmware'] }}"
- wait_for_completion: true
- ignore_health_check: true
- register: netapp_e_firmware
- check_mode: true
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_embedded_ssid }}/graph/xpath-filter?query=/sa/saData/fwVersion"
- user: "{{ netapp_e_embedded_api_username }}"
- password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- register: current_firmware
-- name: Retrieve current nvsram version
- uri:
- url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_embedded_ssid }}/graph/xpath-filter?query=/sa/saData/nvsramVersion"
- user: "{{ netapp_e_embedded_api_username }}"
- password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- register: current_nvsram
-- name: Verify change status
- assert:
- that: "{{ netapp_e_firmware.changed == True }}"
- msg: "Failed to return changed."
-- name: Verify current firmware version
- assert:
- that: "{{ current_firmware['json'][0] == upgrades[0]['expected_firmware_version'] }}"
- msg: "Unexpected firmware version."
-- name: Verify current nvsram version
- assert:
- that: "{{ current_nvsram['json'][0] == upgrades[0]['expected_nvsram_version'] }}"
- msg: "Unexpected nvsram version."
-
-- name: Perform firmware upgrade using the Web Services REST API (change, firmware)
- netapp_e_firmware:
- ssid: "{{ netapp_e_embedded_ssid }}"
- api_url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_embedded_api_username }}"
- api_password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- nvsram: "{{ path }}{{ upgrades[1]['nvsram'] }}"
- firmware: "{{ path }}{{ upgrades[1]['firmware'] }}"
- wait_for_completion: true
- ignore_health_check: true
- register: netapp_e_firmware
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_embedded_ssid }}/graph/xpath-filter?query=/sa/saData/fwVersion"
- user: "{{ netapp_e_embedded_api_username }}"
- password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- register: current_firmware
-- name: Retrieve current nvsram version
- uri:
- url: "https://{{ netapp_e_embedded_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_embedded_ssid }}/graph/xpath-filter?query=/sa/saData/nvsramVersion"
- user: "{{ netapp_e_embedded_api_username }}"
- password: "{{ netapp_e_embedded_api_password }}"
- validate_certs: no
- register: current_nvsram
-- name: Verify change status
- assert:
- that: "{{ netapp_e_firmware.changed == True }}"
- msg: "Failed to return changed."
-- name: Verify current firmware version
- assert:
- that: "{{ current_firmware['json'][0] == upgrades[1]['expected_firmware_version'] }}"
- msg: "Unexpected firmware version. {{ current_firmware['json'][0] }} != {{ upgrades[1]['expected_firmware_version'] }}"
-- name: Verify current nvsram version
- assert:
- that: "{{ current_nvsram['json'][0] == upgrades[1]['expected_nvsram_version'] }}"
- msg: "Unexpected nvsram version. {{ current_nvsram['json'][0] }} != {{ upgrades[1]['expected_nvsram_version'] }}"
-
-- name: Perform firmware upgrade using the Web Services REST API (changed, firmware)
- netapp_e_firmware:
- ssid: "{{ netapp_e_proxy_ssid }}"
- api_url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_proxy_api_username }}"
- api_password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- nvsram: "{{ path }}{{ upgrades[0]['nvsram'] }}"
- firmware: "{{ path }}{{ upgrades[0]['firmware'] }}"
- wait_for_completion: true
- ignore_health_check: true
- register: netapp_e_firmware
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_proxy_ssid }}/graph/xpath-filter?query=/sa/saData/fwVersion"
- user: "{{ netapp_e_proxy_api_username }}"
- password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- register: current_firmware
-- name: Retrieve current nvsram version
- uri:
- url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_proxy_ssid }}/graph/xpath-filter?query=/sa/saData/nvsramVersion"
- user: "{{ netapp_e_proxy_api_username }}"
- password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- register: current_nvsram
-- name: Verify change status
- assert:
- that: "{{ netapp_e_firmware.changed == True }}"
- msg: "Failed to return changed."
-- name: Verify current firmware version
- assert:
- that: "{{ current_firmware['json'][0] == upgrades[0]['expected_firmware_version'] }}"
- msg: "Failed to change the firmware version."
-- name: Verify current nvsram version
- assert:
- that: "{{ current_nvsram['json'][0] == upgrades[0]['expected_nvsram_version'] }}"
- msg: "Failed to change the nvsram version."
-
-- name: Perform firmware upgrade using the Web Services REST API (checkmode-unchanged, firmware)
- netapp_e_firmware:
- ssid: "{{ netapp_e_proxy_ssid }}"
- api_url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_proxy_api_username }}"
- api_password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- nvsram: "{{ path }}{{ upgrades[0]['nvsram'] }}"
- firmware: "{{ path }}{{ upgrades[0]['firmware'] }}"
- wait_for_completion: true
- ignore_health_check: true
- check_mode: true
- register: netapp_e_firmware
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_proxy_ssid }}/graph/xpath-filter?query=/sa/saData/fwVersion"
- user: "{{ netapp_e_proxy_api_username }}"
- password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- register: current_firmware
-- name: Retrieve current nvsram version
- uri:
- url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_proxy_ssid }}/graph/xpath-filter?query=/sa/saData/nvsramVersion"
- user: "{{ netapp_e_proxy_api_username }}"
- password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- register: current_nvsram
-- name: Verify change status
- assert:
- that: "{{ netapp_e_firmware.changed == False }}"
- msg: "Failed to return unchanged."
-- name: Verify current firmware version
- assert:
- that: "{{ current_firmware['json'][0] == upgrades[0]['expected_firmware_version'] }}"
- msg: "Failed to change the firmware version."
-- name: Verify current nvsram version
- assert:
- that: "{{ current_nvsram['json'][0] == upgrades[0]['expected_nvsram_version'] }}"
- msg: "Failed to change the nvsram version."
-
-- name: Perform firmware upgrade using the Web Services REST API (checkmode-change, firmware and nvsram)
- netapp_e_firmware:
- ssid: "{{ netapp_e_proxy_ssid }}"
- api_url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_proxy_api_username }}"
- api_password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- nvsram: "{{ path }}{{ upgrades[2]['nvsram'] }}"
- firmware: "{{ path }}{{ upgrades[2]['firmware'] }}"
- wait_for_completion: true
- ignore_health_check: true
- check_mode: true
- register: netapp_e_firmware
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_proxy_ssid }}/graph/xpath-filter?query=/sa/saData/fwVersion"
- user: "{{ netapp_e_proxy_api_username }}"
- password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- register: current_firmware
-- name: Retrieve current nvsram version
- uri:
- url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_proxy_ssid }}/graph/xpath-filter?query=/sa/saData/nvsramVersion"
- user: "{{ netapp_e_proxy_api_username }}"
- password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- register: current_nvsram
-- name: Verify change status
- assert:
- that: "{{ netapp_e_firmware.changed == True }}"
- msg: "Failed to return changed."
-- name: Verify current firmware version
- assert:
- that: "{{ current_firmware['json'][0] == upgrades[0]['expected_firmware_version'] }}"
- msg: "Failed to change the firmware version."
-- name: Verify current nvsram version
- assert:
- that: "{{ current_nvsram['json'][0] == upgrades[0]['expected_nvsram_version'] }}"
- msg: "Failed to change the nvsram version."
-
-- name: Perform firmware upgrade using the Web Services REST API (changed, firmware and nvsram)
- netapp_e_firmware:
- ssid: "{{ netapp_e_proxy_ssid }}"
- api_url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_proxy_api_username }}"
- api_password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- nvsram: "{{ path }}{{ upgrades[2]['nvsram'] }}"
- firmware: "{{ path }}{{ upgrades[2]['firmware'] }}"
- wait_for_completion: true
- ignore_health_check: true
- register: netapp_e_firmware
-- name: Retrieve current firmware version
- uri:
- url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_proxy_ssid }}/graph/xpath-filter?query=/sa/saData/fwVersion"
- user: "{{ netapp_e_proxy_api_username }}"
- password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- register: current_firmware
-- name: Retrieve current nvsram version
- uri:
- url: "https://{{ netapp_e_proxy_api_host }}:8443/devmgr/v2/storage-systems/{{ netapp_e_proxy_ssid }}/graph/xpath-filter?query=/sa/saData/nvsramVersion"
- user: "{{ netapp_e_proxy_api_username }}"
- password: "{{ netapp_e_proxy_api_password }}"
- validate_certs: no
- register: current_nvsram
-- name: Verify change status
- assert:
- that: "{{ netapp_e_firmware.changed == True }}"
- msg: "Failed to return changed."
-- name: Verify current firmware version
- assert:
- that: "{{ current_firmware['json'][0] == upgrades[2]['expected_firmware_version'] }}"
- msg: "Failed to change the firmware version."
-- name: Verify current nvsram version
- assert:
- that: "{{ current_nvsram['json'][0] == upgrades[2]['expected_nvsram_version'] }}"
- msg: "Failed to change the nvsram version."
diff --git a/test/integration/targets/netapp_e_global/aliases b/test/integration/targets/netapp_e_global/aliases
deleted file mode 100644
index d314d14a74..0000000000
--- a/test/integration/targets/netapp_e_global/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 10.113.1.111:8443
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_global/tasks/main.yml b/test/integration/targets/netapp_e_global/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_global/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_global/tasks/run.yml b/test/integration/targets/netapp_e_global/tasks/run.yml
deleted file mode 100644
index 6a57b2cf85..0000000000
--- a/test/integration/targets/netapp_e_global/tasks/run.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-# Test code for the netapp_e_iscsi_interface module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: NetApp Test Global Settings module
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined
- or netapp_e_api_host is undefined or netapp_e_ssid is undefined
- vars: &vars
- credentials: &creds
- api_url: "https://{{ netapp_e_api_host }}/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: no
- name: TestArray
-- name: set credentials
- set_fact:
- credentials: *creds
-
-- name: Show some debug information
- debug:
- msg: "Using user={{ credentials.api_username }} on server={{ credentials.api_url }}."
-
-- name: Set the name to the default
- netapp_e_global:
- <<: *creds
-
-- name: Set a few different names
- netapp_e_global:
- <<: *creds
- name: "{{ item }}"
- loop:
- - a
- - x
- - "000001111122222333334444455555"
-
-- name: Set an explicit name
- netapp_e_global:
- <<: *creds
- name: abc
- register: result
-
-- name: Validate name
- assert:
- that: result.name == "abc"
-
-- name: Restore the original name
- netapp_e_global:
- <<: *creds \ No newline at end of file
diff --git a/test/integration/targets/netapp_e_host/aliases b/test/integration/targets/netapp_e_host/aliases
deleted file mode 100644
index 28cd22b2e7..0000000000
--- a/test/integration/targets/netapp_e_host/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 192.168.1.1
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_host/tasks/main.yml b/test/integration/targets/netapp_e_host/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_host/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_host/tasks/run.yml b/test/integration/targets/netapp_e_host/tasks/run.yml
deleted file mode 100644
index 1fd5c65a17..0000000000
--- a/test/integration/targets/netapp_e_host/tasks/run.yml
+++ /dev/null
@@ -1,276 +0,0 @@
----
-# Test code for the netapp_e_host module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: NetApp Test Host module
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined or
- netapp_e_api_host is undefined or netapp_e_ssid is undefined
- vars:
- gather_facts: yes
- credentials: &creds
- api_url: "https://{{ netapp_e_api_host }}/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: no
- hosts: &hosts
- 1:
- host_type: 27
- update_host_type: 28
- ports:
- - type: 'iscsi'
- label: 'I1_1'
- port: 'iqn.1996-04.de.suse:01:56f86f9bd1fe-PORT1'
- - type: 'iscsi'
- label: 'I1_2'
- port: 'iqn.1996-04.de.suse:01:56f86f9bd1ff-port1'
- ports2:
- - type: 'iscsi'
- label: 'I1_1'
- port: 'iqn.1996-04.de.suse:01:56f86f9bd1fe-port2'
- - type: 'iscsi'
- label: 'I1_2'
- port: 'iqn.1996-04.de.suse:01:56f86f9bd1ff-port2'
- - type: 'iscsi'
- label: 'I1_3'
- port: 'iqn.1996-04.redhat:01:56f86f9bd1fe-PORT1'
- 2:
- host_type: 27
- update_host_type: 28
- ports:
- - type: 'iscsi'
- label: 'I2_1'
- port: 'iqn.1996-04.redhat:01:56f86f9bd1fe-port1'
- - type: 'iscsi'
- label: 'I2_2'
- port: 'iqn.1996-04.redhat:01:56f86f9bd1ff-port1'
- ports2:
- - type: 'iscsi'
- label: 'I2_1'
- port: 'iqn.1996-04.redhat:01:56f86f9bd1fe-port2'
- - type: 'iscsi'
- label: 'I2_2'
- port: 'iqn.1996-04.redhat:01:56f86f9bd1ff-PORT2'
-
-
-# ********************************************
-# *** Ensure jmespath package is installed ***
-# ********************************************
-# NOTE: jmespath must be installed for the json_query filter
-- name: Ensure that jmespath is installed
- pip:
- name: jmespath
- state: present
- register: jmespath
-- fail:
- msg: "Restart playbook, the jmespath package was installed and is need for the playbook's execution."
- when: jmespath.changed
-
-
-# *****************************************
-# *** Set credential and host variables ***
-# *****************************************
-- name: Set hosts variable
- set_fact:
- hosts: *hosts
-- name: set credentials
- set_fact:
- credentials: *creds
-- name: Show some debug information
- debug:
- msg: "Using user={{ credentials.api_username }} on server={{ credentials.api_url }}."
-
-# *** Remove any existing hosts to set initial state and verify state ***
-- name: Remove any existing hosts
- netapp_e_host:
- <<: *creds
- state: absent
- name: "{{ item.key }}"
- with_dict: *hosts
-
-# Retrieve array host definitions
-- name: HTTP request for all host definitions from array
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/hosts"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
-
-# Verify that host 1 and 2 host objects do not exist
-- name: Collect host side port labels
- set_fact:
- host_labels: "{{ result | json_query('json[*].label') }}"
-- name: Assert hosts were removed
- assert:
- that: "'{{ item.key }}' not in host_labels"
- msg: "Host, {{ item.key }}, failed to be removed from the hosts!"
- loop: "{{ lookup('dict', hosts) }}"
-
-
-# *****************************************************************
-# *** Create host definitions and validate host object creation ***
-# *****************************************************************
-- name: Define hosts
- netapp_e_host:
- <<: *creds
- state: present
- host_type: "{{ item.value.host_type }}"
- ports: "{{ item.value.ports }}"
- name: "{{ item.key }}"
- with_dict: *hosts
-
-# Retrieve array host definitions
-- name: https request to validate host definitions were created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/hosts"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
-
-# Verify hosts were indeed created
-- name: Collect host label list
- set_fact:
- hosts_labels: "{{ result | json_query('json[*].label') }}"
-- name: Validate hosts were in fact created
- assert:
- that: "'{{ item.key }}' in hosts_labels"
- msg: "host, {{ item.key }}, not define on array!"
- loop: "{{ lookup('dict', hosts) }}"
-
-# *** Update with no state changes results in no changes ***
-- name: Redefine hosts, expecting no changes
- netapp_e_host:
- <<: *creds
- state: present
- host_type: "{{ item.value.host_type }}"
- ports: "{{ item.value.ports }}"
- name: "{{ item.key }}"
- with_dict: *hosts
- register: result
-
-# Verify that no changes occurred
-- name: Ensure no change occurred
- assert:
- msg: "A change was not detected!"
- that: "not result.changed"
-
-
-# ***********************************************************************************
-# *** Redefine hosts using ports2 host definitions and validate the updated state ***
-# ***********************************************************************************
-- name: Redefine hosts, expecting changes
- netapp_e_host:
- <<: *creds
- state: present
- host_type: "{{ item.value.host_type }}"
- ports: "{{ item.value.ports2 }}"
- name: "{{ item.key }}"
- force_port: yes
- with_dict: *hosts
- register: result
-
-# Request from the array all host definitions
-- name: HTTP request for port information
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/hosts"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
-
-# Compile a list of array host port information for verifying changes
-- name: Compile array host port information list
- set_fact:
- tmp: []
-
-# Append each loop to the previous extraction. Each loop consists of host definitions and the filters will perform
-# the following: grab host side port lists; combine to each list a dictionary containing the host name(label);
-# lastly, convert the zip_longest object into a list
-- set_fact:
- tmp: "{{ tmp }} + {{ [item | json_query('hostSidePorts[*]')] |
- zip_longest([], fillvalue={'host_name': item.label}) | list }}"
- loop: "{{ result.json }}"
-
-# Make new list, port_info, by combining each list entry's dictionaries into a single dictionary
-- name: Create port information list
- set_fact:
- port_info: []
-- set_fact:
- port_info: "{{ port_info + [item[0] |combine(item[1])] }}"
- loop: "{{ tmp }}"
-
-# Compile list of expected host port information for verifying changes
-- name: Create expected port information list
- set_fact:
- tmp: []
-
-# Append each loop to the previous extraction. Each loop consists of host definitions and the filters will perform
-# the following: grab host side port lists; combine to each list a dictionary containing the host name(label);
-# lastly, convert the zip_longest object into a list
-- set_fact:
- tmp: "{{ tmp }} + {{ [item | json_query('value.ports2[*]')]|
- zip_longest([], fillvalue={'host_name': item.key|string}) | list }}"
- loop: "{{ lookup('dict', hosts) }}"
-
-# Make new list, expected_port_info, by combining each list entry's dictionaries into a single dictionary
-- name: Create expected port information list
- set_fact:
- expected_port_info: []
-- set_fact:
- expected_port_info: "{{ expected_port_info + [ item[0] |combine(item[1]) ] }}"
- loop: "{{ tmp }}"
-
-# Verify that each host object has the expected protocol type and address/port
-- name: Assert hosts information was updated with new port information
- assert:
- that: "{{ item[0].host_name != item[1].host_name or
- item[0].label != item[1].label or
- (item[0].type == item[1].type and
- (item[0].address|regex_replace(':','')) == (item[1].port|regex_replace(':',''))) }}"
- msg: "port failed to be updated!"
- loop: "{{ query('nested', port_info, expected_port_info) }}"
-
-
-# ****************************************************
-# *** Remove any existing hosts and verify changes ***
-# ****************************************************
-- name: Remove any existing hosts
- netapp_e_host:
- <<: *creds
- state: absent
- name: "{{ item.key }}"
- with_dict: *hosts
-
-# Request all host object definitions
-- name: HTTP request for all host definitions from array
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/hosts"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: results
-
-# Collect port label information
-- name: Collect host side port labels
- set_fact:
- host_side_port_labels: "{{ results | json_query('json[*].hostSidePorts[*].label') }}"
-
-- name: Collect removed port labels
- set_fact:
- removed_host_side_port_labels: "{{ hosts | json_query('*.ports[*].label') }}"
-
-# Verify host 1 and 2 objects were removed
-- name: Assert hosts were removed
- assert:
- that: item not in host_side_port_labels
- msg: "Host {{ item }} failed to be removed from the hosts!"
- loop: "{{ removed_host_side_port_labels }}"
diff --git a/test/integration/targets/netapp_e_iscsi_interface/aliases b/test/integration/targets/netapp_e_iscsi_interface/aliases
deleted file mode 100644
index d314d14a74..0000000000
--- a/test/integration/targets/netapp_e_iscsi_interface/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 10.113.1.111:8443
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_iscsi_interface/tasks/main.yml b/test/integration/targets/netapp_e_iscsi_interface/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_iscsi_interface/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_iscsi_interface/tasks/run.yml b/test/integration/targets/netapp_e_iscsi_interface/tasks/run.yml
deleted file mode 100644
index 05cf39a5fb..0000000000
--- a/test/integration/targets/netapp_e_iscsi_interface/tasks/run.yml
+++ /dev/null
@@ -1,448 +0,0 @@
----
-# Test code for the netapp_e_iscsi_interface module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-
-# ***********************
-# *** Local test data ***
-# ***********************
-- name: NetApp Test iSCSI Interface module
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined
- or netapp_e_api_host is undefined or netapp_e_ssid is undefined
- vars:
- credentials: &creds
- api_url: "https://{{ netapp_e_api_host }}/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: no
- array: &array
- subnet: 255.255.255.0
- gateway: 10.10.10.1
- A:
- - channel: 1
- max_frame_size: 1500
- - channel: 2
- max_frame_size: 2000
- - channel: 3
- max_frame_size: 9000
- - channel: 4
- max_frame_size: 1500
- - channel: 5
- max_frame_size: 2000
- - channel: 6
- max_frame_size: 9000
- B:
- - channel: 1
- max_frame_size: 9000
- - channel: 2
- max_frame_size: 1500
- - channel: 3
- max_frame_size: 2000
- - channel: 4
- max_frame_size: 9000
- - channel: 5
- max_frame_size: 1500
- - channel: 6
- max_frame_size: 2000
-
-
-# ***************************************************
-# *** Ensure python jmespath package is installed ***
-# ***************************************************
-- name: Ensure that jmespath is installed
- pip:
- name: jmespath
- state: enabled
- register: jmespath
-- fail:
- msg: "Restart playbook, the jmespath package was installed and is need for the playbook's execution."
- when: jmespath.changed
-
-
-# ************************************
-# *** Set local playbook test data ***
-# ************************************
-- name: set credentials
- set_fact:
- credentials: *creds
-- name: set array
- set_fact:
- array: *array
-
-- name: Show some debug information
- debug:
- msg: "Using user={{ credentials.api_username }} on server={{ credentials.api_url }}."
-
-
-# *****************************************
-# *** Disable all controller A channels ***
-# *****************************************
-- name: Disable all controller A ports
- netapp_e_iscsi_interface:
- <<: *creds
- controller: "A"
- channel: "{{ item.channel }}"
- state: disabled
- loop: "{{ lookup('list', array.A) }}"
-
-# Delay to give time for the asynchronous symbol call has complete
-- pause:
- seconds: 30
-
-# Request all controller's iscsi host interface information
-- name: Collect iscsi port information
- uri:
- url: "{{ xpath_filter_url }}?query=controller/hostInterfaces//iscsi"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
- vars:
- xpath_filter_url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/graph/xpath-filter"
-
-# Extract controller A's port information from the iscsi host interfaces list
-# Note: min filter is used because there are only two controller ids and the smaller corresponds with controller A
-- name: Get controller A's controllerId
- set_fact:
- controller_a_id: "{{ result | json_query('json[*].controllerId') | min }}"
-
-# Collect all port information associated with controller A
-- name: Get controller A's port information
- set_fact:
- controller_a: "{{ result | json_query(controller_a_query) }}"
- vars:
- controller_a_query: "json[?controllerId=='{{ controller_a_id }}']"
-
-# Confirm controller A's ports are disabled
-- name: Verify all controller A ports are disabled
- assert:
- that: "{{ item.ipv4Enabled == false }}"
- msg: "Controller A, channel {{ item.channel }} is not disabled"
- loop: "{{ controller_a }}"
-
-
-# *****************************************
-# *** Disable all controller B channels ***
-# *****************************************
-- name: Disable all controller B ports
- netapp_e_iscsi_interface:
- <<: *creds
- controller: "B"
- channel: "{{ item.channel }}"
- state: disabled
- loop: "{{ lookup('list', array.B) }}"
-
-# Delay to give time for the asynchronous symbol call has complete
-- pause:
- seconds: 30
-
-# Request all controller's iscsi host interface information
-- name: Collect iscsi port information
- uri:
- url: "{{ xpath_filter_url }}?query=controller/hostInterfaces//iscsi"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
- vars:
- xpath_filter_url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/graph/xpath-filter"
-
-# Extract controller B's port information from the iscsi host interfaces list
-# Note: min filter is used because there are only two controller ids and the smaller corresponds with controller B
-- name: Get controller B's controllerId
- set_fact:
- controller_b_id: "{{ result | json_query('json[*].controllerId') | max }}"
-
-# Collect all port information associated with controller B
-- name: Get controller B's port information
- set_fact:
- controller_b: "{{ result | json_query(controller_b_query) }}"
- vars:
- controller_b_query: "json[?controllerId=='{{ controller_b_id }}']"
-
-# Confirm controller B's ports are disabled
-- name: Verify all controller B ports are disabled
- assert:
- that: "{{ item.ipv4Enabled == false }}"
- msg: "Controller B, channel {{ item.channel }} is not disabled"
- loop: "{{ controller_b }}"
-
-
-# *****************************************************
-# *** Configure all controller A's ports statically ***
-# *****************************************************
-- name: Configure controller A's port to use a static configuration method
- netapp_e_iscsi_interface:
- <<: *creds
- controller: "A"
- channel: "{{ item.channel }}"
- state: enabled
- config_method: static
- address: "{{ array.gateway.split('.')[:3] | join('.') }}.{{ item.channel }}"
- subnet_mask: "{{ array.subnet }}"
- gateway: "{{ array.gateway }}"
- max_frame_size: "{{ item.max_frame_size }}"
- loop: "{{ lookup('list', array.A) }}"
-
-# Delay to give time for the asynchronous symbol call has complete
-- pause:
- seconds: 30
-
-# Request a list of iscsi host interfaces
-- name: Collect array information
- uri:
- url: "{{ xpath_filter }}?query=controller/hostInterfaces//iscsi"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
- vars:
- xpath_filter: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/graph/xpath-filter"
-
-# Extract controller A's port information from the iscsi host interfaces list
-# Note: min filter is used because there are only two controller ids and the smaller corresponds with controller A
-- name: Get controller A's controllerId
- set_fact:
- controller_a_id: "{{ result | json_query('json[*].controllerId') | min }}"
-
-# Compile any iscsi port information associated with controller A
-- name: Get controller A's port information
- set_fact:
- controller_a: "{{ result | json_query(controller_a_query) }}"
- vars:
- controller_a_query: "json[?controllerId=='{{ controller_a_id }}']"
-
-# Confirm that controller A ports are statically defined with the expected MTU, gateway, subnet and ipv4 address
-- name: Verify expected controller A's port configuration
- assert:
- that: "{{ item[0].channel != item[1].channel or
- ( item[0].ipv4Data.ipv4AddressConfigMethod == 'configStatic' and
- item[0].interfaceData.ethernetData.maximumFramePayloadSize == item[1].max_frame_size and
- item[0].ipv4Data.ipv4AddressData.ipv4GatewayAddress == array.gateway and
- item[0].ipv4Data.ipv4AddressData.ipv4SubnetMask == array.subnet and
- item[0].ipv4Data.ipv4AddressData.ipv4Address == partial_address + item[1].channel | string ) }}"
- msg: "Failed to configure controller A, channel {{ item[0].channel }}"
- loop: "{{ query('nested', lookup('list', controller_a), lookup('list', array.A) ) }}"
- vars:
- partial_address: "{{ array.gateway.split('.')[:3] | join('.') + '.' }}"
-
-
-# *******************************************************************************************
-# *** Configure controller B's channels for dhcp and specific frame maximum payload sizes ***
-# *******************************************************************************************
-- name: Configure controller B's ports to use dhcp with different MTU
- netapp_e_iscsi_interface:
- <<: *creds
- controller: "B"
- channel: "{{ item.channel }}"
- state: enabled
- config_method: dhcp
- max_frame_size: "{{ item.max_frame_size }}"
- loop: "{{ lookup('list', array.B) }}"
-
-# Delay to give time for the asynchronous symbol call has complete
-- pause:
- seconds: 30
-
-# request a list of iscsi host interfaces
-- name: Collect array information
- uri:
- url: "{{ xpath_filter_url }}?query=controller/hostInterfaces//iscsi"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
- vars:
- xpath_filter_url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/graph/xpath-filter"
-
-# Extract controller B's port information from the iscsi host interfaces list
-# Note: max filter is used because there are only two controller ids and the larger corresponds with controller B
-- name: Get controller B's controllerId
- set_fact:
- controller_b_id: "{{ result | json_query('json[*].controllerId') | max }}"
-- name: Get controller B port information list
- set_fact:
- controller_b: "{{ result | json_query(controller_b_query) }}"
- vars:
- controller_b_query: "json[?controllerId=='{{ controller_b_id }}']"
-
-# Using a nested loop of array information and expected information, verify that each channel has the appropriate max
-# frame payload size and is configured for dhcp
-- name: Verify expected controller B's port configuration
- assert:
- that: "{{ item[0].channel != item[1].channel or
- ( item[0].ipv4Data.ipv4AddressConfigMethod == 'configDhcp' and
- item[0].interfaceData.ethernetData.maximumFramePayloadSize == item[1].max_frame_size ) }}"
- msg: >
- Failed to configure controller channel {{ item[0].channel }} for dhcp
- and/or maximum frame size of {{ item[1].max_frame_size }}!
- loop: "{{ query('nested', lookup('list', controller_b), lookup('list', array.B)) }}"
-
-
-# *******************************************************************************************
-# *** Configure controller A's channels for dhcp and specific frame maximum payload sizes ***
-# *******************************************************************************************
-- name: Configure controller A's ports to use dhcp with different MTU
- netapp_e_iscsi_interface:
- <<: *creds
- controller: "A"
- channel: "{{ item.channel }}"
- state: enabled
- config_method: dhcp
- max_frame_size: "{{ item.max_frame_size }}"
- loop: "{{ lookup('list', array.A) }}"
-
-# Delay to give time for the asynchronous symbol call has complete
-- pause:
- seconds: 30
-
-# Request a list of iscsi host interfaces
-- name: Collect array information
- uri:
- url: "{{ xpath_filter_url }}?query=controller/hostInterfaces//iscsi"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
- vars:
- xpath_filter_url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/graph/xpath-filter"
-
-# Extract controller A's port information from the iscsi host interfaces list
-# Note: min filter is used because there are only two controller ids and the larger corresponds with controller A
-- name: Get controller A's controllerId
- set_fact:
- controller_a_id: "{{ result | json_query('json[*].controllerId') | min }}"
-- name: Get controller A port information list
- set_fact:
- controller_a: "{{ result | json_query(controller_a_query) }}"
- vars:
- controller_a_query: "json[?controllerId=='{{ controller_a_id }}']"
-
-# Using a nested loop of array information and expected information, verify that each channel has the appropriate max
-# frame payload size and is configured for dhcp
-- name: Verify expected controller A's port configuration
- assert:
- that: "{{ item[0].channel != item[1].channel or
- ( item[0].ipv4Data.ipv4AddressConfigMethod == 'configDhcp' and
- item[0].interfaceData.ethernetData.maximumFramePayloadSize == item[1].max_frame_size ) }}"
- msg: >
- Failed to configure controller channel {{ item[0].channel }} for dhcp
- and/or maximum frame size of {{ item[1].max_frame_size }}!
- loop: "{{ query('nested', lookup('list', controller_a), lookup('list', array.A)) }}"
-
-
-# *****************************************************
-# *** Configure all controller B's ports statically ***
-# *****************************************************
-- name: Configure controller B's ports to use a static configuration method
- netapp_e_iscsi_interface:
- <<: *creds
- controller: "B"
- channel: "{{ item.channel }}"
- state: enabled
- config_method: static
- address: "{{ array.gateway.split('.')[:3] | join('.') }}.{{ item.channel }}"
- subnet_mask: "{{ array.subnet }}"
- gateway: "{{ array.gateway }}"
- max_frame_size: "{{ item.max_frame_size }}"
- loop: "{{ lookup('list', array.B) }}"
-
-# Delay to give time for the asynchronous symbol call has complete
-- pause:
- seconds: 30
-
-# request a list of iscsi host interfaces
-- name: Collect array information
- uri:
- url: "{{ xpath_filter }}?query=controller/hostInterfaces//iscsi"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
- vars:
- xpath_filter: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/graph/xpath-filter"
-
-# Extract controller B's port information from the iscsi host interfaces list
-# Note: min filter is used because there are only two controller ids and the smaller corresponds with controller B
-- name: Get controller B's controllerId
- set_fact:
- controller_b_id: "{{ result | json_query('json[*].controllerId') | max }}"
-
-# Compile any iscsi port information associated with controller B
-- name: Get controller B's port information
- set_fact:
- controller_b: "{{ result | json_query(controller_b_query) }}"
- vars:
- controller_b_query: "json[?controllerId=='{{ controller_b_id }}']"
-
-# Confirm that controller B ports are statically defined with the expected MTU, gateway, subnet and ipv4 address
-- name: Verify expected controller B's port configuration
- assert:
- that: "{{ item[0].channel != item[1].channel or
- ( item[0].ipv4Data.ipv4AddressConfigMethod == 'configStatic' and
- item[0].interfaceData.ethernetData.maximumFramePayloadSize == item[1].max_frame_size and
- item[0].ipv4Data.ipv4AddressData.ipv4GatewayAddress == array.gateway and
- item[0].ipv4Data.ipv4AddressData.ipv4SubnetMask == array.subnet and
- item[0].ipv4Data.ipv4AddressData.ipv4Address == partial_address + item[1].channel | string ) }}"
- msg: "Failed to configure controller B, channel {{ item[0].channel }}"
- loop: "{{ query('nested', lookup('list', controller_b), lookup('list', array.B) ) }}"
- vars:
- partial_address: "{{ array.gateway.split('.')[:3] | join('.') + '.' }}"
-
-
-# **************************************
-# *** Disable all controller B ports ***
-# **************************************
-- name: Disable all controller B's ports
- netapp_e_iscsi_interface:
- <<: *creds
- controller: "B"
- channel: "{{ item.channel }}"
- state: disabled
- loop: "{{ lookup('list', array.B) }}"
-
-# Delay to give time for the asynchronous symbol call has complete
-- pause:
- seconds: 30
-
-# Request controller iscsi host interface information
-- name: Collect iscsi port information
- uri:
- url: "{{ xpath_filter_url }}?query=controller/hostInterfaces//iscsi"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: result
- vars:
- xpath_filter_url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/graph/xpath-filter"
-
-# Extract controller A's port information from the iscsi host interfaces list
-# Note: min filter is used because there are only two controller ids and the smaller corresponds with controller B
-- name: Get controller B's controllerId
- set_fact:
- controller_b_id: "{{ result | json_query('json[*].controllerId') | max }}"
-
-# Compile any iscsi port information associated with controller B
-- name: Get controller B's port information
- set_fact:
- controller_b: "{{ result | json_query(controller_b_query) }}"
- vars:
- controller_b_query: "json[?controllerId=='{{ controller_b_id }}']"
-
-# Confirm that all of controller B's ports are disabled
-- name: Verify all controller B ports are disabled
- assert:
- that: "{{ item.ipv4Enabled == false }}"
- msg: "Controller B, channel {{ item.channel }} is not disabled"
- loop: "{{ controller_b }}"
diff --git a/test/integration/targets/netapp_e_iscsi_target/aliases b/test/integration/targets/netapp_e_iscsi_target/aliases
deleted file mode 100644
index d314d14a74..0000000000
--- a/test/integration/targets/netapp_e_iscsi_target/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 10.113.1.111:8443
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_iscsi_target/tasks/main.yml b/test/integration/targets/netapp_e_iscsi_target/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_iscsi_target/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_iscsi_target/tasks/run.yml b/test/integration/targets/netapp_e_iscsi_target/tasks/run.yml
deleted file mode 100644
index 97111f3399..0000000000
--- a/test/integration/targets/netapp_e_iscsi_target/tasks/run.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Test code for the netapp_e_iscsi_interface module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: NetApp Test iSCSI Target module
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined
- or netapp_e_api_host is undefined or netapp_e_ssid is undefined
- vars: &vars
- credentials: &creds
- api_url: "https://{{ netapp_e_api_host }}/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: no
- secrets: &secrets
- # 12 characters
- - 012345678912
- # 16 characters
- - 0123456789123456
-
-- name: set credentials
- set_fact:
- credentials: *creds
-
-- name: Show some debug information
- debug:
- msg: "Using user={{ credentials.api_username }} on server={{ credentials.api_url }}."
-
-- name: Ensure we can set the chap secret
- netapp_e_iscsi_target:
- <<: *creds
- name: myTarget
- chap_secret: "{{ item }}"
- loop: *secrets
-
-- name: Turn off all of the options
- netapp_e_iscsi_target:
- <<: *creds
- name: abc
- ping: no
- unnamed_discovery: no
-
-- name: Ensure we can set the ping option
- netapp_e_iscsi_target:
- <<: *creds
- name: myTarget
- ping: yes
- unnamed_discovery: yes
- register: result
-
-- name: Ensure we received a change
- assert:
- that: result.changed
-
-- name: Run the ping change in check-mode
- netapp_e_iscsi_target:
- <<: *creds
- name: myTarget
- ping: yes
- unnamed_discovery: yes
- check_mode: yes
- register: result
-
-- name: Ensure no change resulted
- assert:
- that: not result.changed
diff --git a/test/integration/targets/netapp_e_lun_mapping/aliases b/test/integration/targets/netapp_e_lun_mapping/aliases
deleted file mode 100644
index ef22d27e9c..0000000000
--- a/test/integration/targets/netapp_e_lun_mapping/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 192.168.1.100
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_lun_mapping/tasks/main.yml b/test/integration/targets/netapp_e_lun_mapping/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_lun_mapping/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_lun_mapping/tasks/run.yml b/test/integration/targets/netapp_e_lun_mapping/tasks/run.yml
deleted file mode 100644
index a702e3caa0..0000000000
--- a/test/integration/targets/netapp_e_lun_mapping/tasks/run.yml
+++ /dev/null
@@ -1,326 +0,0 @@
-# Test code for the netapp_e_iscsi_interface module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: NetApp Test ASUP module
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined
- or netapp_e_api_host is undefined or netapp_e_ssid is undefined
- vars:
- credentials: &creds
- api_url: "https://{{ netapp_e_api_host }}/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: no
-
-- name: set credentials
- set_fact:
- credentials: *creds
-# ****************************************************
-# *** Setup test hosts, storage pools, and volumes ***
-# ****************************************************
-- name: Create host for host mapping
- netapp_e_host:
- <<: *creds
- state: present
- name: test_host_mapping_host
- host_type: 27
-- netapp_e_host:
- <<: *creds
- state: present
- name: test_host1
- host_type: 27
-- netapp_e_host:
- <<: *creds
- state: present
- name: test_host2
- host_type: 27
-- name: Create storage pool for host mapping
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: test_host_mapping_storage_pool
- raid_level: raid0
- criteria_min_usable_capacity: 1
-- name: Create volume for host mapping
- netapp_e_volume:
- <<: *creds
- state: present
- name: test_host_mapping_volume
- storage_pool_name: test_host_mapping_storage_pool
- size: 1
-- name: Create volume for host mapping
- netapp_e_volume:
- <<: *creds
- state: present
- name: test_host_mapping_volume2
- storage_pool_name: test_host_mapping_storage_pool
- size: 1
-
-# **********************************************
-# *** Create new lun between host and volume ***
-# **********************************************
-- name: Create netapp_e_lun_mapping
- netapp_e_lun_mapping:
- <<: *creds
- state: present
- target: test_host_mapping_host
- volume: test_host_mapping_volume
- register: result
-
-- name: Verify lun mapping
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ netapp_e_ssid }}/graph/xpath-filter?query=//volume[name='test_host_mapping_volume']"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- assert:
- that: "{{ item['mapped'] }}"
- msg: "Lun failed to be created."
- loop: "{{ lookup('list', current.json)}}"
-
-# QUICK VERIFICATION OF MISMATCHING TARGET/TARGET_TYPE - GOOD
-#- name: Create netapp_e_lun_mapping
-# netapp_e_lun_mapping:
-# <<: *creds
-# state: present
-# target: test_host_mapping_host
-# volume: test_host_mapping_volume
-# lun: 100
-# target_type: group
-# register: result
-#
-#- pause: seconds=30
-# **************************************************************
-# *** Repeat previous lun creation play and verify unchanged ***
-# **************************************************************
-- name: Repeat lun creation
- netapp_e_lun_mapping:
- <<: *creds
- state: present
- target: test_host_mapping_host
- volume: test_host_mapping_volume
- register: result
-
-- name: Verify lun mapping
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ netapp_e_ssid }}/graph/xpath-filter?query=//volume[name='test_host_mapping_volume']"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- assert:
- that: "{{ item['mapped'] and result.changed==False }}"
- msg: "Lun failed to be unchanged."
- loop: "{{ lookup('list', current.json)}}"
-
-# ****************************************************************
-# *** Move existing lun to default target and verify unchanged ***
-# ****************************************************************
-- name: Move lun to default target
- netapp_e_lun_mapping:
- <<: *creds
- state: present
- volume: test_host_mapping_volume
- register: result
-
-- name: Verify lun mapping
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ netapp_e_ssid }}/graph/xpath-filter?query=//volume[name='test_host_mapping_volume']"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- assert:
- that: "{{ item['mapped'] }}"
- msg: "Lun failed to be created."
- loop: "{{ lookup('list', current.json)}}"
-
-# *****************************************************************
-# *** Move existing lun to specific target and verify unchanged ***
-# *****************************************************************
-- name: Move lun to default target
- netapp_e_lun_mapping:
- <<: *creds
- state: present
- target: test_host_mapping_host
- volume: test_host_mapping_volume
- register: result
-
-- name: Verify lun mapping
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ netapp_e_ssid }}/graph/xpath-filter?query=//volume[name='test_host_mapping_volume']"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- assert:
- that: "{{ item['mapped'] }}"
- msg: "Lun failed to be created."
- loop: "{{ lookup('list', current.json)}}"
-
-# *******************************************
-# *** Modify a volume mapping's lun value ***
-# *******************************************
-- name: Change volume mapping's lun value
- netapp_e_lun_mapping:
- <<: *creds
- state: present
- target: test_host_mapping_host
- volume: test_host_mapping_volume
- lun: 100
- register: result
-
-- pause: seconds=15
-
-- name: Verify lun mapping
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ netapp_e_ssid }}/graph/xpath-filter?query=//volume[name='test_host_mapping_volume']"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- assert:
- that: "{{ result.changed }}"
- msg: "Lun failed to be unchanged."
- loop: "{{ lookup('list', current.json)}}"
-
-- name: Verify mapping fails when lun already in use on existing host object
- netapp_e_lun_mapping:
- <<: *creds
- state: present
- target: test_host_mapping_host
- volume: test_host_mapping_volume2
- lun: 100
- register: result
- ignore_errors: True
-
-- pause: seconds=15
-
-- assert:
- that: "{{ not result.changed }}"
- msg: "Lun succeeded when it should have failed."
- loop: "{{ lookup('list', current.json)}}"
-
-- name: Verify mapping succeeds when the same lun is used on multiple host objects.
- netapp_e_lun_mapping:
- <<: *creds
- state: present
- target: test_host1
- volume: test_host_mapping_volume2
- lun: 100
- register: result
-
-- pause: seconds=15
-
-- assert:
- that: "{{ result.changed }}"
- msg: "Lun failed to be unchanged."
- loop: "{{ lookup('list', current.json)}}"
-
-# *************************************************************************************************
-# *** Verify that exact mapping details but different lun results in an unchanged configuration ***
-# *************************************************************************************************
-- name: Verify that exact mapping details but different lun results in an unchanged configuration
- netapp_e_lun_mapping:
- <<: *creds
- state: absent
- target: test_host_mapping_host
- volume: test_host_mapping_volume
- lun: 99
- register: result
-
-- name: Verify lun mapping
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ netapp_e_ssid }}/graph/xpath-filter?query=//volume[name='test_host_mapping_volume']"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- assert:
- that: "{{ item['mapped'] and not result.changed }}"
- msg: "Lun failed to be unchanged."
- loop: "{{ lookup('list', current.json)}}"
-
-# ********************************
-# *** Delete newly created lun ***
-# ********************************
-- name: Delete lun creation
- netapp_e_lun_mapping:
- <<: *creds
- state: absent
- target: test_host_mapping_host
- volume: test_host_mapping_volume
- register: result
-
-- name: Verify lun mapping
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ netapp_e_ssid }}/graph/xpath-filter?query=//volume[name='test_host_mapping_volume']"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current
-
-- assert:
- that: "{{ not item['mapped'] }}"
- msg: "Lun failed to be created."
- loop: "{{ lookup('list', current.json)}}"
-
-# ********************************************************
-# *** Tear down test hosts, storage pools, and volumes ***
-# ********************************************************
-- name: Delete volume for host mapping
- netapp_e_volume:
- <<: *creds
- state: absent
- name: test_host_mapping_volume
- storage_pool_name: test_host_mapping_storage_pool
- size: 1
-- name: Delete volume for host mapping
- netapp_e_volume:
- <<: *creds
- state: absent
- name: test_host_mapping_volume2
- storage_pool_name: test_host_mapping_storage_pool
- size: 1
-- name: Delete storage pool for host mapping
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: test_host_mapping_storage_pool
- raid_level: raid0
- criteria_min_usable_capacity: 1
-- name: Delete host for host mapping
- netapp_e_host:
- <<: *creds
- state: absent
- name: test_host_mapping_host
- host_type_index: 27
-- name: Delete host for host mapping
- netapp_e_host:
- <<: *creds
- state: absent
- name: test_host2
- host_type_index: 27
-- name: Delete host for host mapping
- netapp_e_host:
- <<: *creds
- state: absent
- name: test_host1
- host_type_index: 27 \ No newline at end of file
diff --git a/test/integration/targets/netapp_e_storagepool/aliases b/test/integration/targets/netapp_e_storagepool/aliases
deleted file mode 100644
index d314d14a74..0000000000
--- a/test/integration/targets/netapp_e_storagepool/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 10.113.1.111:8443
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_storagepool/tasks/main.yml b/test/integration/targets/netapp_e_storagepool/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_storagepool/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_storagepool/tasks/run.yml b/test/integration/targets/netapp_e_storagepool/tasks/run.yml
deleted file mode 100644
index f78c5ed341..0000000000
--- a/test/integration/targets/netapp_e_storagepool/tasks/run.yml
+++ /dev/null
@@ -1,1046 +0,0 @@
----
-# Test code for the netapp_e_storagepool module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-#
-# Raid levels tested: raid0, raid1, raid5, raid6, disk pool
-# Actions covered: create w/capacity, create w/drive count, repeat create (no changes), extend w/capacity,
-# extend w/drive count, delete, migrate raid levels (raid0->raid6, 1->5, 5->1, 6->0),
-# secure pool for raid0, erasing drives on creation, erasing drives on deletion,
-# setting reserve drive count for ddp,
-
-- name: Test data for the NetApp E-Series storage pool module.
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined or
- netapp_e_api_host is undefined or netapp_e_ssid is undefined
- vars:
- credentials: &creds
- api_url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: no
-
-- set_fact:
- credentials: *creds
-
-# Ensure that test starts without storage pools
-- name: Remove simple storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- erase_secured_drives: yes
- name: "{{ item }}"
- loop:
- - raid0_storage
- - raid1_storage
- - raid5_storage
- - raid6_storage
- - raidDiskPool_storage
-
-# Raid0
-# Create, rerun, extend, and modify raid level.
-- name: Create simple storage pool using raid0.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_min_usable_capacity: 1400
- raid_level: raid0
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raid0' and (item.totalRaidedSpace | int) >= 1503238553600 }}"
- msg: "raid0 storage pool failed to be created."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid0_storage`]') }}"
-
-- name: (Repeat) Create simple storage pool using raid0.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_min_usable_capacity: 1400
- criteria_size_unit: gb
- raid_level: raid0
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ not results.changed and item.raidLevel == 'raid0' and (item.totalRaidedSpace | int) >= 1503238553600 }}"
- msg: "raid0 storage pool failed not to be modified."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid0_storage`]') }}"
-
-- name: Extend storage pool to 2400gb minimum usable capacity.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_min_usable_capacity: 2400
- criteria_size_unit: gb
- raid_level: raid0
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raid0' and (item.totalRaidedSpace | int) >= 2576980377600 }}"
- msg: "raid0 storage pool using raid0 failed to be extended to a minimum of 2400gb."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid0_storage`]') }}"
-
-- name: Expand simple storage pool using raid0.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_drive_count: 6
- raid_level: raid0
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid0' and
- (current_drives.json | json_query(count_query) | length) == 6 }}"
- msg: "raid0 storage pool failed to be extended to 6 drives."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Migrate raid0 storage pool to raid6.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_drive_count: 6
- raid_level: raid6
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid6' and
- (current_drives.json | json_query(count_query) | length) == 6 }}"
- msg: "raid0 storage pool failed to migrate to raid6"
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Remove simple storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: "{{ item }}"
- loop:
- - raid0_storage
-
-
-# Raid1
-# Create, rerun, extend, and modify raid level.
-- name: Create simple storage pool using raid1.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid1_storage
- criteria_min_usable_capacity: 1400
- criteria_size_unit: gb
- raid_level: raid1
- register: results
-- pause: seconds=5
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raid1' and (item.totalRaidedSpace | int) >= 1503238553600 }}"
- msg: "raid1 storage pool failed to be created."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid1_storage`]') }}"
-
-- name: (Repeat) Create simple storage pool using raid1.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid1_storage
- criteria_min_usable_capacity: 1400
- criteria_size_unit: gb
- raid_level: raid1
- register: results
-- pause: seconds=5
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ not results.changed and item.raidLevel == 'raid1' and (item.totalRaidedSpace | int) >= 1503238553600 }}"
- msg: "raid1 storage pool failed not to be modified."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid1_storage`]') }}"
-
-- name: Expand simple storage pool using raid1.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid1_storage
- criteria_drive_count: 6
- raid_level: raid1
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid1' and
- (current_drives.json | json_query(count_query) | length) == 6 }}"
- msg: "raid1 storage pool failed to be extended."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Migrate raid1 storage pool to raid5
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid1_storage
- criteria_drive_count: 6
- raid_level: raid5
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid5' and
- (current_drives.json | json_query(count_query) | length) == 6 }}"
- msg: "raid1 storage pool failed to migrate to raid5."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Remove simple storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: "{{ item }}"
- loop:
- - raid1_storage
-
-
-# Raid5
-# Create, rerun, extend, and modify raid level.
-- name: Create simple storage pool using raid5.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid5_storage
- criteria_drive_count: 6
- raid_level: raid5
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid5' and
- (current_drives.json | json_query(count_query) | length) == 6 }}"
- msg: "raid5 storage pool failed to be created."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: (Rerun) Create simple storage pool using raid5.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid5_storage
- criteria_drive_count: 6
- raid_level: raid5
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ not results.changed and results.raidLevel == 'raid5' and
- (current_drives.json | json_query(count_query) | length) == 6 }}"
- msg: "raid5 storage pool failed not to be modified."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Expand simple storage pool using raid5.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid5_storage
- criteria_drive_count: 8
- raid_level: raid5
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid5' and
- (current_drives.json | json_query(count_query) | length) == 8}}"
- msg: "raid5 storage pool failed to be modified to 8 drives."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Migrate raid5 storage pool to raid1
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid5_storage
- criteria_drive_count: 8
- raid_level: raid1
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid1' and
- (current_drives.json | json_query(count_query) | length) == 8}}"
- msg: "raid5 storage pool failed to migrate to raid1."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Remove simple storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: "{{ item }}"
- loop:
- - raid5_storage
-
-
-# raid6
-# Create, rerun, extend, and modify raid level.
-- name: Create simple storage pool using raid6.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid6_storage
- criteria_drive_count: 5
- raid_level: raid6
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid6' and
- (current_drives.json | json_query(count_query) | length) == 5}}"
- msg: "raid6 storage pool failed to be created with 5 drives."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Extend simple storage pool using raid6.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid6_storage
- criteria_min_usable_capacity: 3.4
- criteria_size_unit: tb
- raid_level: raid6
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raid6' and (item.totalRaidedSpace | int) >= 3738339534438 }}"
- msg: "raid6 storage pool failed to be extended to a minimum of 3.4tb."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid6_storage`]') }}"
-
-- name: Migrate rai6 storage pool to raid0
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid6_storage
- criteria_min_usable_capacity: 3.4
- criteria_size_unit: tb
- raid_level: raid0
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raid0' and (item.totalRaidedSpace | int) >= 3738339534438 }}"
- msg: "raid6 storage pool failed to migrate to raid0."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid6_storage`]') }}"
-
-- name: Remove simple storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: "{{ item }}"
- loop:
- - raid6_storage
-
-# raidDiskPool
-# Create, rerun, extend, and modify raid level.
-- name: Create simple storage pool using raidDiskPool.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_min_usable_capacity: 2300
- criteria_size_unit: gb
- raid_level: raidDiskPool
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raidDiskPool' and (item.totalRaidedSpace | int) >= 2469606195200 }}"
- msg: "Simple storage pool failed to be created."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raidDiskPool_storage`]') }}"
-
-- name: Rerun simple storage pool creation.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_min_usable_capacity: 2300
- criteria_size_unit: gb
- raid_level: raidDiskPool
- register: results
-- pause: seconds=5
-- name: Verify storage pool was not modified
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ not results.changed and item.raidLevel == 'raidDiskPool' and (item.totalRaidedSpace | int) >= 2469606195200 }}"
- msg: "Simple storage pool failed not to be modified."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raidDiskPool_storage`]') }}"
-
-- name: Extend simple storage pool to a minimum usable capacity of 3000gb
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_min_usable_capacity: 3000
- criteria_size_unit: gb
- raid_level: raidDiskPool
- register: results
-- name: Verify storage pool was extended
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raidDiskPool' and (item.totalRaidedSpace | int) >= 3221225472000 }}"
- msg: "Simple storage pool failed to be extended."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raidDiskPool_storage`]') }}"
-
-- name: Extend simple storage pool.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_drive_count: 12
- raid_level: raidDiskPool
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raidDiskPool' and
- (current_drives.json | json_query(count_query) | length) == 12}}"
- msg: "raidDiskPool storage pool failed to be extended with 12 drives."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Remove simple storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: raidDiskPool_storage
- register: results
-
-
-# raid0 secured
-- name: Create simple storage pool using raid0.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_min_usable_capacity: 1400
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raid0
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raid0' and (item.totalRaidedSpace | int) >= 1503238553600 and
- item.securityType == 'enabled' }}"
- msg: "raid0 storage pool failed to be created."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid0_storage`]') }}"
-
-- name: (Repeat) Create simple storage pool using raid0.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_min_usable_capacity: 1400
- criteria_size_unit: gb
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raid0
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ not results.changed and item.raidLevel == 'raid0' and (item.totalRaidedSpace | int) >= 1503238553600 and
- item.securityType == 'enabled' }}"
- msg: "raid0 storage pool failed not to be modified."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid0_storage`]') }}"
-
-- name: Extend storage pool to 2400gb minimum usable capacity.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_min_usable_capacity: 2400
- criteria_size_unit: gb
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raid0
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raid0' and (item.totalRaidedSpace | int) >= 2576980377600 and
- item.securityType == 'enabled' }}"
- msg: "raid0 storage pool using raid0 failed to be extended to a minimum of 2400gb."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raid0_storage`]') }}"
-
-- name: Expand simple storage pool using raid0.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_drive_count: 6
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raid0
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid0' and results.securityType == 'enabled' and
- (current_drives.json | json_query(count_query) | length) == 6 }}"
- msg: "raid0 storage pool failed to be extended to 6 drives."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Migrate raid0 storage pool to raid6.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raid0_storage
- criteria_drive_count: 6
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raid6
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raid6' and results.securityType == 'enabled' and
- (current_drives.json | json_query(count_query) | length) == 6 }}"
- msg: "raid0 storage pool failed to migrate to raid6"
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Remove simple storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: "{{ item }}"
- erase_secured_drives: yes
- loop:
- - raid0_storage
-
-
-# raidDiskPool secured
-- name: Create simple storage pool using raidDiskPool.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_min_usable_capacity: 2300
- criteria_size_unit: gb
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raidDiskPool
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raidDiskPool' and (item.totalRaidedSpace | int) >= 2469606195200 and
- item.securityType == 'enabled' }}"
- msg: "Simple storage pool failed to be created."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raidDiskPool_storage`]') }}"
-
-- name: Rerun simple storage pool creation.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_min_usable_capacity: 2300
- criteria_size_unit: gb
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raidDiskPool
- register: results
-- pause: seconds=5
-- name: Verify storage pool was not modified
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ not results.changed and item.raidLevel == 'raidDiskPool' and (item.totalRaidedSpace | int) >= 2469606195200 and
- item.securityType == 'enabled' }}"
- msg: "Simple storage pool failed not to be modified."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raidDiskPool_storage`]') }}"
-
-- name: Extend simple storage pool to a minimum usable capacity of 3000gb
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_min_usable_capacity: 3000
- criteria_size_unit: gb
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raidDiskPool
- register: results
-- name: Verify storage pool was extended
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raidDiskPool' and (item.totalRaidedSpace | int) >= 3221225472000 and
- item.securityType == 'enabled' }}"
- msg: "Simple storage pool failed to be extended."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raidDiskPool_storage`]') }}"
-
-- name: Extend simple storage pool.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_drive_count: 12
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raidDiskPool
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/drives"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_drives
-- assert:
- that: "{{ results.raidLevel == 'raidDiskPool' and results.securityType == 'enabled' and
- (current_drives.json | json_query(count_query) | length) == 12 }}"
- msg: "raidDiskPool storage pool failed to be extended with 12 drives."
- vars:
- count_query: "[?currentVolumeGroupRef=='{{ results.volumeGroupRef }}'].currentVolumeGroupRef"
-
-- name: Remove simple storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: raidDiskPool_storage
- register: results
-
-
-# raidDiskPool set reserve drive count
-- name: Create simple storage pool using raidDiskPool.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_drive_count: 11
- reserve_drive_count: 1
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raidDiskPool
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raidDiskPool' and
- item.volumeGroupData.diskPoolData.reconstructionReservedDriveCount == 1 and
- item.securityType == 'enabled' }}"
- msg: "Simple storage pool failed to be created."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raidDiskPool_storage`]') }}"
-
-- name: Change disk pool reserve drive count.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_drive_count: 12
- reserve_drive_count: 2
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raidDiskPool
- register: results
-- pause: seconds=30
-- name: Verify storage pool was not modified
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raidDiskPool' and
- item.volumeGroupData.diskPoolData.reconstructionReservedDriveCount == 2 and
- item.securityType == 'enabled' }}"
- msg: "Simple storage pool failed not to be modified."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raidDiskPool_storage`]') }}"
-
-# erase drives on storage pool deletion
-- name: Remove simple storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: raidDiskPool_storage
- erase_secured_drives: yes
- register: results
-
-- name: Create simple storage pool using raidDiskPool with capacity and reserve count specified.
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: raidDiskPool_storage
- criteria_min_usable_capacity: 8000
- criteria_size_unit: gb
- reserve_drive_count: 2
- secure_pool: yes
- erase_secured_drives: yes
- raid_level: raidDiskPool
- register: results
-- pause: seconds=5
-- name: Verify storage pool was created
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/storage-pools"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- body_format: json
- validate_certs: no
- register: current_storage_pools
-- assert:
- that: "{{ item.raidLevel == 'raidDiskPool' and
- (item.totalRaidedSpace | int) >= 3221225472000 and
- item.volumeGroupData.diskPoolData.reconstructionReservedDriveCount == 2 and
- item.securityType == 'enabled' }}"
- msg: "Simple storage pool failed to be created."
- loop: "{{ lookup('list', storage_pools, wantList=True) }}"
- vars:
- storage_pools: "{{ current_storage_pools | json_query('json[?name==`raidDiskPool_storage`]') }}"
-
-- name: Integration cleanup
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: raidDiskPool_storage
- erase_secured_drives: yes
- register: results
-- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: raidDiskPool_storage
- register: results
diff --git a/test/integration/targets/netapp_e_volume/aliases b/test/integration/targets/netapp_e_volume/aliases
deleted file mode 100644
index 28cd22b2e7..0000000000
--- a/test/integration/targets/netapp_e_volume/aliases
+++ /dev/null
@@ -1,10 +0,0 @@
-# This test is not enabled by default, but can be utilized by defining required variables in integration_config.yml
-# Example integration_config.yml:
-# ---
-#netapp_e_api_host: 192.168.1.1
-#netapp_e_api_username: admin
-#netapp_e_api_password: myPass
-#netapp_e_ssid: 1
-
-unsupported
-netapp/eseries
diff --git a/test/integration/targets/netapp_e_volume/tasks/main.yml b/test/integration/targets/netapp_e_volume/tasks/main.yml
deleted file mode 100644
index 996354c886..0000000000
--- a/test/integration/targets/netapp_e_volume/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include_tasks: run.yml
diff --git a/test/integration/targets/netapp_e_volume/tasks/run.yml b/test/integration/targets/netapp_e_volume/tasks/run.yml
deleted file mode 100644
index e14fa13c3f..0000000000
--- a/test/integration/targets/netapp_e_volume/tasks/run.yml
+++ /dev/null
@@ -1,776 +0,0 @@
-# Test code for the netapp_e_iscsi_interface module
-# (c) 2018, NetApp, Inc
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: NetApp Test ASUP module
- fail:
- msg: 'Please define netapp_e_api_username, netapp_e_api_password, netapp_e_api_host, and netapp_e_ssid.'
- when: netapp_e_api_username is undefined or netapp_e_api_password is undefined
- or netapp_e_api_host is undefined or netapp_e_ssid is undefined
- vars:
- credentials: &creds
- api_url: "https://{{ netapp_e_api_host }}:8443/devmgr/v2"
- api_username: "{{ netapp_e_api_username }}"
- api_password: "{{ netapp_e_api_password }}"
- ssid: "{{ netapp_e_ssid }}"
- validate_certs: no
-
-- set_fact:
- credentials: *creds
-
-# test setup
-- name: Delete raid 0 storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: "{{ item }}"
- loop:
- - storage_pool
- - storage_pool2
- - storage_pool3
-
-# Thick volume testing: create, delete, expand, change properties (read/write cache), expand and change properties,
-- name: Create raid 0 storage pool
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: storage_pool
- criteria_min_usable_capacity: 5
- criteria_size_unit: tb
- erase_secured_drives: yes
- raid_level: raid0
-
-- name: Delete volume in raid 0 storage pool
- netapp_e_volume:
- <<: *creds
- state: absent
- name: volume
-
-- name: Create volume in raid 0 storage pool
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 100
- size_unit: gb
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '107374182400' and item.segmentSize == 131072}}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-
-- name: Re-execute volume creation in raid 0 storage pool
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 100
- size_unit: gb
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ not results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '107374182400' and item.segmentSize == 131072}}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-
-- name: Update volume size
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 200
- size_unit: gb
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '214748364800' and item.segmentSize == 131072}}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-
-- pause: seconds=15
-
-- name: Update volume properties
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 200
- size_unit: gb
- write_cache_enable: true
- read_cache_enable: false
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '214748364800' and item.segmentSize == 131072 and
- not item.cacheSettings.readCacheEnable and item.cacheSettings.writeCacheEnable}}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-
-- name: Update volume properties and expand storage capabilities
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 300
- size_unit: gb
- write_cache_enable: false
- read_cache_enable: true
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '322122547200' and item.segmentSize == 131072 and
- item.cacheSettings.readCacheEnable and not item.cacheSettings.writeCacheEnable}}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-
-# Workload tagging testing: create, utilize existing (name only, name with same attributes), modify attributes
-- name: Add workload tag (change, new workload tag)
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 300
- size_unit: gb
- write_cache_enable: false
- read_cache_enable: true
- workload_name: volume_tag
- metadata:
- volume_tag_key: volume_tag_value
- register: results
-- pause: seconds=15
-- name: Validate volume workload changes
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '322122547200' and item.segmentSize == 131072 and
- item.cacheSettings.readCacheEnable and not item.cacheSettings.writeCacheEnable and
- {'key': 'volumeTypeId', 'value': 'volume'} in item.metadata }}"
- msg: "Failed to modify volume metadata!"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/workloads"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: workload_tags
-- assert:
- that: "{{ item.name == 'volume_tag' and
- {'key': 'volume_tag_key', 'value': 'volume_tag_value'} in item.workloadAttributes }}"
- msg: "Workload tag failed to be created!"
- loop: "{{ lookup('list', volume_tag_id, wantList=True) }}"
- vars:
- volume_tag_id: "{{ workload_tags | json_query('json[?name==`volume_tag`]') }}"
-
-- name: Repeat add workload tag (no change)
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 300
- size_unit: gb
- write_cache_enable: false
- read_cache_enable: true
- workload_name: volume_tag
- metadata:
- volume_tag_key: volume_tag_value
- register: results
-- pause: seconds=15
-- name: Validate volume workload changes
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ not results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '322122547200' and item.segmentSize == 131072 and
- item.cacheSettings.readCacheEnable and not item.cacheSettings.writeCacheEnable and
- {'key': 'volumeTypeId', 'value': 'volume'} in item.metadata }}"
- msg: "Failed to not modify volume metadata!"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/workloads"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: workload_tags
-- assert:
- that: "{{ item.name == 'volume_tag' and
- {'key': 'volume_tag_key', 'value': 'volume_tag_value'} in item.workloadAttributes }}"
- msg: "Workload tag failed not to be changed"
- loop: "{{ lookup('list', volume_tag_id, wantList=True) }}"
- vars:
- volume_tag_id: "{{ workload_tags | json_query('json[?name==`volume_tag`]') }}"
-
-- name: Workload tag (no change, just using workload_name)
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 300
- size_unit: gb
- write_cache_enable: false
- read_cache_enable: true
- workload_name: volume_tag
- register: results
-- pause: seconds=15
-- name: Validate volume workload changes
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ not results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '322122547200' and item.segmentSize == 131072 and
- item.cacheSettings.readCacheEnable and not item.cacheSettings.writeCacheEnable and
- {'key': 'volumeTypeId', 'value': 'volume'} in item.metadata }}"
- msg: "Failed to not modify volume metadata!"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/workloads"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: workload_tags
-- assert:
- that: "{{ item.name == 'volume_tag' and
- {'key': 'volume_tag_key', 'value': 'volume_tag_value'} in item.workloadAttributes }}"
- msg: "Workload tag failed to not be modified!"
- loop: "{{ lookup('list', volume_tag_id, wantList=True) }}"
- vars:
- volume_tag_id: "{{ workload_tags | json_query('json[?name==`volume_tag`]') }}"
-
-- name: Add workload tag (change, new attributes)
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 300
- size_unit: gb
- write_cache_enable: false
- read_cache_enable: true
- workload_name: volume_tag
- metadata:
- volume_tag_key2: volume_tag_value2
- register: results
-- pause: seconds=15
-- name: Validate volume workload changes
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '322122547200' and item.segmentSize == 131072 and
- item.cacheSettings.readCacheEnable and not item.cacheSettings.writeCacheEnable and
- {'key': 'volumeTypeId', 'value': 'volume'} in item.metadata }}"
- msg: "Failed to not modify volume metadata!"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/workloads"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: workload_tags
-- assert:
- that: "{{ item.name == 'volume_tag' and
- {'key': 'volume_tag_key2', 'value': 'volume_tag_value2'} in item.workloadAttributes }}"
- msg: "Workload tag failed to be updated!"
- loop: "{{ lookup('list', volume_tag_id, wantList=True) }}"
- vars:
- volume_tag_id: "{{ workload_tags | json_query('json[?name==`volume_tag`]') }}"
-
-- name: Remove workload tag from volume (change)
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool
- size: 300
- size_unit: gb
- write_cache_enable: false
- read_cache_enable: true
- register: results
-- pause: seconds=15
-- name: Validate volume workload changes
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '322122547200' and item.segmentSize == 131072 and
- item.cacheSettings.readCacheEnable and not item.cacheSettings.writeCacheEnable and
- item.metadata == []}}"
- msg: "Failed to not modify volume metadata!"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/workloads"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: workload_tags
-- assert:
- that: "{{ item.name == 'volume_tag' and
- {'key': 'volume_tag_key2', 'value': 'volume_tag_value2'} in item.workloadAttributes }}"
- msg: "Workload tag failed to be updated!"
- loop: "{{ lookup('list', volume_tag_id, wantList=True) }}"
- vars:
- volume_tag_id: "{{ workload_tags | json_query('json[?name==`volume_tag`]') }}"
-
-- name: Delete workload tag
- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/workloads"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: workload_tags
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/workloads/{{ item }}"
- method: DELETE
- status_code: 204
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- loop: "{{ lookup('list', volume_tag_id, wantList=True) }}"
- vars:
- volume_tag_id: "{{ workload_tags | json_query('json[?name==`volume_tag`].id') }}"
-
-- name: Delete raid 0 storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: storage_pool
-
-
-# *** Thin volume testing (May not work with simulator) ***
-- name: Create dynamic disk pool
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: storage_pool
- criteria_min_usable_capacity: 2
- criteria_size_unit: tb
-
-- name: Create thin volume
- netapp_e_volume:
- <<: *creds
- state: present
- name: thin_volume
- storage_pool_name: storage_pool
- size: 131072
- size_unit: gb
- thin_provision: true
- thin_volume_repo_size: 32
- thin_volume_max_repo_size: 1024
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/thin-volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'thin_volume' and item.thinProvisioned and
- item.capacity == '140737488355328' and item.initialProvisionedCapacity == '34359738368' and
- item.provisionedCapacityQuota == '1099511627776' and item.expansionPolicy == 'automatic' }}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`thin_volume`]') }}"
-
-- name: (Rerun) Create thin volume
- netapp_e_volume:
- <<: *creds
- state: present
- name: thin_volume
- storage_pool_name: storage_pool
- size: 131072
- size_unit: gb
- thin_provision: true
- thin_volume_repo_size: 32
- thin_volume_max_repo_size: 1024
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/thin-volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ not results.changed and item.name == 'thin_volume' and item.thinProvisioned and
- item.capacity == '140737488355328' and item.initialProvisionedCapacity == '34359738368' and
- item.provisionedCapacityQuota == '1099511627776' and item.expansionPolicy == 'automatic' }}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`thin_volume`]') }}"
-
-
-- name: Expand thin volume's virtual size
- netapp_e_volume:
- <<: *creds
- state: present
- name: thin_volume
- storage_pool_name: storage_pool
- size: 262144
- size_unit: gb
- thin_provision: true
- thin_volume_repo_size: 32
- thin_volume_max_repo_size: 1024
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/thin-volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'thin_volume' and item.thinProvisioned and
- item.capacity == '281474976710656' and item.initialProvisionedCapacity == '34359738368' and
- item.provisionedCapacityQuota == '1099511627776' and item.expansionPolicy == 'automatic' }}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`thin_volume`]') }}"
-
-
-- name: Expand thin volume's maximum repository size
- netapp_e_volume:
- <<: *creds
- state: present
- name: thin_volume
- storage_pool_name: storage_pool
- size: 262144
- size_unit: gb
- thin_provision: true
- thin_volume_repo_size: 32
- thin_volume_max_repo_size: 2048
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/thin-volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'thin_volume' and item.thinProvisioned and
- item.capacity == '281474976710656' and item.initialProvisionedCapacity == '34359738368' and
- item.provisionedCapacityQuota == '2199023255552' and item.expansionPolicy == 'automatic' }}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`thin_volume`]') }}"
-
-- name: Create dynamic disk pool
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: storage_pool2
- criteria_min_usable_capacity: 2
- criteria_size_unit: tb
-- pause: seconds=15
-
-- name: Create second thin volume with manual expansion policy
- netapp_e_volume:
- <<: *creds
- state: present
- name: thin_volume2
- storage_pool_name: storage_pool2
- size_unit: gb
- size: 131072
- thin_provision: true
- thin_volume_repo_size: 32
- thin_volume_max_repo_size: 32
- thin_volume_expansion_policy: manual
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/thin-volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'thin_volume2' and item.thinProvisioned and
- item.capacity == '140737488355328' and item.initialProvisionedCapacity == '34359738368' and
- item.currentProvisionedCapacity == '34359738368' and item.expansionPolicy == 'manual' }}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`thin_volume2`]') }}"
-
-
-- name: Create second thin volume with manual expansion policy
- netapp_e_volume:
- <<: *creds
- state: present
- name: thin_volume2
- storage_pool_name: storage_pool2
- size_unit: gb
- size: 131072
- thin_provision: true
- thin_volume_repo_size: 288
- thin_volume_max_repo_size: 288
- thin_volume_expansion_policy: manual
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/thin-volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'thin_volume2' and item.thinProvisioned and
- item.capacity == '140737488355328' and item.initialProvisionedCapacity == '34359738368' and
- item.currentProvisionedCapacity == '309237645312' and item.expansionPolicy == 'manual' }}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`thin_volume2`]') }}"
-
-- name: Modify second thin volume to use automatic expansion policy
- netapp_e_volume:
- <<: *creds
- state: present
- name: thin_volume2
- storage_pool_name: storage_pool2
- size_unit: gb
- size: 131072
- thin_provision: true
- thin_volume_repo_size: 288
- thin_volume_max_repo_size: 288
- thin_volume_expansion_policy: automatic
- register: results
-- pause: seconds=15
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/thin-volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'thin_volume2' and item.thinProvisioned and
- item.capacity == '140737488355328' and item.initialProvisionedCapacity == '34359738368' and
- item.currentProvisionedCapacity == '309237645312' and item.expansionPolicy == 'automatic' }}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`thin_volume2`]') }}"
-
-- name: Delete raid 0 storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: "{{ item }}"
- loop:
- - storage_pool
- - storage_pool2
-
-- name: Create raid 0 storage pool
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: storage_pool
- criteria_min_usable_capacity: 5
- criteria_size_unit: tb
- erase_secured_drives: yes
- raid_level: raid0
-
-# Thick volume expansion testing: wait and don't wait for operation to complete
-- name: Create raid 6 storage pool
- netapp_e_storagepool:
- <<: *creds
- state: present
- name: storage_pool3
- criteria_min_usable_capacity: 5
- criteria_size_unit: tb
- erase_secured_drives: yes
- raid_level: raid6
-
-- name: Delete volume in raid 6 storage pool
- netapp_e_volume:
- <<: *creds
- state: absent
- name: volume
-
-- name: Create volume in raid 0 storage pool for expansion testing
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool3
- size: 1
- size_unit: gb
- register: results
-- pause: seconds=10
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '1073741824' and item.segmentSize == 131072}}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-
-- name: Modify volume in raid 0 storage pool and wait for expansion testing
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool3
- size: 10
- size_unit: gb
- wait_for_initialization: True
- register: results
-- pause: seconds=10
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes/{{ volume[0]['id'] }}/expand"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: expansion_state
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '10737418240' and item.segmentSize == 131072 and
- expansion_state['json']['action'] == 'none'}}"
- msg: "Volume expansion test failed."
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-
-- name: Modify volume in raid 0 storage pool and don't wait for expansion testing
- netapp_e_volume:
- <<: *creds
- state: present
- name: volume
- storage_pool_name: storage_pool3
- size: 100
- size_unit: gb
- wait_for_initialization: False
- register: results
-- pause: seconds=10
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: current
-- uri:
- url: "{{ credentials.api_url }}/storage-systems/{{ credentials.ssid }}/volumes/{{ volume[0]['id'] }}/expand"
- user: "{{ credentials.api_username }}"
- password: "{{ credentials.api_password }}"
- validate_certs: no
- register: expansion_state
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-- assert:
- that: "{{ results.changed and item.name == 'volume' and not item.thinProvisioned and
- item.capacity == '107374182400' and item.segmentSize == 131072 and expansion_state['json']['action'] != 'none'}}"
- msg: "Failed to create volume"
- loop: "{{ lookup('list', volume, wantList=True) }}"
- vars:
- volume: "{{ current | json_query('json[?name==`volume`]') }}"
-
-- name: Delete raid 0 storage pool
- netapp_e_storagepool:
- <<: *creds
- state: absent
- name: "{{ item }}"
- loop:
- - storage_pool3 \ No newline at end of file
diff --git a/test/integration/targets/nios_a_record/aliases b/test/integration/targets/nios_a_record/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_a_record/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_a_record/defaults/main.yaml b/test/integration/targets/nios_a_record/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/nios_a_record/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/nios_a_record/meta/main.yaml b/test/integration/targets/nios_a_record/meta/main.yaml
deleted file mode 100644
index 1b01a972fe..0000000000
--- a/test/integration/targets/nios_a_record/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests
diff --git a/test/integration/targets/nios_a_record/tasks/main.yml b/test/integration/targets/nios_a_record/tasks/main.yml
deleted file mode 100644
index b3fa8014d8..0000000000
--- a/test/integration/targets/nios_a_record/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_a_record_idempotence.yml
diff --git a/test/integration/targets/nios_a_record/tasks/nios_a_record_idempotence.yml b/test/integration/targets/nios_a_record/tasks/nios_a_record_idempotence.yml
deleted file mode 100644
index 0bbf106cec..0000000000
--- a/test/integration/targets/nios_a_record/tasks/nios_a_record_idempotence.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-- name: cleanup the parent object
- nios_zone:
- name: ansible.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create the parent object
- nios_zone:
- name: ansible.com
- state: present
- provider: "{{ nios_provider }}"
-
-- name: cleanup a_record
- nios_a_record:
- name: a.ansible.com
- ipv4: 192.168.10.1
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create an a_record
- nios_a_record:
- name: a.ansible.com
- ipv4: 192.168.10.1
- state: present
- provider: "{{ nios_provider }}"
- register: a_record_create1
-
-- name: recreate an a_record
- nios_a_record:
- name: a.ansible.com
- ipv4: 192.168.10.1
- state: present
- provider: "{{ nios_provider }}"
- register: a_record_create2
-
-- name: add a comment to an existing a_record
- nios_a_record:
- name: a.ansible.com
- ipv4: 192.168.10.1
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: a_record_update1
-
-- name: add a comment to an existing a_record
- nios_a_record:
- name: a.ansible.com
- ipv4: 192.168.10.1
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: a_record_update2
-
-- name: remove a a_record from the system
- nios_a_record:
- name: a.ansible.com
- ipv4: 192.168.10.1
- state: absent
- provider: "{{ nios_provider }}"
- register: a_record_delete1
-
-- name: remove a a_record from the system
- nios_a_record:
- name: a.ansible.com
- ipv4: 192.168.10.1
- state: absent
- provider: "{{ nios_provider }}"
- register: a_record_delete2
-
-- assert:
- that:
- - "a_record_create1.changed"
- - "not a_record_create2.changed"
- - "a_record_update1.changed"
- - "not a_record_update2.changed"
- - "a_record_delete1.changed"
- - "not a_record_delete2.changed"
diff --git a/test/integration/targets/nios_aaaa_record/aliases b/test/integration/targets/nios_aaaa_record/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_aaaa_record/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_aaaa_record/defaults/main.yaml b/test/integration/targets/nios_aaaa_record/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/nios_aaaa_record/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/nios_aaaa_record/meta/main.yaml b/test/integration/targets/nios_aaaa_record/meta/main.yaml
deleted file mode 100644
index 1b01a972fe..0000000000
--- a/test/integration/targets/nios_aaaa_record/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests
diff --git a/test/integration/targets/nios_aaaa_record/tasks/main.yml b/test/integration/targets/nios_aaaa_record/tasks/main.yml
deleted file mode 100644
index 2fec2adb28..0000000000
--- a/test/integration/targets/nios_aaaa_record/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_aaaa_record_idempotence.yml
diff --git a/test/integration/targets/nios_aaaa_record/tasks/nios_aaaa_record_idempotence.yml b/test/integration/targets/nios_aaaa_record/tasks/nios_aaaa_record_idempotence.yml
deleted file mode 100644
index 2df01d34bd..0000000000
--- a/test/integration/targets/nios_aaaa_record/tasks/nios_aaaa_record_idempotence.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-- name: cleanup the parent object
- nios_zone:
- name: ansible.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create the parent object
- nios_zone:
- name: ansible.com
- state: present
- provider: "{{ nios_provider }}"
-
-- name: cleanup aaaa record
- nios_aaaa_record:
- name: aaaa.ansible.com
- ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create an aaaa record
- nios_aaaa_record:
- name: aaaa.ansible.com
- ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- state: present
- provider: "{{ nios_provider }}"
- register: aaaa_record_create1
-
-- name: recreate an aaaa record
- nios_aaaa_record:
- name: aaaa.ansible.com
- ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- state: present
- provider: "{{ nios_provider }}"
- register: aaaa_record_create2
-
-- name: add a comment to an existing aaaa record
- nios_aaaa_record:
- name: aaaa.ansible.com
- ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: aaaa_record_update1
-
-- name: add a comment to an existing aaaa record
- nios_aaaa_record:
- name: aaaa.ansible.com
- ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: aaaa_record_update2
-
-- name: remove a aaaa record from the system
- nios_aaaa_record:
- name: aaaa.ansible.com
- ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- state: absent
- provider: "{{ nios_provider }}"
- register: aaaa_record_delete1
-
-- name: remove a aaaa record from the system
- nios_aaaa_record:
- name: aaaa.ansible.com
- ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- state: absent
- provider: "{{ nios_provider }}"
- register: aaaa_record_delete2
-
-- assert:
- that:
- - "aaaa_record_create1.changed"
- - "not aaaa_record_create2.changed"
- - "aaaa_record_update1.changed"
- - "not aaaa_record_update2.changed"
- - "aaaa_record_delete1.changed"
- - "not aaaa_record_delete2.changed"
diff --git a/test/integration/targets/nios_cname_record/aliases b/test/integration/targets/nios_cname_record/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_cname_record/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_cname_record/defaults/main.yaml b/test/integration/targets/nios_cname_record/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/nios_cname_record/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/nios_cname_record/meta/main.yaml b/test/integration/targets/nios_cname_record/meta/main.yaml
deleted file mode 100644
index 1b01a972fe..0000000000
--- a/test/integration/targets/nios_cname_record/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests
diff --git a/test/integration/targets/nios_cname_record/tasks/main.yml b/test/integration/targets/nios_cname_record/tasks/main.yml
deleted file mode 100644
index b30f250a5c..0000000000
--- a/test/integration/targets/nios_cname_record/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_cname_record_idempotence.yml
diff --git a/test/integration/targets/nios_cname_record/tasks/nios_cname_record_idempotence.yml b/test/integration/targets/nios_cname_record/tasks/nios_cname_record_idempotence.yml
deleted file mode 100644
index f450c7166b..0000000000
--- a/test/integration/targets/nios_cname_record/tasks/nios_cname_record_idempotence.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-- name: cleanup the parent object
- nios_zone:
- name: ansible.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create the parent object
- nios_zone:
- name: ansible.com
- state: present
- provider: "{{ nios_provider }}"
-
-- name: cleanup cname record
- nios_cname_record:
- name: cname.ansible.com
- canonical: realhost.ansible.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create an cname record
- nios_cname_record:
- name: cname.ansible.com
- canonical: realhost.ansible.com
- state: present
- provider: "{{ nios_provider }}"
- register: cname_record_create1
-
-- name: recreate an cname record
- nios_cname_record:
- name: cname.ansible.com
- canonical: realhost.ansible.com
- state: present
- provider: "{{ nios_provider }}"
- register: cname_record_create2
-
-- name: add a comment to an existing cname record
- nios_cname_record:
- name: cname.ansible.com
- canonical: realhost.ansible.com
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: cname_record_update1
-
-- name: add a comment to an existing cname record
- nios_cname_record:
- name: cname.ansible.com
- canonical: realhost.ansible.com
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: cname_record_update2
-
-- name: remove a cname record from the system
- nios_cname_record:
- name: cname.ansible.com
- canonical: realhost.ansible.com
- state: absent
- provider: "{{ nios_provider }}"
- register: cname_record_delete1
-
-- name: remove a cname record from the system
- nios_cname_record:
- name: cname.ansible.com
- canonical: realhost.ansible.com
- state: absent
- provider: "{{ nios_provider }}"
- register: cname_record_delete2
-
-- assert:
- that:
- - "cname_record_create1.changed"
- - "not cname_record_create2.changed"
- - "cname_record_update1.changed"
- - "not cname_record_update2.changed"
- - "cname_record_delete1.changed"
- - "not cname_record_delete2.changed"
diff --git a/test/integration/targets/nios_dns_view/aliases b/test/integration/targets/nios_dns_view/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_dns_view/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_dns_view/defaults/main.yaml b/test/integration/targets/nios_dns_view/defaults/main.yaml
deleted file mode 100644
index ebf6ffc903..0000000000
--- a/test/integration/targets/nios_dns_view/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: [] \ No newline at end of file
diff --git a/test/integration/targets/nios_dns_view/meta/main.yaml b/test/integration/targets/nios_dns_view/meta/main.yaml
deleted file mode 100644
index 9472935b7c..0000000000
--- a/test/integration/targets/nios_dns_view/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests \ No newline at end of file
diff --git a/test/integration/targets/nios_dns_view/tasks/main.yml b/test/integration/targets/nios_dns_view/tasks/main.yml
deleted file mode 100644
index 1eb9c07ab2..0000000000
--- a/test/integration/targets/nios_dns_view/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_dns_view_idempotence.yml
diff --git a/test/integration/targets/nios_dns_view/tasks/nios_dns_view_idempotence.yml b/test/integration/targets/nios_dns_view/tasks/nios_dns_view_idempotence.yml
deleted file mode 100644
index b9dc9fec4a..0000000000
--- a/test/integration/targets/nios_dns_view/tasks/nios_dns_view_idempotence.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-- name: delete dns view instance
- nios_dns_view:
- name: ansible-dns
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: configure a new dns view instance
- nios_dns_view:
- name: ansible-dns
- state: present
- provider: "{{ nios_provider }}"
- register: nios_dns_create1
-
-- name: configure a new dns view instance
- nios_dns_view:
- name: ansible-dns
- state: present
- provider: "{{ nios_provider }}"
- register: nios_dns_create2
-
-- name: update the comment for dns view
- nios_dns_view:
- name: ansible-dns
- comment: this is an example comment
- state: present
- provider: "{{ nios_provider }}"
- register: nios_dns_update1
-
-- name: update the comment for dns view
- nios_dns_view:
- name: ansible-dns
- comment: this is an example comment
- state: present
- provider: "{{ nios_provider }}"
- register: nios_dns_update2
-
-- name: delete dns view instance
- nios_dns_view:
- name: ansible-dns
- state: absent
- provider: "{{ nios_provider }}"
- register: nios_dns_delete1
-
-- name: delete dns view instance
- nios_dns_view:
- name: ansible-dns
- state: absent
- provider: "{{ nios_provider }}"
- register: nios_dns_delete2
-
-- assert:
- that:
- - "nios_dns_create1.changed"
- - "not nios_dns_create2.changed"
- - "nios_dns_update1.changed"
- - "not nios_dns_update2.changed"
- - "nios_dns_delete1.changed"
- - "not nios_dns_delete2.changed"
diff --git a/test/integration/targets/nios_host_record/aliases b/test/integration/targets/nios_host_record/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_host_record/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_host_record/defaults/main.yaml b/test/integration/targets/nios_host_record/defaults/main.yaml
deleted file mode 100644
index ebf6ffc903..0000000000
--- a/test/integration/targets/nios_host_record/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: [] \ No newline at end of file
diff --git a/test/integration/targets/nios_host_record/meta/main.yaml b/test/integration/targets/nios_host_record/meta/main.yaml
deleted file mode 100644
index 9472935b7c..0000000000
--- a/test/integration/targets/nios_host_record/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests \ No newline at end of file
diff --git a/test/integration/targets/nios_host_record/tasks/main.yml b/test/integration/targets/nios_host_record/tasks/main.yml
deleted file mode 100644
index 2f1dcc55e5..0000000000
--- a/test/integration/targets/nios_host_record/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_host_record_idempotence.yml
diff --git a/test/integration/targets/nios_host_record/tasks/nios_host_record_idempotence.yml b/test/integration/targets/nios_host_record/tasks/nios_host_record_idempotence.yml
deleted file mode 100644
index 636431ee5b..0000000000
--- a/test/integration/targets/nios_host_record/tasks/nios_host_record_idempotence.yml
+++ /dev/null
@@ -1,126 +0,0 @@
-- name: cleanup the parent object
- nios_zone:
- name: ansible.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create the parent object
- nios_zone:
- name: ansible.com
- state: present
- provider: "{{ nios_provider }}"
-
-- name: cleanup ipv4 host record
- nios_host_record:
- name: host.ansible.com
- ipv4:
- - address: 192.168.10.1
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create an ipv4 host record
- nios_host_record:
- name: host.ansible.com
- ipv4:
- - address: 192.168.10.1
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_create1
-
-- name: recreate an ipv4 host record
- nios_host_record:
- name: host.ansible.com
- ipv4:
- - address: 192.168.10.1
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_create2
-
-- name: add a comment to an existing host record
- nios_host_record:
- name: host.ansible.com
- ipv4:
- - address: 192.168.10.1
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_update1
-
-- name: add a comment to an existing host record
- nios_host_record:
- name: host.ansible.com
- ipv4:
- - address: 192.168.10.1
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_update2
-
-- name: remove a host record from the system
- nios_host_record:
- name: host.ansible.com
- state: absent
- provider: "{{ nios_provider }}"
- register: ipv4_delete1
-
-- name: remove a host record from the system
- nios_host_record:
- name: host.ansible.com
- state: absent
- provider: "{{ nios_provider }}"
- register: ipv4_delete2
-
-- name: create an ipv4 host record bypassing DNS
- nios_host_record:
- name: host
- ipv4:
- - address: 192.168.10.1
- dns: false
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_create3
-
-- name: recreate an ipv4 host record bypassing DNS
- nios_host_record:
- name: host
- ipv4:
- - address: 192.168.10.1
- dns: false
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_create4
-
-- name: create an ipv4 host record via DHCP and MAC
- nios_host_record:
- name: host
- ipv4:
- - address: 192.168.10.1
- dhcp: true
- mac: 00-80-C8-E3-4C-BD
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_create5
-
-- name: recreate an ipv4 host record via DHCP and MAC
- nios_host_record:
- name: host
- ipv4:
- - address: 192.168.10.1
- dhcp: true
- mac: 00-80-C8-E3-4C-BD
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_create6
-
-- assert:
- that:
- - "ipv4_create1.changed"
- - "not ipv4_create2.changed"
- - "ipv4_update1.changed"
- - "not ipv4_update2.changed"
- - "ipv4_delete1.changed"
- - "not ipv4_delete2.changed"
- - "ipv4_create3.changed"
- - "not ipv4_create4.changed"
- - "ipv4_create5.changed"
- - "not ipv4_create6.changed"
diff --git a/test/integration/targets/nios_mx_record/aliases b/test/integration/targets/nios_mx_record/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_mx_record/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_mx_record/defaults/main.yaml b/test/integration/targets/nios_mx_record/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/nios_mx_record/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/nios_mx_record/meta/main.yaml b/test/integration/targets/nios_mx_record/meta/main.yaml
deleted file mode 100644
index 1b01a972fe..0000000000
--- a/test/integration/targets/nios_mx_record/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests
diff --git a/test/integration/targets/nios_mx_record/tasks/main.yml b/test/integration/targets/nios_mx_record/tasks/main.yml
deleted file mode 100644
index fe687173b9..0000000000
--- a/test/integration/targets/nios_mx_record/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_mx_record_idempotence.yml
diff --git a/test/integration/targets/nios_mx_record/tasks/nios_mx_record_idempotence.yml b/test/integration/targets/nios_mx_record/tasks/nios_mx_record_idempotence.yml
deleted file mode 100644
index 65b1e8f44e..0000000000
--- a/test/integration/targets/nios_mx_record/tasks/nios_mx_record_idempotence.yml
+++ /dev/null
@@ -1,84 +0,0 @@
-- name: cleanup the parent object
- nios_zone:
- name: ansible.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create the parent object
- nios_zone:
- name: ansible.com
- state: present
- provider: "{{ nios_provider }}"
-
-- name: cleanup mx record
- nios_mx_record:
- name: ansible.com
- mx: mailhost.ansible.com
- preference: 0
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create an mx record
- nios_mx_record:
- name: ansible.com
- mx: mailhost.ansible.com
- preference: 0
- state: present
- provider: "{{ nios_provider }}"
- register: mx_record_create1
-
-- name: recreate an mx record
- nios_mx_record:
- name: ansible.com
- mx: mailhost.ansible.com
- preference: 0
- state: present
- provider: "{{ nios_provider }}"
- register: mx_record_create2
-
-- name: add a comment to an existing mx record
- nios_mx_record:
- name: ansible.com
- mx: mailhost.ansible.com
- preference: 0
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: mx_record_update1
-
-- name: add a comment to an existing mx record
- nios_mx_record:
- name: ansible.com
- mx: mailhost.ansible.com
- preference: 0
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: mx_record_update2
-
-- name: remove a mx record from the system
- nios_mx_record:
- name: ansible.com
- mx: mailhost.ansible.com
- preference: 0
- state: absent
- provider: "{{ nios_provider }}"
- register: mx_record_delete1
-
-- name: remove a mx record from the system
- nios_mx_record:
- name: ansible.com
- mx: mailhost.ansible.com
- preference: 0
- state: absent
- provider: "{{ nios_provider }}"
- register: mx_record_delete2
-
-- assert:
- that:
- - "mx_record_create1.changed"
- - "not mx_record_create2.changed"
- - "mx_record_update1.changed"
- - "not mx_record_update2.changed"
- - "mx_record_delete1.changed"
- - "not mx_record_delete2.changed"
diff --git a/test/integration/targets/nios_naptr_record/aliases b/test/integration/targets/nios_naptr_record/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_naptr_record/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_naptr_record/defaults/main.yaml b/test/integration/targets/nios_naptr_record/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/nios_naptr_record/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/nios_naptr_record/meta/main.yaml b/test/integration/targets/nios_naptr_record/meta/main.yaml
deleted file mode 100644
index 1b01a972fe..0000000000
--- a/test/integration/targets/nios_naptr_record/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests
diff --git a/test/integration/targets/nios_naptr_record/tasks/main.yml b/test/integration/targets/nios_naptr_record/tasks/main.yml
deleted file mode 100644
index a22a8018c1..0000000000
--- a/test/integration/targets/nios_naptr_record/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_naptr_record_idempotence.yml
diff --git a/test/integration/targets/nios_naptr_record/tasks/nios_naptr_record_idempotence.yml b/test/integration/targets/nios_naptr_record/tasks/nios_naptr_record_idempotence.yml
deleted file mode 100644
index 2303eff589..0000000000
--- a/test/integration/targets/nios_naptr_record/tasks/nios_naptr_record_idempotence.yml
+++ /dev/null
@@ -1,91 +0,0 @@
-- name: cleanup the parent object
- nios_zone:
- name: ansible.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create the parent object
- nios_zone:
- name: ansible.com
- state: present
- provider: "{{ nios_provider }}"
-
-- name: cleanup naptr record
- nios_naptr_record:
- name: '*.subscriber-100.ansiblezone.com'
- order: 1000
- preference: 10
- replacement: replacement1.network.ansiblezone.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create an naptr record
- nios_naptr_record:
- name: '*.subscriber-100.ansiblezone.com'
- order: 1000
- preference: 10
- replacement: replacement1.network.ansiblezone.com
- state: present
- provider: "{{ nios_provider }}"
- register: naptr_record_create1
-
-- name: recreate an naptr record
- nios_naptr_record:
- name: '*.subscriber-100.ansiblezone.com'
- order: 1000
- preference: 10
- replacement: replacement1.network.ansiblezone.com
- state: present
- provider: "{{ nios_provider }}"
- register: naptr_record_create2
-
-- name: add a comment to an existing naptr record
- nios_naptr_record:
- name: '*.subscriber-100.ansiblezone.com'
- order: 1000
- preference: 10
- replacement: replacement1.network.ansiblezone.com
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: naptr_record_update1
-
-- name: add a comment to an existing naptr record
- nios_naptr_record:
- name: '*.subscriber-100.ansiblezone.com'
- order: 1000
- preference: 10
- replacement: replacement1.network.ansiblezone.com
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: naptr_record_update2
-
-- name: remove a naptr record from the system
- nios_naptr_record:
- name: '*.subscriber-100.ansiblezone.com'
- order: 1000
- preference: 10
- replacement: replacement1.network.ansiblezone.com
- state: absent
- provider: "{{ nios_provider }}"
- register: naptr_record_delete1
-
-- name: remove a naptr record from the system
- nios_naptr_record:
- name: '*.subscriber-100.ansiblezone.com'
- order: 1000
- preference: 10
- replacement: replacement1.network.ansiblezone.com
- state: absent
- provider: "{{ nios_provider }}"
- register: naptr_record_delete2
-
-- assert:
- that:
- - "naptr_record_create1.changed"
- - "not naptr_record_create2.changed"
- - "naptr_record_update1.changed"
- - "not naptr_record_update2.changed"
- - "naptr_record_delete1.changed"
- - "not naptr_record_delete2.changed"
diff --git a/test/integration/targets/nios_network/aliases b/test/integration/targets/nios_network/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_network/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_network/defaults/main.yaml b/test/integration/targets/nios_network/defaults/main.yaml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/nios_network/defaults/main.yaml
+++ /dev/null
diff --git a/test/integration/targets/nios_network/meta/main.yaml b/test/integration/targets/nios_network/meta/main.yaml
deleted file mode 100644
index 9472935b7c..0000000000
--- a/test/integration/targets/nios_network/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests \ No newline at end of file
diff --git a/test/integration/targets/nios_network/tasks/main.yml b/test/integration/targets/nios_network/tasks/main.yml
deleted file mode 100644
index c147af8f41..0000000000
--- a/test/integration/targets/nios_network/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_network_idempotence.yml
diff --git a/test/integration/targets/nios_network/tasks/nios_network_idempotence.yml b/test/integration/targets/nios_network/tasks/nios_network_idempotence.yml
deleted file mode 100644
index 3b5dbc4b5a..0000000000
--- a/test/integration/targets/nios_network/tasks/nios_network_idempotence.yml
+++ /dev/null
@@ -1,80 +0,0 @@
-- name: cleanup a network ipv4
- nios_network:
- network: 192.168.10.0/24
- comment: this is a test comment
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: configure a network ipv4
- nios_network:
- network: 192.168.10.0/24
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: nios_ipv4_create1
-
-- name: configure a network ipv4
- nios_network:
- network: 192.168.10.0/24
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: nios_ipv4_create2
-
-#- assert:
-# that:
-# - "nios_ipv4_create1.changed"
-# - "not nios_ipv4_create2.changed"
-
-- name: set dhcp options for a network ipv4
- nios_network:
- network: 192.168.10.0/24
- comment: this is a test comment
- options:
- - name: domain-name
- value: ansible.com
- state: present
- provider: "{{ nios_provider }}"
- register: nios_ipv4_update1
-
-- name: set dhcp options for a network ipv4
- nios_network:
- network: 192.168.10.0/24
- comment: this is a test comment
- options:
- - name: domain-name
- value: ansible.com
- state: present
- provider: "{{ nios_provider }}"
- register: nios_ipv4_update2
-
-- name: remove a network ipv4
- nios_network:
- network: 192.168.10.0/24
- state: absent
- provider: "{{ nios_provider }}"
- register: nios_ipv4_remove1
-
-- name: remove a network ipv4
- nios_network:
- network: 192.168.10.0/24
- state: absent
- provider: "{{ nios_provider }}"
- register: nios_ipv4_remove2
-
-- name: configure a network ipv6
- nios_network:
- network: fe80::/64
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: nios_ipv6_create1
-
-- assert:
- that:
- - "nios_ipv4_create1.changed"
- - "not nios_ipv4_create2.changed"
- - "nios_ipv4_update1.changed"
- - "not nios_ipv4_update2.changed"
- - "nios_ipv4_remove1.changed"
- - "not nios_ipv4_remove2.changed"
diff --git a/test/integration/targets/nios_network_view/aliases b/test/integration/targets/nios_network_view/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_network_view/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_network_view/defaults/main.yaml b/test/integration/targets/nios_network_view/defaults/main.yaml
deleted file mode 100644
index ebf6ffc903..0000000000
--- a/test/integration/targets/nios_network_view/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: [] \ No newline at end of file
diff --git a/test/integration/targets/nios_network_view/meta/main.yaml b/test/integration/targets/nios_network_view/meta/main.yaml
deleted file mode 100644
index 9472935b7c..0000000000
--- a/test/integration/targets/nios_network_view/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests \ No newline at end of file
diff --git a/test/integration/targets/nios_network_view/tasks/main.yml b/test/integration/targets/nios_network_view/tasks/main.yml
deleted file mode 100644
index 97e87148b5..0000000000
--- a/test/integration/targets/nios_network_view/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_network_view_idempotence.yml
diff --git a/test/integration/targets/nios_network_view/tasks/nios_network_view_idempotence.yml b/test/integration/targets/nios_network_view/tasks/nios_network_view_idempotence.yml
deleted file mode 100644
index ad13e3a33d..0000000000
--- a/test/integration/targets/nios_network_view/tasks/nios_network_view_idempotence.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-- name: cleanup a new network view
- nios_network_view:
- name: ansible
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: configure a new network view
- nios_network_view:
- name: ansible
- state: present
- provider: "{{ nios_provider }}"
- register: nios_network_view_create1
-
-- name: configure a new network view
- nios_network_view:
- name: ansible
- state: present
- provider: "{{ nios_provider }}"
- register: nios_network_view_create2
-
-- name: update the comment for network view
- nios_network_view:
- name: ansible
- comment: this is an example comment
- state: present
- provider: "{{ nios_provider }}"
- register: nios_network_view_update1
-
-- name: update the comment for network view
- nios_network_view:
- name: ansible
- comment: this is an example comment
- state: present
- provider: "{{ nios_provider }}"
- register: nios_network_view_update2
-
-- name: remove the network view
- nios_network_view:
- name: ansible
- state: absent
- provider: "{{ nios_provider }}"
- register: nios_network_view_delete1
-
-- name: remove the network view
- nios_network_view:
- name: ansible
- state: absent
- provider: "{{ nios_provider }}"
- register: nios_network_view_delete2
-
-- assert:
- that:
- - "nios_network_view_create1.changed"
- - "not nios_network_view_create2.changed"
- - "nios_network_view_update1.changed"
- - "not nios_network_view_update2.changed"
- - "nios_network_view_delete1.changed"
- - "not nios_network_view_delete2.changed"
diff --git a/test/integration/targets/nios_ptr_record/aliases b/test/integration/targets/nios_ptr_record/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_ptr_record/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_ptr_record/defaults/main.yaml b/test/integration/targets/nios_ptr_record/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/nios_ptr_record/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/nios_ptr_record/meta/main.yaml b/test/integration/targets/nios_ptr_record/meta/main.yaml
deleted file mode 100644
index 1b01a972fe..0000000000
--- a/test/integration/targets/nios_ptr_record/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests
diff --git a/test/integration/targets/nios_ptr_record/tasks/main.yml b/test/integration/targets/nios_ptr_record/tasks/main.yml
deleted file mode 100644
index ec33e8f537..0000000000
--- a/test/integration/targets/nios_ptr_record/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_ptr_record_idempotence.yml
diff --git a/test/integration/targets/nios_ptr_record/tasks/nios_ptr_record_idempotence.yml b/test/integration/targets/nios_ptr_record/tasks/nios_ptr_record_idempotence.yml
deleted file mode 100644
index a233d80f55..0000000000
--- a/test/integration/targets/nios_ptr_record/tasks/nios_ptr_record_idempotence.yml
+++ /dev/null
@@ -1,83 +0,0 @@
----
-
-- name: create an ipv4 ptr record
- nios_ptr_record:
- name: ptr.ansible.com
- ptrdname: ptr.ansible.com
- ipv4: 192.168.10.1
- state: present
- provider: "{{ nios_provider }}"
- view: default
- register: ipv4_ptr_create1
-
-- name: create the same ipv4 ptr record
- nios_ptr_record:
- name: ptr.ansible.com
- ptrdname: ptr.ansible.com
- ipv4: 192.168.10.1
- state: present
- view: default
- provider: "{{ nios_provider }}"
- register: ipv4_ptr_create2
-
-- name: add a comment to an existing ipv4 ptr record
- nios_ptr_record:
- name: ptr.ansible.com
- ptrdname: ptr.ansible.com
- ipv4: 192.168.10.1
- comment: this is a test comment
- view: default
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_ptr_update1
-
-- name: add the same comment to the same ipv4 ptr host record
- nios_ptr_record:
- name: ptr.ansible.com
- ptrdname: ptr.ansible.com
- ipv4: 192.168.10.1
- comment: this is a test comment
- view: default
- state: present
- provider: "{{ nios_provider }}"
- register: ipv4_ptr_update2
-
-- name: remove a ptr record from the system
- nios_ptr_record:
- name: ptr.ansible.com
- ptrdname: ptr.ansible.com
- ipv4: 192.168.10.1
- view: default
- state: absent
- provider: "{{ nios_provider }}"
- register: ipv4_ptr_delete1
-
-- name: remove the same ptr record from the system
- nios_ptr_record:
- ptrdname: ptr.ansible.com
- name: ptr.ansible.com
- ipv4: 192.168.10.1
- view: default
- state: absent
- provider: "{{ nios_provider }}"
- register: ipv4_ptr_delete2
-
-- name: create an ipv6 ptr record
- nios_ptr_record:
- ptrdname: ptr6.ansible.com
- name: ptr6.ansible.com
- ipv6: "2002:8ac3:802d:1242:20d:60ff:fe38:6d16"
- view: default
- state: present
- provider: "{{ nios_provider }}"
- register: ipv6_ptr_create1
-
-- assert:
- that:
- - "ipv4_ptr_create1.changed"
- - "not ipv4_ptr_create2.changed"
- - "ipv4_ptr_update1.changed"
- - "not ipv4_ptr_update2.changed"
- - "ipv4_ptr_delete1.changed"
- - "not ipv4_ptr_delete2.changed"
- - "ipv6_ptr_create1.changed"
diff --git a/test/integration/targets/nios_srv_record/aliases b/test/integration/targets/nios_srv_record/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_srv_record/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_srv_record/defaults/main.yaml b/test/integration/targets/nios_srv_record/defaults/main.yaml
deleted file mode 100644
index 9ef5ba5165..0000000000
--- a/test/integration/targets/nios_srv_record/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: []
diff --git a/test/integration/targets/nios_srv_record/meta/main.yaml b/test/integration/targets/nios_srv_record/meta/main.yaml
deleted file mode 100644
index 1b01a972fe..0000000000
--- a/test/integration/targets/nios_srv_record/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests
diff --git a/test/integration/targets/nios_srv_record/tasks/main.yml b/test/integration/targets/nios_srv_record/tasks/main.yml
deleted file mode 100644
index 1c84767320..0000000000
--- a/test/integration/targets/nios_srv_record/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_srv_record_idempotence.yml
diff --git a/test/integration/targets/nios_srv_record/tasks/nios_srv_record_idempotence.yml b/test/integration/targets/nios_srv_record/tasks/nios_srv_record_idempotence.yml
deleted file mode 100644
index 8f3dbfc73e..0000000000
--- a/test/integration/targets/nios_srv_record/tasks/nios_srv_record_idempotence.yml
+++ /dev/null
@@ -1,98 +0,0 @@
-- name: cleanup the parent object
- nios_zone:
- name: ansible.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create the parent object
- nios_zone:
- name: ansible.com
- state: present
- provider: "{{ nios_provider }}"
-
-- name: cleanup srv record
- nios_srv_record:
- name: ansible.com
- port: 5080
- priority: 10
- target: service1.ansible.com
- weight: 10
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create an srv record
- nios_srv_record:
- name: ansible.com
- port: 5080
- priority: 10
- target: service1.ansible.com
- weight: 10
- state: present
- provider: "{{ nios_provider }}"
- register: srv_record_create1
-
-- name: recreate an srv record
- nios_srv_record:
- name: ansible.com
- port: 5080
- priority: 10
- target: service1.ansible.com
- weight: 10
- state: present
- provider: "{{ nios_provider }}"
- register: srv_record_create2
-
-- name: add a comment to an existing srv record
- nios_srv_record:
- name: ansible.com
- port: 5080
- priority: 10
- target: service1.ansible.com
- weight: 10
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: srv_record_update1
-
-- name: add a comment to an existing srv record
- nios_srv_record:
- name: ansible.com
- port: 5080
- priority: 10
- target: service1.ansible.com
- weight: 10
- comment: this is a test comment
- state: present
- provider: "{{ nios_provider }}"
- register: srv_record_update2
-
-- name: remove a srv record from the system
- nios_srv_record:
- name: ansible.com
- port: 5080
- priority: 10
- target: service1.ansible.com
- weight: 10
- state: absent
- provider: "{{ nios_provider }}"
- register: srv_record_delete1
-
-- name: remove a srv record from the system
- nios_srv_record:
- name: ansible.com
- port: 5080
- priority: 10
- target: service1.ansible.com
- weight: 10
- state: absent
- provider: "{{ nios_provider }}"
- register: srv_record_delete2
-
-- assert:
- that:
- - "srv_record_create1.changed"
- - "not srv_record_create2.changed"
- - "srv_record_update1.changed"
- - "not srv_record_update2.changed"
- - "srv_record_delete1.changed"
- - "not srv_record_delete2.changed"
diff --git a/test/integration/targets/nios_txt_record/aliases b/test/integration/targets/nios_txt_record/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_txt_record/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_txt_record/defaults/main.yaml b/test/integration/targets/nios_txt_record/defaults/main.yaml
deleted file mode 100644
index ebf6ffc903..0000000000
--- a/test/integration/targets/nios_txt_record/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: [] \ No newline at end of file
diff --git a/test/integration/targets/nios_txt_record/meta/main.yaml b/test/integration/targets/nios_txt_record/meta/main.yaml
deleted file mode 100644
index 9472935b7c..0000000000
--- a/test/integration/targets/nios_txt_record/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests \ No newline at end of file
diff --git a/test/integration/targets/nios_txt_record/tasks/main.yml b/test/integration/targets/nios_txt_record/tasks/main.yml
deleted file mode 100644
index e15b4c55db..0000000000
--- a/test/integration/targets/nios_txt_record/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_txt_record_idempotence.yml
diff --git a/test/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml b/test/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml
deleted file mode 100644
index 3b7357afaf..0000000000
--- a/test/integration/targets/nios_txt_record/tasks/nios_txt_record_idempotence.yml
+++ /dev/null
@@ -1,80 +0,0 @@
-- name: cleanup the parent object
- nios_zone:
- name: ansible.com
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create the parent object
- nios_zone:
- name: ansible.com
- state: present
- provider: "{{ nios_provider }}"
-
-- name: cleanup txt record
- nios_txt_record:
- name: txt.ansible.com
- text: mytext
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: create txt record
- nios_txt_record:
- name: txt.ansible.com
- text: mytext
- state: present
- provider: "{{ nios_provider }}"
- register: txt_create1
-
-- name: create txt record
- nios_txt_record:
- name: txt.ansible.com
- text: mytext
- state: present
- provider: "{{ nios_provider }}"
- register: txt_create2
-
-- assert:
- that:
- - "txt_create1.changed"
- - "not txt_create2.changed"
-
-- name: add a comment to an existing txt record
- nios_txt_record:
- name: txt.ansible.com
- text: mytext
- state: present
- comment: mycomment
- provider: "{{ nios_provider }}"
- register: txt_update1
-
-- name: add a comment to an existing txt record
- nios_txt_record:
- name: txt.ansible.com
- text: mytext
- state: present
- comment: mycomment
- provider: "{{ nios_provider }}"
- register: txt_update2
-
-- name: remove a txt record from the system
- nios_txt_record:
- name: txt.ansible.com
- state: absent
- provider: "{{ nios_provider }}"
- register: txt_delete1
-
-- name: remove a txt record from the system
- nios_txt_record:
- name: txt.ansible.com
- state: absent
- provider: "{{ nios_provider }}"
- register: txt_delete2
-
-- assert:
- that:
- - "txt_create1.changed"
- - "not txt_create2.changed"
- - "txt_update1.changed"
- - "not txt_update2.changed"
- - "txt_delete1.changed"
- - "not txt_delete2.changed"
diff --git a/test/integration/targets/nios_zone/aliases b/test/integration/targets/nios_zone/aliases
deleted file mode 100644
index b3138dc764..0000000000
--- a/test/integration/targets/nios_zone/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/nios
-destructive
diff --git a/test/integration/targets/nios_zone/defaults/main.yaml b/test/integration/targets/nios_zone/defaults/main.yaml
deleted file mode 100644
index ebf6ffc903..0000000000
--- a/test/integration/targets/nios_zone/defaults/main.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-testcase: "*"
-test_items: [] \ No newline at end of file
diff --git a/test/integration/targets/nios_zone/meta/main.yaml b/test/integration/targets/nios_zone/meta/main.yaml
deleted file mode 100644
index 9472935b7c..0000000000
--- a/test/integration/targets/nios_zone/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nios_tests \ No newline at end of file
diff --git a/test/integration/targets/nios_zone/tasks/main.yml b/test/integration/targets/nios_zone/tasks/main.yml
deleted file mode 100644
index f066edcdbc..0000000000
--- a/test/integration/targets/nios_zone/tasks/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-- include: nios_zone_idempotence.yml
diff --git a/test/integration/targets/nios_zone/tasks/nios_zone_idempotence.yml b/test/integration/targets/nios_zone/tasks/nios_zone_idempotence.yml
deleted file mode 100644
index 03d40aaf28..0000000000
--- a/test/integration/targets/nios_zone/tasks/nios_zone_idempotence.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-- name: cleanup dns view instance
- nios_dns_view:
- name: ansible-dns
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: cleanup test zone
- nios_zone:
- name: ansible-dns
- state: absent
- provider: "{{ nios_provider }}"
-
-- name: configure a zone on the system
- nios_zone:
- name: ansible-dns
- state: present
- provider: "{{ nios_provider }}"
- register: zone_create1
-
-- name: configure a zone on the system
- nios_zone:
- name: ansible-dns
- state: present
- provider: "{{ nios_provider }}"
- register: zone_create2
-
-- name: update the comment and ext attributes for an existing zone
- nios_zone:
- name: ansible-dns
- comment: this is an example comment
- extattrs:
- Site: west-dc
- state: present
- provider: "{{ nios_provider }}"
- register: zone_update1
-
-- name: update the comment and ext attributes for an existing zone
- nios_zone:
- name: ansible-dns
- comment: this is an example comment
- extattrs:
- Site: west-dc
- state: present
- provider: "{{ nios_provider }}"
- register: zone_update2
-
-- name: remove the dns zone
- nios_zone:
- name: ansible-dns
- state: absent
- provider: "{{ nios_provider }}"
- register: zone_delete1
-
-- name: remove the dns zone
- nios_zone:
- name: ansible-dns
- state: absent
- provider: "{{ nios_provider }}"
- register: zone_delete2
-
-- assert:
- that:
- - "zone_create1.changed"
- - "not zone_create2.changed"
- - "zone_update1.changed"
- - "not zone_update2.changed"
- - "zone_delete1.changed"
- - "not zone_delete2.changed"
diff --git a/test/integration/targets/npm/aliases b/test/integration/targets/npm/aliases
deleted file mode 100644
index e09dd4459f..0000000000
--- a/test/integration/targets/npm/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-shippable/posix/group2
-destructive
-skip/aix
-skip/freebsd
diff --git a/test/integration/targets/npm/tasks/main.yml b/test/integration/targets/npm/tasks/main.yml
deleted file mode 100644
index 52c65ccbec..0000000000
--- a/test/integration/targets/npm/tasks/main.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-# test code for the npm module
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-
-# -------------------------------------------------------------
-# Setup steps
-
-# expand remote path
-- command: 'echo {{ output_dir }}'
- register: echo
-- set_fact:
- remote_dir: '{{ echo.stdout }}'
-
-- include_tasks: run.yml
- vars:
- nodejs_version: '{{ item }}'
- nodejs_path: 'node-v{{ nodejs_version }}-{{ ansible_system|lower }}-x{{ ansible_userspace_bits }}'
- with_items:
- - 7.10.1 # provides npm 4.2.0 (last npm < 5 released)
- - 8.0.0 # provides npm 5.0.0
- - 8.2.0 # provides npm 5.3.0 (output change with this version)
diff --git a/test/integration/targets/npm/tasks/run.yml b/test/integration/targets/npm/tasks/run.yml
deleted file mode 100644
index 53b374fa63..0000000000
--- a/test/integration/targets/npm/tasks/run.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-- include_tasks: setup.yml
-- include_tasks: test.yml
diff --git a/test/integration/targets/npm/tasks/setup.yml b/test/integration/targets/npm/tasks/setup.yml
deleted file mode 100644
index 4e0d908e33..0000000000
--- a/test/integration/targets/npm/tasks/setup.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-- name: 'Download NPM'
- unarchive:
- src: 'https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/npm/{{ nodejs_path }}.tar.gz'
- dest: '{{ output_dir }}'
- remote_src: yes
- creates: '{{ output_dir }}/{{ nodejs_path }}.tar.gz'
diff --git a/test/integration/targets/npm/tasks/test.yml b/test/integration/targets/npm/tasks/test.yml
deleted file mode 100644
index ea2dd5b9f9..0000000000
--- a/test/integration/targets/npm/tasks/test.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-- name: 'Remove any node modules'
- file:
- path: '{{ remote_dir }}/node_modules'
- state: absent
-
-- vars:
- # sample: node-v8.2.0-linux-x64.tar.xz
- node_path: '{{ remote_dir }}/{{ nodejs_path }}/bin'
- package: 'iconv-lite'
- block:
- - shell: npm --version
- environment:
- PATH: '{{ node_path }}:{{ ansible_env.PATH }}'
- register: npm_version
-
- - debug:
- var: npm_version.stdout
-
- - name: 'Install simple package without dependency'
- npm:
- path: '{{ remote_dir }}'
- executable: '{{ node_path }}/npm'
- state: present
- name: '{{ package }}'
- environment:
- PATH: '{{ node_path }}:{{ ansible_env.PATH }}'
- register: npm_install
-
- - assert:
- that:
- - npm_install is success
- - npm_install is changed
-
- - name: 'Reinstall simple package without dependency'
- npm:
- path: '{{ remote_dir }}'
- executable: '{{ node_path }}/npm'
- state: present
- name: '{{ package }}'
- environment:
- PATH: '{{ node_path }}:{{ ansible_env.PATH }}'
- register: npm_reinstall
-
- - name: Check there is no change
- assert:
- that:
- - npm_reinstall is success
- - not (npm_reinstall is changed)
-
- - name: 'Manually delete package'
- file:
- path: '{{ remote_dir }}/node_modules/{{ package }}'
- state: absent
-
- - name: 'reinstall simple package'
- npm:
- path: '{{ remote_dir }}'
- executable: '{{ node_path }}/npm'
- state: present
- name: '{{ package }}'
- environment:
- PATH: '{{ node_path }}:{{ ansible_env.PATH }}'
- register: npm_fix_install
-
- - name: Check result is changed and successful
- assert:
- that:
- - npm_fix_install is success
- - npm_fix_install is changed
diff --git a/test/integration/targets/nuage_vspk/aliases b/test/integration/targets/nuage_vspk/aliases
deleted file mode 100644
index 45dc73e8de..0000000000
--- a/test/integration/targets/nuage_vspk/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/posix/group1
-skip/python3
-skip/aix
diff --git a/test/integration/targets/nuage_vspk/defaults/main.yaml b/test/integration/targets/nuage_vspk/defaults/main.yaml
deleted file mode 100644
index 366d2be231..0000000000
--- a/test/integration/targets/nuage_vspk/defaults/main.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-testcase: "*"
-nuage_auth:
- api_username: csproot
- api_password: csproot
- api_enterprise: csp
- api_url: http://localhost:5000
- api_version: v5_0 \ No newline at end of file
diff --git a/test/integration/targets/nuage_vspk/meta/main.yaml b/test/integration/targets/nuage_vspk/meta/main.yaml
deleted file mode 100644
index 64ceb78f40..0000000000
--- a/test/integration/targets/nuage_vspk/meta/main.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_nuage_tests
diff --git a/test/integration/targets/nuage_vspk/tasks/main.yml b/test/integration/targets/nuage_vspk/tasks/main.yml
deleted file mode 100644
index 9958c22dd7..0000000000
--- a/test/integration/targets/nuage_vspk/tasks/main.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-- block:
- - name: run test case
- include: "{{ test_case_to_run }}"
- with_fileglob: tests/{{ testcase }}.yaml
- loop_control:
- loop_var: test_case_to_run
-
- always:
- - name: Get nuage-vsd-sim pid
- shell: ps -A | grep '[n]'uage-vsd-sim | cut -d ' ' -f 1
- register: vsim_pid
- changed_when: no
- ignore_errors: yes
-
- - name: Stop-nuage-vsd-sim
- command: kill {{ vsim_pid.stdout }}
- changed_when: no
- ignore_errors: yes
- when: "ansible_python_version is version('2.7', '>=')"
diff --git a/test/integration/targets/nuage_vspk/tests/basic.yaml b/test/integration/targets/nuage_vspk/tests/basic.yaml
deleted file mode 100644
index 744c0dec4e..0000000000
--- a/test/integration/targets/nuage_vspk/tests/basic.yaml
+++ /dev/null
@@ -1,226 +0,0 @@
----
-# Getting the CSP enterprise
-- name: Get CSP Enterprise
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: Enterprise
- command: get_csp_enterprise
- register: nuage_csp_enterprise
-
-- name: Check if CSP enterprise was found
- assert:
- that:
- - nuage_csp_enterprise.id is defined
- - nuage_csp_enterprise.entities is defined
- - nuage_csp_enterprise.entities[0].name == "CSP"
-
-- name: Create Enterprise
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: Enterprise
- state: present
- properties:
- name: "Ansible-Enterprise"
- register: nuage_enterprise
-
-- name: Check Enterprise was created
- assert:
- that:
- - nuage_enterprise.changed
- - nuage_enterprise.id is defined
- - nuage_enterprise.entities is defined
- - nuage_enterprise.entities[0].name == "Ansible-Enterprise"
-
-- name: Finding Enterprise
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: Enterprise
- command: find
- properties:
- name: "Ansible-Enterprise"
- register: nuage_enterprise
-
-- name: Check Enterprise was found
- assert:
- that:
- - not nuage_enterprise.changed
- - nuage_enterprise.id is defined
- - nuage_enterprise.entities is defined
- - nuage_enterprise.entities[0].name == "Ansible-Enterprise"
-
-- name: Create Enterprise again to confirm idempoteny
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: Enterprise
- state: present
- properties:
- name: "Ansible-Enterprise"
- register: nuage_enterprise
-
-- name: Check Enterprise was not created again
- assert:
- that:
- - not nuage_enterprise.changed
- - nuage_enterprise.id is defined
- - nuage_enterprise.entities is defined
- - nuage_enterprise.entities[0].name == "Ansible-Enterprise"
-
-- name: Create admin user
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: User
- parent_id: "{{ nuage_enterprise.id }}"
- parent_type: Enterprise
- state: present
- match_filter: "userName == 'ansible-admin'"
- properties:
- email: "ansible@localhost.local"
- first_name: "Ansible"
- last_name: "Admin"
- password: "ansible-password"
- user_name: "ansible-admin"
- register: nuage_user
-
-- name: Check the user was created
- assert:
- that:
- - nuage_user.changed
- - nuage_user.id is defined
- - nuage_user.entities is defined
- - nuage_user.entities[0].userName == "ansible-admin"
-
-- name: Update admin password
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: User
- id: "{{ nuage_user.id }}"
- command: change_password
- properties:
- password: "ansible-new-password"
- ignore_errors: yes
-
-- name: Check the user was created
- assert:
- that:
- - nuage_user.changed
- - nuage_user.id is defined
- - nuage_user.entities is defined
- - nuage_user.entities[0].userName == "ansible-admin"
-
-- name: Create group in Enterprise
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: Group
- parent_id: "{{ nuage_enterprise.id }}"
- parent_type: Enterprise
- state: present
- properties:
- name: "Ansible-Group"
- register: nuage_group
-
-- name: Check the group was created
- assert:
- that:
- - nuage_group.changed
- - nuage_group.id is defined
- - nuage_group.entities is defined
- - nuage_group.entities[0].name == "Ansible-Group"
-
-- name: Assign admin user to group
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: User
- id: "{{ nuage_user.id }}"
- parent_id: "{{ nuage_group.id }}"
- parent_type: Group
- state: present
- register: nuage_assign
-
-- name: Check the admin was added to the group
- assert:
- that:
- - nuage_assign.changed
-
-- name: Assign admin user to administrators again to test idempotency
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: User
- id: "{{ nuage_user.id }}"
- parent_id: "{{ nuage_group.id }}"
- parent_type: Group
- state: present
- register: nuage_assign
-
-- name: Check the group was not changed
- assert:
- that:
- - not nuage_assign.changed
-
-- name: Unassign admin user to administrators
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: User
- id: "{{ nuage_user.id }}"
- parent_id: "{{ nuage_group.id }}"
- parent_type: Group
- state: absent
- register: nuage_unassign
-
-- name: Check the admin was removed from the group
- assert:
- that:
- - nuage_unassign.changed
-
-- name: Unassign admin user to administrators again to test idempotency
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: User
- id: "{{ nuage_user.id }}"
- parent_id: "{{ nuage_group.id }}"
- parent_type: Group
- state: absent
- register: nuage_unassign
-
-- name: Check the group was not changed
- assert:
- that:
- - not nuage_unassign.changed
-
-- name: Delete User
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: User
- id: "{{ nuage_user.id }}"
- state: absent
- register: nuage_user
-
-- name: Check the user was deleted
- assert:
- that:
- - nuage_user.changed
-
-- name: Delete Enterprise
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: Enterprise
- id: "{{ nuage_enterprise.id }}"
- state: absent
- register: nuage_enterprise
-
-- name: Check the enterprise was deleted
- assert:
- that:
- - nuage_enterprise.changed
-
-- name: Delete Enterprise again to test idempotency
- nuage_vspk:
- auth: "{{ nuage_auth }}"
- type: Enterprise
- match_filter: 'name == "Ansible-Enterprise"'
- state: absent
- register: nuage_enterprise
-
-- name: Check the delete idempotency
- assert:
- that:
- - not nuage_enterprise.changed \ No newline at end of file
diff --git a/test/integration/targets/one_host/aliases b/test/integration/targets/one_host/aliases
deleted file mode 100644
index 1ff4e0b13e..0000000000
--- a/test/integration/targets/one_host/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/opennebula
-shippable/cloud/group1
diff --git a/test/integration/targets/one_host/files/testhost/tmp/opennebula-fixtures.json.gz b/test/integration/targets/one_host/files/testhost/tmp/opennebula-fixtures.json.gz
deleted file mode 100644
index 8b67b548ab..0000000000
--- a/test/integration/targets/one_host/files/testhost/tmp/opennebula-fixtures.json.gz
+++ /dev/null
Binary files differ
diff --git a/test/integration/targets/one_host/meta/main.yml b/test/integration/targets/one_host/meta/main.yml
deleted file mode 100644
index 86752df8dd..0000000000
--- a/test/integration/targets/one_host/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_opennebula \ No newline at end of file
diff --git a/test/integration/targets/one_host/tasks/main.yml b/test/integration/targets/one_host/tasks/main.yml
deleted file mode 100644
index 9ec7413727..0000000000
--- a/test/integration/targets/one_host/tasks/main.yml
+++ /dev/null
@@ -1,235 +0,0 @@
-# test code for the one_host module
-
-
-# ENVIRONENT PREPARACTION
-
-- set_fact: test_number= 0
-
-- name: "test_{{test_number}}: copy fixtures to test host"
- copy:
- src: testhost/tmp/opennebula-fixtures.json.gz
- dest: /tmp
- when:
- - opennebula_test_fixture
- - opennebula_test_fixture_replay
-
-
-# SETUP INITIAL TESTING CONDITION
-
-- set_fact: test_number={{ test_number | int + 1 }}
-
-- name: "test_{{test_number}}: ensure the tests hosts are absent"
- one_host:
- name: "{{ item }}"
- state: absent
- api_endpoint: "{{ opennebula_url }}"
- api_username: "{{ opennebula_username }}"
- api_token: "{{ opennebula_password }}"
- validate_certs: false
- environment:
- PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
- PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
- PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
- PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
- with_items: "{{opennebula_test.hosts}}"
- register: result
-
-# NOT EXISTING HOSTS
-
-- set_fact: test_number={{ test_number | int + 1 }}
-
-- name: "test_{{test_number}}: attempt to enable a host that does not exists"
- one_host:
- name: badhost
- state: "{{item}}"
- api_url: "{{ opennebula_url }}"
- api_username: "{{ opennebula_username }}"
- api_password: "{{ opennebula_password }}"
- validate_certs: false
- environment:
- PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
- PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
- PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
- PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{item}}"
- ignore_errors: true
- register: result
- with_items:
- - enabled
- - disabled
- - offline
-
-- name: "assert test_{{test_number}} failed"
- assert:
- that:
- - result is failed
- - result.results[0].msg == 'invalid host state ERROR'
-
-# ---
-
-- set_fact: test_number={{ test_number | int + 1 }}
-
-- name: "test_{{test_number}}: delete an unexisting host"
- one_host:
- name: badhost
- state: absent
- validate_certs: false
- environment:
- ONE_URL: "{{ opennebula_url }}"
- ONE_USERNAME: "{{ opennebula_username }}"
- ONE_PASSWORD: "{{ opennebula_password }}"
- PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
- PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
- PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
- PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}"
- register: result
-
-- name: "assert test_{{test_number}} worked"
- assert:
- that:
- - result.changed
-
-# HOST ENABLEMENT
-
-- set_fact: test_number={{ test_number | int + 1 }}
-
-
-- name: "test_{{test_number}}: enable the test hosts"
- one_host:
- name: "{{ item }}"
- state: enabled
- api_url: "{{ opennebula_url }}"
- api_username: "{{ opennebula_username }}"
- api_password: "{{ opennebula_password }}"
- validate_certs: false
- environment:
- PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
- PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
- PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
- PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
- with_items: "{{opennebula_test.hosts}}"
- register: result
-
-- name: "assert test_{{test_number}} worked"
- assert:
- that:
- - result.changed
-
-# TEMPLATE MANAGEMENT
-
-- set_fact: test_number={{ test_number | int + 1 }}
-
-- name: "test_{{test_number}}: setup template values on hosts"
- one_host:
- name: "{{ item }}"
- state: enabled
- api_url: "{{ opennebula_url }}"
- api_username: "{{ opennebula_username }}"
- api_password: "{{ opennebula_password }}"
- validate_certs: false
- template:
- LABELS:
- - test
- - custom
- TEST_VALUE: 2
- environment:
- PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
- PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
- PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
- PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
- with_items: "{{opennebula_test.hosts}}"
- register: result
-
-- name: "assert test_{{test_number}} worked"
- assert:
- that:
- - result.changed
-
-# ---
-
-- set_fact: test_number={{ test_number | int + 1 }}
-
-- name: "test_{{test_number}}: setup equivalent template values on hosts"
- one_host:
- name: "{{ item }}"
- state: enabled
- api_url: "{{ opennebula_url }}"
- api_username: "{{ opennebula_username }}"
- api_password: "{{ opennebula_password }}"
- validate_certs: false
- labels:
- - test
- - custom
- attributes:
- TEST_VALUE: "2"
- environment:
- PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
- PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
- PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
- PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
- with_items: "{{opennebula_test.hosts}}"
- register: result
-
-- name: "assert test_{{test_number}} worked"
- assert:
- that:
- - result.changed == false
-
-# HOST DISABLEMENT
-
-- set_fact: test_number={{ test_number | int + 1 }}
-
-- name: "test_{{test_number}}: disable the test hosts"
- one_host:
- name: "{{ item }}"
- state: disabled
- api_url: "{{ opennebula_url }}"
- api_username: "{{ opennebula_username }}"
- api_password: "{{ opennebula_password }}"
- validate_certs: false
- environment:
- PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
- PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
- PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
- PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
- with_items: "{{opennebula_test.hosts}}"
- register: result
-
-- name: "assert test_{{test_number}} worked"
- assert:
- that:
- - result.changed
-
-# HOST OFFLINE
-
-- set_fact: test_number={{ test_number | int + 1 }}
-
-- name: "test_{{test_number}}: offline the test hosts"
- one_host:
- name: "{{ item }}"
- state: offline
- api_url: "{{ opennebula_url }}"
- api_username: "{{ opennebula_username }}"
- api_password: "{{ opennebula_password }}"
- validate_certs: false
- environment:
- PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
- PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
- PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
- PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
- with_items: "{{opennebula_test.hosts}}"
- register: result
-
-- name: "assert test_{{test_number}} worked"
- assert:
- that:
- - result.changed
-
-# TEARDOWN
-
-- name: fetch fixtures
- fetch:
- src: /tmp/opennebula-fixtures.json.gz
- dest: targets/one_host/files
- when:
- - opennebula_test_fixture
- - not opennebula_test_fixture_replay
diff --git a/test/integration/targets/osx_defaults/aliases b/test/integration/targets/osx_defaults/aliases
deleted file mode 100644
index 6e0b78e003..0000000000
--- a/test/integration/targets/osx_defaults/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-shippable/posix/group1
-skip/aix
-skip/freebsd
-skip/rhel
-skip/docker
diff --git a/test/integration/targets/osx_defaults/tasks/main.yml b/test/integration/targets/osx_defaults/tasks/main.yml
deleted file mode 100644
index a4444b260f..0000000000
--- a/test/integration/targets/osx_defaults/tasks/main.yml
+++ /dev/null
@@ -1,204 +0,0 @@
-# Test code for the osx_defaults module.
-# Copyright: (c) 2019, Abhijeet Kasurde <akasurde@redhat.com>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: Check if name is required for present
- osx_defaults:
- domain: NSGlobalDomain
- key: AppleMeasurementUnits
- type: string
- state: present
- register: missing_value
- ignore_errors: yes
-
-- name: Test if state and value are required together
- assert:
- that:
- - "'following are missing: value' in '{{ missing_value['msg'] }}'"
-
-- name: Change value of AppleMeasurementUnits to centimeter in check_mode
- osx_defaults:
- domain: NSGlobalDomain
- key: AppleMeasurementUnits
- type: string
- value: Centimeter
- state: present
- register: measure_task_check_mode
- check_mode: yes
-
-- name: Test if AppleMeasurementUnits value is changed to Centimeters in check_mode
- assert:
- that:
- - measure_task_check_mode.changed
-
-- name: Find the current value of AppleMeasurementUnits
- osx_defaults:
- domain: NSGlobalDomain
- key: AppleMeasurementUnits
- state: list
- register: apple_measure_value
-
-- debug:
- msg: "{{ apple_measure_value['value'] }}"
-
-- set_fact:
- new_value: "Centimeters"
- when: apple_measure_value['value'] == 'Inches' or apple_measure_value['value'] == None
-
-- set_fact:
- new_value: "Inches"
- when: apple_measure_value['value'] == 'Centimeters'
-
-- name: Change value of AppleMeasurementUnits to {{ new_value }}
- osx_defaults:
- domain: NSGlobalDomain
- key: AppleMeasurementUnits
- type: string
- value: "{{ new_value }}"
- state: present
- register: change_value
-
-- name: Test if AppleMeasurementUnits value is changed to {{ new_value }}
- assert:
- that:
- - change_value.changed
-
-- name: Again change value of AppleMeasurementUnits to {{ new_value }}
- osx_defaults:
- domain: NSGlobalDomain
- key: AppleMeasurementUnits
- type: string
- value: "{{ new_value }}"
- state: present
- register: change_value
-
-- name: Again test if AppleMeasurementUnits value is not changed to {{ new_value }}
- assert:
- that:
- - not change_value.changed
-
-- name: Check a fake setting for delete operation
- osx_defaults:
- domain: com.ansible.fake_value
- key: ExampleKeyToRemove
- state: list
- register: list_fake_value
-
-- debug:
- msg: "{{ list_fake_value }}"
-
-- name: Check if fake value is listed
- assert:
- that:
- - not list_fake_value.changed
-
-- name: Create a fake setting for delete operation
- osx_defaults:
- domain: com.ansible.fake_value
- key: ExampleKeyToRemove
- state: present
- value: sample
- register: present_fake_value
-
-- debug:
- msg: "{{ present_fake_value }}"
-
-- name: Check if fake is created
- assert:
- that:
- - present_fake_value.changed
- when: present_fake_value.changed
-
-- name: List a fake setting
- osx_defaults:
- domain: com.ansible.fake_value
- key: ExampleKeyToRemove
- state: list
- register: list_fake
-
-- debug:
- msg: "{{ list_fake }}"
-
-- name: Delete a fake setting
- osx_defaults:
- domain: com.ansible.fake_value
- key: ExampleKeyToRemove
- state: absent
- register: absent_task
-
-- debug:
- msg: "{{ absent_task }}"
-
-- name: Check if fake setting is deleted
- assert:
- that:
- - absent_task.changed
- when: present_fake_value.changed
-
-- name: Try deleting a fake setting again
- osx_defaults:
- domain: com.ansible.fake_value
- key: ExampleKeyToRemove
- state: absent
- register: absent_task
-
-- debug:
- msg: "{{ absent_task }}"
-
-- name: Check if fake setting is not deleted
- assert:
- that:
- - not absent_task.changed
-
-- name: Delete operation in check_mode
- osx_defaults:
- domain: com.ansible.fake_value
- key: ExampleKeyToRemove
- state: absent
- register: absent_check_mode_task
- check_mode: yes
-
-- debug:
- msg: "{{ absent_check_mode_task }}"
-
-- name: Check delete operation with check mode
- assert:
- that:
- - not absent_check_mode_task.changed
-
-
-- name: Use different data types and check if it works with them
- osx_defaults:
- domain: com.ansible.fake_values
- key: "{{ item.key }}"
- type: "{{ item.type }}"
- value: "{{ item.value }}"
- state: present
- with_items: &data_type
- - { type: 'int', value: 1, key: 'sample_int'}
- - { type: 'integer', value: 1, key: 'sample_int_2'}
- - { type: 'bool', value: True, key: 'sample_bool'}
- - { type: 'boolean', value: True, key: 'sample_bool_2'}
- - { type: 'date', value: "2019-02-19 10:10:10", key: 'sample_date'}
- - { type: 'float', value: 1.2, key: 'sample_float'}
- - { type: 'string', value: 'sample', key: 'sample_string'}
- - { type: 'array', value: ['1', '2'], key: 'sample_array'}
- register: test_data_types
-
-- assert:
- that: "{{ item.changed }}"
- with_items: "{{ test_data_types.results }}"
-
-- name: Use different data types and delete them
- osx_defaults:
- domain: com.ansible.fake_values
- key: "{{ item.key }}"
- value: "{{ item.value }}"
- type: "{{ item.type }}"
- state: absent
- with_items: *data_type
- register: test_data_types
-
-- assert:
- that: "{{ item.changed }}"
- with_items: "{{ test_data_types.results }}"
diff --git a/test/integration/targets/pids/aliases b/test/integration/targets/pids/aliases
deleted file mode 100644
index b59832142f..0000000000
--- a/test/integration/targets/pids/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/posix/group3
diff --git a/test/integration/targets/pids/files/obtainpid.sh b/test/integration/targets/pids/files/obtainpid.sh
deleted file mode 100644
index 8e4f4d3766..0000000000
--- a/test/integration/targets/pids/files/obtainpid.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env bash
-"$1" 100 &
-echo "$!" > "$2"
diff --git a/test/integration/targets/pids/tasks/main.yml b/test/integration/targets/pids/tasks/main.yml
deleted file mode 100644
index c7a5963483..0000000000
--- a/test/integration/targets/pids/tasks/main.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# Test code for the pids module
-# Copyright: (c) 2019, Saranya Sridharan
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-- name: "Installing the psutil module"
- pip:
- name: psutil
-
-- name: "Checking the empty result"
- pids:
- name: "blahblah"
- register: emptypids
-
-- name: "Verify that the list of Process IDs (PIDs) returned is empty"
- assert:
- that:
- - emptypids is not changed
- - emptypids.pids == []
-
-- name: "Picking a random process name"
- command: "echo 'some-random-long-name-{{ 99999999 | random }}'"
- register: random_name
-
-- name: "finding the 'sleep' binary"
- command: which sleep
- register: find_sleep
-
-- name: "copying 'sleep' binary"
- copy:
- src: "{{ find_sleep.stdout }}"
- dest: "{{ output_dir }}/{{ random_name.stdout }}"
- mode: "0777"
-
-- name: "Running the copy of 'sleep' binary"
- command: "sh {{ role_path }}/files/obtainpid.sh '{{ output_dir }}/{{ random_name.stdout }}' '{{ output_dir }}/obtainpid.txt'"
-
- async: 100
- poll: 0
-
-- name: "Checking the process IDs (PIDs) of sleep binary"
- pids:
- name: "{{ random_name.stdout }}"
- register: pids
-
-- name: "Checking that exact non-substring matches are required"
- pids:
- name: "{{ random_name.stdout[0:5] }}"
- register: exactpidmatch
-
-- name: "Reading pid from the file"
- slurp:
- src: "{{ output_dir }}/obtainpid.txt"
- register: newpid
-
-- name: "Verify that the Process IDs (PIDs) returned is not empty and also equal to the PIDs obtained in console"
- assert:
- that:
- - "pids.pids | join(' ') == newpid.content | b64decode | trim"
- - "pids.pids | length > 0"
- - "exactpidmatch.pids == []"
diff --git a/test/integration/targets/postgresql_copy/aliases b/test/integration/targets/postgresql_copy/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_copy/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_copy/meta/main.yml b/test/integration/targets/postgresql_copy/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_copy/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_copy/tasks/main.yml b/test/integration/targets/postgresql_copy/tasks/main.yml
deleted file mode 100644
index c32a3dfaf6..0000000000
--- a/test/integration/targets/postgresql_copy/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-# Initial CI tests of postgresql_copy module
-- import_tasks: postgresql_copy_initial.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_copy/tasks/postgresql_copy_initial.yml b/test/integration/targets/postgresql_copy/tasks/postgresql_copy_initial.yml
deleted file mode 100644
index 62ab605143..0000000000
--- a/test/integration/targets/postgresql_copy/tasks/postgresql_copy_initial.yml
+++ /dev/null
@@ -1,255 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# The file for testing postgresql_copy module.
-
-- vars:
- test_table: acme
- data_file_txt: /tmp/data.txt
- data_file_csv: /tmp/data.csv
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: postgres
-
- block:
- # Test preparation:
- - name: postgresql_copy - create test table
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ test_table }}'
- columns:
- - id int
- - name text
-
- # Insert the data:
- - name: postgresql_copy - insert rows into test table
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "INSERT INTO {{ test_table }} (id, name) VALUES (1, 'first')"
-
- - name: postgresql_copy - ensure that test data files don't exist
- <<: *task_parameters
- file:
- path: '{{ item }}'
- state: absent
- with_items:
- - '{{ data_file_csv }}'
- - '{{ data_file_txt }}'
-
- # ##############
- # Do main tests:
-
- # check_mode - if it's OK, must always return changed=True:
- - name: postgresql_copy - check_mode, copy test table content to data_file_txt
- check_mode: yes
- <<: *task_parameters
- postgresql_copy:
- <<: *pg_parameters
- copy_to: '{{ data_file_txt }}'
- src: '{{ test_table }}'
-
- - assert:
- that:
- - result is changed
-
- # check that nothing changed after the previous step:
- - name: postgresql_copy - check that data_file_txt doesn't exist
- <<: *task_parameters
- ignore_errors: yes
- shell: head -n 1 '{{ data_file_txt }}'
-
- - assert:
- that:
- - result.failed == true
- - result.rc == 1
-
- # check_mode - if it's OK, must always return changed=True:
- - name: postgresql_copy - check_mode, copy test table content from data_file_txt
- check_mode: yes
- <<: *task_parameters
- postgresql_copy:
- <<: *pg_parameters
- copy_from: '{{ data_file_txt }}'
- dst: '{{ test_table }}'
-
- - assert:
- that:
- - result is changed
-
- # check that nothing changed after the previous step:
- - name: postgresql_copy - check that test table continue to have one row
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: 'SELECT * FROM {{ test_table }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # check_mode - test must fail because test table doesn't exist:
- - name: postgresql_copy - check_mode, copy non existent table to data_file_txt
- check_mode: yes
- ignore_errors: yes
- <<: *task_parameters
- postgresql_copy:
- <<: *pg_parameters
- copy_to: '{{ data_file_txt }}'
- src: non_existent_table
-
- - assert:
- that:
- - result.failed == true
- - result.queries is not defined
-
- - name: postgresql_copy - copy test table data to data_file_txt
- <<: *task_parameters
- postgresql_copy:
- <<: *pg_parameters
- copy_to: '{{ data_file_txt }}'
- src: '{{ test_table }}'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["COPY \"{{ test_table }}\" TO '{{ data_file_txt }}'"]
- - result.src == '{{ test_table }}'
- - result.dst == '{{ data_file_txt }}'
-
- # check the prev test
- - name: postgresql_copy - check data_file_txt exists and not empty
- <<: *task_parameters
- shell: 'head -n 1 {{ data_file_txt }}'
-
- - assert:
- that:
- - result.stdout == '1\tfirst'
-
- # test different options and columns
- - name: postgresql_copy - copy test table data to data_file_csv with options and columns
- <<: *task_parameters
- postgresql_copy:
- <<: *pg_parameters
- copy_to: '{{ data_file_csv }}'
- src: '{{ test_table }}'
- columns:
- - id
- - name
- options:
- format: csv
-
- - assert:
- that:
- - result is changed
- - result.queries == ["COPY \"{{ test_table }}\" (id,name) TO '{{ data_file_csv }}' (format csv)"]
- - result.src == '{{ test_table }}'
- - result.dst == '{{ data_file_csv }}'
-
- # check the prev test
- - name: postgresql_copy - check data_file_csv exists and not empty
- <<: *task_parameters
- shell: 'head -n 1 {{ data_file_csv }}'
-
- - assert:
- that:
- - result.stdout == '1,first'
-
- - name: postgresql_copy - copy from data_file_csv to test table
- <<: *task_parameters
- postgresql_copy:
- <<: *pg_parameters
- copy_from: '{{ data_file_csv }}'
- dst: '{{ test_table }}'
- columns:
- - id
- - name
- options:
- format: csv
-
- - assert:
- that:
- - result is changed
- - result.queries == ["COPY \"{{ test_table }}\" (id,name) FROM '{{ data_file_csv }}' (format csv)"]
- - result.dst == '{{ test_table }}'
- - result.src == '{{ data_file_csv }}'
-
- - name: postgresql_copy - check that there are two rows in test table after the prev step
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT * FROM {{ test_table }} WHERE id = '1' AND name = 'first'"
-
- - assert:
- that:
- - result.rowcount == 2
-
- - name: postgresql_copy - test program option, copy to program
- <<: *task_parameters
- postgresql_copy:
- <<: *pg_parameters
- src: '{{ test_table }}'
- copy_to: '/bin/true'
- program: yes
- columns: id, name
- options:
- delimiter: '|'
- when: ansible_distribution != 'FreeBSD'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["COPY \"{{ test_table }}\" (id, name) TO PROGRAM '/bin/true' (delimiter '|')"]
- - result.src == '{{ test_table }}'
- - result.dst == '/bin/true'
- when: ansible_distribution != 'FreeBSD'
-
- - name: postgresql_copy - test program option, copy from program
- <<: *task_parameters
- postgresql_copy:
- <<: *pg_parameters
- dst: '{{ test_table }}'
- copy_from: 'echo 1,first'
- program: yes
- columns: id, name
- options:
- delimiter: ','
-
- - assert:
- that:
- - result is changed
- - result.queries == ["COPY \"{{ test_table }}\" (id, name) FROM PROGRAM 'echo 1,first' (delimiter ',')"]
- - result.dst == '{{ test_table }}'
- - result.src == 'echo 1,first'
- when: ansible_distribution != 'FreeBSD'
-
- - name: postgresql_copy - check that there are three rows in test table after the prev step
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT * FROM {{ test_table }} WHERE id = '1' AND name = 'first'"
-
- - assert:
- that:
- - result.rowcount == 3
-
- # clean up
- - name: postgresql_copy - remove test table
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ test_table }}'
- state: absent
-
- - name: postgresql_copy - remove test data files
- <<: *task_parameters
- file:
- path: '{{ item }}'
- state: absent
- with_items:
- - '{{ data_file_csv }}'
- - '{{ data_file_txt }}'
diff --git a/test/integration/targets/postgresql_db/aliases b/test/integration/targets/postgresql_db/aliases
deleted file mode 100644
index f0248454dd..0000000000
--- a/test/integration/targets/postgresql_db/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-destructive
-shippable/posix/group4
-postgresql_db
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_db/defaults/main.yml b/test/integration/targets/postgresql_db/defaults/main.yml
deleted file mode 100644
index 0b079b61cd..0000000000
--- a/test/integration/targets/postgresql_db/defaults/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-db_name: 'ansible_db'
-db_user1: 'ansible.db.user1'
-db_user2: 'ansible.db.user2'
-tmp_dir: '/tmp'
-db_session_role1: 'session_role1'
-db_session_role2: 'session_role2'
diff --git a/test/integration/targets/postgresql_db/meta/main.yml b/test/integration/targets/postgresql_db/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_db/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_db/tasks/main.yml b/test/integration/targets/postgresql_db/tasks/main.yml
deleted file mode 100644
index 9c61cdc1f7..0000000000
--- a/test/integration/targets/postgresql_db/tasks/main.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-- import_tasks: postgresql_db_session_role.yml
-
-# Initial tests of postgresql_db module:
-- import_tasks: postgresql_db_initial.yml
-
-# General tests:
-- import_tasks: postgresql_db_general.yml
-
-# Dump/restore tests per format:
-- include_tasks: state_dump_restore.yml
- vars:
- test_fixture: user
- file: '{{ loop_item }}'
- loop:
- - dbdata.sql
- - dbdata.sql.gz
- - dbdata.sql.bz2
- - dbdata.sql.xz
- - dbdata.tar
- - dbdata.tar.gz
- - dbdata.tar.bz2
- - dbdata.tar.xz
- - dbdata.pgc
- loop_control:
- loop_var: loop_item
-
-# Dump/restore tests per other logins:
-- import_tasks: state_dump_restore.yml
- vars:
- file: dbdata.tar
- test_fixture: admin
diff --git a/test/integration/targets/postgresql_db/tasks/postgresql_db_general.yml b/test/integration/targets/postgresql_db/tasks/postgresql_db_general.yml
deleted file mode 100644
index 0733808d91..0000000000
--- a/test/integration/targets/postgresql_db/tasks/postgresql_db_general.yml
+++ /dev/null
@@ -1,194 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# The file for testing new options for postgresql_db module.
-
-- vars:
- db_tablespace: bar
- tblspc_location: /ssd
- db_name: acme
- block_parameters: &block_parameters
- become_user: "{{ pg_user }}"
- become: yes
- task_parameters: &task_parameters
- register: result
- pg_parameters: &pg_parameters
- login_user: "{{ pg_user }}"
-
- # Start tablespace option tests:
- block:
- # Preparation for tests.
- - name: postgresql_db - drop dir for test tablespace
- become: yes
- become_user: root
- file:
- path: "{{ tblspc_location }}"
- state: absent
- ignore_errors: yes
-
- - name: postgresql_db - disable selinux
- become: yes
- become_user: root
- shell: setenforce 0
- ignore_errors: yes
-
- - name: postgresql_db - create dir for test tablespace
- become: yes
- become_user: root
- file:
- path: "{{ tblspc_location }}"
- state: directory
- owner: "{{ pg_user }}"
- group: "{{ pg_user }}"
- mode: 0700
-
- # Create tablespace:
- - name: postgresql_db_ - create a new tablespace
- postgresql_tablespace:
- <<: *pg_parameters
- login_db: postgres
- name: "{{ db_tablespace }}"
- location: "{{ tblspc_location }}"
-
- # Check mode for DB creation with tablespace option:
- - name: postgresql_db_tablespace - Create DB with tablespace option in check mode
- <<: *task_parameters
- check_mode: yes
- postgresql_db:
- <<: *pg_parameters
- maintenance_db: postgres
- name: "{{ db_name }}"
- tablespace: "{{ db_tablespace }}"
-
- - assert:
- that:
- - result is changed
-
- - name: postgresql_db_tablespace - Check actual DB tablespace, rowcount must be 0 because actually nothing changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_db: postgres
- query: >
- SELECT 1 FROM pg_database AS d JOIN pg_tablespace AS t
- ON d.dattablespace = t.oid WHERE d.datname = '{{ db_name }}'
- AND t.spcname = '{{ db_tablespace }}'
-
- - assert:
- that:
- - result.rowcount == 0
-
- # Actual mode for creation with tablespace option:
- - name: postgresql_db_tablespace - Create DB with tablespace option
- <<: *task_parameters
- postgresql_db:
- <<: *pg_parameters
- maintenance_db: postgres
- name: "{{ db_name }}"
- tablespace: "{{ db_tablespace }}"
-
- - assert:
- that:
- - result is changed
- - result.executed_commands == ['CREATE DATABASE "{{ db_name }}" TABLESPACE "{{ db_tablespace }}"']
-
- - name: postgresql_db_tablespace - Check actual DB tablespace, rowcount must be 1
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_db: postgres
- query: >
- SELECT 1 FROM pg_database AS d JOIN pg_tablespace AS t
- ON d.dattablespace = t.oid WHERE d.datname = '{{ db_name }}'
- AND t.spcname = '{{ db_tablespace }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Try to change tablespace to the same:
- - name: postgresql_db_tablespace - The same DB with tablespace option again
- <<: *task_parameters
- postgresql_db:
- <<: *pg_parameters
- maintenance_db: postgres
- name: "{{ db_name }}"
- tablespace: "{{ db_tablespace }}"
-
- - assert:
- that:
- - result is not changed
-
- # Try to change tablespace in check_mode:
- - name: postgresql_db_tablespace - Change tablespace in check_mode
- <<: *task_parameters
- check_mode: yes
- postgresql_db:
- <<: *pg_parameters
- maintenance_db: postgres
- name: "{{ db_name }}"
- tablespace: pg_default
-
- - assert:
- that:
- - result is changed
-
- - name: postgresql_db_tablespace - Check actual DB tablespace, rowcount must be 1 because actually nothing changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_db: postgres
- query: >
- SELECT 1 FROM pg_database AS d JOIN pg_tablespace AS t
- ON d.dattablespace = t.oid WHERE d.datname = '{{ db_name }}'
- AND t.spcname = '{{ db_tablespace }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Try to change tablespace to pg_default in actual mode:
- - name: postgresql_db_tablespace - Change tablespace in actual mode
- <<: *task_parameters
- postgresql_db:
- <<: *pg_parameters
- maintenance_db: postgres
- name: "{{ db_name }}"
- tablespace: pg_default
-
- - assert:
- that:
- - result is changed
-
- - name: postgresql_db_tablespace - Check actual DB tablespace, rowcount must be 1
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_db: postgres
- query: >
- SELECT 1 FROM pg_database AS d JOIN pg_tablespace AS t
- ON d.dattablespace = t.oid WHERE d.datname = '{{ db_name }}'
- AND t.spcname = 'pg_default'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Cleanup:
- - name: postgresql_db_tablespace - Drop test DB
- <<: *task_parameters
- postgresql_db:
- <<: *pg_parameters
- maintenance_db: postgres
- name: "{{ db_name }}"
- state: absent
-
- - name: postgresql_db_tablespace - Remove tablespace
- <<: *task_parameters
- postgresql_tablespace:
- <<: *pg_parameters
- login_db: postgres
- name: "{{ db_tablespace }}"
- state: absent
-
- <<: *block_parameters
- # End of tablespace block
diff --git a/test/integration/targets/postgresql_db/tasks/postgresql_db_initial.yml b/test/integration/targets/postgresql_db/tasks/postgresql_db_initial.yml
deleted file mode 100644
index 851c19f4fc..0000000000
--- a/test/integration/targets/postgresql_db/tasks/postgresql_db_initial.yml
+++ /dev/null
@@ -1,366 +0,0 @@
-#
-# Create and destroy db
-#
-- name: Create DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- name: assert that module reports the db was created
- assert:
- that:
- - result is changed
- - result.db == "{{ db_name }}"
- - result.executed_commands == ['CREATE DATABASE "{{ db_name }}"']
-
-- name: Check that database created
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select datname from pg_database where datname = '{{ db_name }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
-
-- name: Run create on an already created db
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- name: assert that module reports the db was unchanged
- assert:
- that:
- - result is not changed
-
-- name: Destroy DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: absent
- name: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- name: assert that module reports the db was changed
- assert:
- that:
- - result is changed
- - result.executed_commands == ['DROP DATABASE "{{ db_name }}"']
-
-- name: Check that database was destroyed
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select datname from pg_database where datname = '{{ db_name }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
-
-- name: Destroy DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: absent
- name: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- name: assert that removing an already removed db makes no change
- assert:
- that:
- - result is not changed
-
-
-# This corner case works to add but not to drop. This is sufficiently crazy
-# that I'm not going to attempt to fix it unless someone lets me know that they
-# need the functionality
-#
-# - postgresql_db:
-# state: 'present'
-# name: '"silly.""name"'
-# - shell: echo "select datname from pg_database where datname = 'silly.""name';" | psql
-# register: result
-#
-# - assert:
-# that: "result.stdout_lines[-1] == '(1 row)'"
-# - postgresql_db:
-# state: absent
-# name: '"silly.""name"'
-# - shell: echo "select datname from pg_database where datname = 'silly.""name';" | psql
-# register: result
-#
-# - assert:
-# that: "result.stdout_lines[-1] == '(0 rows)'"
-
-#
-# Test conn_limit, encoding, collate, ctype, template options
-#
-- name: Create a DB with conn_limit, encoding, collate, ctype, and template options
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: '{{ db_name }}'
- state: 'present'
- conn_limit: '100'
- encoding: 'LATIN1'
- lc_collate: 'pt_BR{{ locale_latin_suffix }}'
- lc_ctype: 'es_ES{{ locale_latin_suffix }}'
- template: 'template0'
- login_user: "{{ pg_user }}"
- register: result
-
-- assert:
- that:
- - result is changed
- - result.executed_commands == ["CREATE DATABASE \"{{ db_name }}\" TEMPLATE \"template0\" ENCODING 'LATIN1' LC_COLLATE 'pt_BR{{ locale_latin_suffix }}' LC_CTYPE 'es_ES{{ locale_latin_suffix }}' CONNECTION LIMIT 100"] or result.executed_commands == ["CREATE DATABASE \"{{ db_name }}\" TEMPLATE \"template0\" ENCODING E'LATIN1' LC_COLLATE E'pt_BR{{ locale_latin_suffix }}' LC_CTYPE E'es_ES{{ locale_latin_suffix }}' CONNECTION LIMIT 100"]
-
-- name: Check that the DB has all of our options
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select datname, datconnlimit, pg_encoding_to_char(encoding), datcollate, datctype from pg_database where datname = '{{ db_name }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
- - "'LATIN1' in result.stdout_lines[-2]"
- - "'pt_BR' in result.stdout_lines[-2]"
- - "'es_ES' in result.stdout_lines[-2]"
- - "'UTF8' not in result.stdout_lines[-2]"
- - "'en_US' not in result.stdout_lines[-2]"
- - "'100' in result.stdout_lines[-2]"
-
-- name: Check that running db creation with options a second time does nothing
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: '{{ db_name }}'
- state: 'present'
- conn_limit: '100'
- encoding: 'LATIN1'
- lc_collate: 'pt_BR{{ locale_latin_suffix }}'
- lc_ctype: 'es_ES{{ locale_latin_suffix }}'
- template: 'template0'
- login_user: "{{ pg_user }}"
- register: result
-
-- assert:
- that:
- - result is not changed
-
-
-- name: Check that attempting to change encoding returns an error
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: '{{ db_name }}'
- state: 'present'
- encoding: 'UTF8'
- lc_collate: 'pt_BR{{ locale_utf8_suffix }}'
- lc_ctype: 'es_ES{{ locale_utf8_suffix }}'
- template: 'template0'
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is failed
-
-- name: Check that changing the conn_limit actually works
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: '{{ db_name }}'
- state: 'present'
- conn_limit: '200'
- encoding: 'LATIN1'
- lc_collate: 'pt_BR{{ locale_latin_suffix }}'
- lc_ctype: 'es_ES{{ locale_latin_suffix }}'
- template: 'template0'
- login_user: "{{ pg_user }}"
- register: result
-
-- assert:
- that:
- - result is changed
- - result.executed_commands == ['ALTER DATABASE "{{ db_name }}" CONNECTION LIMIT 200']
-
-- name: Check that conn_limit has actually been set / updated to 200
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "SELECT datconnlimit AS conn_limit FROM pg_database WHERE datname = '{{ db_name }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
- - "'200' == '{{ result.stdout_lines[-2] | trim }}'"
-
-- name: Cleanup test DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: '{{ db_name }}'
- state: 'absent'
- login_user: "{{ pg_user }}"
-
-- shell: echo "select datname, pg_encoding_to_char(encoding), datcollate, datctype from pg_database where datname = '{{ db_name }}';" | psql -d postgres
- become_user: "{{ pg_user }}"
- become: yes
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
-
-#
-# Test db ownership
-#
-- name: Create an unprivileged user to own a DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ item }}"
- encrypted: 'yes'
- password: "md55c8ccfd9d6711fc69a7eae647fc54f51"
- login_user: "{{ pg_user }}"
- db: postgres
- loop:
- - "{{ db_user1 }}"
- - "{{ db_user2 }}"
-
-- name: Create db with user ownership
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: "{{ db_name }}"
- state: "present"
- owner: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- assert:
- that:
- - result is changed
- - result.executed_commands == ['CREATE DATABASE "{{ db_name }}" OWNER "{{ db_user1 }}"']
-
-- name: Check that the user owns the newly created DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: >
- SELECT 1 FROM pg_catalog.pg_database
- WHERE datname = '{{ db_name }}'
- AND pg_catalog.pg_get_userbyid(datdba) = '{{ db_user1 }}'
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-- name: Change the owner on an existing db, username with dots
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: "{{ db_name }}"
- state: "present"
- owner: "{{ db_user2 }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- assert:
- that:
- - result is changed
- - result.executed_commands == ['ALTER DATABASE "{{ db_name }}" OWNER TO "{{ db_user2 }}"']
-
-- name: Check the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: >
- SELECT 1 FROM pg_catalog.pg_database
- WHERE datname = '{{ db_name }}'
- AND pg_catalog.pg_get_userbyid(datdba) = '{{ db_user2 }}'
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-- name: Change the owner on an existing db
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: "{{ db_name }}"
- state: "present"
- owner: "{{ pg_user }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- name: assert that ansible says it changed the db
- assert:
- that:
- - result is changed
-
-- name: Check that the user owns the newly created DB
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select pg_catalog.pg_get_userbyid(datdba) from pg_catalog.pg_database where datname = '{{ db_name }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
- - "'{{ pg_user }}' == '{{ result.stdout_lines[-2] | trim }}'"
-
-- name: Cleanup db
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: "{{ db_name }}"
- state: "absent"
- login_user: "{{ pg_user }}"
-
-- name: Check that database was destroyed
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select datname from pg_database where datname = '{{ db_name }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
-
-- name: Cleanup test user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user1 }}"
- state: 'absent'
- login_user: "{{ pg_user }}"
- db: postgres
-
-- name: Check that they were removed
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select * from pg_user where usename='{{ db_user1 }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
diff --git a/test/integration/targets/postgresql_db/tasks/postgresql_db_session_role.yml b/test/integration/targets/postgresql_db/tasks/postgresql_db_session_role.yml
deleted file mode 100644
index 4cdef73f00..0000000000
--- a/test/integration/targets/postgresql_db/tasks/postgresql_db_session_role.yml
+++ /dev/null
@@ -1,80 +0,0 @@
-- name: Check that becoming an non-existing user throws an error
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: must_fail
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role1 }}"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is failed
-
-- name: Create a high privileged user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_session_role1 }}"
- state: "present"
- password: "password"
- role_attr_flags: "CREATEDB,LOGIN,CREATEROLE"
- login_user: "{{ pg_user }}"
- db: postgres
-
-- name: Create a low privileged user using the newly created user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_session_role2 }}"
- state: "present"
- password: "password"
- role_attr_flags: "LOGIN"
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role1 }}"
- db: postgres
-
-- name: Create DB as session_role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role1 }}"
- register: result
-
-- name: Check that database created and is owned by correct user
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select rolname from pg_database join pg_roles on datdba = pg_roles.oid where datname = '{{ db_session_role1 }}';" | psql -AtXq postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '{{ db_session_role1 }}'"
-
-- name: Fail when creating database as low privileged user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_session_role2 }}"
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role2 }}"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is failed
-
-- name: Drop test db
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: absent
- name: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
diff --git a/test/integration/targets/postgresql_db/tasks/state_dump_restore.yml b/test/integration/targets/postgresql_db/tasks/state_dump_restore.yml
deleted file mode 100644
index 4cc86cce31..0000000000
--- a/test/integration/targets/postgresql_db/tasks/state_dump_restore.yml
+++ /dev/null
@@ -1,164 +0,0 @@
-# test code for state dump and restore for postgresql_db module
-# copied from mysql_db/tasks/state_dump_import.yml
-# (c) 2014, Wayne Rosario <wrosario@ansible.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-
-- name: Create a test user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_user1 }}"
- state: "present"
- encrypted: 'yes'
- password: "password"
- role_attr_flags: "CREATEDB,LOGIN,CREATEROLE"
- login_user: "{{ pg_user }}"
- db: postgres
-
-- set_fact: db_file_name="{{tmp_dir}}/{{file}}"
-
-- set_fact:
- admin_str: "psql -U {{ pg_user }}"
-
-- set_fact:
- user_str: "env PGPASSWORD=password psql -h localhost -U {{ db_user1 }} {{ db_name }}"
- when: test_fixture == "user"
- # "-n public" is required to work around pg_restore issues with plpgsql
-
-- set_fact:
- user_str: "psql -U {{ pg_user }} {{ db_name }}"
- when: test_fixture == "admin"
-
-
-
-- set_fact:
- sql_create: "create table employee(id int, name varchar(100));"
- sql_insert: "insert into employee values (47,'Joe Smith');"
- sql_select: "select * from employee;"
-
-- name: state dump/restore - create database
- postgresql_db:
- state: present
- name: "{{ db_name }}"
- owner: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
-
-- name: state dump/restore - create table employee
- command: '{{ user_str }} -c "{{ sql_create }}"'
-
-- name: state dump/restore - insert data into table employee
- command: '{{ user_str }} -c "{{ sql_insert }}"'
-
-- name: state dump/restore - file name should not exist
- file: name={{ db_file_name }} state=absent
-
-- name: test state=dump to backup the database (expect changed=true)
- postgresql_db:
- name: "{{ db_name }}"
- target: "{{ db_file_name }}"
- owner: "{{ db_user1 }}"
- login_user: '{{(test_fixture == "user")|ternary(db_user1, pg_user)}}'
- target_opts: '{{(test_fixture == "user")|ternary("-n public", omit)}}'
- login_host: '{{(test_fixture == "user")|ternary("localhost", omit)}}'
- login_password: '{{(test_fixture == "user")|ternary("password", omit)}}'
- state: dump
- dump_extra_args: --exclude-table=fake
- register: result
- become_user: "{{ pg_user }}"
- become: yes
-
-- name: assert output message backup the database
- assert:
- that:
- - result is changed
- - result.executed_commands[0] is search("--exclude-table=fake")
-
-- name: assert database was backed up successfully
- command: file {{ db_file_name }}
- register: result
-
-- name: state dump/restore - remove database for restore
- postgresql_db:
- name: "{{ db_name }}"
- target: "{{ db_file_name }}"
- owner: "{{ db_user1 }}"
- login_user: '{{(test_fixture == "user")|ternary(db_user1, pg_user)}}'
- target_opts: '{{(test_fixture == "user")|ternary("-n public", omit)}}'
- login_host: '{{(test_fixture == "user")|ternary("localhost", omit)}}'
- login_password: '{{(test_fixture == "user")|ternary("password", omit)}}'
- state: absent
-
-- name: state dump/restore - re-create database
- postgresql_db:
- state: present
- name: "{{ db_name }}"
- owner: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
-
-- name: test state=restore to restore the database (expect changed=true)
- postgresql_db:
- name: "{{ db_name }}"
- target: "{{ db_file_name }}"
- owner: "{{ db_user1 }}"
- login_user: '{{(test_fixture == "user")|ternary(db_user1, pg_user)}}'
- target_opts: '{{(test_fixture == "user")|ternary("-n public", omit)}}'
- login_host: '{{(test_fixture == "user")|ternary("localhost", omit)}}'
- login_password: '{{(test_fixture == "user")|ternary("password", omit)}}'
- state: restore
- register: result
- become_user: "{{ pg_user }}"
- become: yes
-
-- name: assert output message restore the database
- assert:
- that:
- - result is changed
-
-- name: select data from table employee
- command: '{{ user_str }} -c "{{ sql_select }}"'
- register: result
-
-- name: assert data in database is from the restore database
- assert:
- that:
- - "'47' in result.stdout"
- - "'Joe Smith' in result.stdout"
-
-- name: state dump/restore - remove database name
- postgresql_db:
- name: "{{ db_name }}"
- target: "{{ db_file_name }}"
- owner: "{{ db_user1 }}"
- login_user: '{{(test_fixture == "user")|ternary(db_user1, pg_user)}}'
- target_opts: '{{(test_fixture == "user")|ternary("-n public", omit)}}'
- login_host: '{{(test_fixture == "user")|ternary("localhost", omit)}}'
- login_password: '{{(test_fixture == "user")|ternary("password", omit)}}'
- state: absent
-
-- name: remove file name
- file: name={{ db_file_name }} state=absent
-
-- name: Remove the test user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_user1 }}"
- state: "absent"
- login_user: "{{ pg_user }}"
- db: postgres
diff --git a/test/integration/targets/postgresql_ext/aliases b/test/integration/targets/postgresql_ext/aliases
deleted file mode 100644
index f2df32c48a..0000000000
--- a/test/integration/targets/postgresql_ext/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
-skip/freebsd
diff --git a/test/integration/targets/postgresql_ext/defaults/main.yml b/test/integration/targets/postgresql_ext/defaults/main.yml
deleted file mode 100644
index 05bac61d45..0000000000
--- a/test/integration/targets/postgresql_ext/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-db_session_role1: 'session_role1'
-db_session_role2: 'session_role2'
diff --git a/test/integration/targets/postgresql_ext/meta/main.yml b/test/integration/targets/postgresql_ext/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_ext/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_ext/tasks/main.yml b/test/integration/targets/postgresql_ext/tasks/main.yml
deleted file mode 100644
index b91c341347..0000000000
--- a/test/integration/targets/postgresql_ext/tasks/main.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-- import_tasks: postgresql_ext_session_role.yml
-
-# Initial CI tests of postgresql_ext module.
-# pg_extension system view is available from PG 9.1.
-# The tests are restricted by Fedora because there will be errors related with
-# attempts to change the environment during postgis installation or
-# missing postgis package in repositories.
-# Anyway, these tests completely depend on Postgres version,
-# not specific distributions.
-- import_tasks: postgresql_ext_initial.yml
- when:
- - postgres_version_resp.stdout is version('9.1', '>=')
- - ansible_distribution == 'Fedora'
-
-# CI tests of "version" option.
-# It uses a mock extension, see test/integration/targets/setup_postgresql_db/.
-# TODO: change postgresql_ext_initial.yml to use the mock extension too.
-- import_tasks: postgresql_ext_version_opt.yml
- when:
- - ansible_distribution == 'Ubuntu'
- - postgres_version_resp.stdout is version('9.1', '>=')
diff --git a/test/integration/targets/postgresql_ext/tasks/postgresql_ext_initial.yml b/test/integration/targets/postgresql_ext/tasks/postgresql_ext_initial.yml
deleted file mode 100644
index 5c8492e0aa..0000000000
--- a/test/integration/targets/postgresql_ext/tasks/postgresql_ext_initial.yml
+++ /dev/null
@@ -1,227 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Create test schema:
-- name: postgresql_ext - install postgis
- package: name=postgis state=present
- when: ansible_os_family != "Windows"
-
-- name: postgresql_ext - install postgis RedHat
- win_package: name=postgis state=present
- when: ansible_os_family == "Windows"
-
-- name: postgresql_ext - create schema schema1
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: postgres
- name: schema1
- state: present
-
-- name: postgresql_ext - drop extension if exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- query: "DROP EXTENSION IF EXISTS postgis"
- ignore_errors: yes
-
-##############
-# Start tests:
-
-# Create extension in check_mode, also check aliases for db and port params:
-- name: postgresql_ext - create extension postgis in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- login_db: postgres
- login_port: 5432
- name: postgis
- check_mode: yes
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == []
-
-# Check that extension doesn't exist after the previous step, rowcount must be 0
-- name: postgresql_ext - check that extension doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- query: "SELECT extname FROM pg_extension WHERE extname='postgis'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Create extension postgis, also check aliases for db and port params
-- name: postgresql_ext - create extension postgis
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- login_db: postgres
- login_port: 5432
- name: postgis
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['CREATE EXTENSION "postgis"']
-
-# Check that extension exists after the previous step, rowcount must be 1
-- name: postgresql_ext - check that extension exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- query: "SELECT extname FROM pg_extension WHERE extname='postgis'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Drop extension postgis:
-- name: postgresql_ext - drop extension postgis
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- db: postgres
- name: postgis
- state: absent
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['DROP EXTENSION "postgis"']
-
-# Check that extension doesn't exist after the previous step, rowcount must be 0
-- name: postgresql_ext - check that extension doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- query: "SELECT extname FROM pg_extension WHERE extname='postgis'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Create extension postgis in particular schema
-- name: postgresql_ext - create extension postgis
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- db: postgres
- name: postgis
- schema: schema1
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['CREATE EXTENSION "postgis" WITH SCHEMA "schema1"']
-
-# Check that extension exists after the previous step, rowcount must be 1
-- name: postgresql_ext - check that extension exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- query: |
- SELECT extname FROM pg_extension AS e LEFT JOIN pg_catalog.pg_namespace AS n
- ON n.oid = e.extnamespace WHERE e.extname='postgis' AND n.nspname='schema1'
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-#
-# Check cascade option. For creation it's available from PG 9.6.
-# I couldn't check it for two or more extension in one time
-# because most of the common extensions are available in postgresql-contrib package
-# that tries to change the default python interpreter and fails during tests respectively.
-# Anyway, that's enough to be sure that the proper SQL was executed.
-#
-
-# Drop extension cascade
-- name: postgresql_ext - drop extension postgis cascade
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- db: postgres
- name: postgis
- state: absent
- cascade: yes
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['DROP EXTENSION "postgis" CASCADE']
-
-# Check that extension doesn't exist after the previous step, rowcount must be 0
-- name: postgresql_ext - check that extension doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- query: "SELECT extname FROM pg_extension WHERE extname='postgis'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Create extension postgis cascade.
-# CASCADE for CREATE command is available from PG 9.6
-- name: postgresql_ext - create extension postgis cascade
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- db: postgres
- name: postgis
- cascade: yes
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.6', '<=')
-
-- assert:
- that:
- - result is changed
- - result.queries == ['CREATE EXTENSION "postgis" CASCADE"']
- when: postgres_version_resp.stdout is version('9.6', '<=')
-
-# Check that extension exists after the previous step, rowcount must be 1
-- name: postgresql_ext - check that extension exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- query: "SELECT extname FROM pg_extension WHERE extname='postgis'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.6', '<=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('9.6', '<=')
diff --git a/test/integration/targets/postgresql_ext/tasks/postgresql_ext_session_role.yml b/test/integration/targets/postgresql_ext/tasks/postgresql_ext_session_role.yml
deleted file mode 100644
index a23f6aee40..0000000000
--- a/test/integration/targets/postgresql_ext/tasks/postgresql_ext_session_role.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-- name: Create a high privileged user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_session_role1 }}"
- state: "present"
- password: "password"
- role_attr_flags: "CREATEDB,LOGIN,CREATEROLE"
- login_user: "{{ pg_user }}"
- db: postgres
-
-- name: Create DB as session_role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role1 }}"
- register: result
-
-- name: Check that pg_extension exists (PostgreSQL >= 9.1)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select count(*) from pg_class where relname='pg_extension' and relkind='r'" | psql -AtXq postgres
- register: pg_extension
-
-- name: Remove plpgsql from testdb using postgresql_ext
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- name: plpgsql
- db: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- state: absent
- when:
- "pg_extension.stdout_lines[-1] == '1'"
-
-- name: Fail when trying to create an extension as a mere mortal user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- name: plpgsql
- db: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role2 }}"
- ignore_errors: yes
- register: result
- when:
- "pg_extension.stdout_lines[-1] == '1'"
-
-- assert:
- that:
- - result is failed
- when:
- "pg_extension.stdout_lines[-1] == '1'"
-
-- name: Install extension as session_role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- name: plpgsql
- db: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role1 }}"
- when:
- "pg_extension.stdout_lines[-1] == '1'"
-
-- name: Check that extension is created and is owned by session_role
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select rolname from pg_extension join pg_roles on extowner=pg_roles.oid where extname='plpgsql';" | psql -AtXq "{{ db_session_role1 }}"
- register: result
- when:
- "pg_extension.stdout_lines[-1] == '1'"
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '{{ db_session_role1 }}'"
- when:
- "pg_extension.stdout_lines[-1] == '1'"
-
-- name: Remove plpgsql from testdb using postgresql_ext
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ext:
- name: plpgsql
- db: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- state: absent
- when:
- "pg_extension.stdout_lines[-1] == '1'"
-
-- name: Drop test db
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: absent
- name: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
-
-- name: Drop test users
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ item }}"
- state: absent
- login_user: "{{ pg_user }}"
- db: postgres
- with_items:
- - "{{ db_session_role1 }}"
- - "{{ db_session_role2 }}"
diff --git a/test/integration/targets/postgresql_ext/tasks/postgresql_ext_version_opt.yml b/test/integration/targets/postgresql_ext/tasks/postgresql_ext_version_opt.yml
deleted file mode 100644
index d2beac6708..0000000000
--- a/test/integration/targets/postgresql_ext/tasks/postgresql_ext_version_opt.yml
+++ /dev/null
@@ -1,331 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# Tests for postgresql_ext version option
-
-- vars:
- test_ext: dummy
- test_schema: schema1
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: postgres
-
- block:
- # Preparation:
- - name: postgresql_ext_version - create schema schema1
- <<: *task_parameters
- postgresql_schema:
- <<: *pg_parameters
- name: "{{ test_schema }}"
-
- # Do tests:
- - name: postgresql_ext_version - create extension of specific version, check mode
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
- version: '1.0'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
-
- - name: postgresql_ext_version - check that nothing was actually changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}'"
-
- - assert:
- that:
- - result.rowcount == 0
-
- - name: postgresql_ext_version - create extension of specific version
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
- version: '1.0'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["CREATE EXTENSION \"{{ test_ext }}\" WITH SCHEMA \"{{ test_schema }}\" VERSION '1.0'"]
-
- - name: postgresql_ext_version - check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}' AND extversion = '1.0'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: postgresql_ext_version - try to create extension of the same version again in check_mode
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
- version: '1.0'
- check_mode: yes
-
- - assert:
- that:
- - result is not changed
-
- - name: postgresql_ext_version - check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}' AND extversion = '1.0'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: postgresql_ext_version - try to create extension of the same version again in actual mode
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
- version: '1.0'
-
- - assert:
- that:
- - result is not changed
-
- - name: postgresql_ext_version - check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}' AND extversion = '1.0'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: postgresql_ext_version - update the extension to the next version in check_mode
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
- version: '2.0'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
-
- - name: postgresql_ext_version - check, the version must be 1.0
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}' AND extversion = '1.0'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: postgresql_ext_version - update the extension to the next version
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
- version: '2.0'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["ALTER EXTENSION \"{{ test_ext }}\" UPDATE TO '2.0'"]
-
- - name: postgresql_ext_version - check, the version must be 2.0
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}' AND extversion = '2.0'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: postgresql_ext_version - check that version won't be changed if version won't be passed
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
-
- - assert:
- that:
- - result is not changed
-
- - name: postgresql_ext_version - check, the version must be 2.0
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}' AND extversion = '2.0'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: postgresql_ext_version - update the extension to the latest version
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
- version: latest
-
- - assert:
- that:
- - result is changed
- - result.queries == ["ALTER EXTENSION \"{{ test_ext }}\" UPDATE TO '3.0'"]
-
- - name: postgresql_ext_version - check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}' AND extversion = '3.0'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: postgresql_ext_version - try to update the extension to the latest version again
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
- version: latest
-
- - assert:
- that:
- - result is not changed
-
- - name: postgresql_ext_version - try to downgrade the extension version, must fail
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- schema: "{{ test_schema }}"
- version: '1.0'
- ignore_errors: yes
-
- - assert:
- that:
- - result.failed == true
-
- - name: postgresql_ext_version - drop the extension in check_mode
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- state: absent
- check_mode: yes
-
- - assert:
- that:
- - result is changed
-
- - name: postgresql_ext_version - check that extension exists
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}' AND extversion = '3.0'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: postgresql_ext_version - drop the extension in actual mode
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- state: absent
-
- - assert:
- that:
- - result is changed
-
- - name: postgresql_ext_version - check that extension doesn't exist after the prev step
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}'"
-
- - assert:
- that:
- - result.rowcount == 0
-
- - name: postgresql_ext_version - try to drop the non-existent extension again
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- state: absent
-
- - assert:
- that:
- - result is not changed
-
- - name: postgresql_ext_version - create the extension without passing version
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
-
- - assert:
- that:
- - result is changed
- - result.queries == ["CREATE EXTENSION \"{{ test_ext }}\""]
-
- - name: postgresql_ext_version - check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT 1 FROM pg_extension WHERE extname = '{{ test_ext }}' AND extversion = '3.0'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: postgresql_ext_version - try to install non-existent version
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: non_existent
- ignore_errors: yes
-
- - assert:
- that:
- - result.failed == true
- - result.msg == "Extension non_existent is not installed"
-
- # Cleanup:
- - name: postgresql_ext_version - drop the extension
- <<: *task_parameters
- postgresql_ext:
- <<: *pg_parameters
- name: "{{ test_ext }}"
- state: absent
-
- - name: postgresql_ext_version - drop the schema
- <<: *task_parameters
- postgresql_schema:
- <<: *pg_parameters
- name: "{{ test_schema }}"
- state: absent
diff --git a/test/integration/targets/postgresql_idx/aliases b/test/integration/targets/postgresql_idx/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_idx/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_idx/meta/main.yml b/test/integration/targets/postgresql_idx/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_idx/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_idx/tasks/main.yml b/test/integration/targets/postgresql_idx/tasks/main.yml
deleted file mode 100644
index 22ec9d4a9c..0000000000
--- a/test/integration/targets/postgresql_idx/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-# Initial CI tests of postgresql_idx module
-- import_tasks: postgresql_idx_initial.yml
diff --git a/test/integration/targets/postgresql_idx/tasks/postgresql_idx_initial.yml b/test/integration/targets/postgresql_idx/tasks/postgresql_idx_initial.yml
deleted file mode 100644
index 1f88f7cbea..0000000000
--- a/test/integration/targets/postgresql_idx/tasks/postgresql_idx_initial.yml
+++ /dev/null
@@ -1,400 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Preparation for tests.
-# To implement the next steps, create the test table:
-- name: postgresql_idx - create test table called test_table
- become_user: "{{ pg_user }}"
- become: yes
- shell: psql postgres -U "{{ pg_user }}" -t -c "CREATE TABLE test_table (id int, story text);"
- ignore_errors: yes
-
-# Create a directory for test tablespace:
-- name: postgresql_idx - drop test tablespace called ssd if exists
- become_user: "{{ pg_user }}"
- become: yes
- shell: psql postgres -U "{{ pg_user }}" -t -c "DROP TABLESPACE IF EXISTS ssd;"
- ignore_errors: yes
-
-- name: postgresql_idx - drop dir for test tablespace
- become: yes
- file:
- path: /mnt/ssd
- state: absent
- ignore_errors: yes
-
-- name: postgresql_idx - create dir for test tablespace
- become: yes
- file:
- path: /mnt/ssd
- state: directory
- owner: "{{ pg_user }}"
- mode: 0755
- ignore_errors: yes
-
-# Then create a test tablespace:
-- name: postgresql_idx - create test tablespace called ssd
- become_user: "{{ pg_user }}"
- become: yes
- shell: psql postgres -U "{{ pg_user }}" -t -c "CREATE TABLESPACE ssd LOCATION '/mnt/ssd';"
- ignore_errors: yes
- register: tablespace
-
-# Create a test schema:
-- name: postgresql_idx - create test schema
- become_user: "{{ pg_user }}"
- become: yes
- shell: psql postgres -U "{{ pg_user }}" -t -c "CREATE SCHEMA foo;"
- ignore_errors: yes
-
-# Create a table in schema foo:
-- name: postgresql_idx - create table in non-default schema
- become_user: "{{ pg_user }}"
- become: yes
- shell: psql postgres -U "{{ pg_user }}" -t -c "CREATE TABLE foo.foo_table (id int, story text);"
- ignore_errors: yes
-
-
-###############
-# Do main tests
-#
-
-# Create index in check_mode
-- name: postgresql_idx - create btree index in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- table: test_table
- columns: id, story
- idxname: test0_idx
- check_mode: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.tblname == ''
- - result.name == 'test0_idx'
- - result.state == 'absent'
- - result.valid != ''
- - result.tblspace == ''
- - result.storage_params == []
- - result.schema == ''
- - result.query == ''
-
-# Check that actually nothing changed, rowcount must be 0
-- name: postgresql_idx - check nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_indexes WHERE indexname = 'test0_idx'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Create btree index if not exists test_idx concurrently covering id and story columns
-- name: postgresql_idx - create btree index concurrently
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- table: test_table
- columns: id, story
- idxname: test0_idx
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.tblname == 'test_table'
- - result.name == 'test0_idx'
- - result.state == 'present'
- - result.valid != ''
- - result.tblspace == ''
- - result.storage_params == []
- - result.schema == 'public'
- - result.query == 'CREATE INDEX CONCURRENTLY test0_idx ON public.test_table USING BTREE (id, story)'
-
-# Check that the index exists after the previous step, rowcount must be 1
-- name: postgresql_idx - check the index exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_indexes WHERE indexname = 'test0_idx'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Check that if index exists that changes nothing
-- name: postgresql_idx - try to create existing index again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- table: test_table
- columns: id, story
- idxname: test0_idx
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.tblname == 'test_table'
- - result.name == 'test0_idx'
- - result.state == 'present'
- - result.valid != ''
- - result.tblspace == ''
- - result.storage_params == []
- - result.schema == 'public'
- - result.query == ''
-
-# Create btree index foo_test_idx concurrently with tablespace called ssd,
-# storage parameter, and non-default schema
-- name: postgresql_idx - create btree index - non-default schema, tablespace, storage parameter
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- schema: foo
- table: foo_table
- columns:
- - id
- - story
- idxname: foo_test_idx
- tablespace: ssd
- storage_params: fillfactor=90
- register: result
- ignore_errors: yes
- when: tablespace.rc == 0
-
-- assert:
- that:
- - result is changed
- - result.tblname == 'foo_table'
- - result.name == 'foo_test_idx'
- - result.state == 'present'
- - result.valid != ''
- - result.tblspace == 'ssd'
- - result.storage_params == [ "fillfactor=90" ]
- - result.schema == 'foo'
- - result.query == 'CREATE INDEX CONCURRENTLY foo_test_idx ON foo.foo_table USING BTREE (id,story) WITH (fillfactor=90) TABLESPACE ssd'
- when: tablespace.rc == 0
-
-# Create brin index not in concurrently mode
-- name: postgresql_idx - create brin index not concurrently
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- schema: public
- table: test_table
- state: present
- type: brin
- columns: id
- idxname: test_brin_idx
- concurrent: no
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.tblname == 'test_table'
- - result.name == 'test_brin_idx'
- - result.state == 'present'
- - result.valid != ''
- - result.tblspace == ''
- - result.storage_params == []
- - result.schema == 'public'
- - result.query == 'CREATE INDEX test_brin_idx ON public.test_table USING brin (id)'
- when: postgres_version_resp.stdout is version('9.5', '>=')
-
-
-# Create index where column id > 1
-- name: postgresql_idx - create index with condition
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- table: test_table
- columns: id
- idxname: test1_idx
- cond: 'id > 1 AND id != 10'
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.tblname == 'test_table'
- - result.name == 'test1_idx'
- - result.state == 'present'
- - result.valid != ''
- - result.tblspace == ''
- - result.storage_params == []
- - result.schema == 'public'
- - result.query == 'CREATE INDEX CONCURRENTLY test1_idx ON public.test_table USING BTREE (id) WHERE id > 1 AND id != 10'
-
-- name: postgresql_idx - create unique index
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- table: test_table
- columns: story
- idxname: test_unique0_idx
- unique: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.tblname == 'test_table'
- - result.name == 'test_unique0_idx'
- - result.state == 'present'
- - result.valid != ''
- - result.tblspace == ''
- - result.storage_params == []
- - result.schema == 'public'
- - result.query == 'CREATE UNIQUE INDEX CONCURRENTLY test_unique0_idx ON public.test_table USING BTREE (story)'
-
-- name: postgresql_idx - avoid unique index with type different of btree
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- table: test_table
- columns: story
- idxname: test_unique0_idx
- unique: yes
- concurrent: no
- type: brin
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.msg == 'Only btree currently supports unique indexes'
-
-# Drop index from specific schema with cascade in check_mode
-- name: postgresql_idx - drop index from specific schema cascade in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- schema: foo
- name: foo_test_idx
- cascade: yes
- state: absent
- concurrent: no
- check_mode: yes
- register: result
- ignore_errors: yes
- when: tablespace.rc == 0
-
-- assert:
- that:
- - result is changed
- - result.name == 'foo_test_idx'
- - result.state == 'present'
- - result.schema == 'foo'
- - result.query == ''
- when: tablespace.rc == 0
-
-# Check that the index exists after the previous step, rowcount must be 1
-- name: postgresql_idx - check the index exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_indexes WHERE indexname = 'foo_test_idx' AND schemaname = 'foo'"
- register: result
- when: tablespace.rc == 0
-
-- assert:
- that:
- - result.rowcount == 1
- when: tablespace.rc == 0
-
-# Drop index from specific schema with cascade
-- name: postgresql_idx - drop index from specific schema cascade
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- schema: foo
- name: foo_test_idx
- cascade: yes
- state: absent
- concurrent: no
- register: result
- ignore_errors: yes
- when: tablespace.rc == 0
-
-- assert:
- that:
- - result is changed
- - result.name == 'foo_test_idx'
- - result.state == 'absent'
- - result.schema == 'foo'
- - result.query == 'DROP INDEX foo.foo_test_idx CASCADE'
- when: tablespace.rc == 0
-
-# Check that the index doesn't exist after the previous step, rowcount must be 0
-- name: postgresql_idx - check the index doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_indexes WHERE indexname = 'foo_test_idx' and schemaname = 'foo'"
- register: result
- when: tablespace.rc == 0
-
-- assert:
- that:
- - result.rowcount == 0
- when: tablespace.rc == 0
-
-# Try to drop not existing index
-- name: postgresql_idx - try to drop not existing index
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_idx:
- db: postgres
- login_user: "{{ pg_user }}"
- schema: foo
- name: foo_test_idx
- state: absent
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.query == ''
diff --git a/test/integration/targets/postgresql_info/aliases b/test/integration/targets/postgresql_info/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/postgresql_info/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/postgresql_info/defaults/main.yml b/test/integration/targets/postgresql_info/defaults/main.yml
deleted file mode 100644
index 000532aef2..0000000000
--- a/test/integration/targets/postgresql_info/defaults/main.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-pg_user: postgres
-db_default: postgres
-master_port: 5433
-replica_port: 5434
-
-test_table1: acme1
-test_pub: first_publication
-test_pub2: second_publication
-replication_role: logical_replication
-replication_pass: alsdjfKJKDf1#
-test_db: acme_db
-test_subscription: test
-test_subscription2: test2
-conn_timeout: 100
diff --git a/test/integration/targets/postgresql_info/meta/main.yml b/test/integration/targets/postgresql_info/meta/main.yml
deleted file mode 100644
index d72e4d23c7..0000000000
--- a/test/integration/targets/postgresql_info/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_replication
diff --git a/test/integration/targets/postgresql_info/tasks/main.yml b/test/integration/targets/postgresql_info/tasks/main.yml
deleted file mode 100644
index eec057ca18..0000000000
--- a/test/integration/targets/postgresql_info/tasks/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-# For testing getting publication and subscription info
-- import_tasks: setup_publication.yml
- when: ansible_distribution == 'Ubuntu' and ansible_distribution_major_version >= '18'
-
-# Initial CI tests of postgresql_info module
-- import_tasks: postgresql_info_initial.yml
- when: ansible_distribution == 'Ubuntu' and ansible_distribution_major_version >= '18'
diff --git a/test/integration/targets/postgresql_info/tasks/postgresql_info_initial.yml b/test/integration/targets/postgresql_info/tasks/postgresql_info_initial.yml
deleted file mode 100644
index 27cdc5c7cd..0000000000
--- a/test/integration/targets/postgresql_info/tasks/postgresql_info_initial.yml
+++ /dev/null
@@ -1,154 +0,0 @@
-# Copyright: (c) 2020, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- vars:
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: '{{ db_default }}'
-
- block:
-
- - name: Create test subscription
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- login_db: '{{ test_db }}'
- state: present
- publications: '{{ test_pub }}'
- connparams:
- host: 127.0.0.1
- port: '{{ master_port }}'
- user: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- dbname: '{{ test_db }}'
-
- - name: Create test subscription
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription2 }}'
- login_db: '{{ test_db }}'
- state: present
- publications: '{{ test_pub2 }}'
- connparams:
- host: 127.0.0.1
- port: '{{ master_port }}'
- user: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- dbname: '{{ test_db }}'
-
- - name: postgresql_info - create role to check session_role
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- login_user: "{{ pg_user }}"
- name: session_superuser
- role_attr_flags: SUPERUSER
-
- - name: postgresql_info - test return values and session_role param
- <<: *task_parameters
- postgresql_info:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- session_role: session_superuser
-
- - assert:
- that:
- - result.version != {}
- - result.databases.{{ db_default }}.collate
- - result.databases.{{ db_default }}.languages
- - result.databases.{{ db_default }}.namespaces
- - result.databases.{{ db_default }}.extensions
- - result.databases.{{ test_db }}.subscriptions.{{ test_subscription }}
- - result.databases.{{ test_db }}.subscriptions.{{ test_subscription2 }}
- - result.settings
- - result.tablespaces
- - result.roles
-
- - name: postgresql_info - check filter param passed by list
- <<: *task_parameters
- postgresql_info:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- filter:
- - ver*
- - rol*
-
- - assert:
- that:
- - result.version != {}
- - result.roles
- - result.databases == {}
- - result.repl_slots == {}
- - result.replications == {}
- - result.settings == {}
- - result.tablespaces == {}
-
- - name: postgresql_info - check filter param passed by string
- <<: *task_parameters
- postgresql_info:
- <<: *pg_parameters
- filter: ver*,role*
-
- - assert:
- that:
- - result.version != {}
- - result.roles
- - result.databases == {}
- - result.repl_slots == {}
- - result.replications == {}
- - result.settings == {}
- - result.tablespaces == {}
-
- - name: postgresql_info - check filter param passed by string
- <<: *task_parameters
- postgresql_info:
- <<: *pg_parameters
- filter: ver*
-
- - assert:
- that:
- - result.version
- - result.roles == {}
-
- - name: postgresql_info - check excluding filter param passed by list
- <<: *task_parameters
- postgresql_info:
- <<: *pg_parameters
- filter:
- - "!ver*"
- - "!rol*"
-
- - assert:
- that:
- - result.version == {}
- - result.roles == {}
- - result.databases
-
- - name: postgresql_info - test return publication info
- <<: *task_parameters
- postgresql_info:
- <<: *pg_parameters
- login_db: '{{ test_db }}'
- login_port: '{{ master_port }}'
-
- - assert:
- that:
- - result.version != {}
- - result.databases.{{ db_default }}.collate
- - result.databases.{{ db_default }}.languages
- - result.databases.{{ db_default }}.namespaces
- - result.databases.{{ db_default }}.extensions
- - result.databases.{{ test_db }}.publications.{{ test_pub }}.ownername == '{{ pg_user }}'
- - result.databases.{{ test_db }}.publications.{{ test_pub2 }}.puballtables == true
- - result.settings
- - result.tablespaces
- - result.roles
diff --git a/test/integration/targets/postgresql_info/tasks/setup_publication.yml b/test/integration/targets/postgresql_info/tasks/setup_publication.yml
deleted file mode 100644
index 0d7df0d73e..0000000000
--- a/test/integration/targets/postgresql_info/tasks/setup_publication.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# Preparation for further tests of postgresql_subscription module.
-
-- vars:
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: '{{ test_db }}'
-
- block:
- - name: Create test db
- <<: *task_parameters
- postgresql_db:
- login_user: '{{ pg_user }}'
- login_port: '{{ master_port }}'
- maintenance_db: '{{ db_default }}'
- name: '{{ test_db }}'
-
- - name: Create test role
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- login_port: '{{ master_port }}'
- name: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- role_attr_flags: LOGIN,REPLICATION
-
- - name: Create test table
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- login_port: '{{ master_port }}'
- name: '{{ test_table1 }}'
- columns:
- - id int
-
- - name: Master - dump schema
- <<: *task_parameters
- shell: pg_dumpall -p '{{ master_port }}' -s > /tmp/schema.sql
-
- - name: Replicat restore schema
- <<: *task_parameters
- shell: psql -p '{{ replica_port }}' -f /tmp/schema.sql
-
- - name: Create publication
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- login_port: '{{ master_port }}'
- name: '{{ test_pub }}'
-
- - name: Create publication
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- login_port: '{{ master_port }}'
- name: '{{ test_pub2 }}'
diff --git a/test/integration/targets/postgresql_lang/aliases b/test/integration/targets/postgresql_lang/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_lang/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_lang/meta/main.yml b/test/integration/targets/postgresql_lang/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_lang/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_lang/tasks/main.yml b/test/integration/targets/postgresql_lang/tasks/main.yml
deleted file mode 100644
index f13fe23921..0000000000
--- a/test/integration/targets/postgresql_lang/tasks/main.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-- name: Include distribution specific variables
- include_vars: "{{ lookup('first_found', params) }}"
- vars:
- params:
- files:
- - "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
- - default.yml
- paths:
- - vars
-
-# Only run on CentOS 7 because there is a stack trace on CentOS 8 because the module
-# is looking for the incorrect version of plpython.
-# https://gist.github.com/samdoran/8fc1b4ae834d3e66d1895d087419b8d8
-- name: Initial CI tests of postgresql_lang module
- when:
- - ansible_facts.distribution == 'CentOS'
- - ansible_facts.distribution_major_version is version ('7', '==')
- block:
- - include_tasks: postgresql_lang_initial.yml
- - include_tasks: postgresql_lang_add_owner_param.yml
diff --git a/test/integration/targets/postgresql_lang/tasks/postgresql_lang_add_owner_param.yml b/test/integration/targets/postgresql_lang/tasks/postgresql_lang_add_owner_param.yml
deleted file mode 100644
index 9e259af73b..0000000000
--- a/test/integration/targets/postgresql_lang/tasks/postgresql_lang_add_owner_param.yml
+++ /dev/null
@@ -1,196 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- vars:
- test_user1: alice
- test_user2: bob
- test_lang: plperl
- non_existent_role: fake_role
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: postgres
-
- block:
- - name: Create roles for tests
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ item }}'
- loop:
- - '{{ test_user1 }}'
- - '{{ test_user2 }}'
-
- - name: Create lang with owner in check_mode
- <<: *task_parameters
- postgresql_lang:
- <<: *pg_parameters
- name: '{{ test_lang }}'
- owner: '{{ test_user1 }}'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.queries == []
-
- - name: Check that nothing was actually changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT r.rolname FROM pg_language l
- JOIN pg_roles r ON l.lanowner = r.oid
- WHERE l.lanname = '{{ test_lang }}'
- AND r.rolname = '{{ test_user1 }}'
-
- - assert:
- that:
- - result.rowcount == 0
-
- - name: Create lang with owner
- <<: *task_parameters
- postgresql_lang:
- <<: *pg_parameters
- name: '{{ test_lang }}'
- owner: '{{ test_user1 }}'
-
- - assert:
- that:
- - result is changed
- - result.queries == ['CREATE LANGUAGE "{{ test_lang }}"', 'ALTER LANGUAGE "{{ test_lang }}" OWNER TO {{ test_user1 }}']
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT r.rolname FROM pg_language l
- JOIN pg_roles r ON l.lanowner = r.oid
- WHERE l.lanname = '{{ test_lang }}'
- AND r.rolname = '{{ test_user1 }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Change lang owner in check_mode
- <<: *task_parameters
- postgresql_lang:
- <<: *pg_parameters
- name: '{{ test_lang }}'
- owner: '{{ test_user2 }}'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.queries == ['ALTER LANGUAGE "{{ test_lang }}" OWNER TO {{ test_user2 }}']
-
- - name: Check that nothing was actually changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT r.rolname FROM pg_language l
- JOIN pg_roles r ON l.lanowner = r.oid
- WHERE l.lanname = '{{ test_lang }}'
- AND r.rolname = '{{ test_user2 }}'
-
- - assert:
- that:
- - result.rowcount == 0
-
- - name: Change lang owner
- <<: *task_parameters
- postgresql_lang:
- <<: *pg_parameters
- name: '{{ test_lang }}'
- owner: '{{ test_user2 }}'
-
- - assert:
- that:
- - result is changed
- # TODO: the first elem of the returned list below
- # looks like a bug, not related with the option owner, needs to be checked
- - result.queries == ["UPDATE pg_language SET lanpltrusted = false WHERE lanname = '{{ test_lang }}'", 'ALTER LANGUAGE "{{ test_lang }}" OWNER TO {{ test_user2 }}']
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT r.rolname FROM pg_language l
- JOIN pg_roles r ON l.lanowner = r.oid
- WHERE l.lanname = '{{ test_lang }}'
- AND r.rolname = '{{ test_user2 }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Try to change lang owner again to the same role
- <<: *task_parameters
- postgresql_lang:
- <<: *pg_parameters
- name: '{{ test_lang }}'
- owner: '{{ test_user2 }}'
-
- - assert:
- that:
- - result is not changed
- - result.queries == []
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT r.rolname FROM pg_language l
- JOIN pg_roles r ON l.lanowner = r.oid
- WHERE l.lanname = '{{ test_lang }}'
- AND r.rolname = '{{ test_user2 }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Drop test lang with owner, must ignore
- <<: *task_parameters
- postgresql_lang:
- <<: *pg_parameters
- name: '{{ test_lang }}'
- state: absent
- owner: '{{ non_existent_role }}'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["DROP LANGUAGE \"{{ test_lang }}\""]
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT r.rolname FROM pg_language l
- JOIN pg_roles r ON l.lanowner = r.oid
- WHERE l.lanname = '{{ test_lang }}'
-
- - assert:
- that:
- - result.rowcount == 0
-
- # Clean up
- - name: Drop test roles
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ item }}'
- state: absent
- loop:
- - '{{ test_user1 }}'
- - '{{ test_user2 }}'
diff --git a/test/integration/targets/postgresql_lang/tasks/postgresql_lang_initial.yml b/test/integration/targets/postgresql_lang/tasks/postgresql_lang_initial.yml
deleted file mode 100644
index 66023de8b5..0000000000
--- a/test/integration/targets/postgresql_lang/tasks/postgresql_lang_initial.yml
+++ /dev/null
@@ -1,231 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Preparation for tests:
-- name: Install PostgreSQL support packages
- become: yes
- action: "{{ ansible_facts.pkg_mgr }}"
- args:
- name: "{{ postgresql_lang_packages }}"
- state: present
-
-###############
-# Do main tests
-#
-
-# Create language in check_mode:
-- name: postgresql_lang - create plperl in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_lang:
- db: postgres
- login_user: "{{ pg_user }}"
- name: plperl
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == []
-
-- name: postgresql_lang - check that lang doesn't exist after previous step, rowcount must be 0
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_language WHERE lanname = 'plperl'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Create language:
-- name: postgresql_lang - create plperl
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_lang:
- db: postgres
- login_user: "{{ pg_user }}"
- name: plperl
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['CREATE LANGUAGE "plperl"']
-
-- name: postgresql_lang - check that lang exists after previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_language WHERE lanname = 'plperl'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Drop language in check_mode:
-- name: postgresql_lang - drop plperl in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_lang:
- db: postgres
- login_user: "{{ pg_user }}"
- name: plperl
- state: absent
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == []
-
-- name: postgresql_lang - check that lang exists after previous step, rowcount must be 1
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_language WHERE lanname = 'plperl'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Drop language:
-- name: postgresql_lang - drop plperl
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_lang:
- db: postgres
- login_user: "{{ pg_user }}"
- name: plperl
- state: absent
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['DROP LANGUAGE "plperl"']
-
-- name: postgresql_lang - check that lang doesn't exist after previous step, rowcount must be 0
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_language WHERE lanname = 'plperl'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Check fail_on_drop yes
-- name: postgresql_lang - drop c language to check fail_on_drop yes
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_lang:
- db: postgres
- login_user: "{{ pg_user }}"
- name: c
- state: absent
- fail_on_drop: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.failed == true
-
-# Check fail_on_drop no
-- name: postgresql_lang - drop c language to check fail_on_drop no
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_lang:
- db: postgres
- login_user: "{{ pg_user }}"
- name: c
- state: absent
- fail_on_drop: no
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.failed == false
-
-# Create trusted language:
-- name: postgresql_lang - create plpythonu
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_lang:
- db: postgres
- login_user: "{{ pg_user }}"
- name: plpythonu
- trust: yes
- force_trust: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['CREATE TRUSTED LANGUAGE "plpythonu"', "UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpythonu'"]
-
-- name: postgresql_lang - check that lang exists and it's trusted after previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_language WHERE lanname = 'plpythonu' AND lanpltrusted = 't'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Drop language cascade, tests of aliases:
-- name: postgresql_lang - drop plpythonu cascade
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_lang:
- login_db: postgres
- login_user: "{{ pg_user }}"
- login_port: 5432
- lang: plpythonu
- state: absent
- cascade: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['DROP LANGUAGE "plpythonu" CASCADE']
-
-- name: postgresql_lang - check that lang doesn't exist after previous step, rowcount must be 0
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_language WHERE lanname = 'plpythonu'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
diff --git a/test/integration/targets/postgresql_lang/vars/CentOS-7.yml b/test/integration/targets/postgresql_lang/vars/CentOS-7.yml
deleted file mode 100644
index 8d4bcc7e21..0000000000
--- a/test/integration/targets/postgresql_lang/vars/CentOS-7.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-postgresql_lang_packages:
- - postgresql-plperl
- - postgresql-plpython
diff --git a/test/integration/targets/postgresql_lang/vars/CentOS-8.yml b/test/integration/targets/postgresql_lang/vars/CentOS-8.yml
deleted file mode 100644
index 5da004c8f9..0000000000
--- a/test/integration/targets/postgresql_lang/vars/CentOS-8.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-postgresql_lang_packages:
- - postgresql-plperl
- - postgresql-plpython3
diff --git a/test/integration/targets/postgresql_lang/vars/default.yml b/test/integration/targets/postgresql_lang/vars/default.yml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/integration/targets/postgresql_lang/vars/default.yml
+++ /dev/null
diff --git a/test/integration/targets/postgresql_membership/aliases b/test/integration/targets/postgresql_membership/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_membership/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_membership/defaults/main.yml b/test/integration/targets/postgresql_membership/defaults/main.yml
deleted file mode 100644
index 0e3d2f1ba9..0000000000
--- a/test/integration/targets/postgresql_membership/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-test_group1: group1
-test_group2: group2
-test_group3: group.with.dots
-test_user1: user1
-test_user2: user.with.dots
diff --git a/test/integration/targets/postgresql_membership/meta/main.yml b/test/integration/targets/postgresql_membership/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_membership/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_membership/tasks/main.yml b/test/integration/targets/postgresql_membership/tasks/main.yml
deleted file mode 100644
index 89ce1d0fff..0000000000
--- a/test/integration/targets/postgresql_membership/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-# Initial CI tests of postgresql_membership module
-- import_tasks: postgresql_membership_initial.yml
diff --git a/test/integration/targets/postgresql_membership/tasks/postgresql_membership_initial.yml b/test/integration/targets/postgresql_membership/tasks/postgresql_membership_initial.yml
deleted file mode 100644
index 5b7cc0439a..0000000000
--- a/test/integration/targets/postgresql_membership/tasks/postgresql_membership_initial.yml
+++ /dev/null
@@ -1,347 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-####################
-# Prepare for tests:
-
-# Create test roles:
-- name: postgresql_membership - create test roles
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- login_user: "{{ pg_user }}"
- db: postgres
- name: "{{ item }}"
- ignore_errors: yes
- with_items:
- - "{{ test_group1 }}"
- - "{{ test_group2 }}"
- - "{{ test_group3 }}"
- - "{{ test_user1 }}"
- - "{{ test_user2 }}"
-
-################
-# Do main tests:
-
-### Test check_mode
-# Grant test_group1 to test_user1 in check_mode:
-- name: postgresql_membership - grant test_group1 to test_user1 in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: "{{ test_group1 }}"
- user: "{{ test_user1 }}"
- state: present
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.groups == ["{{ test_group1 }}"]
- - result.queries == ["GRANT \"{{ test_group1 }}\" TO \"{{ test_user1 }}\""]
- - result.granted.{{ test_group1 }} == ["{{ test_user1 }}"]
- - result.state == "present"
- - result.target_roles == ["{{ test_user1 }}"]
-
-# Try to revoke test_group1 from test_user1 to check that
-# nothing actually changed in check_mode at the previous step:
-- name: postgresql_membership - try to revoke test_group1 from test_user1 for checking check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: "{{ test_group1 }}"
- user: "{{ test_user1 }}"
- state: absent
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is not changed
- - result.groups == ["{{ test_group1 }}"]
- - result.queries == []
- - result.revoked.{{ test_group1 }} == []
- - result.state == "absent"
- - result.target_roles == ["{{ test_user1 }}"]
-### End of test check_mode
-
-# Grant test_group1 to test_user1:
-- name: postgresql_membership - grant test_group1 to test_user1
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: "{{ test_group1 }}"
- user: "{{ test_user1 }}"
- state: present
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.groups == ["{{ test_group1 }}"]
- - result.queries == ["GRANT \"{{ test_group1 }}\" TO \"{{ test_user1 }}\""]
- - result.granted.{{ test_group1 }} == ["{{ test_user1 }}"]
- - result.state == "present"
- - result.target_roles == ["{{ test_user1 }}"]
-
-# Grant test_group1 to test_user1 again to check that nothing changes:
-- name: postgresql_membership - grant test_group1 to test_user1 again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: "{{ test_group1 }}"
- user: "{{ test_user1 }}"
- state: present
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.groups == ["{{ test_group1 }}"]
- - result.queries == []
- - result.granted.{{ test_group1 }} == []
- - result.state == "present"
- - result.target_roles == ["{{ test_user1 }}"]
-
-# Revoke test_group1 from test_user1:
-- name: postgresql_membership - revoke test_group1 from test_user1
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: "{{ test_group1 }}"
- user: "{{ test_user1 }}"
- state: absent
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.groups == ["{{ test_group1 }}"]
- - result.queries == ["REVOKE \"{{ test_group1 }}\" FROM \"{{ test_user1 }}\""]
- - result.revoked.{{ test_group1 }} == ["{{ test_user1 }}"]
- - result.state == "absent"
- - result.target_roles == ["{{ test_user1 }}"]
-
-# Revoke test_group1 from test_user1 again to check that nothing changes:
-- name: postgresql_membership - revoke test_group1 from test_user1 again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: "{{ test_group1 }}"
- user: "{{ test_user1 }}"
- state: absent
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.groups == ["{{ test_group1 }}"]
- - result.queries == []
- - result.revoked.{{ test_group1 }} == []
- - result.state == "absent"
- - result.target_roles == ["{{ test_user1 }}"]
-
-# Grant test_group1 and test_group2 to test_user1 and test_user2:
-- name: postgresql_membership - grant two groups to two users
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group:
- - "{{ test_group1 }}"
- - "{{ test_group2 }}"
- user:
- - "{{ test_user1 }}"
- - "{{ test_user2 }}"
- state: present
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.groups == ["{{ test_group1 }}", "{{ test_group2 }}"]
- - result.queries == ["GRANT \"{{ test_group1 }}\" TO \"{{ test_user1 }}\"", "GRANT \"{{ test_group1 }}\" TO \"{{ test_user2 }}\"", "GRANT \"{{ test_group2 }}\" TO \"{{ test_user1 }}\"", "GRANT \"{{ test_group2 }}\" TO \"{{ test_user2 }}\""]
- - result.granted.{{ test_group1 }} == ["{{ test_user1 }}", "{{ test_user2 }}"]
- - result.granted.{{ test_group2 }} == ["{{ test_user1 }}", "{{ test_user2 }}"]
- - result.state == "present"
- - result.target_roles == ["{{ test_user1 }}", "{{ test_user2 }}"]
-
-# Grant test_group1 and test_group2 to test_user1 and test_user2 again to check that nothing changes:
-- name: postgresql_membership - grant two groups to two users again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group:
- - "{{ test_group1 }}"
- - "{{ test_group2 }}"
- user:
- - "{{ test_user1 }}"
- - "{{ test_user2 }}"
- state: present
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.groups == ["{{ test_group1 }}", "{{ test_group2 }}"]
- - result.queries == []
- - result.granted.{{ test_group1 }} == []
- - result.granted.{{ test_group2 }} == []
- - result.state == "present"
- - result.target_roles == ["{{ test_user1 }}", "{{ test_user2 }}"]
-
-# Revoke only test_group1 from test_user1:
-- name: postgresql_membership - revoke one group from one user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: "{{ test_group1 }}"
- user: "{{ test_user1 }}"
- state: absent
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.groups == ["{{ test_group1 }}"]
- - result.queries == ["REVOKE \"{{ test_group1 }}\" FROM \"{{ test_user1 }}\""]
- - result.revoked.{{ test_group1 }} == ["{{ test_user1 }}"]
- - result.state == "absent"
- - result.target_roles == ["{{ test_user1 }}"]
-
-# Try to grant test_group1 and test_group2 to test_user1 and test_user2 again
-# to check that nothing changes with test_user2:
-- name: postgresql_membership - grant two groups to two users again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group:
- - "{{ test_group1 }}"
- - "{{ test_group2 }}"
- user:
- - "{{ test_user1 }}"
- - "{{ test_user2 }}"
- state: present
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.groups == ["{{ test_group1 }}", "{{ test_group2 }}"]
- - result.queries == ["GRANT \"{{ test_group1 }}\" TO \"{{ test_user1 }}\""]
- - result.granted.{{ test_group1 }} == ["{{ test_user1 }}"]
- - result.granted.{{ test_group2 }} == []
- - result.state == "present"
- - result.target_roles == ["{{ test_user1 }}", "{{ test_user2 }}"]
-
-#####################
-# Check fail_on_role:
-
-# Try to grant non existent group to non existent role with fail_on_role=yes:
-- name: postgresql_membership - revoke non existen group from non existen role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: fake_group
- user: fake_user
- state: present
- fail_on_role: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
-
-# Try to grant non existent group to non existent role with fail_on_role=no:
-- name: postgresql_membership - revoke non existen group from non existen role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: fake_group
- user: fake_user
- state: present
- fail_on_role: no
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.granted == {}
- - result.groups == []
- - result.target_roles == []
- - result.state == 'present'
-
-# Try to revoke non existent group from non existent role with fail_on_role=no:
-- name: postgresql_membership - revoke non existen group from non existen role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: fake_group
- user: fake_user
- state: absent
- fail_on_role: no
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.revoked == {}
- - result.groups == []
- - result.target_roles == []
- - result.state == 'absent'
-
-# Grant test_group3 with a name containing dots to test_user1.
-- name: postgresql_membership - grant test_group3 with dots to test_user1
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_membership:
- login_user: "{{ pg_user }}"
- db: postgres
- group: "{{ test_group3 }}"
- user: "{{ test_user1 }}"
- state: present
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["GRANT \"{{ test_group3 }}\" TO \"{{ test_user1 }}\""]
diff --git a/test/integration/targets/postgresql_owner/aliases b/test/integration/targets/postgresql_owner/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_owner/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_owner/defaults/main.yml b/test/integration/targets/postgresql_owner/defaults/main.yml
deleted file mode 100644
index 1a5d6f307f..0000000000
--- a/test/integration/targets/postgresql_owner/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-test_tablespace_path: "/ssd"
diff --git a/test/integration/targets/postgresql_owner/meta/main.yml b/test/integration/targets/postgresql_owner/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_owner/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_owner/tasks/main.yml b/test/integration/targets/postgresql_owner/tasks/main.yml
deleted file mode 100644
index c841ce04af..0000000000
--- a/test/integration/targets/postgresql_owner/tasks/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-# Initial CI tests of postgresql_owner module
-- import_tasks: postgresql_owner_initial.yml
- when:
- - postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_owner/tasks/postgresql_owner_initial.yml b/test/integration/targets/postgresql_owner/tasks/postgresql_owner_initial.yml
deleted file mode 100644
index 3728c7fb8b..0000000000
--- a/test/integration/targets/postgresql_owner/tasks/postgresql_owner_initial.yml
+++ /dev/null
@@ -1,1062 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-####################
-# Prepare for tests:
-
-# Create test roles:
-- name: postgresql_owner - create test roles
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- login_user: "{{ pg_user }}"
- db: postgres
- name: "{{ item }}"
- ignore_errors: yes
- with_items:
- - alice
- - bob
-
-# Create test database:
-- name: postgresql_owner - create test database
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- login_user: "{{ pg_user }}"
- db: acme
-
-# Create test table:
-- name: postgresql_owner - create test table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: acme
- query: "CREATE TABLE my_table (id int)"
-
-- name: postgresql_owner - set owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: my_table
- obj_type: table
-
-# Create test sequence:
-- name: postgresql_owner - create test sequence
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: acme
- query: "CREATE SEQUENCE test_seq"
-
-# Create test function:
-- name: postgresql_owner - create test function
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: acme
- query: "CREATE FUNCTION increment(integer) RETURNS integer AS 'select $1 + 1;' LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT;"
-
-# Create test schema:
-- name: postgresql_owner - create test schema
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: acme
- query: "CREATE SCHEMA test_schema"
-
-# Create test view:
-- name: postgresql_owner - create test view
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: acme
- query: "CREATE VIEW test_view AS SELECT * FROM my_table"
-
-# Create test materialized view (available from PG ver 9.4):
-- name: postgresql_owner - create test materialized view
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: acme
- query: "CREATE MATERIALIZED VIEW test_mat_view AS SELECT * FROM my_table"
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# Create test tablespace:
-- name: postgresql_owner - drop dir for test tablespace
- become: yes
- file:
- path: "{{ test_tablespace_path }}"
- state: absent
- ignore_errors: yes
-
-- name: postgresql_owner - disable selinux
- become: yes
- shell: setenforce 0
- ignore_errors: yes
-
-- name: postgresql_owner - create dir for test tablespace
- become: yes
- file:
- path: "{{ test_tablespace_path }}"
- state: directory
- owner: "{{ pg_user }}"
- group: "{{ pg_user }}"
- mode: 0700
- ignore_errors: yes
-
-# Create test tablespace
-- name: postgresql_owner - create a new tablespace called acme and set bob as an its owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: acme
- login_user: "{{ pg_user }}"
- name: acme
- owner: alice
- location: "{{ test_tablespace_path }}"
-
-################
-# Do main tests:
-
-#
-# check reassign_owned_by param
-#
-# try to reassign ownership to non existent user:
-- name: postgresql_owner - reassign_owned_by to non existent user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: non_existent
- reassign_owned_by: bob
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.failed == true
-
-# try to reassign ownership from existent user with fail_on_role:
-- name: postgresql_owner - reassign_owned_by, check fail_on_role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: alice
- reassign_owned_by: non_existent
- fail_on_role: no
- register: result
-
-- assert:
- that:
- - result.failed == false
-
-# check_mode:
-- name: postgresql_owner - reassign_owned_by in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: alice
- reassign_owned_by: bob
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['REASSIGN OWNED BY "bob" TO "alice"']
-
-# Check, rowcount must be 0
-- name: postgresql_owner - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tables WHERE tablename = 'my_table' AND tableowner = 'alice'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# True mode:
-- name: postgresql_owner - reassign_owned_by
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: alice
- reassign_owned_by: bob
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['REASSIGN OWNED BY "bob" TO "alice"']
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that ownership has been changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tables WHERE tablename = 'my_table' AND tableowner = 'alice'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-#
-# Check obj_type for each type
-#
-
-# #############################
-# check_mode obj_type: database
-- name: postgresql_owner - set db owner in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: acme
- obj_type: database
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER DATABASE "acme" OWNER TO "bob"']
-
-# Check, rowcount must be 0
-- name: postgresql_owner - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_database AS d JOIN pg_roles AS r ON d.datdba = r.oid WHERE d.datname = 'acme' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# true mode obj_type: database
-- name: postgresql_owner - set db owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: acme
- obj_type: database
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER DATABASE "acme" OWNER TO "bob"']
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that db owner has been changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_database AS d JOIN pg_roles AS r ON d.datdba = r.oid WHERE d.datname = 'acme' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# true mode obj_type: database, try to set again
-- name: postgresql_owner - set db owner again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: acme
- obj_type: database
- register: result
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that db owner is bob
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_database AS d JOIN pg_roles AS r ON d.datdba = r.oid WHERE d.datname = 'acme' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# ##########################
-# check_mode obj_type: table
-- name: postgresql_owner - set table owner in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: my_table
- obj_type: table
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER TABLE "my_table" OWNER TO "bob"']
-
-# Check, rowcount must be 0
-- name: postgresql_owner - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tables WHERE tablename = 'my_table' AND tableowner = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# true mode obj_type: table
-- name: postgresql_owner - set db owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: my_table
- obj_type: table
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER TABLE "my_table" OWNER TO "bob"']
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that table owner has been changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tables WHERE tablename = 'my_table' AND tableowner = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# true mode obj_type: table again
-- name: postgresql_owner - set db owner again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: my_table
- obj_type: table
- register: result
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that table owner is bob
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tables WHERE tablename = 'my_table' AND tableowner = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# #############################
-# check_mode obj_type: sequence
-- name: postgresql_owner - set sequence owner in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_seq
- obj_type: sequence
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER SEQUENCE "test_seq" OWNER TO "bob"']
-
-# Check, rowcount must be 0
-- name: postgresql_owner - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_class AS c JOIN pg_roles AS r ON c.relowner = r.oid WHERE c.relkind = 'S' AND c.relname = 'test_seq' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# true mode obj_type: sequence
-- name: postgresql_owner - set db owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_seq
- obj_type: sequence
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER SEQUENCE "test_seq" OWNER TO "bob"']
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that table owner has been changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_class AS c JOIN pg_roles AS r ON c.relowner = r.oid WHERE c.relkind = 'S' AND c.relname = 'test_seq' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# true mode obj_type: table again
-- name: postgresql_owner - set db owner again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_seq
- obj_type: sequence
- register: result
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that sequence owner is bob
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_class AS c JOIN pg_roles AS r ON c.relowner = r.oid WHERE c.relkind = 'S' AND c.relname = 'test_seq' AND r.rolname = 'bob'"
-
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# #############################
-# check_mode obj_type: function
-- name: postgresql_owner - set function owner in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: increment
- obj_type: function
- check_mode: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER FUNCTION increment OWNER TO "bob"']
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Check, rowcount must be 0
-- name: postgresql_owner - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_proc AS f JOIN pg_roles AS r ON f.proowner = r.oid WHERE f.proname = 'increment' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# true mode obj_type: function
-- name: postgresql_owner - set func owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: increment
- obj_type: function
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER FUNCTION increment OWNER TO "bob"']
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that func owner has been changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_proc AS f JOIN pg_roles AS r ON f.proowner = r.oid WHERE f.proname = 'increment' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# true mode obj_type: function again
-- name: postgresql_owner - set func owner again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: increment
- obj_type: function
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that function owner is bob
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_proc AS f JOIN pg_roles AS r ON f.proowner = r.oid WHERE f.proname = 'increment' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# ###########################
-# check_mode obj_type: schema
-- name: postgresql_owner - set schema owner in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_schema
- obj_type: schema
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER SCHEMA "test_schema" OWNER TO "bob"']
-
-# Check, rowcount must be 0
-- name: postgresql_owner - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM information_schema.schemata WHERE schema_name = 'test_schema' AND schema_owner = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# true mode obj_type: schema
-- name: postgresql_owner - set schema owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_schema
- obj_type: schema
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER SCHEMA "test_schema" OWNER TO "bob"']
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that schema owner has been changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM information_schema.schemata WHERE schema_name = 'test_schema' AND schema_owner = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# true mode obj_type: schema again
-- name: postgresql_owner - set schema owner again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_seq
- obj_type: sequence
- register: result
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that schema owner is bob
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM information_schema.schemata WHERE schema_name = 'test_schema' AND schema_owner = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# ###########################
-# check_mode obj_type: view
-- name: postgresql_owner - set view owner in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_view
- obj_type: view
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER VIEW "test_view" OWNER TO "bob"']
-
-# Check, rowcount must be 0
-- name: postgresql_owner - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_views WHERE viewname = 'test_view' AND viewowner = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# true mode obj_type: view
-- name: postgresql_owner - set view owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_view
- obj_type: view
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER VIEW "test_view" OWNER TO "bob"']
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that view owner has been changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_views WHERE viewname = 'test_view' AND viewowner = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# true mode obj_type: view again
-- name: postgresql_owner - set view owner again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_view
- obj_type: view
- register: result
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that view owner is bob
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_views WHERE viewname = 'test_view' AND viewowner = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# ###########################
-# check_mode obj_type: matview
-- name: postgresql_owner - set matview owner in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_mat_view
- obj_type: matview
- check_mode: yes
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER MATERIALIZED VIEW "test_mat_view" OWNER TO "bob"']
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# Check, rowcount must be 0
-- name: postgresql_owner - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_matviews WHERE matviewname = 'test_view' AND matviewowner = 'bob'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# true mode obj_type: matview
-- name: postgresql_owner - set matview owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_mat_view
- obj_type: matview
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER MATERIALIZED VIEW "test_mat_view" OWNER TO "bob"']
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that matview owner has been changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_matviews WHERE matviewname = 'test_mat_view' AND matviewowner = 'bob'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# true mode obj_type: matview again
-- name: postgresql_owner - set matview owner again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: test_mat_view
- obj_type: matview
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that matview owner is bob
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_matviews WHERE matviewname = 'test_mat_view' AND matviewowner = 'bob'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# ###########################
-# check_mode obj_type: tablespace
-- name: postgresql_owner - set tablespace owner in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: acme
- obj_type: tablespace
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER TABLESPACE "acme" OWNER TO "bob"']
-
-# Check, rowcount must be 0
-- name: postgresql_owner - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tablespace AS t JOIN pg_roles AS r ON t.spcowner = r.oid WHERE t.spcname = 'acme' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# true mode obj_type: tablespace
-- name: postgresql_owner - set tablespace owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: acme
- obj_type: tablespace
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER TABLESPACE "acme" OWNER TO "bob"']
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that tablespace owner has been changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tablespace AS t JOIN pg_roles AS r ON t.spcowner = r.oid WHERE t.spcname = 'acme' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# true mode obj_type: tablespace again
-- name: postgresql_owner - set tablespace owner again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: acme
- new_owner: bob
- obj_name: acme
- obj_type: tablespace
- register: result
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
-
-# Check, rowcount must be 1
-- name: postgresql_owner - check that tablespace owner is bob
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: acme
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tablespace AS t JOIN pg_roles AS r ON t.spcowner = r.oid WHERE t.spcname = 'acme' AND r.rolname = 'bob'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-#
-# Crean up
-#
-
-# Drop test database:
-- name: postgresql_owner - create test database
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- login_user: "{{ pg_user }}"
- db: acme
- state: absent
-
-# Drop test tablespace:
-- name: postgresql_owner - drop test tablespace
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme
- state: absent
diff --git a/test/integration/targets/postgresql_pg_hba/aliases b/test/integration/targets/postgresql_pg_hba/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_pg_hba/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_pg_hba/defaults/main.yml b/test/integration/targets/postgresql_pg_hba/defaults/main.yml
deleted file mode 100644
index 4e1fe7dd33..0000000000
--- a/test/integration/targets/postgresql_pg_hba/defaults/main.yml
+++ /dev/null
@@ -1,23 +0,0 @@
----
-pg_hba_test_ips:
-- contype: local
- users: 'all,postgres,test'
-- source: '0000:ffff::'
- netmask: 'ffff:fff0::'
-- source: '192.168.0.0/24'
- netmask: ''
- databases: 'all,replication'
-- source: '192.168.1.0/24'
- netmask: ''
- databases: 'all'
- method: reject
-- source: '127.0.0.1/32'
- netmask: ''
-- source: '::1/128'
- netmask: ''
-- source: '0000:ff00::'
- netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00'
- method: scram-sha-256
-- source: '172.16.0.0'
- netmask: '255.255.0.0'
- method: trust
diff --git a/test/integration/targets/postgresql_pg_hba/meta/main.yml b/test/integration/targets/postgresql_pg_hba/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_pg_hba/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_pg_hba/tasks/main.yml b/test/integration/targets/postgresql_pg_hba/tasks/main.yml
deleted file mode 100644
index 3388e9b6e5..0000000000
--- a/test/integration/targets/postgresql_pg_hba/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-# Initial CI tests of postgresql_pg_hba module
-- import_tasks: postgresql_pg_hba_initial.yml
diff --git a/test/integration/targets/postgresql_pg_hba/tasks/postgresql_pg_hba_initial.yml b/test/integration/targets/postgresql_pg_hba/tasks/postgresql_pg_hba_initial.yml
deleted file mode 100644
index d4801d48aa..0000000000
--- a/test/integration/targets/postgresql_pg_hba/tasks/postgresql_pg_hba_initial.yml
+++ /dev/null
@@ -1,169 +0,0 @@
-- name: Make sure file does not exist
- file:
- dest: /tmp/pg_hba.conf
- state: absent
-
-- name: check_mode run
- postgresql_pg_hba:
- dest: /tmp/pg_hba.conf
- contype: host
- source: '0000:ffff::'
- netmask: 'ffff:fff0::'
- method: md5
- backup: 'True'
- order: sud
- state: "{{item}}"
- check_mode: yes
- with_items:
- - present
- - absent
-
-- name: check_mode check
- stat:
- path: /tmp/pg_hba.conf
- register: pg_hba_checkmode_check
-
-- name: Remove several ip addresses for idempotency check
- postgresql_pg_hba:
- contype: "{{item.contype|default('host')}}"
- databases: "{{item.databases|default('all')}}"
- dest: /tmp/pg_hba.conf
- method: "{{item.method|default('md5')}}"
- netmask: "{{item.netmask|default('')}}"
- order: sud
- source: "{{item.source|default('')}}"
- state: absent
- users: "{{item.users|default('all')}}"
- with_items: "{{pg_hba_test_ips}}"
- register: pg_hba_idempotency_check1
-
-- name: idempotency not creating file check
- stat:
- path: /tmp/pg_hba.conf
- register: pg_hba_idempotency_file_check
-
-- name: Add several ip addresses
- postgresql_pg_hba:
- backup: 'True'
- contype: "{{item.contype|default('host')}}"
- create: 'True'
- databases: "{{item.databases|default('all')}}"
- dest: /tmp/pg_hba.conf
- method: "{{item.method|default('md5')}}"
- netmask: "{{item.netmask|default('')}}"
- order: sud
- source: "{{item.source|default('')}}"
- state: present
- users: "{{item.users|default('all')}}"
- register: pg_hba_change
- with_items: "{{pg_hba_test_ips}}"
-
-- name: Retain options even if they contain spaces
- postgresql_pg_hba:
- dest: "/tmp/pg_hba.conf"
- users: "+some"
- order: "sud"
- state: "present"
- contype: "{{ item.contype }}"
- method: "{{ item.method }}"
- options: "{{ item.options }}"
- address: "{{ item.address }}"
- with_items:
- - { address: "", contype: "local", method: "ldap", options: "ldapserver=example.com ldapport=389 ldapprefix=\"cn=\"" }
- - { address: "red", contype: "hostssl", method: "cert", options: "clientcert=1 map=mymap" }
- - { address: "blue", contype: "hostssl", method: "cert", options: "clientcert=1 map=mymap" }
- register: pg_hba_options
-
-- name: read pg_hba rules
- postgresql_pg_hba:
- dest: /tmp/pg_hba.conf
- register: pg_hba
-
-- name: Add several ip addresses again for idempotency check
- postgresql_pg_hba:
- contype: "{{item.contype|default('host')}}"
- databases: "{{item.databases|default('all')}}"
- dest: /tmp/pg_hba.conf
- method: "{{item.method|default('md5')}}"
- netmask: "{{item.netmask|default('')}}"
- order: sud
- source: "{{item.source|default('')}}"
- state: present
- users: "{{item.users|default('all')}}"
- with_items: "{{pg_hba_test_ips}}"
- register: pg_hba_idempotency_check2
-
-- name: pre-backup stat
- stat:
- path: /tmp/pg_hba.conf
- register: prebackupstat
-
-- name: Add new ip address for backup check and netmask_sameas_prefix check
- postgresql_pg_hba:
- backup: 'True'
- contype: host
- dest: /tmp/pg_hba.conf
- method: md5
- netmask: 255.255.255.0
- order: sud
- source: '172.21.0.0'
- state: present
- register: pg_hba_backup_check2
-
-- name: Add new ip address for netmask_sameas_prefix check
- postgresql_pg_hba:
- backup: 'True'
- contype: host
- dest: /tmp/pg_hba.conf
- method: md5
- order: sud
- source: '172.21.0.0/24'
- state: present
- register: netmask_sameas_prefix_check
-
-- name: post-backup stat
- stat:
- path: "{{pg_hba_backup_check2.backup_file}}"
- register: postbackupstat
-
-- name: Dont allow netmask for src in [all, samehost, samenet]
- postgresql_pg_hba:
- contype: host
- dest: /tmp/pg_hba.conf
- method: md5
- netmask: '255.255.255.255'
- order: sud
- source: all
- state: present
- register: pg_hba_fail_src_all_with_netmask
- ignore_errors: yes
-
-- debug:
- var: pg_hba.pg_hba
-- assert:
- that:
- - 'pg_hba.pg_hba == [
- { "db": "all", "method": "ldap", "type": "local", "usr": "+some", "options": "ldapserver=example.com ldapport=389 ldapprefix=\"cn=\"" },
- { "db": "all", "method": "md5", "type": "local", "usr": "postgres" },
- { "db": "all", "method": "md5", "type": "local", "usr": "test" },
- { "db": "all", "method": "md5", "type": "local", "usr": "all" },
- { "db": "all", "method": "cert", "src": "blue", "type": "hostssl", "usr": "+some", "options": "clientcert=1 map=mymap" },
- { "db": "all", "method": "cert", "src": "red", "type": "hostssl", "usr": "+some", "options": "clientcert=1 map=mymap" },
- { "db": "all", "method": "md5", "src": "127.0.0.1/32", "type": "host", "usr": "all" },
- { "db": "all", "method": "md5", "src": "::1/128", "type": "host", "usr": "all" },
- { "db": "all", "method": "scram-sha-256", "src": "0:ff00::/120", "type": "host", "usr": "all" },
- { "db": "replication", "method": "md5", "src": "192.168.0.0/24", "type": "host", "usr": "all" },
- { "db": "all", "method": "md5", "src": "192.168.0.0/24", "type": "host", "usr": "all" },
- { "db": "all", "method": "reject", "src": "192.168.1.0/24", "type": "host", "usr": "all" },
- { "db": "all", "method": "trust", "src": "172.16.0.0/16", "type": "host", "usr": "all" },
- { "db": "all", "method": "md5", "src": "0:fff0::/28", "type": "host", "usr": "all" }
- ]'
- - 'pg_hba_change is changed'
- - 'pg_hba_checkmode_check.stat.exists == false'
- - 'not pg_hba_idempotency_check1 is changed'
- - 'not pg_hba_idempotency_check2 is changed'
- - 'pg_hba_idempotency_file_check.stat.exists == false'
- - 'prebackupstat.stat.checksum == postbackupstat.stat.checksum'
- - 'pg_hba_fail_src_all_with_netmask is failed'
- - 'not netmask_sameas_prefix_check is changed'
- - 'pg_hba_options is changed'
diff --git a/test/integration/targets/postgresql_ping/aliases b/test/integration/targets/postgresql_ping/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_ping/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_ping/defaults/main.yml b/test/integration/targets/postgresql_ping/defaults/main.yml
deleted file mode 100644
index 73eb55ae25..0000000000
--- a/test/integration/targets/postgresql_ping/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-db_default: postgres
diff --git a/test/integration/targets/postgresql_ping/meta/main.yml b/test/integration/targets/postgresql_ping/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_ping/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_ping/tasks/main.yml b/test/integration/targets/postgresql_ping/tasks/main.yml
deleted file mode 100644
index d44fef2164..0000000000
--- a/test/integration/targets/postgresql_ping/tasks/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-# Initial CI tests of postgresql_ping module
-- import_tasks: postgresql_ping_initial.yml
- vars:
- db_name_nonexist: fake_db
diff --git a/test/integration/targets/postgresql_ping/tasks/postgresql_ping_initial.yml b/test/integration/targets/postgresql_ping/tasks/postgresql_ping_initial.yml
deleted file mode 100644
index 346134eb4e..0000000000
--- a/test/integration/targets/postgresql_ping/tasks/postgresql_ping_initial.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-# Test code for the postgresql_ping module
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: postgresql_ping - test return values
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ping:
- db: "{{ db_default }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.is_available == true
- - result.server_version != {}
- - result.server_version.major != false
- - result.server_version.minor != false
- - result is not changed
-
-- name: postgresql_ping - check ping of non-existing database doesn't return anything
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ping:
- db: "{{ db_name_nonexist }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.is_available == false
- - result.server_version == {}
- - result is not changed
-
-- name: postgresql_ping - ping DB with SSL
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_ping:
- db: "{{ ssl_db }}"
- login_user: "{{ ssl_user }}"
- login_password: "{{ ssl_pass }}"
- login_host: 127.0.0.1
- login_port: 5432
- ssl_mode: require
- ca_cert: '{{ ssl_rootcert }}'
- register: result
- when:
- - ansible_os_family == 'Debian'
- - postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result.is_available == true
- when:
- - ansible_os_family == 'Debian'
- - postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_privs/aliases b/test/integration/targets/postgresql_privs/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_privs/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_privs/defaults/main.yml b/test/integration/targets/postgresql_privs/defaults/main.yml
deleted file mode 100644
index db3ddb32f1..0000000000
--- a/test/integration/targets/postgresql_privs/defaults/main.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-db_name: ansible_db
-db_user1: ansible_db_user1
-db_user2: ansible_db_user2
-db_user3: ansible_db_user3
-db_user_with_dots1: role.with.dots1
-db_user_with_dots2: role.with.dots2
-db_session_role1: session_role1
-db_session_role2: session_role2
diff --git a/test/integration/targets/postgresql_privs/meta/main.yml b/test/integration/targets/postgresql_privs/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_privs/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_privs/tasks/main.yml b/test/integration/targets/postgresql_privs/tasks/main.yml
deleted file mode 100644
index 2b4c21150c..0000000000
--- a/test/integration/targets/postgresql_privs/tasks/main.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-- include_tasks: postgresql_privs_session_role.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# Initial CI tests of postgresql_privs module:
-- include_tasks: postgresql_privs_initial.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# General tests:
-- include_tasks: postgresql_privs_general.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# Tests default_privs with target_role:
-- include_tasks: test_target_role.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_privs/tasks/pg_authid_not_readable.yml b/test/integration/targets/postgresql_privs/tasks/pg_authid_not_readable.yml
deleted file mode 100644
index f5d502d091..0000000000
--- a/test/integration/targets/postgresql_privs/tasks/pg_authid_not_readable.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-- name: "Admin user is allowed to access pg_authid relation: password comparison will succeed, password won't be updated"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user1 }}"
- encrypted: 'yes'
- password: "md5{{ (db_password ~ db_user1) | hash('md5')}}"
- db: "{{ db_name }}"
- priv: 'test_table1:INSERT,SELECT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER/test_table2:INSERT/CREATE,CONNECT,TEMP'
- login_user: "{{ pg_user }}"
- register: redo_as_admin
-
-- name: "Check that task succeeded without any change"
- assert:
- that:
- - 'redo_as_admin is not failed'
- - 'redo_as_admin is not changed'
- - 'redo_as_admin is successful'
-
-- name: "Check that normal user isn't allowed to access pg_authid"
- shell: 'psql -c "select * from pg_authid;" {{ db_name }} {{ db_user1 }}'
- environment:
- PGPASSWORD: '{{ db_password }}'
- ignore_errors: yes
- register: pg_authid
-
-- assert:
- that:
- - 'pg_authid is failed'
- - pg_authid.stderr is search('permission denied for (relation|table) pg_authid')
-
-- name: "Normal user isn't allowed to access pg_authid relation: password comparison will fail, password will be updated"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user1 }}"
- encrypted: 'yes'
- password: "md5{{ (db_password ~ db_user1) | hash('md5')}}"
- db: "{{ db_name }}"
- priv: 'test_table1:INSERT,SELECT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER/test_table2:INSERT/CREATE,CONNECT,TEMP'
- login_user: "{{ db_user1 }}"
- login_password: "{{ db_password }}"
- register: redo_as_normal_user
-
-- name: "Check that task succeeded and that result is changed"
- assert:
- that:
- - 'redo_as_normal_user is not failed'
- - 'redo_as_normal_user is changed'
- - 'redo_as_normal_user is successful'
diff --git a/test/integration/targets/postgresql_privs/tasks/postgresql_privs_general.yml b/test/integration/targets/postgresql_privs/tasks/postgresql_privs_general.yml
deleted file mode 100644
index 53388be8ef..0000000000
--- a/test/integration/targets/postgresql_privs/tasks/postgresql_privs_general.yml
+++ /dev/null
@@ -1,966 +0,0 @@
-# Setup
-- name: Create DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Create a user to be owner of objects
- postgresql_user:
- name: "{{ db_user3 }}"
- state: present
- encrypted: yes
- password: password
- role_attr_flags: CREATEDB,LOGIN
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Create a user to be given permissions and other tests
- postgresql_user:
- name: "{{ db_user2 }}"
- state: present
- encrypted: yes
- password: password
- role_attr_flags: LOGIN
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-#############################
-# Test of solving bug 27327 #
-#############################
-
-# Create the test table and view:
-- name: Create table
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- login_user: "{{ pg_user }}"
- db: postgres
- name: test_table1
- columns:
- - id int
-
-- name: Create view
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: "CREATE VIEW test_view AS SELECT id FROM test_table1"
-
-# Test check_mode:
-- name: Grant SELECT on test_view, check_mode
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- login_user: "{{ pg_user }}"
- db: postgres
- state: present
- privs: SELECT
- type: table
- objs: test_view
- roles: "{{ db_user2 }}"
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
-
-# Check:
-- name: Check that nothing was changed after the prev step
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: "SELECT grantee FROM information_schema.role_table_grants WHERE table_name='test_view' AND grantee = '{{ db_user2 }}'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Test true mode:
-- name: Grant SELECT on test_view
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- login_user: "{{ pg_user }}"
- db: postgres
- state: present
- privs: SELECT
- type: table
- objs: test_view
- roles: "{{ db_user2 }}"
- register: result
-
-- assert:
- that:
- - result is changed
-
-# Check:
-- name: Check that nothing was changed after the prev step
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: "SELECT grantee FROM information_schema.role_table_grants WHERE table_name='test_view' AND grantee = '{{ db_user2 }}'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Test true mode:
-- name: Try to grant SELECT again
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- login_user: "{{ pg_user }}"
- db: postgres
- state: present
- privs: SELECT
- type: table
- objs: test_view
- roles: "{{ db_user2 }}"
- register: result
-
-- assert:
- that:
- - result is not changed
-
-# Cleanup:
-- name: Drop test view
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: "DROP VIEW test_view"
-
-- name: Drop test table
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- login_user: "{{ pg_user }}"
- db: postgres
- name: test_table1
- state: absent
-
-######################################################
-# Test foreign data wrapper and foreign server privs #
-######################################################
-
-# Foreign data wrapper setup
-- name: Create foreign data wrapper extension
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "CREATE EXTENSION postgres_fdw" | psql -d "{{ db_name }}"
-
-- name: Create dummy foreign data wrapper
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "CREATE FOREIGN DATA WRAPPER dummy" | psql -d "{{ db_name }}"
-
-- name: Create foreign server
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "CREATE SERVER dummy_server FOREIGN DATA WRAPPER dummy" | psql -d "{{ db_name }}"
-
-# Test
-- name: Grant foreign data wrapper privileges
- postgresql_privs:
- state: present
- type: foreign_data_wrapper
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: dummy
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that:
- - result is changed
-
-- name: Get foreign data wrapper privileges
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "{{ fdw_query }}" | psql -d "{{ db_name }}"
- vars:
- fdw_query: >
- SELECT fdwacl FROM pg_catalog.pg_foreign_data_wrapper
- WHERE fdwname = ANY (ARRAY['dummy']) ORDER BY fdwname
- register: fdw_result
-
-- assert:
- that:
- - "fdw_result.stdout_lines[-1] == '(1 row)'"
- - "'{{ db_user2 }}' in fdw_result.stdout_lines[-2]"
-
-# Test
-- name: Grant foreign data wrapper privileges second time
- postgresql_privs:
- state: present
- type: foreign_data_wrapper
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: dummy
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that:
- - result is not changed
-
-# Test
-- name: Revoke foreign data wrapper privileges
- postgresql_privs:
- state: absent
- type: foreign_data_wrapper
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: dummy
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that:
- - result is changed
-
-- name: Get foreign data wrapper privileges
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "{{ fdw_query }}" | psql -d "{{ db_name }}"
- vars:
- fdw_query: >
- SELECT fdwacl FROM pg_catalog.pg_foreign_data_wrapper
- WHERE fdwname = ANY (ARRAY['dummy']) ORDER BY fdwname
- register: fdw_result
-
-- assert:
- that:
- - "fdw_result.stdout_lines[-1] == '(1 row)'"
- - "'{{ db_user2 }}' not in fdw_result.stdout_lines[-2]"
-
-# Test
-- name: Revoke foreign data wrapper privileges for second time
- postgresql_privs:
- state: absent
- type: foreign_data_wrapper
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: dummy
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that:
- - result is not changed
-
-# Test
-- name: Grant foreign server privileges
- postgresql_privs:
- state: present
- type: foreign_server
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: dummy_server
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that:
- - result is changed
-
-- name: Get foreign server privileges
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "{{ fdw_query }}" | psql -d "{{ db_name }}"
- vars:
- fdw_query: >
- SELECT srvacl FROM pg_catalog.pg_foreign_server
- WHERE srvname = ANY (ARRAY['dummy_server']) ORDER BY srvname
- register: fs_result
-
-- assert:
- that:
- - "fs_result.stdout_lines[-1] == '(1 row)'"
- - "'{{ db_user2 }}' in fs_result.stdout_lines[-2]"
-
-# Test
-- name: Grant foreign server privileges for second time
- postgresql_privs:
- state: present
- type: foreign_server
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: dummy_server
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that:
- - result is not changed
-
-# Test
-- name: Revoke foreign server privileges
- postgresql_privs:
- state: absent
- type: foreign_server
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: dummy_server
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that:
- - result is changed
-
-- name: Get foreign server privileges
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "{{ fdw_query }}" | psql -d "{{ db_name }}"
- vars:
- fdw_query: >
- SELECT srvacl FROM pg_catalog.pg_foreign_server
- WHERE srvname = ANY (ARRAY['dummy_server']) ORDER BY srvname
- register: fs_result
-
-- assert:
- that:
- - "fs_result.stdout_lines[-1] == '(1 row)'"
- - "'{{ db_user2 }}' not in fs_result.stdout_lines[-2]"
-
-# Test
-- name: Revoke foreign server privileges for second time
- postgresql_privs:
- state: absent
- type: foreign_server
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: dummy_server
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that:
- - result is not changed
-
-# Foreign data wrapper cleanup
-- name: Drop foreign server
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "DROP SERVER dummy_server" | psql -d "{{ db_name }}"
-
-- name: Drop dummy foreign data wrapper
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "DROP FOREIGN DATA WRAPPER dummy" | psql -d "{{ db_name }}"
-
-- name: Drop foreign data wrapper extension
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "DROP EXTENSION postgres_fdw" | psql -d "{{ db_name }}"
-
-##########################################
-# Test ALL_IN_SCHEMA for 'function' type #
-##########################################
-
-# Function ALL_IN_SCHEMA Setup
-- name: Create function for test
- postgresql_query:
- query: CREATE FUNCTION public.a() RETURNS integer LANGUAGE SQL AS 'SELECT 2';
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
-
-# Test
-- name: Grant execute to all functions
- postgresql_privs:
- type: function
- state: present
- privs: EXECUTE
- roles: "{{ db_user2 }}"
- objs: ALL_IN_SCHEMA
- schema: public
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that: result is changed
-
-- name: Check that all functions have execute privileges
- become: yes
- become_user: "{{ pg_user }}"
- shell: psql {{ db_name }} -c "SELECT proacl FROM pg_proc WHERE proname = 'a'" -t
- register: result
-
-- assert:
- that: "'{{ db_user2 }}=X/{{ db_user3 }}' in '{{ result.stdout_lines[0] }}'"
-
-# Test
-- name: Grant execute to all functions again
- postgresql_privs:
- type: function
- state: present
- privs: EXECUTE
- roles: "{{ db_user2 }}"
- objs: ALL_IN_SCHEMA
- schema: public
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that: result is not changed
-
-# Test
-- name: Revoke execute to all functions
- postgresql_privs:
- type: function
- state: absent
- privs: EXECUTE
- roles: "{{ db_user2 }}"
- objs: ALL_IN_SCHEMA
- schema: public
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- register: result
- ignore_errors: yes
-
-# Checks
-- assert:
- that: result is changed
-
-# Test
-- name: Revoke execute to all functions again
- postgresql_privs:
- type: function
- state: absent
- privs: EXECUTE
- roles: "{{ db_user2 }}"
- objs: ALL_IN_SCHEMA
- schema: public
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- register: result
- ignore_errors: yes
-
-- assert:
- that: result is not changed
-
-# Function ALL_IN_SCHEMA cleanup
-- name: Remove function for test
- postgresql_query:
- query: DROP FUNCTION public.a();
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
-
-#################################################
-# Test ALL_IN_SCHEMA for 'partioned tables type #
-#################################################
-
-# Partitioning tables is a feature introduced in Postgresql 10.
-# (see https://www.postgresql.org/docs/10/ddl-partitioning.html )
-# The test below check for this version
-
-# Function ALL_IN_SCHEMA Setup
-- name: Create partioned table for test purpose
- postgresql_query:
- query: CREATE TABLE public.testpt (id int not null, logdate date not null) PARTITION BY RANGE (logdate);
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Test
-- name: Grant execute to all tables in check mode
- postgresql_privs:
- type: table
- state: present
- privs: SELECT
- roles: "{{ db_user2 }}"
- objs: ALL_IN_SCHEMA
- schema: public
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- register: result
- ignore_errors: yes
- when: postgres_version_resp.stdout is version('10', '>=')
- check_mode: yes
-
-# Checks
-- name: Check that all partitioned tables don't have select privileges after the check mode task
- postgresql_query:
- query: SELECT grantee, privilege_type FROM information_schema.role_table_grants WHERE table_name='testpt' and privilege_type='SELECT' and grantee = %(grantuser)s
- db: "{{ db_name }}"
- login_user: '{{ db_user2 }}'
- login_password: password
- named_args:
- grantuser: '{{ db_user2 }}'
- become: yes
- become_user: "{{ pg_user }}"
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('10', '>=')
-
-
-# Test
-- name: Grant execute to all tables
- postgresql_privs:
- type: table
- state: present
- privs: SELECT
- roles: "{{ db_user2 }}"
- objs: ALL_IN_SCHEMA
- schema: public
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- register: result
- ignore_errors: yes
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Checks
-- assert:
- that: result is changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Check that all partitioned tables have select privileges
- postgresql_query:
- query: SELECT grantee, privilege_type FROM information_schema.role_table_grants WHERE table_name='testpt' and privilege_type='SELECT' and grantee = %(grantuser)s
- db: "{{ db_name }}"
- login_user: '{{ db_user2 }}'
- login_password: password
- named_args:
- grantuser: '{{ db_user2 }}'
- become: yes
- become_user: "{{ pg_user }}"
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Test
-- name: Grant execute to all tables again to see no changes are reported
- postgresql_privs:
- type: table
- state: present
- privs: SELECT
- roles: "{{ db_user2 }}"
- objs: ALL_IN_SCHEMA
- schema: public
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- register: result
- ignore_errors: yes
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Checks
-- assert:
- that: result is not changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Test
-- name: Revoke SELECT to all tables
- postgresql_privs:
- type: table
- state: absent
- privs: SELECT
- roles: "{{ db_user2 }}"
- objs: ALL_IN_SCHEMA
- schema: public
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- register: result
- ignore_errors: yes
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Checks
-- assert:
- that: result is changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Check that all partitioned tables don't have select privileges
- postgresql_query:
- query: SELECT grantee, privilege_type FROM information_schema.role_table_grants WHERE table_name='testpt' and privilege_type='SELECT' and grantee = %(grantuser)s
- db: "{{ db_name }}"
- login_user: '{{ db_user2 }}'
- login_password: password
- named_args:
- grantuser: '{{ db_user2 }}'
- become: yes
- become_user: "{{ pg_user }}"
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Test
-- name: Revoke SELECT to all tables and no changes are reported
- postgresql_privs:
- type: table
- state: absent
- privs: SELECT
- roles: "{{ db_user2 }}"
- objs: ALL_IN_SCHEMA
- schema: public
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- register: result
- ignore_errors: yes
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that: result is not changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Table ALL_IN_SCHEMA cleanup
-- name: Remove table for test
- postgresql_query:
- query: DROP TABLE public.testpt;
- db: "{{ db_name }}"
- login_user: "{{ db_user3 }}"
- login_password: password
- ignore_errors: yes
- when: postgres_version_resp.stdout is version('10', '>=')
-
-###########################################
-# Test for 'type' value of type parameter #
-###########################################
-
-# Test
-- name: Grant type privileges
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- state: present
- type: type
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: numeric
- schema: pg_catalog
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Checks
-- assert:
- that:
- - result is changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Get type privileges
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: "{{ db_name }}"
- query: SELECT typacl FROM pg_catalog.pg_type WHERE typname = 'numeric';
- register: typ_result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - "'{{ db_user2 }}' in typ_result.query_result[0].typacl"
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Grant type privileges again using check_mode
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- state: present
- type: type
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: numeric
- schema: pg_catalog
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- check_mode: yes
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Checks
-- assert:
- that:
- - result is not changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Get type privileges
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: "{{ db_name }}"
- query: SELECT typacl FROM pg_catalog.pg_type WHERE typname = 'numeric';
- register: typ_result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - "'{{ db_user2 }}' in typ_result.query_result[0].typacl"
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Grant type privileges again
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- state: present
- type: type
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: numeric
- schema: pg_catalog
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Checks
-- assert:
- that:
- - result is not changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Get type privileges
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: "{{ db_name }}"
- query: SELECT typacl FROM pg_catalog.pg_type WHERE typname = 'numeric';
- register: typ_result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - "'{{ db_user2 }}' in typ_result.query_result[0].typacl"
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Revoke type privileges in check_mode
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- state: absent
- type: type
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: numeric
- schema: pg_catalog
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- check_mode: yes
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Checks
-- assert:
- that:
- - result is changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Get type privileges
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: "{{ db_name }}"
- query: SELECT typacl FROM pg_catalog.pg_type WHERE typname = 'numeric';
- register: typ_result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - "'{{ db_user2 }}' in typ_result.query_result[0].typacl"
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Revoke type privileges
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- state: absent
- type: type
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: numeric
- schema: pg_catalog
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Checks
-- assert:
- that:
- - result is changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Get type privileges
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: "{{ db_name }}"
- query: SELECT typacl FROM pg_catalog.pg_type WHERE typname = 'numeric';
- register: typ_result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - "'{{ db_user2 }}' not in typ_result.query_result[0].typacl"
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# type with default schema (public):
-- name: Create custom type in schema public
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: "{{ db_name }}"
- query: "CREATE TYPE compfoo AS (f1 int, f2 text)"
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Test
-- name: Grant type privileges with default schema
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- state: present
- type: type
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: compfoo
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Checks
-- assert:
- that:
- - result is changed
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Get type privileges
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: "{{ db_name }}"
- query: >
- SELECT t.typacl FROM pg_catalog.pg_type t JOIN pg_catalog.pg_namespace n
- ON n.oid = t.typnamespace WHERE t.typname = 'compfoo' AND n.nspname = 'public';
- register: typ_result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - "'{{ db_user2 }}' in typ_result.query_result[0].typacl"
- when: postgres_version_resp.stdout is version('10', '>=')
-
-# Cleanup
-- name: Remove privs
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_privs:
- state: absent
- type: type
- roles: "{{ db_user2 }}"
- privs: ALL
- objs: compfoo
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- name: Reassign ownership
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_owner:
- login_user: "{{ pg_user }}"
- db: "{{ db_name }}"
- new_owner: "{{ pg_user }}"
- reassign_owned_by: "{{ item }}"
- loop:
- - "{{ db_user2 }}"
- - "{{ db_user3 }}"
-
-- name: Remove user given permissions
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_user2 }}"
- state: absent
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Remove user owner of objects
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_user3 }}"
- state: absent
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Destroy DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: absent
- name: "{{ db_name }}"
- login_user: "{{ pg_user }}"
diff --git a/test/integration/targets/postgresql_privs/tasks/postgresql_privs_initial.yml b/test/integration/targets/postgresql_privs/tasks/postgresql_privs_initial.yml
deleted file mode 100644
index f9e4241bc9..0000000000
--- a/test/integration/targets/postgresql_privs/tasks/postgresql_privs_initial.yml
+++ /dev/null
@@ -1,382 +0,0 @@
-# The tests below were added initially and moved here
-# from the shared target called ``postgresql`` by @Andersson007 <aaklychkov@mail.ru>.
-# You can see modern examples of CI tests in postgresql_publication directory, for example.
-
-#
-# Test settings privileges
-#
-- name: Create db
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: "{{ db_name }}"
- state: "present"
- login_user: "{{ pg_user }}"
-
-- name: Create some tables on the db
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "create table test_table1 (field text);" | psql {{ db_name }}
-
-- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "create table test_table2 (field text);" | psql {{ db_name }}
-
-- vars:
- db_password: 'secretù' # use UTF-8
- block:
- - name: Create a user with some permissions on the db
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user1 }}"
- encrypted: 'yes'
- password: "md5{{ (db_password ~ db_user1) | hash('md5')}}"
- db: "{{ db_name }}"
- priv: 'test_table1:INSERT,SELECT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER/test_table2:INSERT/CREATE,CONNECT,TEMP'
- login_user: "{{ pg_user }}"
-
- - include_tasks: pg_authid_not_readable.yml
-
-- name: Check that the user has the requested permissions (table1)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user1 }}' and table_name='test_table1';" | psql {{ db_name }}
- register: result_table1
-
-- name: Check that the user has the requested permissions (table2)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user1 }}' and table_name='test_table2';" | psql {{ db_name }}
- register: result_table2
-
-- name: Check that the user has the requested permissions (database)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select datacl from pg_database where datname='{{ db_name }}';" | psql {{ db_name }}
- register: result_database
-
-- assert:
- that:
- - "result_table1.stdout_lines[-1] == '(7 rows)'"
- - "'INSERT' in result_table1.stdout"
- - "'SELECT' in result_table1.stdout"
- - "'UPDATE' in result_table1.stdout"
- - "'DELETE' in result_table1.stdout"
- - "'TRUNCATE' in result_table1.stdout"
- - "'REFERENCES' in result_table1.stdout"
- - "'TRIGGER' in result_table1.stdout"
- - "result_table2.stdout_lines[-1] == '(1 row)'"
- - "'INSERT' == '{{ result_table2.stdout_lines[-2] | trim }}'"
- - "result_database.stdout_lines[-1] == '(1 row)'"
- - "'{{ db_user1 }}=CTc/{{ pg_user }}' in result_database.stdout_lines[-2]"
-
-- name: Add another permission for the user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user1 }}"
- encrypted: 'yes'
- password: "md55c8ccfd9d6711fc69a7eae647fc54f51"
- db: "{{ db_name }}"
- priv: 'test_table2:select'
- login_user: "{{ pg_user }}"
- register: result
-
-- name: Check that ansible reports it changed the user
- assert:
- that:
- - result is changed
-
-- name: Check that the user has the requested permissions (table2)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user1 }}' and table_name='test_table2';" | psql {{ db_name }}
- register: result_table2
-
-- assert:
- that:
- - "result_table2.stdout_lines[-1] == '(2 rows)'"
- - "'INSERT' in result_table2.stdout"
- - "'SELECT' in result_table2.stdout"
-
-#
-# Test priv setting via postgresql_privs module
-# (Depends on state from previous _user privs tests)
-#
-
-- name: Revoke a privilege
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- type: "table"
- state: "absent"
- roles: "{{ db_user1 }}"
- privs: "INSERT"
- objs: "test_table2"
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- name: Check that ansible reports it changed the user
- assert:
- that:
- - result is changed
-
-- name: Check that the user has the requested permissions (table2)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user1 }}' and table_name='test_table2';" | psql {{ db_name }}
- register: result_table2
-
-- assert:
- that:
- - "result_table2.stdout_lines[-1] == '(1 row)'"
- - "'SELECT' == '{{ result_table2.stdout_lines[-2] | trim }}'"
-
-- name: Revoke many privileges on multiple tables
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- state: "absent"
- roles: "{{ db_user1 }}"
- privs: "INSERT,select,UPDATE,TRUNCATE,REFERENCES,TRIGGER,delete"
- objs: "test_table2,test_table1"
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- name: Check that ansible reports it changed the user
- assert:
- that:
- - result is changed
-
-- name: Check that permissions were revoked (table1)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user1 }}' and table_name='test_table1';" | psql {{ db_name }}
- register: result_table1
-
-- name: Check that permissions were revoked (table2)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user1 }}' and table_name='test_table2';" | psql {{ db_name }}
- register: result_table2
-
-- assert:
- that:
- - "result_table1.stdout_lines[-1] == '(0 rows)'"
- - "result_table2.stdout_lines[-1] == '(0 rows)'"
-
-- name: Revoke database privileges
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- type: "database"
- state: "absent"
- roles: "{{ db_user1 }}"
- privs: "Create,connect,TEMP"
- objs: "{{ db_name }}"
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Check that the user has the requested permissions (database)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select datacl from pg_database where datname='{{ db_name }}';" | psql {{ db_name }}
- register: result_database
-
-- assert:
- that:
- - "result_database.stdout_lines[-1] == '(1 row)'"
- - "'{{ db_user1 }}' not in result_database.stdout"
-
-- name: Grant database privileges
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- type: "database"
- state: "present"
- roles: "{{ db_user1 }}"
- privs: "CREATE,connect"
- objs: "{{ db_name }}"
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- register: result
-
-- name: Check that ansible reports it changed the user
- assert:
- that:
- - result is changed
-
-- name: Check that the user has the requested permissions (database)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select datacl from pg_database where datname='{{ db_name }}';" | psql {{ db_name }}
- register: result_database
-
-- assert:
- that:
- - "result_database.stdout_lines[-1] == '(1 row)'"
- - "'{{ db_user1 }}=Cc' in result_database.stdout"
-
-- name: Grant a single privilege on a table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- state: "present"
- roles: "{{ db_user1 }}"
- privs: "INSERT"
- objs: "test_table1"
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Check that permissions were added (table1)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user1 }}' and table_name='test_table1';" | psql {{ db_name }}
- register: result_table1
-
-- assert:
- that:
- - "result_table1.stdout_lines[-1] == '(1 row)'"
- - "'{{ result_table1.stdout_lines[-2] | trim }}' == 'INSERT'"
-
-- name: Grant many privileges on multiple tables
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- state: "present"
- roles: "{{ db_user1 }}"
- privs: 'INSERT,SELECT,UPDATE,DELETE,TRUNCATE,REFERENCES,trigger'
- objs: "test_table2,test_table1"
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Check that permissions were added (table1)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user1 }}' and table_name='test_table1';" | psql {{ db_name }}
- register: result_table1
-
-- name: Check that permissions were added (table2)
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user1 }}' and table_name='test_table2';" | psql {{ db_name }}
- register: result_table2
-
-- assert:
- that:
- - "result_table1.stdout_lines[-1] == '(7 rows)'"
- - "'INSERT' in result_table1.stdout"
- - "'SELECT' in result_table1.stdout"
- - "'UPDATE' in result_table1.stdout"
- - "'DELETE' in result_table1.stdout"
- - "'TRUNCATE' in result_table1.stdout"
- - "'REFERENCES' in result_table1.stdout"
- - "'TRIGGER' in result_table1.stdout"
- - "result_table2.stdout_lines[-1] == '(7 rows)'"
- - "'INSERT' in result_table2.stdout"
- - "'SELECT' in result_table2.stdout"
- - "'UPDATE' in result_table2.stdout"
- - "'DELETE' in result_table2.stdout"
- - "'TRUNCATE' in result_table2.stdout"
- - "'REFERENCES' in result_table2.stdout"
- - "'TRIGGER' in result_table2.stdout"
-
-# Check passing roles with dots
-# https://github.com/ansible/ansible/issues/63204
-- name: Create roles for further tests
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: "{{ item }}"
- loop:
- - "{{ db_user_with_dots1 }}"
- - "{{ db_user_with_dots2 }}"
-
-- name: Pass role with dots in its name to roles parameter
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- state: "present"
- roles: "{{ db_user_with_dots1 }}"
- privs: "INSERT"
- objs: "test_table1"
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Check that permissions were added (table1)
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "select privilege_type from information_schema.role_table_grants where grantee='{{ db_user_with_dots1 }}' and table_name='test_table1'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# We don't need to check anything here, only that nothing failed
-- name: Pass role with dots in its name to target_roles parameter
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- state: "present"
- roles: "{{ db_user_with_dots1 }}"
- privs: "INSERT"
- objs: TABLES
- type: default_privs
- target_roles: "{{ db_user_with_dots2 }}"
-
-#
-# Cleanup
-#
-- name: Cleanup db
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- name: "{{ db_name }}"
- state: "absent"
- login_user: "{{ pg_user }}"
-
-- name: Check that database was destroyed
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select datname from pg_database where datname = '{{ db_name }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
-
-- name: Cleanup test user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ item }}"
- state: 'absent'
- login_user: "{{ pg_user }}"
- db: postgres
- loop:
- - "{{ db_user1 }}"
- - "{{ db_user2 }}"
- - "{{ db_user3 }}"
- - "{{ db_user_with_dots1 }}"
- - "{{ db_user_with_dots2 }}"
-
-- name: Check that they were removed
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "select * from pg_user where usename='{{ db_user1 }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
diff --git a/test/integration/targets/postgresql_privs/tasks/postgresql_privs_session_role.yml b/test/integration/targets/postgresql_privs/tasks/postgresql_privs_session_role.yml
deleted file mode 100644
index 164bbba67d..0000000000
--- a/test/integration/targets/postgresql_privs/tasks/postgresql_privs_session_role.yml
+++ /dev/null
@@ -1,79 +0,0 @@
-- name: Create a high privileged user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_session_role1 }}"
- state: "present"
- password: "password"
- role_attr_flags: "CREATEDB,LOGIN,CREATEROLE"
- login_user: "{{ pg_user }}"
- db: postgres
-
-- name: Create a low privileged user using the newly created user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_session_role2 }}"
- state: "present"
- password: "password"
- role_attr_flags: "LOGIN"
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role1 }}"
- db: postgres
-
-- name: Create DB as session_role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role1 }}"
- register: result
-
-- name: Create table to be able to grant privileges
- become_user: "{{ pg_user }}"
- become: yes
- shell: echo "CREATE TABLE test(i int); CREATE TABLE test2(i int);" | psql -AtXq "{{ db_session_role1 }}"
-
-- name: Grant all privileges on test1 table to low privileged user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- db: "{{ db_session_role1 }}"
- type: table
- objs: test
- roles: "{{ db_session_role2 }}"
- login_user: "{{ pg_user }}"
- privs: select
- admin_option: yes
-
-- name: Verify admin option was successful for grants
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- db: "{{ db_session_role1 }}"
- type: table
- objs: test
- roles: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- privs: select
- session_role: "{{ db_session_role2 }}"
-
-- name: Verify no grants can be granted for test2 table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- db: "{{ db_session_role1 }}"
- type: table
- objs: test2
- roles: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- privs: update
- session_role: "{{ db_session_role2 }}"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result is failed
diff --git a/test/integration/targets/postgresql_privs/tasks/test_target_role.yml b/test/integration/targets/postgresql_privs/tasks/test_target_role.yml
deleted file mode 100644
index a1d2805a23..0000000000
--- a/test/integration/targets/postgresql_privs/tasks/test_target_role.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-# Setup
-- name: Create a test user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
- db: postgres
-
-- name: Create DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_name }}"
- owner: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
-
-- name: Create a user to be given permissions and other tests
- postgresql_user:
- name: "{{ db_user2 }}"
- state: present
- encrypted: yes
- password: password
- role_attr_flags: LOGIN
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-#######################################
-# Test default_privs with target_role #
-#######################################
-
-# Test
-- name: Grant default privileges for new table objects
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- db: "{{ db_name }}"
- objs: TABLES
- privs: SELECT
- type: default_privs
- role: "{{ db_user2 }}"
- target_roles: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
- register: result
-
-# Checks
-- assert:
- that: result is changed
-
-- name: Check that default privileges are set
- become: yes
- become_user: "{{ pg_user }}"
- shell: psql {{ db_name }} -c "SELECT defaclrole, defaclobjtype, defaclacl FROM pg_default_acl a JOIN pg_roles b ON a.defaclrole=b.oid;" -t
- register: result
-
-- assert:
- that: "'{{ db_user2 }}=r/{{ db_user1 }}' in '{{ result.stdout_lines[0] }}'"
-
-# Test
-- name: Revoke default privileges for new table objects
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_privs:
- db: "{{ db_name }}"
- state: absent
- objs: TABLES
- privs: SELECT
- type: default_privs
- role: "{{ db_user2 }}"
- target_roles: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
- register: result
-
-# Checks
-- assert:
- that: result is changed
-
-# Cleanup
-- name: Remove user given permissions
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user2 }}"
- state: absent
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Remove user owner of objects
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user3 }}"
- state: absent
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Destroy DBs
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: absent
- name: "{{ item }}"
- login_user: "{{ pg_user }}"
- loop:
- - "{{ db_name }}"
- - "{{ db_session_role1 }}"
-
-- name: Remove test users
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ item }}"
- state: absent
- db: postgres
- login_user: "{{ pg_user }}"
- loop:
- - "{{ db_user1 }}"
- - "{{ db_session_role1 }}"
- - "{{ db_session_role2 }}"
diff --git a/test/integration/targets/postgresql_publication/aliases b/test/integration/targets/postgresql_publication/aliases
deleted file mode 100644
index f2df32c48a..0000000000
--- a/test/integration/targets/postgresql_publication/aliases
+++ /dev/null
@@ -1,5 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
-skip/freebsd
diff --git a/test/integration/targets/postgresql_publication/meta/main.yml b/test/integration/targets/postgresql_publication/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_publication/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_publication/tasks/main.yml b/test/integration/targets/postgresql_publication/tasks/main.yml
deleted file mode 100644
index 8743a0d3fa..0000000000
--- a/test/integration/targets/postgresql_publication/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-# Initial CI tests of postgresql_publication module
-- import_tasks: postgresql_publication_initial.yml
- when: postgres_version_resp.stdout is version('10', '>=')
diff --git a/test/integration/targets/postgresql_publication/tasks/postgresql_publication_initial.yml b/test/integration/targets/postgresql_publication/tasks/postgresql_publication_initial.yml
deleted file mode 100644
index 01de300389..0000000000
--- a/test/integration/targets/postgresql_publication/tasks/postgresql_publication_initial.yml
+++ /dev/null
@@ -1,411 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# The file for testing postgresql_copy module.
-
-- vars:
- test_table1: acme1
- test_table2: acme2
- test_table3: acme3
- test_pub: acme_publ
- test_role: alice
- test_schema: acme_schema
- test_db: acme_db
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: '{{ test_db }}'
-
- block:
- #################################################
- # Test preparation, create database test objects:
- - name: postgresql_publication - create test db
- <<: *task_parameters
- postgresql_db:
- login_user: '{{ pg_user }}'
- maintenance_db: postgres
- name: '{{ test_db }}'
-
- - name: postgresql_publication - create test schema
- <<: *task_parameters
- postgresql_schema:
- <<: *pg_parameters
- name: '{{ test_schema }}'
-
- - name: postgresql_publication - create test role
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_role }}'
- role_attr_flags: SUPERUSER
-
- - name: postgresql_publication - create test tables
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ item }}'
- columns:
- - id int
- loop:
- - '{{ test_table1 }}'
- - '{{ test_schema }}.{{ test_table2 }}'
- - '{{ test_table3 }}'
-
-
- ################
- # Do main tests:
-
- # Test
- - name: postgresql_publication - create publication, check_mode
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- name: '{{ test_pub }}'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.exists == false
- - result.queries == ["CREATE PUBLICATION \"{{ test_pub }}\" FOR ALL TABLES"]
-
- # Check
- - name: postgresql_publication - check that nothing has been changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}'
-
- - assert:
- that:
- - result.rowcount == 0
-
- # Test
- - name: postgresql_publication - create publication
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- name: '{{ test_pub }}'
-
- - assert:
- that:
- - result is changed
- - result.exists == true
- - result.queries == ["CREATE PUBLICATION \"{{ test_pub }}\" FOR ALL TABLES"]
- - result.owner == '{{ pg_user }}'
- - result.alltables == true
- - result.tables == []
- - result.parameters.publish != {}
-
- # Check
- - name: postgresql_publication - check that nothing has been changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}'
- AND pubowner = '10' AND puballtables = 't'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Test
- - name: postgresql_publication - drop publication, check_mode
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- name: '{{ test_pub }}'
- state: absent
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.exists == true
- - result.queries == ["DROP PUBLICATION \"{{ test_pub }}\""]
- - result.owner == '{{ pg_user }}'
- - result.alltables == true
- - result.tables == []
- - result.parameters.publish != {}
-
- # Check
- - name: postgresql_publication - check that nothing has been changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Test
- - name: postgresql_publication - drop publication
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- name: '{{ test_pub }}'
- state: absent
- cascade: yes
-
- - assert:
- that:
- - result is changed
- - result.exists == false
- - result.queries == ["DROP PUBLICATION \"{{ test_pub }}\" CASCADE"]
-
- # Check
- - name: postgresql_publication - check that publication does not exist
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}'
-
- - assert:
- that:
- - result.rowcount == 0
-
- # Test
- - name: postgresql_publication - create publication with tables, owner, params
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- name: '{{ test_pub }}'
- owner: '{{ test_role }}'
- tables:
- - '{{ test_table1 }}'
- - '{{ test_schema }}.{{ test_table2 }}'
- parameters:
- publish: 'insert'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["CREATE PUBLICATION \"{{ test_pub }}\" FOR TABLE \"public\".\"{{ test_table1 }}\", \"{{ test_schema }}\".\"{{ test_table2 }}\" WITH (publish = 'insert')", "ALTER PUBLICATION \"{{ test_pub }}\" OWNER TO \"{{ test_role }}\""]
- - result.owner == '{{ test_role }}'
- - result.tables == ["\"public\".\"{{ test_table1 }}\"", "\"{{ test_schema }}\".\"{{ test_table2 }}\""]
- - result.parameters.publish.insert == true
- - result.parameters.publish.delete == false
-
- # Check 1
- - name: postgresql_publication - check that test publication exists
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}'
- AND pubowner != '10' AND puballtables = 'f' AND pubinsert = 't' AND pubdelete = 'f'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Check 2
- - name: postgresql_publication - check that test_table1 from schema public is in publication
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication_tables WHERE pubname = '{{ test_pub }}' AND schemaname = 'public'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Check 3
- - name: postgresql_publication - check that test_table2 from test schema is in publication
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication_tables WHERE pubname = '{{ test_pub }}' AND schemaname = '{{ test_schema }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Test
- - name: postgresql_publication - add table to publication, change owner, check_mode
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- name: '{{ test_pub }}'
- owner: '{{ pg_user }}'
- tables:
- - '{{ test_table1 }}'
- - '{{ test_schema }}.{{ test_table2 }}'
- - '{{ test_table3 }}'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.queries == ["ALTER PUBLICATION \"{{ test_pub }}\" ADD TABLE \"public\".\"{{ test_table3 }}\"", "ALTER PUBLICATION \"{{ test_pub }}\" OWNER TO \"{{ pg_user }}\""]
- - result.tables == ["\"public\".\"{{ test_table1 }}\"", "\"{{ test_schema }}\".\"{{ test_table2 }}\""]
-
- # Check
- - name: postgresql_publication - check that nothing changes after the previous step
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}'
- AND pubowner != '10' AND puballtables = 'f' AND pubinsert = 't' AND pubupdate = 't'
-
- - assert:
- that:
- - result.rowcount == 0
-
- # Check
- - name: postgresql_publication - check that 2 tables are in publication
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication_tables WHERE pubname = '{{ test_pub }}'
-
- - assert:
- that:
- - result.rowcount == 2
-
- # Test
- - name: postgresql_publication - add table to publication, change owner
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- name: '{{ test_pub }}'
- owner: '{{ pg_user }}'
- tables:
- - '{{ test_table1 }}'
- - '{{ test_schema }}.{{ test_table2 }}'
- - '{{ test_table3 }}'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["ALTER PUBLICATION \"{{ test_pub }}\" ADD TABLE \"public\".\"{{ test_table3 }}\"", "ALTER PUBLICATION \"{{ test_pub }}\" OWNER TO \"{{ pg_user }}\""]
- - result.tables == ["\"public\".\"{{ test_table1 }}\"", "\"{{ test_schema }}\".\"{{ test_table2 }}\"", "\"public\".\"{{ test_table3 }}\""]
-
- # Check 1
- - name: postgresql_publication - check owner has been changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}' AND pubowner = '10'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Check 2
- - name: postgresql_publication - check that 3 tables are in publication
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication_tables WHERE pubname = '{{ test_pub }}'
-
- - assert:
- that:
- - result.rowcount == 3
-
- # Test
- - name: postgresql_publication - remove table from publication, check_mode
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- name: '{{ test_pub }}'
- tables:
- - '{{ test_table1 }}'
- - '{{ test_schema }}.{{ test_table2 }}'
- parameters:
- publish: 'insert'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.queries == ["ALTER PUBLICATION \"{{ test_pub }}\" DROP TABLE \"public\".\"{{ test_table3 }}\""]
- - result.tables == ["\"public\".\"{{ test_table1 }}\"", "\"{{ test_schema }}\".\"{{ test_table2 }}\"", "\"public\".\"{{ test_table3 }}\""]
-
- # Check 1
- - name: postgresql_publication - check that 3 tables are in publication
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication_tables WHERE pubname = '{{ test_pub }}'
-
- - assert:
- that:
- - result.rowcount == 3
-
- # Check 2
- - name: postgresql_publication - check no parameters have been changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}' AND pubinsert = 't'
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Test
- - name: postgresql_publication - remove table from publication
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- name: '{{ test_pub }}'
- tables:
- - '{{ test_table1 }}'
- - '{{ test_schema }}.{{ test_table2 }}'
- parameters:
- publish: 'delete'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["ALTER PUBLICATION \"{{ test_pub }}\" DROP TABLE \"public\".\"{{ test_table3 }}\"", "ALTER PUBLICATION \"{{ test_pub }}\" SET (publish = 'delete')"]
- - result.tables == ["\"public\".\"{{ test_table1 }}\"", "\"{{ test_schema }}\".\"{{ test_table2 }}\""]
-
- # Check 1
- - name: postgresql_publication - check that 2 tables are in publication
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication_tables WHERE pubname = '{{ test_pub }}'
-
- - assert:
- that:
- - result.rowcount == 2
-
- # Check 2
- - name: postgresql_publication - check parameter has been changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}' AND pubinsert = 'f'
-
- - assert:
- that:
- - result.rowcount == 1
-
- always:
- ###########
- # Clean up:
-
- - name: postgresql_publication - remove test db
- <<: *task_parameters
- postgresql_db:
- login_user: '{{ pg_user }}'
- maintenance_db: postgres
- name: '{{ test_db }}'
- state: absent
-
- - name: postgresql_publication - remove test role
- <<: *task_parameters
- postgresql_user:
- login_user: '{{ pg_user }}'
- login_db: postgres
- name: '{{ test_role }}'
- state: absent
diff --git a/test/integration/targets/postgresql_query/aliases b/test/integration/targets/postgresql_query/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_query/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_query/meta/main.yml b/test/integration/targets/postgresql_query/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_query/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_query/tasks/main.yml b/test/integration/targets/postgresql_query/tasks/main.yml
deleted file mode 100644
index 76a54058b1..0000000000
--- a/test/integration/targets/postgresql_query/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-# Initial CI tests of postgresql_query module
-- import_tasks: postgresql_query_initial.yml
diff --git a/test/integration/targets/postgresql_query/tasks/postgresql_query_initial.yml b/test/integration/targets/postgresql_query/tasks/postgresql_query_initial.yml
deleted file mode 100644
index 5a038e706b..0000000000
--- a/test/integration/targets/postgresql_query/tasks/postgresql_query_initial.yml
+++ /dev/null
@@ -1,471 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Prepare for tests:
-- name: postgresql_query - drop test table if exists
- become_user: "{{ pg_user }}"
- become: yes
- shell: psql postgres -U "{{ pg_user }}" -t -c "DROP TABLE IF EXISTS test_table;"
- ignore_errors: yes
-
-# Create test_table:
-- name: postgresql_query - create test table called test_table
- become_user: "{{ pg_user }}"
- become: yes
- shell: psql postgres -U "{{ pg_user }}" -t -c "CREATE TABLE test_table (id int, story text);"
- ignore_errors: yes
-
-- name: postgresql_query - insert some data into test_table
- become_user: "{{ pg_user }}"
- become: yes
- shell: psql postgres -U "{{ pg_user }}" -t -c "INSERT INTO test_table (id, story) VALUES (1, 'first'), (2, 'second'), (3, 'third');"
- ignore_errors: yes
-
-# Prepare SQL script:
-- name: postgresql_query - remove SQL script if exists
- become: yes
- file:
- path: '~{{ pg_user}}/test.sql'
- state: absent
- ignore_errors: yes
-
-- name: postgresql_query - create an empty file to check permission
- become: yes
- file:
- path: '~{{ pg_user}}/test.sql'
- state: touch
- owner: '{{ pg_user }}'
- group: '{{ pg_user }}'
- mode: 0644
- register: sql_file_created
- ignore_errors: yes
-
-- name: postgresql_query - prepare SQL script
- become_user: "{{ pg_user }}"
- become: yes
- shell: 'echo "{{ item }}" >> ~{{ pg_user}}/test.sql'
- ignore_errors: yes
- with_items:
- - SELECT version();
- - SELECT story FROM test_table
- - WHERE id = %s OR story = 'Данные';
- when: sql_file_created
-
-##############
-# Start tests:
-#
-
-# Run ANALYZE command:
-- name: postgresql_query - analyze test_table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: ANALYZE test_table
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.query == 'ANALYZE test_table'
- - result.rowcount == 0
- - result.statusmessage == 'ANALYZE'
- - result.query_result == {}
-
-# Run queries from SQL script:
-- name: postgresql_query - run queries from SQL script
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- path_to_script: '~{{ pg_user }}/test.sql'
- positional_args:
- - 1
- encoding: UTF-8
- register: result
- ignore_errors: yes
- when: sql_file_created
-
-- assert:
- that:
- - result is not changed
- - result.query == "SELECT version();\nSELECT story FROM test_table\nWHERE id = 1 OR story = 'Данные';\n"
- - result.rowcount == 1
- - result.statusmessage == 'SELECT 1' or result.statusmessage == 'SELECT'
- - result.query_result[0].story == 'first'
- when: sql_file_created
-
-# Simple select query:
-- name: postgresql_query - simple select query to test_table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: SELECT * FROM test_table
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.query == 'SELECT * FROM test_table'
- - result.rowcount == 3
- - result.statusmessage == 'SELECT 3' or result.statusmessage == 'SELECT'
- - result.query_result[0].id == 1
- - result.query_result[1].id == 2
- - result.query_result[2].id == 3
- - result.query_result[0].story == 'first'
- - result.query_result[1].story == 'second'
- - result.query_result[2].story == 'third'
-
-# Select query with named_args:
-- name: postgresql_query - select query with named args
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: SELECT id FROM test_table WHERE id = %(id_val)s AND story = %(story_val)s
- named_args:
- id_val: 1
- story_val: first
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.query == "SELECT id FROM test_table WHERE id = 1 AND story = 'first'" or result.query == "SELECT id FROM test_table WHERE id = 1 AND story = E'first'"
- - result.rowcount == 1
- - result.statusmessage == 'SELECT 1' or result.statusmessage == 'SELECT'
- - result.query_result[0].id == 1
-
-# Select query with positional arguments:
-- name: postgresql_query - select query with positional arguments
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: SELECT story FROM test_table WHERE id = %s AND story = %s
- positional_args:
- - 2
- - second
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.query == "SELECT story FROM test_table WHERE id = 2 AND story = 'second'" or result.query == "SELECT story FROM test_table WHERE id = 2 AND story = E'second'"
- - result.rowcount == 1
- - result.statusmessage == 'SELECT 1' or result.statusmessage == 'SELECT'
- - result.query_result[0].story == 'second'
-
-# Simple update query (positional_args and named args were checked by the previous tests):
-- name: postgresql_query - simple update query
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: UPDATE test_table SET story = 'new' WHERE id = 3
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.query == "UPDATE test_table SET story = 'new' WHERE id = 3"
- - result.rowcount == 1
- - result.statusmessage == 'UPDATE 1'
- - result.query_result == {}
-
-# Check:
-- name: check the previous update
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: SELECT * FROM test_table WHERE story = 'new' AND id = 3
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Test check_mode:
-- name: postgresql_query - simple update query in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: UPDATE test_table SET story = 'CHECK_MODE' WHERE id = 3
- register: result
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.query == "UPDATE test_table SET story = 'CHECK_MODE' WHERE id = 3"
- - result.rowcount == 1
- - result.statusmessage == 'UPDATE 1'
- - result.query_result == {}
-
-# Check:
-- name: check the previous update that nothing has been changed
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: SELECT * FROM test_table WHERE story = 'CHECK_MODE' AND id = 3
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Try to update not existing row:
-- name: postgresql_query - try to update not existing row
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: UPDATE test_table SET story = 'new' WHERE id = 100
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.query == "UPDATE test_table SET story = 'new' WHERE id = 100"
- - result.rowcount == 0
- - result.statusmessage == 'UPDATE 0'
- - result.query_result == {}
-
-# Simple insert query positional_args:
-- name: postgresql_query - insert query
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: INSERT INTO test_table (id, story) VALUES (%s, %s)
- positional_args:
- - 4
- - fourth
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.query == "INSERT INTO test_table (id, story) VALUES (4, 'fourth')" or result.query == "INSERT INTO test_table (id, story) VALUES (4, E'fourth')"
- - result.rowcount == 1
- - result.statusmessage == 'INSERT 0 1'
- - result.query_result == {}
-
-# Truncate table:
-- name: postgresql_query - truncate test_table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: TRUNCATE test_table
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.query == "TRUNCATE test_table"
- - result.rowcount == 0
- - result.statusmessage == 'TRUNCATE TABLE'
- - result.query_result == {}
-
-# Try DDL query:
-- name: postgresql_query - alter test_table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: ALTER TABLE test_table ADD COLUMN foo int
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.query == "ALTER TABLE test_table ADD COLUMN foo int"
- - result.rowcount == 0
- - result.statusmessage == 'ALTER TABLE'
-
-#############################
-# Test autocommit parameter #
-#############################
-- name: postgresql_query - vacuum without autocommit must fail
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: VACUUM
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.failed == true
-
-- name: postgresql_query - autocommit in check_mode must fail
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: VACUUM
- autocommit: yes
- check_mode: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.failed == true
- - result.msg == "Using autocommit is mutually exclusive with check_mode"
-
-- name: postgresql_query - vacuum with autocommit
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- db: postgres
- query: VACUUM
- autocommit: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.query == "VACUUM"
- - result.rowcount == 0
- - result.statusmessage == 'VACUUM'
- - result.query_result == {}
-
-#
-# Issue 59955
-#
-- name: postgresql_query - create test table for issue 59955
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- login_user: "{{ pg_user }}"
- login_db: postgres
- name: test_array_table
- columns:
- - arr_col int[]
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- set_fact:
- my_list:
- - 1
- - 2
- - 3
- my_arr: '{1, 2, 3}'
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- name: postgresql_query - insert array into test table by positional args
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: postgres
- query: INSERT INTO test_array_table (arr_col) VALUES (%s)
- positional_args:
- - '{{ my_list }}'
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result is changed
- - result.query == "INSERT INTO test_array_table (arr_col) VALUES ('{1, 2, 3}')"
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- name: postgresql_query - select array from test table by passing positional_args
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: postgres
- query: SELECT * FROM test_array_table WHERE arr_col = %s
- positional_args:
- - '{{ my_list }}'
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result is not changed
- - result.query == "SELECT * FROM test_array_table WHERE arr_col = '{1, 2, 3}'"
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- name: postgresql_query - select array from test table by passing named_args
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: postgres
- query: SELECT * FROM test_array_table WHERE arr_col = %(arr_val)s
- named_args:
- arr_val:
- - '{{ my_list }}'
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result is not changed
- - result.query == "SELECT * FROM test_array_table WHERE arr_col = '{1, 2, 3}'"
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- name: postgresql_query - select array from test table by passing positional_args as a string
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- login_user: "{{ pg_user }}"
- login_db: postgres
- query: SELECT * FROM test_array_table WHERE arr_col = %s
- positional_args:
- - '{{ my_arr|string }}'
- register: result
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- assert:
- that:
- - result is not changed
- - result.query == "SELECT * FROM test_array_table WHERE arr_col = '{1, 2, 3}'"
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-- name: postgresql_query - clean up
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- login_user: "{{ pg_user }}"
- login_db: postgres
- name: test_array_table
- state: absent
- when: postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_schema/aliases b/test/integration/targets/postgresql_schema/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_schema/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_schema/defaults/main.yml b/test/integration/targets/postgresql_schema/defaults/main.yml
deleted file mode 100644
index ded383d99d..0000000000
--- a/test/integration/targets/postgresql_schema/defaults/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-db_name: 'ansible_db'
-db_user1: 'ansible_db_user1'
-db_user2: 'ansible_db_user2'
-db_session_role1: 'session_role1'
-db_session_role2: 'session_role2'
diff --git a/test/integration/targets/postgresql_schema/meta/main.yml b/test/integration/targets/postgresql_schema/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_schema/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_schema/tasks/main.yml b/test/integration/targets/postgresql_schema/tasks/main.yml
deleted file mode 100644
index 6eaaefeadc..0000000000
--- a/test/integration/targets/postgresql_schema/tasks/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- import_tasks: postgresql_schema_session_role.yml
-
-# Initial CI tests of postgresql_schema module
-- import_tasks: postgresql_schema_initial.yml
diff --git a/test/integration/targets/postgresql_schema/tasks/postgresql_schema_initial.yml b/test/integration/targets/postgresql_schema/tasks/postgresql_schema_initial.yml
deleted file mode 100644
index 6e0720355e..0000000000
--- a/test/integration/targets/postgresql_schema/tasks/postgresql_schema_initial.yml
+++ /dev/null
@@ -1,311 +0,0 @@
----
-
-# Setup
-- name: Create test roles
- postgresql_user:
- name: "{{ item }}"
- state: present
- encrypted: yes
- password: password
- role_attr_flags: LOGIN
- db: postgres
- login_user: "{{ pg_user }}"
- loop:
- - "{{ db_user1 }}"
- - "{{ db_user2 }}"
-
-- name: Create DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_name }}"
- owner: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
-
-# Test: CREATE SCHEMA in checkmode
-- name: Create a new schema with name "acme" in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- check_mode: yes
- postgresql_schema:
- database: "{{ db_name }}"
- name: acme
- login_user: "{{ pg_user }}"
- register: result
-
-# Checks
-- assert:
- that:
- - result is changed
- - result.schema == 'acme'
-
-- name: Check that the new schema "acme" not exists
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'acme'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Test: CREATE SCHEMA
-- name: Create a new schema with name "acme"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: "{{ db_name }}"
- name: acme
- login_user: "{{ pg_user }}"
- register: result
-
-# Checks
-- assert:
- that:
- - result is changed
- - result.schema == 'acme'
- - result.queries == [ 'CREATE SCHEMA "acme"' ]
-
-- name: Check that the new schema "acme" exists
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'acme'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Test: DROP SCHEMA in checkmode
-- name: Drop schema "acme" in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- check_mode: yes
- postgresql_schema:
- database: "{{ db_name }}"
- name: acme
- state: absent
- login_user: "{{ pg_user }}"
- register: result
-
-# Checks
-- assert:
- that:
- - result is not changed
-
-- name: Check that the new schema "acme" still exists
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'acme'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Test: DROP SCHEMA
-- name: Drop schema "acme"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: "{{ db_name }}"
- name: acme
- state: absent
- login_user: "{{ pg_user }}"
- register: result
-
-# Checks
-- assert:
- that:
- - result is changed
- - result.queries == [ 'DROP SCHEMA "acme"' ]
-
-- name: Check that no schema "acme" exists
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'acme'"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Test: CREATE SCHEMA; WITH TABLE for DROP CASCADE test
-- name: Create a new schema "acme"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: "{{ db_name }}"
- name: acme
- login_user: "{{ pg_user }}"
- register: result
-
-- name: Create table in schema for DROP CASCADE check
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "CREATE TABLE acme.table1()"
- register: result2
-
-# Checks
-- assert:
- that:
- - result is changed
- - result.schema == 'acme'
- - result.queries == [ 'CREATE SCHEMA "acme"' ]
- - result2.changed == true
- - result2.statusmessage == 'CREATE TABLE'
-
-- name: Check that the new schema "acme" exists
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT schema_name,schema_owner FROM information_schema.schemata WHERE schema_name = 'acme'"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-- name: Check that the new table "table1" in schema 'acme' exists
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT EXISTS (SELECT 1 FROM pg_tables WHERE schemaname = 'acme' AND tablename = 'table1')"
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Test: DROP SCHEMA ... CASCADE;
-- name: Drop schema "acme" with cascade
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: "{{ db_name }}"
- name: acme
- state: absent
- cascade_drop: yes
- login_user: "{{ pg_user }}"
- register: result
-
-# Checks
-- assert:
- that:
- - result is changed
- - result.queries == [ 'DROP SCHEMA "acme" CASCADE' ]
-
-- name: Check that no schema "acme" exists
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'acme'"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Test: CREATE SCHEMA WITH OWNER ...;
-- name: Create a new schema "acme" with a user "{{ db_user2 }}" who will own it
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: "{{ db_name }}"
- name: acme
- owner: "{{ db_user2 }}"
- login_user: "{{ pg_user }}"
- register: result
-
-# Checks
-- assert:
- that:
- - result is changed
- - result.schema == 'acme'
- - result.queries == [ 'CREATE SCHEMA "acme" AUTHORIZATION "{{ db_user2 }}"' ]
-
-- name: Check that the new schema "acme" exists and "{{ db_user2 }}" own it
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT schema_name,schema_owner FROM information_schema.schemata WHERE schema_name = 'acme' AND schema_owner = '{{ db_user2 }}'"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Test: DROP SCHEMA
-- name: Drop schema "acme"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: "{{ db_name }}"
- name: acme
- state: absent
- login_user: "{{ pg_user }}"
- register: result
-
-# Checks
-- assert:
- that:
- - result is changed
- - result.queries == [ 'DROP SCHEMA "acme"' ]
-
-- name: Check that no schema "acme" exists
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'acme'"
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.rowcount == 0
-
-
-# Cleanup
-- name: Remove user
- postgresql_user:
- name: "{{ db_user2 }}"
- state: absent
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: Destroy DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: absent
- name: "{{ db_name }}"
- login_user: "{{ pg_user }}"
diff --git a/test/integration/targets/postgresql_schema/tasks/postgresql_schema_session_role.yml b/test/integration/targets/postgresql_schema/tasks/postgresql_schema_session_role.yml
deleted file mode 100644
index 6aaefff593..0000000000
--- a/test/integration/targets/postgresql_schema/tasks/postgresql_schema_session_role.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-- name: Create a high privileged user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_session_role1 }}"
- state: "present"
- password: "password"
- role_attr_flags: "CREATEDB,LOGIN,CREATEROLE"
- login_user: "{{ pg_user }}"
- db: postgres
-
-- name: Create DB as session_role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- session_role: "{{ db_session_role1 }}"
- register: result
-
-- name: Create schema in own database
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- name: "{{ db_session_role1 }}"
- session_role: "{{ db_session_role1 }}"
-
-- name: Create schema in own database, should be owned by session_role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
- name: "{{ db_session_role1 }}"
- owner: "{{ db_session_role1 }}"
- register: result
-
-- assert:
- that:
- - result is not changed
-
-- name: Fail when creating schema in postgres database as a regular user
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: postgres
- login_user: "{{ pg_user }}"
- name: "{{ db_session_role1 }}"
- session_role: "{{ db_session_role1 }}"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result is failed
-
-- name: Drop test db
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: absent
- name: "{{ db_session_role1 }}"
- login_user: "{{ pg_user }}"
-
-- name: Drop test users
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ item }}"
- state: absent
- login_user: "{{ pg_user }}"
- db: postgres
- with_items:
- - "{{ db_session_role1 }}"
- - "{{ db_session_role2 }}"
diff --git a/test/integration/targets/postgresql_sequence/aliases b/test/integration/targets/postgresql_sequence/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_sequence/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_sequence/defaults/main.yml b/test/integration/targets/postgresql_sequence/defaults/main.yml
deleted file mode 100644
index 049b5531f6..0000000000
--- a/test/integration/targets/postgresql_sequence/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-db_name: 'ansible_db'
-db_user1: 'ansible_db_user1'
-db_user2: 'ansible_db_user2'
-db_default: 'postgres'
diff --git a/test/integration/targets/postgresql_sequence/meta/main.yml b/test/integration/targets/postgresql_sequence/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_sequence/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_sequence/tasks/main.yml b/test/integration/targets/postgresql_sequence/tasks/main.yml
deleted file mode 100644
index fb76054ef1..0000000000
--- a/test/integration/targets/postgresql_sequence/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-# Initial CI tests of postgresql_sequence module
-- import_tasks: postgresql_sequence_initial.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_sequence/tasks/postgresql_sequence_initial.yml b/test/integration/targets/postgresql_sequence/tasks/postgresql_sequence_initial.yml
deleted file mode 100644
index 29507391d8..0000000000
--- a/test/integration/targets/postgresql_sequence/tasks/postgresql_sequence_initial.yml
+++ /dev/null
@@ -1,708 +0,0 @@
-# Copyright: (c) 2019, Tobias Birkefeld (@tcraxs) <t@craxs.de>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Preparation for tests.
-- name: postgresql_sequence - create a user to be owner of a database
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user1 }}"
- state: present
- encrypted: yes
- password: password
- role_attr_flags: LOGIN
- db: "{{ db_default }}"
- login_user: "{{ pg_user }}"
-
-- name: postgresql_sequence - create DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: present
- name: "{{ db_name }}"
- owner: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
-
-- name: Create a user to be owner of a sequence
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- name: "{{ db_user2 }}"
- state: present
- encrypted: yes
- password: password
- role_attr_flags: LOGIN
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: postgresql_sequence - create a schema
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar_schema
-
-####################
-# Test: create sequence in checkmode
-- name: postgresql_sequence - create a new sequence with name "foobar" in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- check_mode: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar'
- - result.queries == ["CREATE SEQUENCE \"public\".\"foobar\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the new sequence "foobar" not exists
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 0
- - result.statusmessage == 'SELECT 0'
-
-####################
-# Test: create sequence
-- name: postgresql_sequence - create a new sequence with name "foobar"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar'
- - result.queries == ["CREATE SEQUENCE \"public\".\"foobar\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the new sequence "foobar" exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: drop sequence in checkmode
-- name: postgresql_sequence - drop a sequence called foobar
- become_user: "{{ pg_user }}"
- become: yes
- check_mode: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar
- state: absent
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar'
- - result.queries == ["DROP SEQUENCE \"public\".\"foobar\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "foobar" still exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: drop sequence
-- name: postgresql_sequence - drop a sequence called foobar
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar
- state: absent
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar'
- - result.queries == ["DROP SEQUENCE \"public\".\"foobar\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "foobar" not exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 0
-
-####################
-# Test: drop nonexistent sequence
-- name: postgresql_sequence - drop a sequence called foobar which does not exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar
- state: absent
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is not changed
- - result.sequence == 'foobar'
- - result.queries == []
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "foobar" not exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 0
-
-####################
-# Test: create sequence with options
-- name: postgresql_sequence - create an descending sequence called foobar_desc, starting at 101 and which cycle between 1 to 1000
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar_desc
- increment: -1
- start: 101
- minvalue: 1
- maxvalue: 1000
- cycle: yes
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar_desc'
- - result.increment == '-1'
- - result.minvalue == '1'
- - result.maxvalue == '1000'
- - result.cycle == 'YES'
- - result.queries == ["CREATE SEQUENCE \"public\".\"foobar_desc\" INCREMENT BY -1 MINVALUE 1 MAXVALUE 1000 START WITH 101 CYCLE"]
-
-# Real SQL check
-- name: postgresql_sequence - check that the new sequence "foobar_desc" exists
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar_desc'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: rename a sequence in checkmode
-- name: postgresql_sequence - rename an existing sequence named foobar_desc to foobar_with_options
- become_user: "{{ pg_user }}"
- become: yes
- check_mode: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar_desc
- rename_to: foobar_with_options
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar_desc'
- - result.newname == 'foobar_with_options'
- - result.queries == ["ALTER SEQUENCE \"public\".\"foobar_desc\" RENAME TO \"foobar_with_options\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "foobar_desc" still exists and is not renamed
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar_desc'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: rename a sequence
-- name: postgresql_sequence - rename an existing sequence named foobar_desc to foobar_with_options
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar_desc
- rename_to: foobar_with_options
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar_desc'
- - result.newname == 'foobar_with_options'
- - result.queries == ["ALTER SEQUENCE \"public\".\"foobar_desc\" RENAME TO \"foobar_with_options\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the renamed sequence "foobar_with_options" exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar_with_options'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: change schema of a sequence in checkmode
-- name: postgresql_sequence - change schema of an existing sequence from public to foobar_schema
- become_user: "{{ pg_user }}"
- become: yes
- check_mode: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar_with_options
- newschema: foobar_schema
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar_with_options'
- - result.schema == 'public'
- - result.newschema == 'foobar_schema'
- - result.queries == ["ALTER SEQUENCE \"public\".\"foobar_with_options\" SET SCHEMA \"foobar_schema\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "foobar_with_options" still exists in the old schema
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name,sequence_schema FROM information_schema.sequences WHERE sequence_name = 'foobar_with_options' AND sequence_schema = 'public'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: change schema of a sequence
-- name: postgresql_sequence - change schema of an existing sequence from public to foobar_schema
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar_with_options
- newschema: foobar_schema
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar_with_options'
- - result.schema == 'public'
- - result.newschema == 'foobar_schema'
- - result.queries == ["ALTER SEQUENCE \"public\".\"foobar_with_options\" SET SCHEMA \"foobar_schema\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "foobar_with_options" exists in new schema
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name,sequence_schema FROM information_schema.sequences WHERE sequence_name = 'foobar_with_options' AND sequence_schema = 'foobar_schema'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: change owner of a sequence in checkmode
-- name: postgresql_sequence - change owner of an existing sequence from "{{ pg_user }}" to "{{ db_user1 }}"
- become_user: "{{ pg_user }}"
- become: yes
- check_mode: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar_with_options
- schema: foobar_schema
- owner: "{{ db_user1 }}"
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar_with_options'
- - result.owner == "{{ pg_user }}"
- - result.queries == ["ALTER SEQUENCE \"foobar_schema\".\"foobar_with_options\" OWNER TO \"{{ db_user1 }}\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "foobar_with_options" has still the old owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT c.relname,a.rolname,n.nspname
- FROM pg_class as c
- JOIN pg_authid as a on (c.relowner = a.oid)
- JOIN pg_namespace as n on (c.relnamespace = n.oid)
- WHERE c.relkind = 'S' and
- c.relname = 'foobar_with_options' and
- n.nspname = 'foobar_schema' and
- a.rolname = '{{ pg_user }}'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: change owner of a sequence
-- name: postgresql_sequence - change owner of an existing sequence from "{{ pg_user }}" to "{{ db_user1 }}"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar_with_options
- schema: foobar_schema
- owner: "{{ db_user1 }}"
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar_with_options'
- - result.owner == "{{ pg_user }}"
- - result.queries == ["ALTER SEQUENCE \"foobar_schema\".\"foobar_with_options\" OWNER TO \"{{ db_user1 }}\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "foobar_with_options" has a new owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT c.relname,a.rolname,n.nspname
- FROM pg_class as c
- JOIN pg_authid as a on (c.relowner = a.oid)
- JOIN pg_namespace as n on (c.relnamespace = n.oid)
- WHERE c.relkind = 'S' and
- c.relname = 'foobar_with_options' and
- n.nspname = 'foobar_schema' and
- a.rolname = '{{ db_user1 }}'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: drop sequence with cascade
-
-# CREATE SEQUENCE seq1;
-# CREATE TABLE t1 (f1 INT NOT NULL DEFAULT nextval('seq1'));
-# DROP SEQUENCE seq1 CASCADE;
-- name: postgresql_sequence - create sequence for drop cascade test
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: seq1
-
-- name: postgresql_sequence - create table which use sequence for drop cascade test
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: t1
- columns:
- - f1 INT NOT NULL DEFAULT nextval('seq1')
-
-####################
-# Test: drop sequence with cascade in checkmode
-- name: postgresql_sequence - drop with cascade a sequence called seq1
- become_user: "{{ pg_user }}"
- become: yes
- check_mode: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: seq1
- state: absent
- cascade: yes
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'seq1'
- - result.queries == ["DROP SEQUENCE \"public\".\"seq1\" CASCADE"]
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "seq1" still exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'seq1'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-####################
-# Test: drop sequence with cascade
-- name: postgresql_sequence - drop with cascade a sequence called seq1
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: seq1
- state: absent
- cascade: yes
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'seq1'
- - result.queries == ["DROP SEQUENCE \"public\".\"seq1\" CASCADE"]
-
-# Real SQL check
-- name: postgresql_sequence - check that the sequence "seq1" not exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'seq1'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 0
-
-####################
-# Test: create sequence with owner in checkmode
-- name: postgresql_sequence - create a new sequence with name "foobar2" with owner "{{ db_user2 }}"
- become_user: "{{ pg_user }}"
- become: yes
- check_mode: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar2
- owner: "{{ db_user2 }}"
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar2'
- - result.queries == ["CREATE SEQUENCE \"public\".\"foobar2\"", "ALTER SEQUENCE \"public\".\"foobar2\" OWNER TO \"ansible_db_user2\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the new sequence "foobar2" does not exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar2'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 0
-
-####################
-# Test: create sequence with owner
-- name: postgresql_sequence - create a new sequence with name "foobar2" with owner "{{ db_user2 }}"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_sequence:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- name: foobar2
- owner: "{{ db_user2 }}"
- register: result
-
-# Checks
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result is changed
- - result.sequence == 'foobar2'
- - result.queries == ["CREATE SEQUENCE \"public\".\"foobar2\"", "ALTER SEQUENCE \"public\".\"foobar2\" OWNER TO \"ansible_db_user2\""]
-
-# Real SQL check
-- name: postgresql_sequence - check that the new sequence "foobar2" exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar2'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-- name: postgresql_sequence - check that the sequence "foobar2" has owner "{{ db_user2 }}"
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: "{{ db_name }}"
- login_user: "{{ pg_user }}"
- query: "SELECT c.relname,a.rolname,n.nspname
- FROM pg_class as c
- JOIN pg_authid as a on (c.relowner = a.oid)
- JOIN pg_namespace as n on (c.relnamespace = n.oid)
- WHERE c.relkind = 'S' and
- c.relname = 'foobar2' and
- n.nspname = 'public' and
- a.rolname = '{{ db_user2 }}'"
- register: result
-
-- name: postgresql_sequence - check with assert the output
- assert:
- that:
- - result.rowcount == 1
-
-# Cleanup
-- name: postgresql_sequence - destroy DB
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_db:
- state: absent
- name: "{{ db_name }}"
- login_user: "{{ pg_user }}"
-
-- name: remove test roles
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- state: absent
- login_db: "{{ db_default }}"
- login_user: "{{ pg_user }}"
- name: "{{ item }}"
- loop:
- - "{{ db_user1 }}"
- - "{{ db_user2 }}"
diff --git a/test/integration/targets/postgresql_set/aliases b/test/integration/targets/postgresql_set/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_set/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_set/meta/main.yml b/test/integration/targets/postgresql_set/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_set/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_set/tasks/main.yml b/test/integration/targets/postgresql_set/tasks/main.yml
deleted file mode 100644
index 33879be543..0000000000
--- a/test/integration/targets/postgresql_set/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-# Initial CI tests of postgresql_initial module
-- include_tasks: postgresql_set_initial.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_set/tasks/postgresql_set_initial.yml b/test/integration/targets/postgresql_set/tasks/postgresql_set_initial.yml
deleted file mode 100644
index 01e6de1d75..0000000000
--- a/test/integration/targets/postgresql_set/tasks/postgresql_set_initial.yml
+++ /dev/null
@@ -1,304 +0,0 @@
-# Test code for the postgresql_set module
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-#
-# Notice: assertions are different for Ubuntu 16.04 and FreeBSD because they don't work
-# correctly for these tests. There are some stranges exactly in Shippable CI.
-# However I checked it manually for all points (including Ubuntu 16.05 and FreeBSD)
-# and it worked as expected.
-
-- vars:
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: postgres
-
- block:
- - name: postgresql_set - preparation to the next step
- <<: *task_parameters
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_set:
- <<: *pg_parameters
- name: work_mem
- reset: yes
-
- #####################
- # Testing check_mode:
- - name: postgresql_set - get work_mem initial value
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SHOW work_mem
- register: before
-
- - name: postgresql_set - set work_mem (restart is not required), check_mode
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: work_mem
- value: 12MB
- register: set_wm
- check_mode: yes
-
- - assert:
- that:
- - set_wm.name == 'work_mem'
- - set_wm.changed == true
- - set_wm.prev_val_pretty == before.query_result[0].work_mem
- - set_wm.value_pretty == '12MB'
- - set_wm.restart_required == false
-
- - name: postgresql_set - get work_mem value to check, must be the same as initial
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SHOW work_mem
- register: after
-
- - assert:
- that:
- - before.query_result[0].work_mem == after.query_result[0].work_mem
- ######
- #
-
- - name: postgresql_set - set work_mem (restart is not required)
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: work_mem
- value: 12mb
- register: set_wm
-
- - assert:
- that:
- - set_wm.name == 'work_mem'
- - set_wm.changed == true
- - set_wm.value_pretty == '12MB'
- - set_wm.value_pretty != set_wm.prev_val_pretty
- - set_wm.restart_required == false
- - set_wm.value.value == 12582912
- - set_wm.value.unit == 'b'
- when:
- - ansible_distribution != "Ubuntu"
- - ansible_distribution_major_version != '16'
- - ansible_distribution != "FreeBSD"
-
- - assert:
- that:
- - set_wm.name == 'work_mem'
- - set_wm.changed == true
- - set_wm.restart_required == false
- when:
- - ansible_distribution == "Ubuntu"
- - ansible_distribution_major_version == '16'
-
- - name: postgresql_set - reset work_mem (restart is not required)
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: work_mem
- reset: yes
- register: reset_wm
-
- - assert:
- that:
- - reset_wm.name == 'work_mem'
- - reset_wm.changed == true
- - reset_wm.value_pretty != reset_wm.prev_val_pretty
- - reset_wm.restart_required == false
- - reset_wm.value.value != '12582912'
- when:
- - ansible_distribution != "Ubuntu"
- - ansible_distribution_major_version != '16'
- - ansible_distribution != "FreeBSD"
-
- - assert:
- that:
- - reset_wm.name == 'work_mem'
- - reset_wm.changed == true
- - reset_wm.restart_required == false
- when:
- - ansible_distribution == "Ubuntu"
- - ansible_distribution_major_version == '16'
-
- - name: postgresql_set - reset work_mem again to check that nothing changed (restart is not required)
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: work_mem
- reset: yes
- register: reset_wm2
-
- - assert:
- that:
- - reset_wm2.name == 'work_mem'
- - reset_wm2.changed == false
- - reset_wm2.value_pretty == reset_wm2.prev_val_pretty
- - reset_wm2.restart_required == false
- when:
- - ansible_distribution != "Ubuntu"
- - ansible_distribution_major_version != '16'
-
- - assert:
- that:
- - reset_wm2.name == 'work_mem'
- - reset_wm2.changed == false
- - reset_wm2.restart_required == false
- when:
- - ansible_distribution == "Ubuntu"
- - ansible_distribution_major_version == '16'
-
- - name: postgresql_set - preparation to the next step
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: work_mem
- value: 14MB
-
- - name: postgresql_set - set work_mem to initial state (restart is not required)
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: work_mem
- value: default
- register: def_wm
-
- - assert:
- that:
- - def_wm.name == 'work_mem'
- - def_wm.changed == true
- - def_wm.value_pretty != def_wm.prev_val_pretty
- - def_wm.restart_required == false
- - def_wm.value.value != '14680064'
- when:
- - ansible_distribution != "Ubuntu"
- - ansible_distribution_major_version != '16'
- - ansible_distribution != 'FreeBSD'
-
- - assert:
- that:
- - def_wm.name == 'work_mem'
- - def_wm.changed == true
- - def_wm.restart_required == false
- when:
- - ansible_distribution == "Ubuntu"
- - ansible_distribution_major_version == '16'
- - ansible_distribution != 'FreeBSD'
-
- - name: postgresql_set - set shared_buffers (restart is required)
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: shared_buffers
- value: 111MB
- register: set_shb
-
- - assert:
- that:
- - set_shb.name == 'shared_buffers'
- - set_shb.changed == true
- - set_shb.restart_required == true
-
- # We don't check value.unit because it is none
- - name: postgresql_set - set autovacuum (enabled by default, restart is not required)
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: autovacuum
- value: off
- register: set_aut
-
- - assert:
- that:
- - set_aut.name == 'autovacuum'
- - set_aut.changed == true
- - set_aut.restart_required == false
- - set_aut.value.value == 'off'
-
- # Test check_mode, step 1. At the previous test we set autovacuum = 'off'
- - name: postgresql - try to change autovacuum again in check_mode
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: autovacuum
- value: on
- register: set_aut
- check_mode: yes
-
- - assert:
- that:
- - set_aut.name == 'autovacuum'
- - set_aut.changed == true
- - set_aut.restart_required == false
- - set_aut.value.value == 'off'
-
- # Test check_mode, step 2
- - name: postgresql - check that autovacuum wasn't actually changed after change in check_mode
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: autovacuum
- value: off
- register: set_aut
- check_mode: yes
-
- - assert:
- that:
- - set_aut.name == 'autovacuum'
- - set_aut.changed == false
- - set_aut.restart_required == false
- - set_aut.value.value == 'off'
-
- # Additional check by SQL query:
- - name: postgresql_set - get autovacuum value to check, must be off
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: SHOW autovacuum
- register: result
-
- - assert:
- that:
- - result.query_result[0].autovacuum == 'off'
-
- # Test check_mode, step 3. It is different from
- # the prev test - it runs without check_mode: yes.
- # Before the check_mode tests autovacuum was off
- - name: postgresql - check that autovacuum wasn't actually changed after change in check_mode
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: autovacuum
- value: off
- register: set_aut
-
- - assert:
- that:
- - set_aut.name == 'autovacuum'
- - set_aut.changed == false
- - set_aut.restart_required == false
- - set_aut.value.value == 'off'
-
- #################
- # Bugfix of 67377
- - name: archive command with mb
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: archive_command
- value: 'test ! -f /mnt/postgres/mb/%f && cp %p /mnt/postgres/mb/%f'
-
- # Check:
- - name: check value
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: select reset_val from pg_settings where name = 'archive_command'
- register: result
-
- - assert:
- that:
- - result.query_result.0.reset_val == "test ! -f /mnt/postgres/mb/%f && cp %p /mnt/postgres/mb/%f"
diff --git a/test/integration/targets/postgresql_slot/aliases b/test/integration/targets/postgresql_slot/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_slot/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_slot/meta/main.yml b/test/integration/targets/postgresql_slot/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_slot/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_slot/tasks/main.yml b/test/integration/targets/postgresql_slot/tasks/main.yml
deleted file mode 100644
index f7d3558652..0000000000
--- a/test/integration/targets/postgresql_slot/tasks/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-# Initial CI tests of postgresql_slot module
-# Physical replication slots are available since PostgreSQL 9.4
-- import_tasks: postgresql_slot_initial.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_slot/tasks/postgresql_slot_initial.yml b/test/integration/targets/postgresql_slot/tasks/postgresql_slot_initial.yml
deleted file mode 100644
index e7977f4bcd..0000000000
--- a/test/integration/targets/postgresql_slot/tasks/postgresql_slot_initial.yml
+++ /dev/null
@@ -1,698 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- name: postgresql_slot - set max_replication_slots
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_set:
- login_user: "{{ pg_user }}"
- db: postgres
- name: max_replication_slots
- value: '10'
-
-- name: postgresql_slot - set wal_level to logical
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_set:
- login_user: "{{ pg_user }}"
- db: postgres
- name: wal_level
- value: logical
-
-- name: postgresql_slot - restart PostgreSQL
- become: yes
- service:
- name: "{{ postgresql_service }}"
- state: restarted
-
-#
-# state=present
-#
-
-# check_mode
-- name: postgresql_slot - create slot in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot0
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == []
-
-# Check, rowcount must be 0
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot0'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# true mode
-- name: postgresql_slot - create physical slot
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot0
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ["SELECT pg_create_physical_replication_slot('slot0', false)"]
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result is changed
- - result.queries == ["SELECT pg_create_physical_replication_slot('slot0')"]
- when: postgres_version_resp.stdout is version('9.6', '<')
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that the slot exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot0' and slot_type = 'physical'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# check mode
-- name: postgresql_slot - try create physical slot again in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot0
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot0' and slot_type = 'physical'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# true mode
-- name: postgresql_slot - try create physical slot again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot0
- slot_type: physical
- register: result
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot0' and slot_type = 'physical'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-#
-# immediately_reserve
-#
-
-- name: postgresql_slot - create physical slot with immediately_reserve
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot1
- immediately_reserve: yes
- register: result
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result is changed
- - result.queries == ["SELECT pg_create_physical_replication_slot('slot1', true)"]
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that the slot exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot1' and slot_type = 'physical' and restart_lsn is not NULL"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-#
-# slot_type: logical
-#
-# available from postgresql 10
-#
-# on RedHat family tests failed:
-# ERROR: could not access file "test_decoding": No such file or directory
-# "Your distrib did not compile the test decoder."
-# So the tests are restricted by Ubuntu because of the module functionality
-# depends on PostgreSQL server version only.
-
-# check_mode
-- name: postgresql_slot - create slot in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot2
- slot_type: logical
- check_mode: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result is changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# Check, rowcount must be 0
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot2'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# true mode
-- name: postgresql_slot - create logical slot
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot2
- slot_type: logical
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result is changed
- - result.queries == ["SELECT pg_create_logical_replication_slot('slot2', 'test_decoding')"]
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that the slot exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot2' and slot_type = 'logical'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# check mode
-- name: postgresql_slot - try create logical slot again in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot2
- slot_type: logical
- check_mode: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot2' and slot_type = 'logical'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# true mode
-- name: postgresql_slot - try create logical slot again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot2
- slot_type: logical
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot2' and slot_type = 'logical'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-#
-# output_plugin: test_decoding
-#
-
-- name: postgresql_slot - create logical slot with output_plugin
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot3
- slot_type: logical
- output_plugin: test_decoding
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result is changed
- - result.queries == ["SELECT pg_create_logical_replication_slot('slot3', 'test_decoding')"]
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that the slot exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot3' and slot_type = 'logical' and plugin = 'test_decoding'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-#
-# state: absent for logical slots
-#
-
-# check_mode
-- name: postgresql_slot - drop logical slot in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot2
- state: absent
- check_mode: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result is changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot2'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# true mode
-- name: postgresql_slot - drop logical slot
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot2
- state: absent
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result is changed
- - result.queries == ["SELECT pg_drop_replication_slot('slot2')"]
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# Check, rowcount must be 0
-- name: postgresql_slot - check that the slot does not exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot2' and slot_type = 'logical'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# check mode
-- name: postgresql_slot - try drop logical slot again in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot2
- state: absent
- check_mode: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# Check, rowcount must be 0
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot2' and slot_type = 'logical'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=')
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# true mode
-- name: postgresql_slot - try drop logical slot again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot2
- state: absent
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-# Check, rowcount must be 0
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot2' and slot_type = 'logical'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
-
-#
-# state=absent for physical slots
-#
-
-# check_mode
-- name: postgresql_slot - drop physical slot in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot1
- state: absent
- check_mode: yes
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-# Check, rowcount must be 1
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot1'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-# true mode
-- name: postgresql_slot - drop physical slot
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot1
- state: absent
- register: result
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result is changed
- - result.queries == ["SELECT pg_drop_replication_slot('slot1')"]
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-# Check, rowcount must be 0
-- name: postgresql_slot - check that the slot does not exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot1' and slot_type = 'physical'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-# check mode
-- name: postgresql_slot - try drop physical slot again in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot1
- state: absent
- check_mode: yes
- register: result
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-# Check, rowcount must be 0
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot1' and slot_type = 'physical'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-# true mode
-- name: postgresql_slot - try drop physical slot again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: slot1
- state: absent
- register: result
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-# Check, rowcount must be 0
-- name: postgresql_slot - check that nothing changed after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_replication_slots WHERE slot_name = 'slot1' and slot_type = 'physical'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('9.6', '>=')
-
-#
-# clean up
-#
-- name: postgresql_slot - clean up
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_slot:
- login_user: "{{ pg_user }}"
- db: postgres
- name: "{{ item }}"
- state: absent
- ignore_errors: yes
- when: postgres_version_resp.stdout is version('10', '>=') and ansible_distribution == 'Ubuntu'
- with_items:
- - slot0
- - slot3
diff --git a/test/integration/targets/postgresql_subscription/aliases b/test/integration/targets/postgresql_subscription/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/postgresql_subscription/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/postgresql_subscription/defaults/main.yml b/test/integration/targets/postgresql_subscription/defaults/main.yml
deleted file mode 100644
index e1433f9f7e..0000000000
--- a/test/integration/targets/postgresql_subscription/defaults/main.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-pg_user: postgres
-db_default: postgres
-master_port: 5433
-replica_port: 5434
-
-test_table1: acme1
-test_pub: first_publication
-test_pub2: second_publication
-replication_role: logical_replication
-replication_pass: alsdjfKJKDf1#
-test_db: acme_db
-test_subscription: test
-test_role1: alice
-test_role2: bob
-conn_timeout: 100
diff --git a/test/integration/targets/postgresql_subscription/meta/main.yml b/test/integration/targets/postgresql_subscription/meta/main.yml
deleted file mode 100644
index d72e4d23c7..0000000000
--- a/test/integration/targets/postgresql_subscription/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_replication
diff --git a/test/integration/targets/postgresql_subscription/tasks/main.yml b/test/integration/targets/postgresql_subscription/tasks/main.yml
deleted file mode 100644
index 94c9e703e0..0000000000
--- a/test/integration/targets/postgresql_subscription/tasks/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-# Initial tests of postgresql_subscription module:
-
-- import_tasks: setup_publication.yml
- when: ansible_distribution == 'Ubuntu' and ansible_distribution_major_version >= '18'
-
-- import_tasks: postgresql_subscription_initial.yml
- when: ansible_distribution == 'Ubuntu' and ansible_distribution_major_version >= '18'
diff --git a/test/integration/targets/postgresql_subscription/tasks/postgresql_subscription_initial.yml b/test/integration/targets/postgresql_subscription/tasks/postgresql_subscription_initial.yml
deleted file mode 100644
index 6dda6fc1ab..0000000000
--- a/test/integration/targets/postgresql_subscription/tasks/postgresql_subscription_initial.yml
+++ /dev/null
@@ -1,627 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- vars:
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: '{{ test_db }}'
-
- block:
-
- - name: Create roles to test owner parameter
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ item }}'
- role_attr_flags: SUPERUSER,LOGIN
- loop:
- - '{{ test_role1 }}'
- - '{{ test_role2 }}'
-
- ####################
- # Test mode: present
- ####################
- - name: Create subscription
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- publications: '{{ test_pub }}'
- connparams:
- host: 127.0.0.1
- port: '{{ master_port }}'
- user: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- dbname: '{{ test_db }}'
-
- - assert:
- that:
- - result is changed
- - result.name == '{{ test_subscription }}'
- - result.queries == ["CREATE SUBSCRIPTION test CONNECTION 'host=127.0.0.1 port={{ master_port }} user={{ replication_role }} password={{ replication_pass }} dbname={{ test_db }}' PUBLICATION {{ test_pub }}"]
- - result.exists == true
- - result.initial_state == {}
- - result.final_state.owner == '{{ pg_user }}'
- - result.final_state.enabled == true
- - result.final_state.publications == ["{{ test_pub }}"]
- - result.final_state.synccommit == true
- - result.final_state.slotname == '{{ test_subscription }}'
- - result.final_state.conninfo.dbname == '{{ test_db }}'
- - result.final_state.conninfo.host == '127.0.0.1'
- - result.final_state.conninfo.port == {{ master_port }}
- - result.final_state.conninfo.user == '{{ replication_role }}'
- - result.final_state.conninfo.password == '{{ replication_pass }}'
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: "SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- ###################
- # Test mode: absent
- ###################
-
- - name: Drop subscription in check mode
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: absent
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.queries == ["DROP SUBSCRIPTION {{ test_subscription }}"]
- - result.final_state == result.initial_state
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: "SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Drop subscription
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: absent
-
- - assert:
- that:
- - result is changed
- - result.queries == ["DROP SUBSCRIPTION {{ test_subscription }}"]
- - result.final_state != result.initial_state
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: "SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'"
-
- - assert:
- that:
- - result.rowcount == 0
-
- ##################
- # Test owner param
- ##################
-
- - name: Create with owner
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- publications: '{{ test_pub }}'
- owner: '{{ test_role1 }}'
- connparams:
- host: 127.0.0.1
- port: '{{ master_port }}'
- user: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- dbname: '{{ test_db }}'
-
- - assert:
- that:
- - result.final_state.owner == '{{ test_role1 }}'
- - result.queries[1] == 'ALTER SUBSCRIPTION {{ test_subscription }} OWNER TO "{{ test_role1 }}"'
-
- - name: Try to set this owner again
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- publications: '{{ test_pub }}'
- owner: '{{ test_role1 }}'
-
- - assert:
- that:
- - result is not changed
- - result.initial_state == result.final_state
- - result.final_state.owner == '{{ test_role1 }}'
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: >
- SELECT subname FROM pg_subscription AS s
- JOIN pg_catalog.pg_roles AS r ON s.subowner = r.oid
- WHERE subname = '{{ test_subscription }}' and r.rolname = '{{ test_role1 }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Set another owner in check mode
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- publications: '{{ test_pub }}'
- owner: '{{ test_role2 }}'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.initial_state == result.final_state
- - result.final_state.owner == '{{ test_role1 }}'
- - result.queries == ['ALTER SUBSCRIPTION {{ test_subscription }} OWNER TO "{{ test_role2 }}"']
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: >
- SELECT subname FROM pg_subscription AS s
- JOIN pg_catalog.pg_roles AS r ON s.subowner = r.oid
- WHERE subname = '{{ test_subscription }}' and r.rolname = '{{ test_role1 }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Set another owner
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- publications: '{{ test_pub }}'
- owner: '{{ test_role2 }}'
-
- - assert:
- that:
- - result is changed
- - result.initial_state != result.final_state
- - result.final_state.owner == '{{ test_role2 }}'
- - result.queries == ['ALTER SUBSCRIPTION {{ test_subscription }} OWNER TO "{{ test_role2 }}"']
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: >
- SELECT subname FROM pg_subscription AS s
- JOIN pg_catalog.pg_roles AS r ON s.subowner = r.oid
- WHERE subname = '{{ test_subscription }}' and r.rolname = '{{ test_role2 }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- ##############
- # Test cascade
- ##############
-
- - name: Drop subscription cascade in check mode
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: absent
- cascade: yes
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.queries == ["DROP SUBSCRIPTION {{ test_subscription }} CASCADE"]
- - result.final_state == result.initial_state
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: "SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Drop subscription cascade
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: absent
- cascade: yes
-
- - assert:
- that:
- - result is changed
- - result.queries == ["DROP SUBSCRIPTION {{ test_subscription }} CASCADE"]
- - result.final_state != result.initial_state
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: "SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'"
-
- - assert:
- that:
- - result.rowcount == 0
-
- ###########################
- # Test subsparams parameter
- ###########################
-
- - name: Create subscription with subsparams
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- publications: '{{ test_pub }}'
- connparams:
- host: 127.0.0.1
- port: '{{ master_port }}'
- user: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- dbname: '{{ test_db }}'
- subsparams:
- enabled: no
- synchronous_commit: no
-
- - assert:
- that:
- - result is changed
- - result.name == '{{ test_subscription }}'
- - result.queries == ["CREATE SUBSCRIPTION test CONNECTION 'host=127.0.0.1 port={{ master_port }} user={{ replication_role }} password={{ replication_pass }} dbname={{ test_db }}' PUBLICATION {{ test_pub }} WITH (enabled = false, synchronous_commit = false)"]
- - result.exists == true
- - result.final_state.enabled == false
- - result.final_state.synccommit == false
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: >
- SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'
- AND subenabled = 'f' AND subsynccommit = 'false'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Enable changed params
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- publications: '{{ test_pub }}'
- subsparams:
- enabled: yes
- synchronous_commit: yes
-
- - assert:
- that:
- - result is changed
- - result.name == '{{ test_subscription }}'
- - result.queries == ["ALTER SUBSCRIPTION {{ test_subscription }} ENABLE", "ALTER SUBSCRIPTION {{ test_subscription }} SET (synchronous_commit = true)"]
- - result.exists == true
- - result.final_state.enabled == true
- - result.final_state.synccommit == true
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: >
- SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'
- AND subenabled = 't' AND subsynccommit = 'true'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Enable the same params again
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- publications: '{{ test_pub }}'
- subsparams:
- enabled: yes
- synchronous_commit: yes
-
- - assert:
- that:
- - result is not changed
- - result.name == '{{ test_subscription }}'
- - result.queries == []
- - result.exists == true
- - result.final_state == result.initial_state
- - result.final_state.enabled == true
- - result.final_state.synccommit == true
-
- ##########################
- # Test change publications
- ##########################
-
- - name: Change publications in check mode
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- publications:
- - '{{ test_pub }}'
- - '{{ test_pub2 }}'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.name == '{{ test_subscription }}'
- - result.final_state.publications == result.initial_state.publications
- - result.final_state.publications == ['{{ test_pub }}']
- - result.queries == ['ALTER SUBSCRIPTION {{ test_subscription }} SET PUBLICATION {{ test_pub }}, {{ test_pub2 }}']
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: >
- SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'
- AND subpublications = '{"{{ test_pub }}"}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Change publications
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- publications:
- - '{{ test_pub }}'
- - '{{ test_pub2 }}'
-
- - assert:
- that:
- - result is changed
- - result.name == '{{ test_subscription }}'
- - result.final_state.publications != result.initial_state.publications
- - result.final_state.publications == ['{{ test_pub }}', '{{ test_pub2 }}']
- - result.queries == ['ALTER SUBSCRIPTION {{ test_subscription }} SET PUBLICATION {{ test_pub }}, {{ test_pub2 }}']
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: >
- SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'
- AND subpublications = '{"{{ test_pub }}", "{{ test_pub2 }}"}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Change publications with the same values again
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- publications:
- - '{{ test_pub }}'
- - '{{ test_pub2 }}'
-
- - assert:
- that:
- - result is not changed
- - result.name == '{{ test_subscription }}'
- - result.final_state.publications == result.initial_state.publications
- - result.final_state.publications == ['{{ test_pub }}', '{{ test_pub2 }}']
- - result.queries == []
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: >
- SELECT subname FROM pg_subscription WHERE subname = '{{ test_subscription }}'
- AND subpublications = '{"{{ test_pub }}", "{{ test_pub2 }}"}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- ######################
- # Test update conninfo
- ######################
-
- - name: Change conninfo in check mode
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- connparams:
- host: 127.0.0.1
- port: '{{ master_port }}'
- user: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- dbname: '{{ test_db }}'
- connect_timeout: '{{ conn_timeout }}'
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.name == '{{ test_subscription }}'
- - result.queries == ["ALTER SUBSCRIPTION {{ test_subscription }} CONNECTION 'host=127.0.0.1 port={{ master_port }} user={{ replication_role }} password={{ replication_pass }} dbname={{ test_db }} connect_timeout={{ conn_timeout }}'"]
- - result.initial_state.conninfo == result.final_state.conninfo
-
- - name: Change conninfo
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- connparams:
- host: 127.0.0.1
- port: '{{ master_port }}'
- user: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- dbname: '{{ test_db }}'
- connect_timeout: '{{ conn_timeout }}'
-
- - assert:
- that:
- - result is changed
- - result.name == '{{ test_subscription }}'
- - result.queries == ["ALTER SUBSCRIPTION {{ test_subscription }} CONNECTION 'host=127.0.0.1 port={{ master_port }} user={{ replication_role }} password={{ replication_pass }} dbname={{ test_db }} connect_timeout={{ conn_timeout }}'"]
- - result.initial_state.conninfo != result.final_state.conninfo
-
- - name: Check
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- query: "SELECT * FROM pg_subscription WHERE subname = '{{ test_subscription }}'"
-
- - assert:
- that:
- - result.query_result[0].subconninfo == "host=127.0.0.1 port={{ master_port }} user={{ replication_role }} password={{ replication_pass }} dbname={{ test_db }} connect_timeout={{ conn_timeout }}"
-
- - name: Try to change conninfo again with the same values
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: present
- connparams:
- host: 127.0.0.1
- port: '{{ master_port }}'
- user: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- dbname: '{{ test_db }}'
- connect_timeout: '{{ conn_timeout }}'
-
- - assert:
- that:
- - result is not changed
- - result.name == '{{ test_subscription }}'
- - result.queries == []
- - result.initial_state.conninfo == result.final_state.conninfo
- - result.final_state.conninfo.connect_timeout == {{ conn_timeout }}
-
- ####################
- # Test state refresh
- ####################
-
- - name: Refresh in check mode
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: refresh
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.name == '{{ test_subscription }}'
- - result.queries == ["ALTER SUBSCRIPTION {{ test_subscription }} REFRESH PUBLICATION"]
-
- - name: Refresh
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: refresh
-
- - assert:
- that:
- - result is changed
- - result.name == '{{ test_subscription }}'
- - result.queries == ["ALTER SUBSCRIPTION {{ test_subscription }} REFRESH PUBLICATION"]
-
- ##########
- # Clean up
- ##########
- - name: Drop subscription
- <<: *task_parameters
- postgresql_subscription:
- <<: *pg_parameters
- login_port: '{{ replica_port }}'
- name: '{{ test_subscription }}'
- state: absent
diff --git a/test/integration/targets/postgresql_subscription/tasks/setup_publication.yml b/test/integration/targets/postgresql_subscription/tasks/setup_publication.yml
deleted file mode 100644
index dc99f89d11..0000000000
--- a/test/integration/targets/postgresql_subscription/tasks/setup_publication.yml
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# Preparation for further tests of postgresql_subscription module.
-
-- vars:
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: '{{ test_db }}'
-
- block:
- - name: postgresql_publication - create test db
- <<: *task_parameters
- postgresql_db:
- login_user: '{{ pg_user }}'
- login_port: '{{ master_port }}'
- maintenance_db: '{{ db_default }}'
- name: '{{ test_db }}'
-
- - name: postgresql_publication - create test role
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- login_port: '{{ master_port }}'
- name: '{{ replication_role }}'
- password: '{{ replication_pass }}'
- role_attr_flags: LOGIN,REPLICATION
-
- - name: postgresql_publication - create test table
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- login_port: '{{ master_port }}'
- name: '{{ test_table1 }}'
- columns:
- - id int
-
- - name: Master - dump schema
- <<: *task_parameters
- shell: pg_dumpall -p '{{ master_port }}' -s > /tmp/schema.sql
-
- - name: Replicat restore schema
- <<: *task_parameters
- shell: psql -p '{{ replica_port }}' -f /tmp/schema.sql
-
- - name: postgresql_publication - create publication
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- login_port: '{{ master_port }}'
- name: '{{ test_pub }}'
-
- - assert:
- that:
- - result is changed
- - result.exists == true
- - result.queries == ["CREATE PUBLICATION \"{{ test_pub }}\" FOR ALL TABLES"]
- - result.owner == '{{ pg_user }}'
- - result.alltables == true
- - result.tables == []
- - result.parameters.publish != {}
-
- - name: postgresql_publication - create one more publication
- <<: *task_parameters
- postgresql_publication:
- <<: *pg_parameters
- login_port: '{{ master_port }}'
- name: '{{ test_pub2 }}'
-
- - name: postgresql_publication - check the publication was created
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- login_port: '{{ master_port }}'
- query: >
- SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}'
- AND pubowner = '10' AND puballtables = 't'
-
- - assert:
- that:
- - result.rowcount == 1
diff --git a/test/integration/targets/postgresql_table/aliases b/test/integration/targets/postgresql_table/aliases
deleted file mode 100644
index c00fb38674..0000000000
--- a/test/integration/targets/postgresql_table/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group5
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_table/meta/main.yml b/test/integration/targets/postgresql_table/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_table/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_table/tasks/main.yml b/test/integration/targets/postgresql_table/tasks/main.yml
deleted file mode 100644
index 4d45389fa0..0000000000
--- a/test/integration/targets/postgresql_table/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-# Initial CI tests of postgresql_table module
-- import_tasks: postgresql_table_initial.yml
diff --git a/test/integration/targets/postgresql_table/tasks/postgresql_table_initial.yml b/test/integration/targets/postgresql_table/tasks/postgresql_table_initial.yml
deleted file mode 100644
index aceee5fa60..0000000000
--- a/test/integration/targets/postgresql_table/tasks/postgresql_table_initial.yml
+++ /dev/null
@@ -1,880 +0,0 @@
-# Test code for the postgresql_set module
-
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Create a role for tests:
-- name: postgresql_table - create a role for tests
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- db: postgres
- login_user: "{{ pg_user }}"
- name: alice
-
-- name: postgresql_table - create test schema
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: postgres
- login_user: "{{ pg_user }}"
- name: acme
-
-#
-# Check table creation
-#
-
-# Create a simple table in check_mode:
-- name: postgresql_table - create table in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- login_db: postgres
- login_port: 5432
- login_user: "{{ pg_user }}"
- name: test1
- owner: alice
- columns: id int
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.table == 'test1'
- - result.queries == ['CREATE TABLE "test1" (id int)', 'ALTER TABLE "test1" OWNER TO "alice"']
- - result.state == 'absent'
-
-# Check that the table doesn't exist after the previous step, rowcount must be 0
-- name: postgresql_table - check that table doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname ='test1'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Create a simple table:
-- name: postgresql_table - create table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- login_db: postgres
- login_port: 5432
- login_user: "{{ pg_user }}"
- name: test1
- owner: alice
- columns: id int
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.table == 'test1'
- - result.queries == ['CREATE TABLE "test1" (id int)', 'ALTER TABLE "test1" OWNER TO "alice"']
- - result.state == 'present'
- - result.storage_params == []
- - result.tablespace == ""
- - result.owner == "alice"
-
-# Check that the table exists after the previous step, rowcount must be 1
-- name: postgresql_table - check that table exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname ='test1'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Check that the tableowner is alice
-- name: postgresql_table - check that table owner is alice
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tables WHERE tablename = 'test1' AND tableowner = 'alice'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-#
-# Check create table like another table
-#
-
-# Create a table LIKE another table without any additional parameters in check_mode:
-- name: postgresql_table - create table like in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test2
- like: test1
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.table == 'test2'
- - result.queries == ['CREATE TABLE "test2" (LIKE "test1")']
- - result.state == 'absent'
-
-# Check that the table doesn't exist after the previous step, rowcount must be 0
-- name: postgresql_table - check that table doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname ='test2'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Create a table LIKE another table without any additional parameters:
-- name: postgresql_table - create table like
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test2
- like: test1
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.table == 'test2'
- - result.queries == ['CREATE TABLE "test2" (LIKE "test1")']
- - result.state == 'present'
- - result.storage_params == []
- - result.tablespace == ""
- - result.owner == "{{ pg_user }}"
-
-# Check that the table exists after the previous step, rowcount must be 1
-- name: postgresql_table - check that table exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname ='test2'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-#
-# Check drop table
-#
-
-# Drop a table in check_mode:
-- name: postgresql_table - drop table in check_mode
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test2
- state: absent
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['DROP TABLE "test2"']
- - result.state == 'present'
- - result.storage_params == []
- - result.tablespace == ""
- - result.owner == "{{ pg_user }}"
-
-# Check that the table exists after the previous step, rowcount must be 1
-- name: postgresql_table - check that table exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname ='test2'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Drop a table:
-- name: postgresql_table - drop table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test2
- state: absent
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['DROP TABLE "test2"']
- - result.state == 'absent'
-
-# Check that the table doesn't exist after the previous step, rowcount must be 0
-- name: postgresql_table - check that table doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname ='test2'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Create a table like another table including:
-- name: postgresql_table - create table like with including indexes
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test2
- like: test1
- including: indexes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['CREATE TABLE "test2" (LIKE "test1" INCLUDING indexes)']
- - result.state == 'present'
- - result.storage_params == []
- - result.tablespace == ""
- - result.owner == "{{ pg_user }}"
-
-# Check to create table if it exists:
-- name: postgresql_table - try to create existing table again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test2
- like: test1
- including: indexes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
-
-# Drop the table to prepare for the next step:
-- name: postgresql_table - drop table
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test2
- state: absent
- register: result
- ignore_errors: yes
-
-# Try to drop non existing table:
-- name: postgresql_table - try drop dropped table again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test2
- state: absent
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
-
-#
-# Change ownership
-#
-
-# Create user to prepare for the next step:
-- name: postgresql_table - create the new user test_user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- login_user: "{{ pg_user }}"
- db: postgres
- name: test_user
- state: present
- ignore_errors: yes
-
-# Try to change owner to test_user in check_mode
-- name: postgresql_table - change table ownership to test_user in check_mode
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test1
- owner: test_user
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result.owner == 'alice'
- - result.queries == ['ALTER TABLE "test1" OWNER TO "test_user"']
- - result.state == 'present'
- - result is changed
-
-# Check that the tableowner was not changed to test_user
-- name: postgresql_table - check that table owner was not changed
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tables WHERE tablename = 'test1' AND tableowner = 'test_user'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result is not changed
-
-# Try to change owner to test_user
-- name: postgresql_table - change table ownership to test_user
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test1
- owner: test_user
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result.owner == 'test_user'
- - result.queries == ['ALTER TABLE "test1" OWNER TO "test_user"']
- - result.state == 'present'
- - result is changed
-
-# Check that the tableowner was changed to test_user
-- name: postgresql_table - check that table owner was changed
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_tables WHERE tablename = 'test1' AND tableowner = 'test_user'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-#
-# Additional storage parameters
-#
-
-# Create a table with additional storage parameters:
-- name: postgresql_table - create table with storage_params
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test3
- columns:
- - id int
- - name text
- storage_params:
- - fillfactor=10
- - autovacuum_analyze_threshold=1
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.state == 'present'
- - result.queries == ['CREATE TABLE "test3" (id int,name text) WITH (fillfactor=10,autovacuum_analyze_threshold=1)']
- - result.storage_params == [ "fillfactor=10", "autovacuum_analyze_threshold=1" ]
-
-# Check storage parameters
-- name: postgresql_table - check storage parameters
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT reloptions FROM pg_class WHERE relname = 'test3'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.query_result[0].reloptions == ["fillfactor=10", "autovacuum_analyze_threshold=1"]
-#
-# Check truncate table
-#
-
-# Insert a row to test table:
-- name: postgresql_table - insert a row
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "INSERT INTO test3 (id, name) VALUES (1, 'first')"
-
-# Truncate a table in check_mode:
-- name: postgresql_table - truncate table
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test3
- truncate: yes
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['TRUNCATE TABLE "test3"']
- - result.state == "present"
-
-# Check the row exists:
-- name: postgresql_table - check that row exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT * FROM test3 WHERE id = '1'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Truncate a table. It always returns changed == true
-# because it always creates a new table with the same schema and drop the old table:
-- name: postgresql_table - truncate table
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test3
- truncate: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['TRUNCATE TABLE "test3"']
- - result.state == "present"
-
-# Check the row exists:
-- name: postgresql_table - check that row doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT * FROM test3 WHERE id = '1'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-#
-# Check rename table
-#
-
-# Rename a table in check_mode.
-# In check_mode test4 won't be exist after the following playbook,
-# so result.changed == 'absent' for the table with this name
-- name: postgresql_table - rename table in check_mode
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test3
- rename: test4
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER TABLE "test3" RENAME TO "test4"']
- - result.state == "absent"
-
-# Check that the table exists after the previous step, rowcount must be 1
-- name: postgresql_table - check that table exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname = 'test3'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-# Rename a table:
-- name: postgresql_table - rename table
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test3
- rename: test4
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER TABLE "test3" RENAME TO "test4"']
- - result.state == "present"
-
-# Check that the table test 3 doesn't exist after the previous step, rowcount must be - 0
-- name: postgresql_table - check that table exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname = 'test3'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Check that the table test 4 exists after the previous step, rowcount must be - 1
-- name: postgresql_table - check that table exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname = 'test4'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-#
-# Check create unlogged table
-#
-
-# Create unlogged table in check_mode:
-- name: postgresql_table - create unlogged table in check_mode
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test5
- unlogged: yes
- register: result
- ignore_errors: yes
- check_mode: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['CREATE UNLOGGED TABLE "test5" ()']
- when: postgres_version_resp.stdout is version('9.1', '>=')
-
-# Check that the table doesn't exist after the previous step, rowcount must be - 0
-- name: postgresql_table - check that table doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname = 'test5'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-# Create unlogged table:
-- name: postgresql_table - create unlogged table
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test5
- unlogged: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['CREATE UNLOGGED TABLE "test5" ()']
- when: postgres_version_resp.stdout is version('9.1', '>=')
-
-# Check that the table exists after the previous step, rowcount must be - 1
-- name: postgresql_table - check that table exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname = 'test5'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.1', '>=')
-
-- assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('9.1', '>=')
-
-# Drop table CASCADE:
-- name: postgresql_table - drop table cascade
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test5
- state: absent
- cascade: yes
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ['DROP TABLE "test5" CASCADE']
- when: postgres_version_resp.stdout is version('9.1', '>=')
-
-# Check that the table doesn't exist after the previous step, rowcount must be - 0
-- name: postgresql_table - check that table doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname = 'test5'"
- ignore_errors: yes
- register: result
- when: postgres_version_resp.stdout is version('9.1', '>=')
-
-- assert:
- that:
- - result.rowcount == 0
- when: postgres_version_resp.stdout is version('9.1', '>=')
-
-#
-# Create, drop, and rename table in a specific schema:
-#
-- name: postgresql_table - create table in a specific schema
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme.test_schema_table
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['CREATE TABLE "acme"."test_schema_table" ()']
-
-- name: postgresql_table - check that table exists after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname = 'test_schema_table' and schemaname = 'acme'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-- name: postgresql_table - try to create a table with the same name and schema again
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme.test_schema_table
- register: result
-
-- assert:
- that:
- - result is not changed
-
-- name: postgresql_table - create a table in the default schema for the next test
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: test_schema_table
- register: result
-
-- assert:
- that:
- - result is changed
-
-- name: postgresql_table - drop the table from schema acme
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: postgres.acme.test_schema_table
- state: absent
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['DROP TABLE "postgres"."acme"."test_schema_table"']
-
-- name: postgresql_table - check that the table doesn't exist after the previous step
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname = 'test_schema_table' and schemaname = 'acme'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 0
-
-- name: postgresql_table - try to drop the table from schema acme again
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme.test_schema_table
- state: absent
- register: result
-
-- assert:
- that:
- - result is not changed
-
-- name: postgresql_table - check that the table with the same name in schema public exists
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_query:
- db: postgres
- login_user: "{{ pg_user }}"
- query: "SELECT 1 FROM pg_stat_all_tables WHERE relname = 'test_schema_table' and schemaname = 'public'"
- ignore_errors: yes
- register: result
-
-- assert:
- that:
- - result.rowcount == 1
-
-- name: postgresql_table - rename the table that contents a schema name
- postgresql_table:
- db: postgres
- login_user: "{{ pg_user }}"
- name: public.test_schema_table
- rename: new_test_schema_table
- register: result
-
-- assert:
- that:
- - result is changed
- - result.queries == ['ALTER TABLE "public"."test_schema_table" RENAME TO "new_test_schema_table"']
-
-#
-# Clean up
-#
-- name: postgresql_table - drop test schema
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_schema:
- database: postgres
- login_user: "{{ pg_user }}"
- name: acme
- state: absent
- cascade_drop: yes
-
-- name: postgresql_table - drop test role
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- db: postgres
- login_user: "{{ pg_user }}"
- name: "{{ item }}"
- state: absent
- loop:
- - test_user
- - alice
- ignore_errors: yes
diff --git a/test/integration/targets/postgresql_tablespace/aliases b/test/integration/targets/postgresql_tablespace/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_tablespace/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_tablespace/defaults/main.yml b/test/integration/targets/postgresql_tablespace/defaults/main.yml
deleted file mode 100644
index 62370e8aeb..0000000000
--- a/test/integration/targets/postgresql_tablespace/defaults/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-test_tablespace_path: "/ssd"
diff --git a/test/integration/targets/postgresql_tablespace/meta/main.yml b/test/integration/targets/postgresql_tablespace/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_tablespace/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_tablespace/tasks/main.yml b/test/integration/targets/postgresql_tablespace/tasks/main.yml
deleted file mode 100644
index 72a8cb6994..0000000000
--- a/test/integration/targets/postgresql_tablespace/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-# Initial CI tests of postgresql_tablespace module
-- import_tasks: postgresql_tablespace_initial.yml
diff --git a/test/integration/targets/postgresql_tablespace/tasks/postgresql_tablespace_initial.yml b/test/integration/targets/postgresql_tablespace/tasks/postgresql_tablespace_initial.yml
deleted file mode 100644
index 4bf95395c7..0000000000
--- a/test/integration/targets/postgresql_tablespace/tasks/postgresql_tablespace_initial.yml
+++ /dev/null
@@ -1,245 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Preparation for tests.
-- name: postgresql_tablespace - drop dir for test tablespace
- become: yes
- file:
- path: "{{ test_tablespace_path }}"
- state: absent
- ignore_errors: yes
-
-- name: postgresql_tablespace - disable selinux
- become: yes
- shell: setenforce 0
- ignore_errors: yes
-
-- name: postgresql_tablespace - create dir for test tablespace
- become: yes
- file:
- path: "{{ test_tablespace_path }}"
- state: directory
- owner: "{{ pg_user }}"
- group: "{{ pg_user }}"
- mode: 0700
- ignore_errors: yes
-
-- name: postgresql_tablespace - create test role to test change ownership
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- db: postgres
- login_user: "{{ pg_user }}"
- name: bob
- state: present
- ignore_errors: yes
-
-- name: postgresql_tablespace - create test role to test change ownership
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_user:
- db: postgres
- login_user: "{{ pg_user }}"
- name: alice
- state: present
- ignore_errors: yes
-
-###############
-# Do main tests
-#
-
-# Create tablespace and set owner:
-- name: postgresql_tablespace - create a new tablespace called acme and set bob as an its owner
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme
- owner: bob
- location: /ssd
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.owner == 'bob'
- - result.queries == ["CREATE TABLESPACE \"acme\" LOCATION '/ssd'", "ALTER TABLESPACE \"acme\" OWNER TO bob"]
- - result.state == 'present'
- - result.tablespace == 'acme'
- - result.options == {}
- - result.location == '/ssd'
-
-# Try to create a tablespace with the same name but with a different location
-- name: postgresql_tablespace - try to create the same tablespace with different location
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme
- location: /another-ssd
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.msg == "Tablespace 'acme' exists with different location '/ssd'"
-
-# Change tablespace owner
-- name: postgresql_tablespace - change tablespace owner to alice
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme
- owner: alice
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.owner == 'alice'
- - result.queries == ["ALTER TABLESPACE \"acme\" OWNER TO alice"]
- - result.state == 'present'
- - result.tablespace == 'acme'
- - result.options == {}
-
-# Try to change tablespace owner to alice again:
-- name: postgresql_tablespace - try to change tablespace owner to alice again to be sure that nothing changes
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme
- owner: alice
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.owner == 'alice'
- - result.queries == []
- - result.state == 'present'
- - result.tablespace == 'acme'
- - result.options == {}
-
-# Change tablespace options:
-- name: postgresql_tablespace - change tablespace options
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme
- set:
- seq_page_cost: 4
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.owner == 'alice'
- - result.queries == ["ALTER TABLESPACE \"acme\" SET (seq_page_cost = '4')"]
- - result.state == 'present'
- - result.tablespace == 'acme'
- - result.options.seq_page_cost == '4'
- when: postgres_version_resp.stdout is version('9.0', '>=')
-
-# Reset option:
-- name: postgresql_tablespace - reset seq_page_cost option
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- login_db: postgres
- login_user: "{{ pg_user }}"
- name: acme
- set:
- seq_page_cost: reset
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.queries == ["ALTER TABLESPACE \"acme\" RESET (seq_page_cost)"]
- when: postgres_version_resp.stdout is version('9.0', '>=')
-
-# Try to reset option again to be sure that nothing changes:
-- name: postgresql_tablespace - reset seq_page_cost option again
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme
- set:
- seq_page_cost: reset
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.queries == []
- when: postgres_version_resp.stdout is version('9.0', '>=')
-
-# Rename tablespace:
-- name: postgresql_tablespace - rename tablespace
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: acme
- rename_to: foo
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.newname == 'foo'
- - result.queries == ["ALTER TABLESPACE \"acme\" RENAME TO foo"]
-
-# Drop tablespace:
-- name: postgresql_tablespace - drop tablespace
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: foo
- state: absent
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is changed
- - result.state == 'absent'
- - result.queries == ["DROP TABLESPACE \"foo\""]
-
-# Try to drop nonexistent tablespace to be sure that nothing changes:
-- name: postgresql_tablespace - try to drop nonexistent tablespace
- become_user: "{{ pg_user }}"
- become: yes
- postgresql_tablespace:
- db: postgres
- login_user: "{{ pg_user }}"
- name: foo
- state: absent
- register: result
- ignore_errors: yes
-
-- assert:
- that:
- - result is not changed
- - result.msg == "Tries to drop nonexistent tablespace 'foo'"
diff --git a/test/integration/targets/postgresql_user/aliases b/test/integration/targets/postgresql_user/aliases
deleted file mode 100644
index 6e19e26ba9..0000000000
--- a/test/integration/targets/postgresql_user/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group4
-skip/aix
-skip/osx
diff --git a/test/integration/targets/postgresql_user/defaults/main.yml b/test/integration/targets/postgresql_user/defaults/main.yml
deleted file mode 100644
index bc9ef19b93..0000000000
--- a/test/integration/targets/postgresql_user/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-db_name: 'ansible_db'
-db_user1: 'ansible_db_user1'
-db_user2: 'ansible_db_user2'
diff --git a/test/integration/targets/postgresql_user/meta/main.yml b/test/integration/targets/postgresql_user/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_user/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_user/tasks/main.yml b/test/integration/targets/postgresql_user/tasks/main.yml
deleted file mode 100644
index d59ae63502..0000000000
--- a/test/integration/targets/postgresql_user/tasks/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-# Initial CI tests of postgresql_user module
-- import_tasks: postgresql_user_initial.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
-
-# General tests:
-- import_tasks: postgresql_user_general.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_user/tasks/postgresql_user_general.yml b/test/integration/targets/postgresql_user/tasks/postgresql_user_general.yml
deleted file mode 100644
index 963f58ac1a..0000000000
--- a/test/integration/targets/postgresql_user/tasks/postgresql_user_general.yml
+++ /dev/null
@@ -1,741 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# Integration tests for postgresql_user module.
-
-- vars:
- test_user: hello.user.with.dots
- test_user2: hello
- test_group1: group1
- test_group2: group2
- test_table: test
- test_comment1: 'comment1'
- test_comment2: 'comment2'
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: postgres
-
- block:
- #
- # Common tests
- #
- - name: Create role in check_mode
- <<: *task_parameters
- check_mode: yes
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
-
- - name: check that the user doesn't exist
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_roles WHERE rolname = '{{ test_user }}'"
-
- - assert:
- that:
- - result.rowcount == 0
-
- - name: Create role in actual mode
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
-
- - name: check that the user exists
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_roles WHERE rolname = '{{ test_user }}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Add a comment on the user
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- comment: '{{ test_comment1 }}'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["COMMENT ON ROLE \"{{ test_user }}\" IS '{{ test_comment1 }}'"]
-
- - name: check the comment
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT pg_catalog.shobj_description(r.oid, 'pg_authid') AS comment
- FROM pg_catalog.pg_roles r WHERE r.rolname = '{{ test_user }}'
-
- - assert:
- that:
- - result.rowcount == 1
- - result.query_result[0].comment == '{{ test_comment1 }}'
-
- - name: Try to add the same comment on the user
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- comment: '{{ test_comment1 }}'
-
- - assert:
- that:
- - result is not changed
-
- - name: Try to add another comment on the user
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- comment: '{{ test_comment2 }}'
-
- - assert:
- that:
- - result is changed
- - result.queries == ["COMMENT ON ROLE \"{{ test_user }}\" IS '{{ test_comment2 }}'"]
-
- - name: check the comment
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT pg_catalog.shobj_description(r.oid, 'pg_authid') AS comment
- FROM pg_catalog.pg_roles r WHERE r.rolname = '{{ test_user }}'
-
- - assert:
- that:
- - result.rowcount == 1
- - result.query_result[0].comment == '{{ test_comment2 }}'
-
- - name: Try to create role again in check_mode
- <<: *task_parameters
- check_mode: yes
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
-
- - assert:
- that:
- - result is not changed
- - result.user == '{{ test_user }}'
-
- - name: check that the user exists
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_roles WHERE rolname = '{{ test_user }}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Try to create role again
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
-
- - assert:
- that:
- - result is not changed
- - result.user == '{{ test_user }}'
-
- - name: check that the user exists
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_roles WHERE rolname = '{{ test_user }}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Drop role in check_mode
- <<: *task_parameters
- check_mode: yes
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- state: absent
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
-
- - name: check that the user actually exists
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_roles WHERE rolname = '{{ test_user }}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Drop role in actual mode
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- state: absent
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
-
- - name: check that the user doesn't exist
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_roles WHERE rolname = '{{ test_user }}'"
-
- - assert:
- that:
- - result.rowcount == 0
-
- - name: Try to drop role in check mode again
- <<: *task_parameters
- check_mode: yes
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- state: absent
-
- - assert:
- that:
- - result is not changed
- - result.user == '{{ test_user }}'
-
- - name: Try to drop role in actual mode again
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- state: absent
-
- - assert:
- that:
- - result is not changed
- - result.user == '{{ test_user }}'
-
- #
- # password, no_password_changes, encrypted, expires parameters
- #
-
- - name: Create role with password, passed as hashed md5
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- password: md59543f1d82624df2b31672ec0f7050460
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
-
- - name: Check that the user exist with a proper password
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}' and rolpassword = 'md59543f1d82624df2b31672ec0f7050460'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Test no_password_changes
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- password: u123
- no_password_changes: yes
-
- - assert:
- that:
- - result is not changed
- - result.user == '{{ test_user }}'
-
-
- - name: Check that nothing changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}' and rolpassword = 'md59543f1d82624df2b31672ec0f7050460'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- # Storing unencrypted passwords is not available from PostgreSQL 10
- - name: Change password, passed as unencrypted
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- password: myunencryptedpass
- encrypted: no
- when: postgres_version_resp.stdout is version('10', '<')
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
- when: postgres_version_resp.stdout is version('10', '<')
-
- - name: Check that the user exist with the unencrypted password
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}' and rolpassword = 'myunencryptedpass'"
- when: postgres_version_resp.stdout is version('10', '<')
-
- - assert:
- that:
- - result.rowcount == 1
- when: postgres_version_resp.stdout is version('10', '<')
-
- - name: Change password, explicit encrypted=yes
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- password: myunencryptedpass
- encrypted: yes
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
-
- - name: Check that the user exist with encrypted password
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}' and rolpassword != 'myunencryptedpass'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Change rolvaliduntil attribute
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- expires: 'Jan 31 2020'
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
-
- - name: Check the prev step
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}'
- AND rolvaliduntil::text like '2020-01-31%'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Try to set the same rolvaliduntil value again
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- expires: 'Jan 31 2020'
-
- - assert:
- that:
- - result is not changed
- - result.user == '{{ test_user }}'
-
- - name: Check that nothing changed
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}'
- AND rolvaliduntil::text like '2020-01-31%'
-
- - assert:
- that:
- - result.rowcount == 1
-
- #
- # role_attr_flags
- #
- - name: Set role attributes
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- role_attr_flags: CREATEROLE,CREATEDB
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
-
- - name: Check the prev step
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}'
- AND rolcreaterole = 't' and rolcreatedb = 't'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Set the same role attributes again
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- role_attr_flags: CREATEROLE,CREATEDB
-
- - assert:
- that:
- - result is not changed
- - result.user == '{{ test_user }}'
-
- - name: Check the prev step
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}'
- AND rolcreaterole = 't' and rolcreatedb = 't'
-
- - name: Set role attributes
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- role_attr_flags: NOCREATEROLE,NOCREATEDB
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
-
- - name: Check the prev step
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}'
- AND rolcreaterole = 'f' and rolcreatedb = 'f'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Set role attributes
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- role_attr_flags: NOCREATEROLE,NOCREATEDB
-
- - assert:
- that:
- - result is not changed
- - result.user == '{{ test_user }}'
-
- - name: Check the prev step
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: >
- SELECT rolname FROM pg_authid WHERE rolname = '{{ test_user }}'
- AND rolcreaterole = 'f' and rolcreatedb = 'f'
-
- #
- # priv
- #
- - name: Create test table
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ test_table }}'
- columns:
- - id int
-
- - name: Insert data to test table
- <<: *task_parameters
- postgresql_query:
- query: "INSERT INTO {{ test_table }} (id) VALUES ('1')"
- <<: *pg_parameters
-
- - name: Check that test_user is not allowed to read the data
- <<: *task_parameters
- postgresql_query:
- db: postgres
- login_user: '{{ pg_user }}'
- session_role: '{{ test_user }}'
- query: 'SELECT * FROM {{ test_table }}'
- ignore_errors: yes
-
- - assert:
- that:
- - result is failed
- - "'permission denied' in result.msg"
-
- - name: Grant privileges
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- priv: '{{ test_table }}:SELECT'
-
- - assert:
- that:
- - result is changed
-
- - name: Check that test_user is allowed to read the data
- <<: *task_parameters
- postgresql_query:
- db: postgres
- login_user: '{{ pg_user }}'
- session_role: '{{ test_user }}'
- query: 'SELECT * FROM {{ test_table }}'
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Grant the same privileges again
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- priv: '{{ test_table }}:SELECT'
-
- - assert:
- that:
- - result is not changed
-
- - name: Remove test table
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ test_table }}'
- state: absent
-
- #
- # fail_on_user
- #
- - name: Create role for test
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user2 }}'
-
- - name: Create test table, set owner as test_user
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ test_table }}'
- owner: '{{ test_user2 }}'
-
- - name: Test fail_on_user
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user2 }}'
- state: absent
- ignore_errors: yes
-
- - assert:
- that:
- - result is failed
- - result.msg == 'Unable to remove user'
-
- - name: Test fail_on_user
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- fail_on_user: no
-
- - assert:
- that:
- - result is not changed
-
- #
- # Test groups parameter
- #
- - name: Create test group
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_group2 }}'
- role_attr_flags: NOLOGIN
-
- - name: Create role test_group1 and grant test_group2 to test_group1 in check_mode
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_group1 }}'
- groups: '{{ test_group2 }}'
- role_attr_flags: NOLOGIN
- check_mode: yes
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_group1 }}'
- - result.queries == ['CREATE USER "{{ test_group1 }}" NOLOGIN', 'GRANT "{{ test_group2 }}" TO "{{ test_group1 }}"']
-
- - name: check that the user doesn't exist
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_roles WHERE rolname = '{{ test_group1 }}'"
-
- - assert:
- that:
- - result.rowcount == 0
-
- - name: check membership
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT grolist FROM pg_group WHERE groname = '{{ test_group2 }}' AND grolist != '{}'"
-
- - assert:
- that:
- - result.rowcount == 0
-
- - name: Create role test_group1 and grant test_group2 to test_group1
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_group1 }}'
- groups: '{{ test_group2 }}'
- role_attr_flags: NOLOGIN
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_group1 }}'
- - result.queries == ['CREATE USER "{{ test_group1 }}" NOLOGIN', 'GRANT "{{ test_group2 }}" TO "{{ test_group1 }}"']
-
- - name: check that the user exists
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT rolname FROM pg_roles WHERE rolname = '{{ test_group1 }}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: check membership
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT grolist FROM pg_group WHERE groname = '{{ test_group2 }}' AND grolist != '{}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Grant test_group2 to test_group1 again
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_group1 }}'
- groups: '{{ test_group2 }}'
-
- - assert:
- that:
- - result is not changed
- - result.user == '{{ test_group1 }}'
-
- - name: check membership
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT grolist FROM pg_group WHERE groname = '{{ test_group2 }}' AND grolist != '{}'"
-
- - assert:
- that:
- - result.rowcount == 1
-
- - name: Grant groups to existent role
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ test_user }}'
- groups:
- - '{{ test_group1 }}'
- - '{{ test_group2 }}'
-
- - assert:
- that:
- - result is changed
- - result.user == '{{ test_user }}'
- - result.queries == ['GRANT "{{ test_group1 }}" TO "{{ test_user }}"', 'GRANT "{{ test_group2 }}" TO "{{ test_user }}"']
-
- - name: check membership
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: "SELECT * FROM pg_group WHERE groname in ('{{ test_group1 }}', '{{ test_group2 }}') AND grolist != '{}'"
-
- - assert:
- that:
- - result.rowcount == 2
-
- always:
- #
- # Clean up
- #
- - name: Drop test table
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ test_table }}'
- state: absent
-
- - name: Drop test user
- <<: *task_parameters
- postgresql_user:
- <<: *pg_parameters
- name: '{{ item }}'
- state: absent
- loop:
- - '{{ test_user }}'
- - '{{ test_user2 }}'
- - '{{ test_group1 }}'
- - '{{ test_group2 }}'
diff --git a/test/integration/targets/postgresql_user/tasks/postgresql_user_initial.yml b/test/integration/targets/postgresql_user/tasks/postgresql_user_initial.yml
deleted file mode 100644
index ccd42847c6..0000000000
--- a/test/integration/targets/postgresql_user/tasks/postgresql_user_initial.yml
+++ /dev/null
@@ -1,153 +0,0 @@
-#
-# Create and destroy user, test 'password' and 'encrypted' parameters
-#
-# unencrypted values are not supported on newer versions
-# do not run the encrypted: no tests if on 10+
-- set_fact:
- encryption_values:
- - 'yes'
-
-- set_fact:
- encryption_values: '{{ encryption_values + ["no"]}}'
- when: postgres_version_resp.stdout is version('10', '<=')
-
-- include_tasks: test_password.yml
- vars:
- encrypted: '{{ loop_item }}'
- db_password1: 'secretù' # use UTF-8
- loop: '{{ encryption_values }}'
- loop_control:
- loop_var: loop_item
-
-# BYPASSRLS role attribute was introduced in PostgreSQL 9.5, so
-# we want to test attribute management differently depending
-# on the version.
-- set_fact:
- bypassrls_supported: "{{ postgres_version_resp.stdout is version('9.5.0', '>=') }}"
-
-# test 'no_password_change' and 'role_attr_flags' parameters
-- include_tasks: test_no_password_change.yml
- vars:
- no_password_changes: '{{ loop_item }}'
- loop:
- - 'yes'
- - 'no'
- loop_control:
- loop_var: loop_item
-
-### TODO: fail_on_user
-
-#
-# Test login_user functionality
-#
-- name: Create a user to test login module parameters
- become: yes
- become_user: "{{ pg_user }}"
- postgresql_user:
- name: "{{ db_user1 }}"
- state: "present"
- encrypted: 'yes'
- password: "password"
- role_attr_flags: "CREATEDB,LOGIN,CREATEROLE"
- login_user: "{{ pg_user }}"
- db: postgres
-
-- name: Create db
- postgresql_db:
- name: "{{ db_name }}"
- state: "present"
- login_user: "{{ db_user1 }}"
- login_password: "password"
- login_host: "localhost"
-
-- name: Check that database created
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "select datname from pg_database where datname = '{{ db_name }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
-
-- name: Create a user
- postgresql_user:
- name: "{{ db_user2 }}"
- state: "present"
- encrypted: 'yes'
- password: "md55c8ccfd9d6711fc69a7eae647fc54f51"
- db: "{{ db_name }}"
- login_user: "{{ db_user1 }}"
- login_password: "password"
- login_host: "localhost"
-
-- name: Check that it was created
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "select * from pg_user where usename='{{ db_user2 }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
-
-- name: Grant database privileges
- postgresql_privs:
- type: "database"
- state: "present"
- roles: "{{ db_user2 }}"
- privs: "CREATE,connect"
- objs: "{{ db_name }}"
- db: "{{ db_name }}"
- login: "{{ db_user1 }}"
- password: "password"
- host: "localhost"
-
-- name: Check that the user has the requested permissions (database)
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "select datacl from pg_database where datname='{{ db_name }}';" | psql {{ db_name }}
- register: result_database
-
-- assert:
- that:
- - "result_database.stdout_lines[-1] == '(1 row)'"
- - "db_user2 ~ '=Cc' in result_database.stdout"
-
-- name: Remove user
- postgresql_user:
- name: "{{ db_user2 }}"
- state: 'absent'
- priv: "ALL"
- db: "{{ db_name }}"
- login_user: "{{ db_user1 }}"
- login_password: "password"
- login_host: "localhost"
-
-- name: Check that they were removed
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "select * from pg_user where usename='{{ db_user2 }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
-
-- name: Destroy DB
- postgresql_db:
- state: absent
- name: "{{ db_name }}"
- login_user: "{{ db_user1 }}"
- login_password: "password"
- login_host: "localhost"
-
-- name: Check that database was destroyed
- become: yes
- become_user: "{{ pg_user }}"
- shell: echo "select datname from pg_database where datname = '{{ db_name }}';" | psql -d postgres
- register: result
-
-- assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
diff --git a/test/integration/targets/postgresql_user/tasks/test_no_password_change.yml b/test/integration/targets/postgresql_user/tasks/test_no_password_change.yml
deleted file mode 100644
index c296c0ea77..0000000000
--- a/test/integration/targets/postgresql_user/tasks/test_no_password_change.yml
+++ /dev/null
@@ -1,167 +0,0 @@
-- vars:
- task_parameters: &task_parameters
- become_user: "{{ pg_user }}"
- become: yes
- register: result
- postgresql_parameters: &parameters
- db: postgres
- name: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
-
- block:
-
- - name: Create a user with all role attributes
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- state: "present"
- role_attr_flags: "SUPERUSER,CREATEROLE,CREATEDB,INHERIT,LOGIN{{ bypassrls_supported | ternary(',BYPASSRLS', '') }}"
- no_password_changes: '{{ no_password_changes }}' # no_password_changes is ignored when user doesn't already exist
-
- - name: Check that the user has the requested role attributes
- <<: *task_parameters
- shell: "echo \"select 'super:'||rolsuper, 'createrole:'||rolcreaterole, 'create:'||rolcreatedb, 'inherit:'||rolinherit, 'login:'||rolcanlogin {{ bypassrls_supported | ternary(\", 'bypassrls:'||rolbypassrls\", '') }} from pg_roles where rolname='{{ db_user1 }}';\" | psql -d postgres"
-
- - assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
- - "'super:t' in result.stdout_lines[-2]"
- - "'createrole:t' in result.stdout_lines[-2]"
- - "'create:t' in result.stdout_lines[-2]"
- - "'inherit:t' in result.stdout_lines[-2]"
- - "'login:t' in result.stdout_lines[-2]"
-
- - block:
- - name: Check that the user has the requested role attribute BYPASSRLS
- <<: *task_parameters
- shell: "echo \"select 'bypassrls:'||rolbypassrls from pg_roles where rolname='{{ db_user1 }}';\" | psql -d postgres"
-
- - assert:
- that:
- - "not bypassrls_supported or 'bypassrls:t' in result.stdout_lines[-2]"
- when: bypassrls_supported
-
- - name: Modify a user to have no role attributes
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- state: "present"
- role_attr_flags: "NOSUPERUSER,NOCREATEROLE,NOCREATEDB,noinherit,NOLOGIN{{ bypassrls_supported | ternary(',NOBYPASSRLS', '') }}"
- no_password_changes: '{{ no_password_changes }}'
-
- - name: Check that ansible reports it modified the role
- assert:
- that:
- - result is changed
-
- - name: "Check that the user doesn't have any attribute"
- <<: *task_parameters
- shell: "echo \"select 'super:'||rolsuper, 'createrole:'||rolcreaterole, 'create:'||rolcreatedb, 'inherit:'||rolinherit, 'login:'||rolcanlogin from pg_roles where rolname='{{ db_user1 }}';\" | psql -d postgres"
-
- - assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
- - "'super:f' in result.stdout_lines[-2]"
- - "'createrole:f' in result.stdout_lines[-2]"
- - "'create:f' in result.stdout_lines[-2]"
- - "'inherit:f' in result.stdout_lines[-2]"
- - "'login:f' in result.stdout_lines[-2]"
-
- - block:
- - name: Check that the user has the requested role attribute BYPASSRLS
- <<: *task_parameters
- shell: "echo \"select 'bypassrls:'||rolbypassrls from pg_roles where rolname='{{ db_user1 }}';\" | psql -d postgres"
-
- - assert:
- that:
- - "not bypassrls_supported or 'bypassrls:f' in result.stdout_lines[-2]"
- when: bypassrls_supported
-
- - name: Try to add an invalid attribute
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- state: "present"
- role_attr_flags: "NOSUPERUSER,NOCREATEROLE,NOCREATEDB,noinherit,NOLOGIN{{ bypassrls_supported | ternary(',NOBYPASSRLS', '') }},INVALID"
- no_password_changes: '{{ no_password_changes }}'
- ignore_errors: yes
-
- - name: Check that ansible reports failure
- assert:
- that:
- - result is not changed
- - result is failed
- - "result.msg == 'Invalid role_attr_flags specified: INVALID'"
-
- - name: Modify a single role attribute on a user
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- state: "present"
- role_attr_flags: "LOGIN"
- no_password_changes: '{{ no_password_changes }}'
-
- - name: Check that ansible reports it modified the role
- assert:
- that:
- - result is changed
-
- - name: Check the role attributes
- <<: *task_parameters
- shell: echo "select 'super:'||rolsuper, 'createrole:'||rolcreaterole, 'create:'||rolcreatedb, 'inherit:'||rolinherit, 'login:'||rolcanlogin from pg_roles where rolname='{{ db_user1 }}';" | psql -d postgres
-
- - assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
- - "'super:f' in result.stdout_lines[-2]"
- - "'createrole:f' in result.stdout_lines[-2]"
- - "'create:f' in result.stdout_lines[-2]"
- - "'inherit:f' in result.stdout_lines[-2]"
- - "'login:t' in result.stdout_lines[-2]"
-
- - block:
- - name: Check the role attribute BYPASSRLS
- <<: *task_parameters
- shell: echo "select 'bypassrls:'||rolbypassrls from pg_roles where rolname='{{ db_user1 }}';" | psql -d postgres
-
- - assert:
- that:
- - "( postgres_version_resp.stdout is version('9.5.0', '<')) or 'bypassrls:f' in result.stdout_lines[-2]"
- when: bypassrls_supported
-
- - name: Check that using same attribute a second time does nothing
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- state: "present"
- role_attr_flags: "LOGIN"
- no_password_changes: '{{ no_password_changes }}'
- environment:
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - name: Check there isn't any update reported
- assert:
- that:
- - result is not changed
-
- - name: Cleanup the user
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- state: 'absent'
- no_password_changes: '{{ no_password_changes }}' # user deletion: no_password_changes is ignored
-
- - name: Check that user was removed
- <<: *task_parameters
- shell: echo "select * from pg_user where usename='{{ db_user1 }}';" | psql -d postgres
-
- - assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
-
- always:
- - name: Cleanup the user
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- state: 'absent'
diff --git a/test/integration/targets/postgresql_user/tasks/test_password.yml b/test/integration/targets/postgresql_user/tasks/test_password.yml
deleted file mode 100644
index be033a5569..0000000000
--- a/test/integration/targets/postgresql_user/tasks/test_password.yml
+++ /dev/null
@@ -1,336 +0,0 @@
-- vars:
- task_parameters: &task_parameters
- become_user: "{{ pg_user }}"
- become: yes
- register: result
- postgresql_parameters: &parameters
- db: postgres
- name: "{{ db_user1 }}"
- login_user: "{{ pg_user }}"
-
- block:
- - name: 'Check that PGOPTIONS environment variable is effective (1/2)'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: '{{ db_password1 }}'
- ignore_errors: true
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - name: 'Check that PGOPTIONS environment variable is effective (2/2)'
- assert:
- that:
- - "{{ result is failed }}"
-
- - name: 'Create a user (password encrypted: {{ encrypted }})'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: '{{ db_password1 }}'
- encrypted: '{{ encrypted }}'
- environment:
- PGCLIENTENCODING: 'UTF8'
-
- - block: &changed # block is only used here in order to be able to define YAML anchor
- - name: Check that ansible reports it was created
- assert:
- that:
- - "{{ result is changed }}"
-
- - name: Check that it was created
- <<: *task_parameters
- shell: echo "select * from pg_user where usename='{{ db_user1 }}';" | psql -d postgres
-
- - assert:
- that:
- - "result.stdout_lines[-1] == '(1 row)'"
-
- - name: Check that creating user a second time does nothing
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: '{{ db_password1 }}'
- encrypted: '{{ encrypted }}'
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - block: &not_changed # block is only used here in order to be able to define YAML anchor
- - name: Check that ansible reports no change
- assert:
- that:
- - "{{ result is not changed }}"
-
- - name: 'Define an expiration time'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- expires: '2025-01-01'
- environment:
- PGCLIENTENCODING: 'UTF8'
-
- - <<: *changed
-
- - name: 'Redefine the same expiration time'
- <<: *task_parameters
- postgresql_user:
- expires: '2025-01-01'
- <<: *parameters
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - block:
-
- - name: 'Using MD5-hashed password: check that password not changed when using cleartext password'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: '{{ db_password1 }}'
- encrypted: 'yes'
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: "Using MD5-hashed password: check that password not changed when using md5 hash with 'ENCRYPTED'"
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: "md5{{ (db_password1 ~ db_user1) | hash('md5')}}"
- encrypted: 'yes'
- environment:
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: "Using MD5-hashed password: check that password not changed when using md5 hash with 'UNENCRYPTED'"
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: "md5{{ (db_password1 ~ db_user1) | hash('md5')}}"
- encrypted: 'no'
- environment:
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: 'Redefine the same expiration time and password (encrypted)'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- encrypted: 'yes'
- password: "md5{{ (db_password1 ~ db_user1) | hash('md5')}}"
- expires: '2025-01-01'
- environment:
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: 'Using MD5-hashed password: check that password changed when using another cleartext password'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: 'prefix{{ db_password1 }}'
- encrypted: 'yes'
- environment:
- PGCLIENTENCODING: 'UTF8'
-
- - <<: *changed
-
- - name: "Using MD5-hashed password: check that password changed when using another md5 hash with 'ENCRYPTED'"
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: "md5{{ ('prefix1' ~ db_password1 ~ db_user1) | hash('md5')}}"
- encrypted: 'yes'
-
- - <<: *changed
-
- - name: "Using MD5-hashed password: check that password changed when using md5 hash with 'UNENCRYPTED'"
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: "md5{{ ('prefix2' ~ db_password1 ~ db_user1) | hash('md5')}}"
- encrypted: 'no'
- register: change_pass_unencrypted
- failed_when:
- - change_pass_unencrypted is failed
- # newer version of psycopg2 no longer supported unencrypted password, we ignore the error
- - '"UNENCRYPTED PASSWORD is no longer supported" not in change_pass_unencrypted.msg'
-
- - <<: *changed
-
- - name: 'Using MD5-hashed password: check that password changed when clearing the password'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: ''
- encrypted: 'yes'
- environment:
- PGCLIENTENCODING: 'UTF8'
-
- - <<: *changed
-
- - name: 'Using MD5-hashed password: check that password not changed when clearing the password again'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: ''
- encrypted: 'yes'
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: 'Using cleartext password: check that password not changed when clearing the password again'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: ''
- encrypted: 'no'
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: 'Using MD5-hashed password: check that password changed when using a cleartext password'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: '{{ db_password1 }}'
- encrypted: 'yes'
- environment:
- PGCLIENTENCODING: 'UTF8'
-
- - <<: *changed
-
- when: encrypted == 'yes'
-
- - block:
-
- - name: 'Using cleartext password: check that password not changed when using cleartext password'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: "{{ db_password1 }}"
- encrypted: 'no'
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: 'Redefine the same expiration time and password (not encrypted)'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: "{{ db_password1 }}"
- encrypted: 'no'
- expires: '2025-01-01'
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: 'Using cleartext password: check that password changed when using another cleartext password'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: "changed{{ db_password1 }}"
- encrypted: 'no'
- environment:
- PGCLIENTENCODING: 'UTF8'
-
- - <<: *changed
-
- - name: 'Using cleartext password: check that password changed when clearing the password'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: ''
- encrypted: 'no'
- environment:
- PGCLIENTENCODING: 'UTF8'
-
- - <<: *changed
-
- - name: 'Using cleartext password: check that password not changed when clearing the password again'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: ''
- encrypted: 'no'
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: 'Using MD5-hashed password: check that password not changed when clearing the password again'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: ''
- encrypted: 'yes'
- environment:
- PGCLIENTENCODING: 'UTF8'
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- - name: 'Using cleartext password: check that password changed when using cleartext password'
- <<: *task_parameters
- postgresql_user:
- <<: *parameters
- password: "{{ db_password1 }}"
- encrypted: 'no'
- environment:
- PGCLIENTENCODING: 'UTF8'
-
- - <<: *changed
-
- when: encrypted == 'no'
-
- - name: Remove user
- <<: *task_parameters
- postgresql_user:
- state: 'absent'
- <<: *parameters
-
- - <<: *changed
-
- - name: Check that they were removed
- <<: *task_parameters
- shell: echo "select * from pg_user where usename='{{ db_user1 }}';" | psql -d postgres
- environment:
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - assert:
- that:
- - "result.stdout_lines[-1] == '(0 rows)'"
-
- - name: Check that removing user a second time does nothing
- <<: *task_parameters
- postgresql_user:
- state: 'absent'
- <<: *parameters
- environment:
- PGOPTIONS: '-c default_transaction_read_only=on' # ensure 'alter user' query isn't executed
-
- - <<: *not_changed
-
- always:
- - name: Remove user
- <<: *task_parameters
- postgresql_user:
- state: 'absent'
- <<: *parameters
diff --git a/test/integration/targets/postgresql_user_obj_stat_info/aliases b/test/integration/targets/postgresql_user_obj_stat_info/aliases
deleted file mode 100644
index cc949990c8..0000000000
--- a/test/integration/targets/postgresql_user_obj_stat_info/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/osx
-skip/freebsd
-skip/rhel
-skip/aix
diff --git a/test/integration/targets/postgresql_user_obj_stat_info/defaults/main.yml b/test/integration/targets/postgresql_user_obj_stat_info/defaults/main.yml
deleted file mode 100644
index f697cefd33..0000000000
--- a/test/integration/targets/postgresql_user_obj_stat_info/defaults/main.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-pg_user: postgres
-db_default: postgres
-
-test_table1: acme1
-test_table2: acme2
-test_table3: acme3
-test_idx1: idx1
-test_idx2: idx2
-test_func1: func1
-test_func2: func2
-test_func3: func3
-test_schema1: schema1
diff --git a/test/integration/targets/postgresql_user_obj_stat_info/meta/main.yml b/test/integration/targets/postgresql_user_obj_stat_info/meta/main.yml
deleted file mode 100644
index 4ce5a5837b..0000000000
--- a/test/integration/targets/postgresql_user_obj_stat_info/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_postgresql_db
diff --git a/test/integration/targets/postgresql_user_obj_stat_info/tasks/main.yml b/test/integration/targets/postgresql_user_obj_stat_info/tasks/main.yml
deleted file mode 100644
index e12e770f62..0000000000
--- a/test/integration/targets/postgresql_user_obj_stat_info/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-# Initial tests of postgresql_user_obj_stat_info module:
-- import_tasks: postgresql_user_obj_stat_info.yml
- when: postgres_version_resp.stdout is version('9.4', '>=')
diff --git a/test/integration/targets/postgresql_user_obj_stat_info/tasks/postgresql_user_obj_stat_info.yml b/test/integration/targets/postgresql_user_obj_stat_info/tasks/postgresql_user_obj_stat_info.yml
deleted file mode 100644
index 485af493bf..0000000000
--- a/test/integration/targets/postgresql_user_obj_stat_info/tasks/postgresql_user_obj_stat_info.yml
+++ /dev/null
@@ -1,189 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-- vars:
- task_parameters: &task_parameters
- become_user: '{{ pg_user }}'
- become: yes
- register: result
- pg_parameters: &pg_parameters
- login_user: '{{ pg_user }}'
- login_db: '{{ db_default }}'
-
- block:
- # Preparation:
- # 0. create test schema
- # 1. create test tables
- # 2. create test indexes
- # 3. create test functions
- # 4. enable track_functions and restart
-
- - name: Create schema
- <<: *task_parameters
- postgresql_schema:
- <<: *pg_parameters
- name: '{{ test_schema1 }}'
-
- - name: Create test tables
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ item }}'
- columns:
- - id int
- loop:
- - '{{ test_table1 }}'
- - '{{ test_table2 }}'
-
- - name: Create test table in another schema
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ test_schema1 }}.{{ test_table3 }}'
-
- - name: Create test indexes
- <<: *task_parameters
- postgresql_idx:
- <<: *pg_parameters
- name: '{{ item }}'
- table: '{{ test_table1 }}'
- columns:
- - id
- loop:
- - '{{ test_idx1 }}'
- - '{{ test_idx2 }}'
-
- - name: Set track_function (restart is required)
- <<: *task_parameters
- postgresql_set:
- <<: *pg_parameters
- name: track_functions
- value: all
-
- - name: Restart PostgreSQL
- become: yes
- service:
- name: "{{ postgresql_service }}"
- state: restarted
-
- - name: Create test functions
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: 'CREATE FUNCTION {{ item }}() RETURNS boolean AS $$ BEGIN RETURN 1; END; $$ LANGUAGE PLPGSQL'
- loop:
- - '{{ test_func1 }}'
- - '{{ test_func2 }}'
- - '{{ test_schema1 }}.{{ test_func3 }}'
-
- - name: Touch test functions
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: 'SELECT {{ item }}()'
- loop:
- - '{{ test_func1 }}'
- - '{{ test_func2 }}'
- - '{{ test_schema1 }}.{{ test_func3 }}'
-
- #######
- # Tests
- #######
- # 0. Without filter
- - name: Collect all stats
- <<: *task_parameters
- postgresql_user_obj_stat_info:
- <<: *pg_parameters
-
- - assert:
- that:
- - result is not changed
- - result.tables.public.{{ test_table1 }}.size == 0
- - result.tables.public.{{ test_table1 }}.size == 0
- - result.tables.{{ test_schema1 }}.{{ test_table3 }}.size == 0
- - result.functions.public.{{ test_func1 }}.calls == 1
- - result.functions.public.{{ test_func2 }}.calls == 1
- - result.functions.{{ test_schema1 }}.{{ test_func3 }}.calls == 1
- - result.indexes.public.{{ test_idx1 }}.idx_scan == 0
- - result.indexes.public.{{ test_idx2 }}.idx_scan == 0
-
- # 1. With filter
- - name: Collect stats with filter
- <<: *task_parameters
- postgresql_user_obj_stat_info:
- <<: *pg_parameters
- filter: tables, indexes
-
- - assert:
- that:
- - result is not changed
- - result.tables.public.{{ test_table1 }}.size == 0
- - result.tables.public.{{ test_table1 }}.size == 0
- - result.tables.{{ test_schema1 }}.{{ test_table3 }}.size == 0
- - result.functions == {}
- - result.indexes.public.{{ test_idx1 }}.idx_scan == 0
- - result.indexes.public.{{ test_idx2 }}.idx_scan == 0
-
- # 2. With schema
- - name: Collect stats for objects in certain schema
- <<: *task_parameters
- postgresql_user_obj_stat_info:
- <<: *pg_parameters
- schema: public
-
- - assert:
- that:
- - result is not changed
- - result.tables.public.{{ test_table1 }}.size == 0
- - result.tables.public.{{ test_table1 }}.size == 0
- - result.indexes.public.{{ test_idx1 }}.idx_scan == 0
- - result.indexes.public.{{ test_idx2 }}.idx_scan == 0
- - result.functions.public.{{ test_func1 }}.calls == 1
- - result.functions.public.{{ test_func2 }}.calls == 1
- - result.tables.{{ test_schema1 }} is not defined
-
-
- # 3. With wrong schema
- - name: Try to collect data in nonexistent schema
- <<: *task_parameters
- postgresql_user_obj_stat_info:
- <<: *pg_parameters
- schema: nonexistent
- ignore_errors: yes
-
- - assert:
- that:
- - result is failed
- - result.msg == "Schema 'nonexistent' does not exist"
-
- ##########
- # Clean up
- ##########
- - name: Drop schema
- <<: *task_parameters
- postgresql_schema:
- <<: *pg_parameters
- name: '{{ test_schema1 }}'
- state: absent
- cascade_drop: yes
-
- - name: Drop test tables
- <<: *task_parameters
- postgresql_table:
- <<: *pg_parameters
- name: '{{ item }}'
- state: absent
- loop:
- - '{{ test_table1 }}'
- - '{{ test_table2 }}'
-
- - name: Drop test functions
- <<: *task_parameters
- postgresql_query:
- <<: *pg_parameters
- query: 'DROP FUNCTION {{ item }}()'
- loop:
- - '{{ test_func1 }}'
- - '{{ test_func2 }}'
- - '{{ test_schema1 }}.{{ test_func3 }}'
- ignore_errors: yes
diff --git a/test/integration/targets/python_requirements_info/aliases b/test/integration/targets/python_requirements_info/aliases
deleted file mode 100644
index 765b70da79..0000000000
--- a/test/integration/targets/python_requirements_info/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/posix/group2
diff --git a/test/integration/targets/python_requirements_info/tasks/main.yml b/test/integration/targets/python_requirements_info/tasks/main.yml
deleted file mode 100644
index 2aca16b9fe..0000000000
--- a/test/integration/targets/python_requirements_info/tasks/main.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-- name: run python_requirements_info module
- python_requirements_info:
- register: basic_info
-
-- name: ensure python_requirements_info returns desired info
- assert:
- that:
- - "'python' in basic_info"
- - "'python_version' in basic_info"
-
-- name: run python_requirements_info module
- python_requirements_info:
- dependencies:
- - notreal<1
- - pip>1
- register: dep_info
-
-- name: ensure python_requirements_info returns desired info
- assert:
- that:
- - "'installed' in dep_info.valid.pip"
- - "'notreal' in dep_info.not_found"
diff --git a/test/integration/targets/rabbitmq_binding/aliases b/test/integration/targets/rabbitmq_binding/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/rabbitmq_binding/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/rabbitmq_binding/meta/main.yml b/test/integration/targets/rabbitmq_binding/meta/main.yml
deleted file mode 100644
index 05ab59000b..0000000000
--- a/test/integration/targets/rabbitmq_binding/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_rabbitmq
diff --git a/test/integration/targets/rabbitmq_binding/tasks/main.yml b/test/integration/targets/rabbitmq_binding/tasks/main.yml
deleted file mode 100644
index 4d3414eadc..0000000000
--- a/test/integration/targets/rabbitmq_binding/tasks/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-- import_tasks: tests.yml
- when: ansible_distribution == 'Ubuntu'
diff --git a/test/integration/targets/rabbitmq_binding/tasks/tests.yml b/test/integration/targets/rabbitmq_binding/tasks/tests.yml
deleted file mode 100644
index 5021ed2250..0000000000
--- a/test/integration/targets/rabbitmq_binding/tasks/tests.yml
+++ /dev/null
@@ -1,132 +0,0 @@
----
-- name: Add test requisites
- block:
- - name: Add exchange
- rabbitmq_exchange:
- name: "{{ item }}"
- type: direct
- with_items:
- - exchange-foo
- - exchange-bar
-
- - name: Add queue
- rabbitmq_queue:
- name: queue-foo
-
-- name: Test add binding in check mode
- block:
- - name: Add binding
- rabbitmq_binding:
- source: exchange-foo
- destination: queue-foo
- type: queue
- check_mode: true
- register: add_binding
-
- - name: Check that binding succeeds with a change
- assert:
- that:
- - add_binding.changed == true
-
-- name: Test add binding
- block:
- - name: Add binding
- rabbitmq_binding:
- source: exchange-foo
- destination: queue-foo
- type: queue
- register: add_binding
-
- - name: Check that binding succeeds with a change
- assert:
- that:
- - add_binding.changed == true
-
-- name: Test add binding idempotence
- block:
- - name: Add binding
- rabbitmq_binding:
- source: exchange-foo
- destination: queue-foo
- type: queue
- register: add_binding
-
- - name: Check that binding succeeds without a change
- assert:
- that:
- - add_binding.changed == false
-
-- name: Test remove binding in check mode
- block:
- - name: Remove binding
- rabbitmq_binding:
- source: exchange-foo
- destination: queue-foo
- type: queue
- state: absent
- check_mode: true
- register: remove_binding
-
- - name: Check that binding succeeds with a change
- assert:
- that:
- - remove_binding.changed == true
-
-- name: Test remove binding
- block:
- - name: Remove binding
- rabbitmq_binding:
- source: exchange-foo
- destination: queue-foo
- type: queue
- state: absent
- register: remove_binding
-
- - name: Check that binding succeeds with a change
- assert:
- that:
- - remove_binding.changed == true
-
-- name: Test remove binding idempotence
- block:
- - name: Remove binding
- rabbitmq_binding:
- source: exchange-foo
- destination: queue-foo
- type: queue
- state: absent
- register: remove_binding
-
- - name: Check that binding succeeds with a change
- assert:
- that:
- - remove_binding.changed == false
-
-- name: Test add exchange to exchange binding
- block:
- - name: Add binding
- rabbitmq_binding:
- source: exchange-foo
- destination: exchange-bar
- type: exchange
- register: add_binding
-
- - name: Check that binding succeeds with a change
- assert:
- that:
- - add_binding.changed == true
-
-- name: Test remove exchange to exchange binding
- block:
- - name: Remove binding
- rabbitmq_binding:
- source: exchange-foo
- destination: exchange-bar
- type: exchange
- state: absent
- register: remove_binding
-
- - name: Check that binding succeeds with a change
- assert:
- that:
- - remove_binding.changed == true
diff --git a/test/integration/targets/rabbitmq_plugin/aliases b/test/integration/targets/rabbitmq_plugin/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/rabbitmq_plugin/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/rabbitmq_plugin/meta/main.yml b/test/integration/targets/rabbitmq_plugin/meta/main.yml
deleted file mode 100644
index 05ab59000b..0000000000
--- a/test/integration/targets/rabbitmq_plugin/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_rabbitmq
diff --git a/test/integration/targets/rabbitmq_plugin/tasks/main.yml b/test/integration/targets/rabbitmq_plugin/tasks/main.yml
deleted file mode 100644
index 593906fb74..0000000000
--- a/test/integration/targets/rabbitmq_plugin/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-- import_tasks: tests.yml
- when: ansible_distribution == 'Ubuntu'
diff --git a/test/integration/targets/rabbitmq_plugin/tasks/tests.yml b/test/integration/targets/rabbitmq_plugin/tasks/tests.yml
deleted file mode 100644
index ebc78db7d5..0000000000
--- a/test/integration/targets/rabbitmq_plugin/tasks/tests.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-- block:
- - set_fact:
- plugin_name: rabbitmq_top
-
- - name: Enable plugin
- rabbitmq_plugin:
- name: "{{ plugin_name }}"
- state: enabled
- new_only: True
- register: result
-
- - name: Get rabbitmq-plugins output
- shell: "rabbitmq-plugins list | grep {{ plugin_name }}"
- register: cli_result
-
- - name: Check that the plugin is enabled
- assert:
- that:
- - result is changed
- - result is success
- - '"{{ plugin_name }}" in result.enabled'
- - result.disabled == []
- - '"[E" in cli_result.stdout'
-
- - name: Enable plugin (idempotency)
- rabbitmq_plugin:
- name: "{{ plugin_name }}"
- state: enabled
- new_only: True
- register: result
-
- - name: Check idempotency
- assert:
- that:
- - result is not changed
-
- - name: Disable plugin
- rabbitmq_plugin:
- name: "{{ plugin_name }}"
- state: disabled
- register: result
-
- - name: Get rabbitmq-plugins output
- shell: "rabbitmq-plugins list | grep {{ plugin_name }}"
- register: cli_result
-
- - name: Check that the plugin is disabled
- assert:
- that:
- - result is changed
- - result is success
- - result.enabled == []
- - '"{{ plugin_name }}" in result.disabled'
- - '"[E" not in cli_result.stdout'
-
- - name: Disable plugin (idempotency)
- rabbitmq_plugin:
- name: "{{ plugin_name }}"
- state: disabled
- register: result
-
- - name: Check idempotency
- assert:
- that:
- - result is not changed
-
- always:
- - name: Disable plugin
- rabbitmq_plugin:
- name: "{{ plugin_name }}"
- state: disabled
diff --git a/test/integration/targets/rabbitmq_publish/aliases b/test/integration/targets/rabbitmq_publish/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/rabbitmq_publish/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/rabbitmq_publish/files/image.gif b/test/integration/targets/rabbitmq_publish/files/image.gif
deleted file mode 100644
index 0589d2082b..0000000000
--- a/test/integration/targets/rabbitmq_publish/files/image.gif
+++ /dev/null
Binary files differ
diff --git a/test/integration/targets/rabbitmq_publish/meta/main.yml b/test/integration/targets/rabbitmq_publish/meta/main.yml
deleted file mode 100644
index f0eb571b9a..0000000000
--- a/test/integration/targets/rabbitmq_publish/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-dependencies:
- - setup_rabbitmq
- - setup_remote_tmp_dir
diff --git a/test/integration/targets/rabbitmq_publish/tasks/main.yml b/test/integration/targets/rabbitmq_publish/tasks/main.yml
deleted file mode 100644
index 740f899805..0000000000
--- a/test/integration/targets/rabbitmq_publish/tasks/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Rabbitmq lookup
-- include: ubuntu.yml
- when:
- - ansible_distribution == 'Ubuntu'
- - ansible_distribution_release != 'trusty'
diff --git a/test/integration/targets/rabbitmq_publish/tasks/ubuntu.yml b/test/integration/targets/rabbitmq_publish/tasks/ubuntu.yml
deleted file mode 100644
index 23707662c1..0000000000
--- a/test/integration/targets/rabbitmq_publish/tasks/ubuntu.yml
+++ /dev/null
@@ -1,171 +0,0 @@
-- name: Install requests and pika
- pip:
- name: requests,pika<1.0.0
- state: present
-
-- name: RabbitMQ basic publish test
- rabbitmq_publish:
- url: "amqp://guest:guest@localhost:5672/%2F"
- queue: 'publish_test'
- body: "Hello world from ansible module rabbitmq_publish"
- content_type: "text/plain"
- register: rabbit_basic_output1
-
-- assert:
- that:
- - "rabbit_basic_output1 is not failed"
- - "'publish_test' in rabbit_basic_output1.result.msg"
- - "'publish_test' in rabbit_basic_output1.result.queue"
- - "'text/plain' in rabbit_basic_output1.result.content_type"
-
-
-# Testing random queue
-- name: Publish to random queue
- rabbitmq_publish:
- url: "amqp://guest:guest@localhost:5672/%2F"
- body: "RANDOM QUEUE POST"
- content_type: "text/plain"
- register: rabbit_random_queue_output
-
-- assert:
- that:
- - "rabbit_random_queue_output is not failed"
- - "'amq.gen' in rabbit_random_queue_output.result.msg"
- - "'amq.gen' in rabbit_random_queue_output.result.queue"
- - "'text/plain' in rabbit_random_queue_output.result.content_type"
-
-- name: Copy binary to remote
- copy:
- src: "{{ role_path }}/files/image.gif"
- dest: "{{ remote_tmp_dir }}/image.gif"
-
-- name: Publish binary to a queue
- rabbitmq_publish:
- url: "amqp://guest:guest@localhost:5672/%2F"
- queue: publish_test
- src: "{{ remote_tmp_dir }}/image.gif"
- register: rabbitmq_publish_file
-
-- assert:
- that:
- - "rabbitmq_publish_file is not failed"
- - "'publish_test' in rabbitmq_publish_file.result.queue"
- - "'image/gif' in rabbitmq_publish_file.result.content_type"
-
-- name: Raise error for src and body defined
- rabbitmq_publish:
- url: "amqp://guest:guest@localhost:5672/%2F"
- queue: 'publish_test'
- src: "{{ remote_tmp_dir }}/image.gif"
- body: blah
- register: rabbit_basic_fail_output1
- ignore_errors: yes
-
-- assert:
- that:
- - "rabbit_basic_fail_output1 is failed"
- - "'parameters are mutually exclusive' in rabbit_basic_fail_output1.msg"
-
-- name: Publish a file that does not exist
- rabbitmq_publish:
- url: "amqp://guest:guest@localhost:5672/%2F"
- queue: 'publish_test'
- src: 'aaaaaaajax-loader.gif'
- register: file_missing_fail
- ignore_errors: yes
-
-- assert:
- that:
- - "file_missing_fail is failed"
- - "'Unable to open file' in file_missing_fail.msg"
-
-- name: Publish with proto/host/port/user/pass
- rabbitmq_publish:
- proto: amqp
- host: localhost
- port: 5672
- username: guest
- password: guest
- vhost: '%2F'
- queue: publish_test
- body: Testing with proto/host/port/username/password/vhost
- register: host_port_output
-
-- assert:
- that:
- - "host_port_output is not failed"
-
-- name: Publish with host/port/user but missing proto
- rabbitmq_publish:
- host: localhost
- port: 5672
- username: guest
- password: guest
- vhost: '%2F'
- queue: publish_test
- body: Testing with proto/host/port/username/password/vhost
- ignore_errors: yes
- register: host_port_missing_proto_output
-
-- assert:
- that:
- - "host_port_missing_proto_output is failed"
- - "'Connection parameters must be passed via' in host_port_missing_proto_output.msg"
-
-- name: Publish with proto/host/port/user and url
- rabbitmq_publish:
- url: "amqp://guest:guest@localhost:5672/%2F"
- proto: amqp
- host: localhost
- port: 5672
- username: guest
- password: guest
- vhost: '%2F'
- queue: publish_test
- body: Testing with proto/host/port/username/password/vhost
- ignore_errors: yes
- register: host_and_url_output
-
-- assert:
- that:
- - "host_and_url_output is failed"
- - "'cannot be specified at the same time' in host_and_url_output.msg"
-
-- name: Publish headers to queue
- rabbitmq_publish:
- url: "amqp://guest:guest@localhost:5672/%2F"
- queue: 'publish_test'
- body: blah
- headers:
- myHeader: Value1
- secondHeader: Value2
- register: test_headers1
- ignore_errors: yes
-
-- name: Publish headers with file
- rabbitmq_publish:
- url: "amqp://guest:guest@localhost:5672/%2F"
- queue: 'publish_test'
- src: "{{ remote_tmp_dir }}/image.gif"
- headers:
- myHeader: Value1
- secondHeader: Value2
- register: test_headers2
- ignore_errors: yes
-
-- name: Collect all messages off the publish queue
- set_fact:
- messages: "{{ lookup('rabbitmq', url='amqp://guest:guest@localhost:5672/%2F', queue='publish_test') }}"
-
-- name: Check contents of published messages
- assert:
- that:
- - messages|length == 5
- - "'Hello world from ansible module rabbitmq_publish' in messages[0]['msg']"
- - "'text/plain' in messages[0]['content_type']"
- - "'image/gif' in messages[1]['content_type']"
- - "'image.gif' in messages[1]['headers']['filename']"
- - "'Testing with proto/host/port/username/password/vhost' in messages[2]['msg']"
-# - messages[3]['headers']['myHeader'] is defined
-# - messages[4]['headers']['filename'] is defined
-# - messages[4]['headers']['secondHeader'] is defined
diff --git a/test/integration/targets/rabbitmq_user/aliases b/test/integration/targets/rabbitmq_user/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/rabbitmq_user/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/rabbitmq_user/meta/main.yml b/test/integration/targets/rabbitmq_user/meta/main.yml
deleted file mode 100644
index 05ab59000b..0000000000
--- a/test/integration/targets/rabbitmq_user/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_rabbitmq
diff --git a/test/integration/targets/rabbitmq_user/tasks/main.yml b/test/integration/targets/rabbitmq_user/tasks/main.yml
deleted file mode 100644
index e03d4c7aab..0000000000
--- a/test/integration/targets/rabbitmq_user/tasks/main.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-
-- when: ansible_distribution == 'Ubuntu'
- block:
-
- - import_tasks: tests.yml
-
- - import_tasks: tests.yml
- environment:
- RABBITMQ_NODENAME: test
diff --git a/test/integration/targets/rabbitmq_user/tasks/tests.yml b/test/integration/targets/rabbitmq_user/tasks/tests.yml
deleted file mode 100644
index 4cc459b393..0000000000
--- a/test/integration/targets/rabbitmq_user/tasks/tests.yml
+++ /dev/null
@@ -1,137 +0,0 @@
----
-
-- name: Test add user in check mode
- block:
- - name: Add user
- rabbitmq_user: user=joe password=changeme
- check_mode: true
- register: add_user
-
- - name: Check that user adding succeeds with a change
- assert:
- that:
- - add_user.changed == true
-
-- name: Test add user
- block:
- - name: Add user
- rabbitmq_user: user=joe password=changeme
- register: add_user
-
- - name: Check that user adding succeeds with a change
- assert:
- that:
- - add_user.changed == true
-
-- name: Test add user idempotence
- block:
- - name: Add user
- rabbitmq_user: user=joe password=changeme
- register: add_user
-
- - name: Check that user adding succeeds without a change
- assert:
- that:
- - add_user.changed == false
-
-- name: Test change user permissions in check mode
- block:
- - name: Add user with permissions
- rabbitmq_user: user=joe password=changeme vhost=/ configure_priv=.* read_priv=.* write_priv=.*
- check_mode: true
- register: add_user
-
- - name: Check that changing permissions succeeds with a change
- assert:
- that:
- - add_user.changed == true
-
-- name: Test change user permissions
- block:
- - name: Add user with permissions
- rabbitmq_user: user=joe password=changeme vhost=/ configure_priv=.* read_priv=.* write_priv=.*
- register: add_user
-
- - name: Check that changing permissions succeeds with a change
- assert:
- that:
- - add_user.changed == true
-
-- name: Test change user permissions idempotence
- block:
- - name: Add user with permissions
- rabbitmq_user: user=joe password=changeme vhost=/ configure_priv=.* read_priv=.* write_priv=.*
- register: add_user
-
- - name: Check that changing permissions succeeds without a change
- assert:
- that:
- - add_user.changed == false
-
-- name: Test add user tags in check mode
- block:
- - name: Add user with tags
- rabbitmq_user: user=joe password=changeme vhost=/ configure_priv=.* read_priv=.* write_priv=.* tags=management,administrator
- check_mode: true
- register: add_user
-
- - name: Check that adding tags succeeds with a change
- assert:
- that:
- - add_user.changed == true
-
-- name: Test add user tags
- block:
- - name: Add user with tags
- rabbitmq_user: user=joe password=changeme vhost=/ configure_priv=.* read_priv=.* write_priv=.* tags=management,administrator
- register: add_user
-
- - name: Check that adding tags succeeds with a change
- assert:
- that:
- - add_user.changed == true
-
-- name: Test add user tags idempotence
- block:
- - name: Add user with tags
- rabbitmq_user: user=joe password=changeme vhost=/ configure_priv=.* read_priv=.* write_priv=.* tags=administrator,management
- register: add_user
-
- - name: Check that adding tags succeeds without a change
- assert:
- that:
- - add_user.changed == false
-
-- name: Test remove user in check mode
- block:
- - name: Remove user
- rabbitmq_user: user=joe state=absent
- check_mode: true
- register: remove_user
-
- - name: Check that user removing succeeds with a change
- assert:
- that:
- - remove_user.changed == true
-
-- name: Test remove user
- block:
- - name: Remove user
- rabbitmq_user: user=joe state=absent
- register: remove_user
-
- - name: Check that user removing succeeds with a change
- assert:
- that:
- - remove_user.changed == true
-
-- name: Test remove user idempotence
- block:
- - name: Remove user
- rabbitmq_user: user=joe state=absent
- register: remove_user
-
- - name: Check that user removing succeeds without a change
- assert:
- that:
- - remove_user.changed == false
diff --git a/test/integration/targets/rabbitmq_vhost/aliases b/test/integration/targets/rabbitmq_vhost/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/rabbitmq_vhost/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/rabbitmq_vhost/meta/main.yml b/test/integration/targets/rabbitmq_vhost/meta/main.yml
deleted file mode 100644
index 05ab59000b..0000000000
--- a/test/integration/targets/rabbitmq_vhost/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_rabbitmq
diff --git a/test/integration/targets/rabbitmq_vhost/tasks/main.yml b/test/integration/targets/rabbitmq_vhost/tasks/main.yml
deleted file mode 100644
index 593906fb74..0000000000
--- a/test/integration/targets/rabbitmq_vhost/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-- import_tasks: tests.yml
- when: ansible_distribution == 'Ubuntu'
diff --git a/test/integration/targets/rabbitmq_vhost/tasks/tests.yml b/test/integration/targets/rabbitmq_vhost/tasks/tests.yml
deleted file mode 100644
index 019c5edee6..0000000000
--- a/test/integration/targets/rabbitmq_vhost/tasks/tests.yml
+++ /dev/null
@@ -1,121 +0,0 @@
-- block:
- - set_fact:
- vhost_name: /test
-
- - name: Add host
- rabbitmq_vhost:
- name: "{{ vhost_name }}"
- state: present
- register: result
-
- - name: Check that the host was created successfuly
- shell: "rabbitmqctl list_vhosts name tracing | grep {{ vhost_name }}"
- register: ctl_result
-
- - name: Check that the host is added
- assert:
- that:
- - result is changed
- - result is success
- - '"false" in ctl_result.stdout' # value for tracing, false is disabled
-
- - name: Add host (idempotency)
- rabbitmq_vhost:
- name: "{{ vhost_name }}"
- state: present
- register: result
-
- - name: Check idempotency
- assert:
- that:
- - result is not changed
-
- - name: Enable tracing
- rabbitmq_vhost:
- name: "{{ vhost_name }}"
- tracing: yes
- register: result
-
- - name: Get rabbitmqctl output
- shell: "rabbitmqctl list_vhosts name tracing | grep {{ vhost_name }}"
- register: ctl_result
-
- - name: Check that tracing is enabled
- assert:
- that:
- - result is changed
- - result is success
- - '"true" in ctl_result.stdout' # value for tracing, true is enabled
-
- - name: Enable tracing (idempotency)
- rabbitmq_vhost:
- name: "{{ vhost_name }}"
- tracing: yes
- register: result
-
- - name: Check idempotency
- assert:
- that:
- - result is not changed
-
- - name: Disable tracing
- rabbitmq_vhost:
- name: "{{ vhost_name }}"
- tracing: no
- register: result
-
- - name: Get rabbitmqctl output
- shell: "rabbitmqctl list_vhosts name tracing | grep {{ vhost_name }}"
- register: ctl_result
-
- - name: Check that tracing is disabled
- assert:
- that:
- - result is changed
- - result is success
- - '"false" in ctl_result.stdout' # value for tracing, false is disabled
-
- - name: Disable tracing (idempotency)
- rabbitmq_vhost:
- name: "{{ vhost_name }}"
- tracing: no
- register: result
-
- - name: Check idempotency
- assert:
- that:
- - result is not changed
-
- - name: Remove host
- rabbitmq_vhost:
- name: "{{ vhost_name }}"
- state: absent
- register: result
-
- - name: Get rabbitmqctl output
- shell: "rabbitmqctl list_vhosts name tracing | grep {{ vhost_name }}"
- register: ctl_result
- failed_when: ctl_result.rc == 0
-
- - name: Check that the host is removed
- assert:
- that:
- - result is changed
- - result is success
-
- - name: Remove host (idempotency)
- rabbitmq_vhost:
- name: "{{ vhost_name }}"
- state: absent
- register: result
-
- - name: Check idempotency
- assert:
- that:
- - result is not changed
-
- always:
- - name: Remove host
- rabbitmq_vhost:
- name: "{{ vhost_name }}"
- state: absent
diff --git a/test/integration/targets/rabbitmq_vhost_limits/aliases b/test/integration/targets/rabbitmq_vhost_limits/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/rabbitmq_vhost_limits/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/rabbitmq_vhost_limits/meta/main.yml b/test/integration/targets/rabbitmq_vhost_limits/meta/main.yml
deleted file mode 100644
index 05ab59000b..0000000000
--- a/test/integration/targets/rabbitmq_vhost_limits/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_rabbitmq
diff --git a/test/integration/targets/rabbitmq_vhost_limits/tasks/main.yml b/test/integration/targets/rabbitmq_vhost_limits/tasks/main.yml
deleted file mode 100644
index 740f899805..0000000000
--- a/test/integration/targets/rabbitmq_vhost_limits/tasks/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Rabbitmq lookup
-- include: ubuntu.yml
- when:
- - ansible_distribution == 'Ubuntu'
- - ansible_distribution_release != 'trusty'
diff --git a/test/integration/targets/rabbitmq_vhost_limits/tasks/ubuntu.yml b/test/integration/targets/rabbitmq_vhost_limits/tasks/ubuntu.yml
deleted file mode 100644
index 8d0a64802a..0000000000
--- a/test/integration/targets/rabbitmq_vhost_limits/tasks/ubuntu.yml
+++ /dev/null
@@ -1,163 +0,0 @@
----
-
-- name: Test setting virtual host limits in check mode
- block:
- - name: Set virtual host limits in check mode
- rabbitmq_vhost_limits:
- vhost: /
- max_connections: 64
- max_queues: 256
- state: present
- check_mode: true
- register: module_result
-
- - name: Check that the module's result is correct
- assert:
- that:
- - module_result is changed
- - module_result is success
-
- - name: Get a list of configured virtual host limits
- shell: "rabbitmqctl list_vhost_limits"
- register: shell_result
-
- - name: Check that the check mode does not make any changes
- assert:
- that:
- - shell_result is success
- - "'\"max-connections\":64' not in shell_result.stdout"
- - "'\"max-queues\":256' not in shell_result.stdout"
-
-- name: Test setting virtual host limits
- block:
- - name: Set virtual host limits
- rabbitmq_vhost_limits:
- vhost: /
- max_connections: 64
- max_queues: 256
- state: present
- register: module_result
-
- - name: Check that the module's result is correct
- assert:
- that:
- - module_result is changed
- - module_result is success
-
- - name: Get a list of configured virtual host limits
- shell: "rabbitmqctl list_vhost_limits"
- register: shell_result
-
- - name: Check that the virtual host limits are actually set
- assert:
- that:
- - shell_result is success
- - "'\"max-connections\":64' in shell_result.stdout"
- - "'\"max-queues\":256' in shell_result.stdout"
-
-- name: Test setting virtual host limits (idempotence)
- block:
- - name: Set virtual host limits (idempotence)
- rabbitmq_vhost_limits:
- vhost: /
- max_connections: 64
- max_queues: 256
- state: present
- register: module_result
-
- - name: Check the idempotence
- assert:
- that:
- - module_result is not changed
- - module_result is success
-
-- name: Test changing virtual host limits
- block:
- - name: Change virtual host limits
- rabbitmq_vhost_limits:
- vhost: /
- max_connections: 32
- state: present
- register: module_result
-
- - name: Check that the module's result is correct
- assert:
- that:
- - module_result is changed
- - module_result is success
-
- - name: Get a list of configured virtual host limits
- shell: "rabbitmqctl list_vhost_limits"
- register: shell_result
-
- - name: Check that the virtual host limits are actually set
- assert:
- that:
- - shell_result is success
- - "'\"max-connections\":32' in shell_result.stdout"
- - "'\"max-queues\":-1' in shell_result.stdout"
-
-- name: Test clearing virtual host limits in check mode
- block:
- - name: Clear virtual host limits in check mode
- rabbitmq_vhost_limits:
- vhost: /
- state: absent
- check_mode: true
- register: module_result
-
- - name: Check that the module's result is correct
- assert:
- that:
- - module_result is changed
- - module_result is success
-
- - name: Get a list of configured virtual host limits
- shell: "rabbitmqctl list_vhost_limits"
- register: shell_result
-
- - name: Check that the check mode does not make any changes
- assert:
- that:
- - shell_result is success
- - "'\"max-connections\":32' in shell_result.stdout"
- - "'\"max-queues\":-1' in shell_result.stdout"
-
-- name: Test clearing virtual host limits
- block:
- - name: Clear virtual host limits
- rabbitmq_vhost_limits:
- vhost: /
- state: absent
- register: module_result
-
- - name: Check that the module's result is correct
- assert:
- that:
- - module_result is changed
- - module_result is success
-
- - name: Get a list of configured virtual host limits
- shell: "rabbitmqctl list_vhost_limits"
- register: shell_result
-
- - name: Check that the virtual host limits are actually cleared
- assert:
- that:
- - shell_result is success
- - "'\"max-connections\":' not in shell_result.stdout"
- - "'\"max-queues\":' not in shell_result.stdout"
-
-- name: Test clearing virtual host limits (idempotence)
- block:
- - name: Clear virtual host limits (idempotence)
- rabbitmq_vhost_limits:
- vhost: /
- state: absent
- register: module_result
-
- - name: Check the idempotence
- assert:
- that:
- - module_result is not changed
- - module_result is success
diff --git a/test/integration/targets/read_csv/aliases b/test/integration/targets/read_csv/aliases
deleted file mode 100644
index 765b70da79..0000000000
--- a/test/integration/targets/read_csv/aliases
+++ /dev/null
@@ -1 +0,0 @@
-shippable/posix/group2
diff --git a/test/integration/targets/read_csv/tasks/main.yml b/test/integration/targets/read_csv/tasks/main.yml
deleted file mode 100644
index a3dcf8a5ef..0000000000
--- a/test/integration/targets/read_csv/tasks/main.yml
+++ /dev/null
@@ -1,140 +0,0 @@
-# Create basic CSV file
-- name: Create unique CSV file
- copy:
- content: |
- name,uid,gid,gecos
- dag,500,500,Dag Wieërs
- jeroen,501,500,Jeroen Hoekx
- dest: users_unique.csv
-
-# Read a CSV file and access user 'dag'
-- name: Read users from CSV file and return a dictionary
- read_csv:
- path: users_unique.csv
- key: name
- register: users_unique
-
-- assert:
- that:
- - users_unique.dict.dag.name == 'dag'
- - users_unique.dict.dag.gecos == 'Dag Wieërs'
- - users_unique.dict.dag.uid == '500'
- - users_unique.dict.dag.gid == '500'
- - users_unique.dict.jeroen.name == 'jeroen'
- - users_unique.dict.jeroen.gecos == 'Jeroen Hoekx'
- - users_unique.dict.jeroen.uid == '501'
- - users_unique.dict.jeroen.gid == '500'
-
- # Read a CSV file and access the first item
-- name: Read users from CSV file and return a list
- read_csv:
- path: users_unique.csv
- register: users_unique
-
-- assert:
- that:
- - users_unique.list.0.name == 'dag'
- - users_unique.list.0.gecos == 'Dag Wieërs'
- - users_unique.list.0.uid == '500'
- - users_unique.list.0.gid == '500'
- - users_unique.list.1.name == 'jeroen'
- - users_unique.list.1.gecos == 'Jeroen Hoekx'
- - users_unique.list.1.uid == '501'
- - users_unique.list.1.gid == '500'
-
-
-# Create basic CSV file using semi-colon
-- name: Create non-unique CSV file using semi-colon
- copy:
- content: |
- name;uid;gid;gecos
- dag;500;500;Dag Wieërs
- jeroen;501;500;Jeroen Hoekx
- dag;502;500;Dag Wieers
- dest: users_nonunique.csv
-
-# Read a CSV file and access user 'dag'
-- name: Read users from CSV file and return a dictionary
- read_csv:
- path: users_nonunique.csv
- key: name
- unique: no
- delimiter: ';'
- register: users_nonunique
-
-- assert:
- that:
- - users_nonunique.dict.dag.name == 'dag'
- - users_nonunique.dict.dag.gecos == 'Dag Wieers'
- - users_nonunique.dict.dag.uid == '502'
- - users_nonunique.dict.dag.gid == '500'
- - users_nonunique.dict.jeroen.name == 'jeroen'
- - users_nonunique.dict.jeroen.gecos == 'Jeroen Hoekx'
- - users_nonunique.dict.jeroen.uid == '501'
- - users_nonunique.dict.jeroen.gid == '500'
-
-
-# Read a CSV file using an non-existing dialect
-- name: Read users from CSV file and return a dictionary
- read_csv:
- path: users_nonunique.csv
- dialect: placebo
- register: users_placebo
- ignore_errors: yes
-
-- assert:
- that:
- - users_placebo is failed
- - users_placebo.msg == "Dialect 'placebo' is not supported by your version of python."
-
-
-# Create basic CSV file without header
-- name: Create unique CSV file without header
- copy:
- content: |
- dag,500,500,Dag Wieërs
- jeroen,501,500,Jeroen Hoekx
- dest: users_noheader.csv
-
-# Read a CSV file and access user 'dag'
-- name: Read users from CSV file and return a dictionary
- read_csv:
- path: users_noheader.csv
- key: name
- fieldnames: name,uid,gid,gecos
- register: users_noheader
-
-- assert:
- that:
- - users_noheader.dict.dag.name == 'dag'
- - users_noheader.dict.dag.gecos == 'Dag Wieërs'
- - users_noheader.dict.dag.uid == '500'
- - users_noheader.dict.dag.gid == '500'
- - users_noheader.dict.jeroen.name == 'jeroen'
- - users_noheader.dict.jeroen.gecos == 'Jeroen Hoekx'
- - users_noheader.dict.jeroen.uid == '501'
- - users_noheader.dict.jeroen.gid == '500'
-
-
-# Create broken file
-- name: Create unique CSV file
- copy:
- content: |
- name,uid,gid,gecos
- dag,500,500,Dag Wieërs
- jeroen,501,500,"Jeroen"Hoekx"
- dest: users_broken.csv
-
-# Read a broken CSV file using strict
-- name: Read users from a broken CSV file
- read_csv:
- path: users_broken.csv
- key: name
- strict: yes
- register: users_broken
- ignore_errors: yes
-
-- assert:
- that:
- - users_broken is failed
- - "'Unable to process file' in users_broken.msg"
diff --git a/test/integration/targets/scaleway_compute/aliases b/test/integration/targets/scaleway_compute/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_compute/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_compute/defaults/main.yml b/test/integration/targets/scaleway_compute/defaults/main.yml
deleted file mode 100644
index 4b2b2799c3..0000000000
--- a/test/integration/targets/scaleway_compute/defaults/main.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-# Below information has been taken from https://developer.scaleway.com/#servers
----
-scaleway_image_id: 6a601340-19c1-4ca7-9c1c-0704bcc9f5fe
-scaleway_organization: '{{ scw_org }}'
-scaleway_region: ams1
-scaleway_commerial_type: START1-S
-scaleway_name: scaleway_compute_test
-first_server_name: scaleway_compute_test_first
-second_server_name: scaleway_compute_test_second
diff --git a/test/integration/targets/scaleway_compute/tasks/ip.yml b/test/integration/targets/scaleway_compute/tasks/ip.yml
deleted file mode 100644
index 445e955d8c..0000000000
--- a/test/integration/targets/scaleway_compute/tasks/ip.yml
+++ /dev/null
@@ -1,201 +0,0 @@
-- name: Create a server with no IP (Check)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- public_ip: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
-
- register: server_creation_absent_check_task
-
-- debug: var=server_creation_absent_check_task
-
-- assert:
- that:
- - server_creation_absent_check_task is success
- - server_creation_absent_check_task is changed
-
-- name: Create a server
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- public_ip: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: server_creation_absent_task
-
-- debug: var=server_creation_absent_task
-
-- assert:
- that:
- - server_creation_absent_task is success
- - server_creation_absent_task is changed
-
-- name: Create a server (Confirmation)
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- public_ip: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: server_creation_absent_confirmation_task
-
-- debug: var=server_creation_absent_confirmation_task
-
-- assert:
- that:
- - server_creation_absent_confirmation_task is success
- - server_creation_absent_confirmation_task is not changed
-
-# Add a dynamic IP to the instance
-
-- name: Patch server tags (Check)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- public_ip: dynamic
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
-
- register: ip_patching_check_task
-
-- debug: var=ip_patching_check_task
-
-- assert:
- that:
- - ip_patching_check_task is success
- - ip_patching_check_task is changed
-
-- name: Patch server tags
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- public_ip: dynamic
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- register: ip_patching_task
-
-- debug: var=ip_patching_task
-
-- assert:
- that:
- - ip_patching_task is success
- - ip_patching_task is changed
-
-- name: Patch server tags (Confirmation)
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- public_ip: dynamic
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: ip_patching_confirmation_task
-
-- debug: var=ip_patching_confirmation_task
-
-- assert:
- that:
- - ip_patching_confirmation_task is success
- - ip_patching_confirmation_task is not changed
-
-# Remove dynamic IP
-
-- name: Patch server tags (Check)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- public_ip: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
-
- register: remove_ip_check_task
-
-- debug: var=remove_ip_check_task
-
-- assert:
- that:
- - remove_ip_check_task is success
- - remove_ip_check_task is changed
-
-- name: Patch server tags
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- public_ip: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: remove_ip_task
-
-- debug: var=remove_ip_task
-
-- assert:
- that:
- - remove_ip_task is success
- - remove_ip_task is changed
-
-- name: Patch server tags (Confirmation)
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- public_ip: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: remove_ip_confirmation_task
-
-- debug: var=remove_ip_confirmation_task
-
-- assert:
- that:
- - remove_ip_confirmation_task is success
- - remove_ip_confirmation_task is not changed
-
-- name: Destroy it
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: server_destroy_task
-
-- debug: var=server_destroy_task
-
-- assert:
- that:
- - server_destroy_task is success
- - server_destroy_task is changed \ No newline at end of file
diff --git a/test/integration/targets/scaleway_compute/tasks/main.yml b/test/integration/targets/scaleway_compute/tasks/main.yml
deleted file mode 100644
index d2d3ed0042..0000000000
--- a/test/integration/targets/scaleway_compute/tasks/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- include_tasks: state.yml
-- include_tasks: ip.yml
-- include_tasks: security_group.yml
-- include_tasks: pagination.yml
diff --git a/test/integration/targets/scaleway_compute/tasks/pagination.yml b/test/integration/targets/scaleway_compute/tasks/pagination.yml
deleted file mode 100644
index 7b7dd49bd4..0000000000
--- a/test/integration/targets/scaleway_compute/tasks/pagination.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-- name: Create a first server
- scaleway_compute:
- name: '{{ first_server_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
-- name: Create a second server
- scaleway_compute:
- name: '{{ second_server_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
-- name: Get server informations of the first page
- scaleway_server_info:
- region: par1
- query_parameters:
- per_page: 1
- page: 1
- register: first_page
-
-- debug: var=first_page
-
-- assert:
- that:
- - first_page is success
-
-- name: Get server informations of the second page
- scaleway_server_info:
- region: par1
- query_parameters:
- per_page: 1
- page: 2
- register: second_page
-
-- debug: var=second_page
-
-- assert:
- that:
- - second_page is success
-
-- assert:
- that:
- - first_page.scaleway_server_info[0].id != second_page.scaleway_server_info[0].id
-
-- name: Delete first server
- scaleway_compute:
- name: '{{ first_server_name }}'
- state: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
-- name: Delete second server
- scaleway_compute:
- name: '{{ second_server_name }}'
- state: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
diff --git a/test/integration/targets/scaleway_compute/tasks/security_group.yml b/test/integration/targets/scaleway_compute/tasks/security_group.yml
deleted file mode 100644
index a0e273c2ca..0000000000
--- a/test/integration/targets/scaleway_compute/tasks/security_group.yml
+++ /dev/null
@@ -1,147 +0,0 @@
-- name: Create a scaleway security_group
- scaleway_security_group:
- state: present
- region: '{{ scaleway_region }}'
- name: test_compute
- description: test_compute
- organization: '{{ scaleway_organization }}'
- stateful: true
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false
- register: security_group
-
-- debug: var=security_group
-
-- block:
- - name: Create a server with security_group (Check)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
-
- register: server_creation_check_task
-
- - debug: var=server_creation_check_task
-
- - assert:
- that:
- - server_creation_check_task is success
- - server_creation_check_task is changed
-
- - name: Create a server
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- wait: true
-
- register: server_creation_task
-
- - debug: var=server_creation_task
-
- - assert:
- that:
- - server_creation_task is success
- - server_creation_task is changed
-
- - name: Create a server with security_group (Confirmation)
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- wait: true
-
- register: server_creation_confirmation_task
-
- - debug: var=server_creation_confirmation_task
-
- - assert:
- that:
- - server_creation_confirmation_task is success
- - server_creation_confirmation_task is not changed
-
- - name: Keep current security_group (Check)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- wait: true
-
- register: server_creation_confirmation_task
-
- - debug: var=server_creation_confirmation_task
-
- - assert:
- that:
- - server_creation_confirmation_task is success
- - server_creation_confirmation_task is not changed
-
- - name: Keep current security_group
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: server_creation_confirmation_task
-
- - debug: var=server_creation_confirmation_task
-
- - assert:
- that:
- - server_creation_confirmation_task is success
- - server_creation_confirmation_task is not changed
-
- always:
- - name: Destroy it
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: server_destroy_task
-
- - debug: var=server_destroy_task
-
- - assert:
- that:
- - server_destroy_task is success
- - server_destroy_task is changed
-
- - name: Create a scaleway security_group
- scaleway_security_group:
- state: absent
- region: '{{ scaleway_region }}'
- name: test_compute
- description: test_compute
- organization: '{{ scaleway_organization }}'
- stateful: true
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false
diff --git a/test/integration/targets/scaleway_compute/tasks/state.yml b/test/integration/targets/scaleway_compute/tasks/state.yml
deleted file mode 100644
index effd27e85f..0000000000
--- a/test/integration/targets/scaleway_compute/tasks/state.yml
+++ /dev/null
@@ -1,387 +0,0 @@
-- name: Create a server (Check)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
-
- register: server_creation_check_task
-
-- debug: var=server_creation_check_task
-
-- assert:
- that:
- - server_creation_check_task is success
- - server_creation_check_task is changed
-
-- name: Create a server
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: server_creation_task
-
-- debug: var=server_creation_task
-
-- assert:
- that:
- - server_creation_task is success
- - server_creation_task is changed
-
-- name: Create a server (Confirmation)
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: server_creation_confirmation_task
-
-- debug: var=server_creation_confirmation_task
-
-- assert:
- that:
- - server_creation_confirmation_task is success
- - server_creation_confirmation_task is not changed
-
-- name: Patch server tags (Check)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- tags:
- - test
- - www
- register: server_patching_check_task
-
-- debug: var=server_patching_check_task
-
-- assert:
- that:
- - server_patching_check_task is success
- - server_patching_check_task is changed
-
-- name: Patch server tags
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- tags:
- - test
- - www
- register: server_patching_task
-
-- debug: var=server_patching_task
-
-- assert:
- that:
- - server_patching_task is success
- - server_patching_task is changed
-
-- name: Patch server tags (Confirmation)
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- tags:
- - test
- - www
- register: server_patching_confirmation_task
-
-- debug: var=server_patching_confirmation_task
-
-- assert:
- that:
- - server_patching_confirmation_task is success
- - server_patching_confirmation_task is not changed
-
-- name: Run it (Check mode)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: running
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- tags:
- - test
- - www
- register: server_run_check_task
-
-- debug: var=server_run_check_task
-
-- assert:
- that:
- - server_run_check_task is success
- - server_run_check_task is changed
-
-- name: Run it
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: running
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- tags:
- - test
- - www
- register: server_run_task
-
-- debug: var=server_run_task
-
-- assert:
- that:
- - server_run_task is success
- - server_run_task is changed
-
-- name: Run it
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: running
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- tags:
- - test
- - www
- register: server_run_confirmation_task
-
-- debug: var=server_run_confirmation_task
-
-- assert:
- that:
- - server_run_confirmation_task is success
- - server_run_confirmation_task is not changed
-
-- name: Reboot it (Check mode)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: restarted
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- tags:
- - test
- - www
- register: server_reboot_check_task
-
-- debug: var=server_reboot_check_task
-
-- assert:
- that:
- - server_reboot_check_task is success
- - server_reboot_check_task is changed
-
-- name: Reboot it
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: restarted
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- tags:
- - test
- - www
- register: server_reboot_task
-
-- debug: var=server_reboot_task
-
-- assert:
- that:
- - server_reboot_task is success
- - server_reboot_task is changed
-
-- name: Stop it (Check mode)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: stopped
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- tags:
- - test
- - www
- register: server_stop_check_task
-
-- debug: var=server_stop_check_task
-
-- assert:
- that:
- - server_stop_check_task is success
- - server_stop_check_task is changed
-
-- name: Stop it
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: stopped
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- tags:
- - test
- - www
- register: server_stop_task
-
-- debug: var=server_stop_task
-
-- assert:
- that:
- - server_stop_task is success
- - server_stop_task is changed
-
-- name: Stop it (Confirmation)
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: stopped
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- tags:
- - test
- - www
- register: server_stop_confirmation_task
-
-- debug: var=server_stop_confirmation_task
-
-- assert:
- that:
- - server_stop_confirmation_task is success
- - server_stop_confirmation_task is not changed
-
-- name: Destroy it (Check mode)
- check_mode: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- tags:
- - test
- - www
- register: server_destroy_check_task
-
-- debug: var=server_destroy_check_task
-
-- assert:
- that:
- - server_destroy_check_task is success
- - server_destroy_check_task is changed
-
-- name: Destroy it
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- tags:
- - test
- - www
- register: server_destroy_task
-
-- debug: var=server_destroy_task
-
-- assert:
- that:
- - server_destroy_task is success
- - server_destroy_task is changed
-
-- name: Destroy it (Confirmation)
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- tags:
- - test
- - www
- register: server_destroy_confirmation_task
-
-- debug: var=server_destroy_confirmation_task
-
-- assert:
- that:
- - server_destroy_confirmation_task is success
- - server_destroy_confirmation_task is not changed
-
-- name: Testing for unauthorized organization
- ignore_errors: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: '{{ scaleway_image_id }}'
- organization: this-organization-does-not-exists
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- register: unauthorized_organization_task
-
-- debug: var=unauthorized_organization_task
-
-- assert:
- that:
- - unauthorized_organization_task is not success
- - unauthorized_organization_task is not changed
-
-- name: Testing for unexisting image
- ignore_errors: yes
- scaleway_compute:
- name: '{{ scaleway_name }}'
- state: present
- image: this-image-does-not-exists
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- register: unexisting_image_check
-
-- debug: var=unexisting_image_check
-
-- assert:
- that:
- - unexisting_image_check is not success
- - unexisting_image_check is not changed
- - unexisting_image_check.msg == "Error in getting image this-image-does-not-exists on https://cp-{{scaleway_region}}.scaleway.com"
diff --git a/test/integration/targets/scaleway_image_info/aliases b/test/integration/targets/scaleway_image_info/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_image_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_image_info/tasks/main.yml b/test/integration/targets/scaleway_image_info/tasks/main.yml
deleted file mode 100644
index 370855ce8e..0000000000
--- a/test/integration/targets/scaleway_image_info/tasks/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-- name: Get image informations and register it in a variable
- scaleway_image_info:
- region: par1
- register: images
-
-- name: Display images variable
- debug:
- var: images
-
-- name: Ensure retrieval of images info is success
- assert:
- that:
- - images is success
-
-- name: Get image informations from ams1 and register it in a variable
- scaleway_image_info:
- region: ams1
- register: images_ams1
-
-- name: Display images variable from ams1
- debug:
- var: images_ams1
-
-- name: Ensure retrieval of images info is success
- assert:
- that:
- - images_ams1 is success
diff --git a/test/integration/targets/scaleway_ip/aliases b/test/integration/targets/scaleway_ip/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_ip/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_ip/defaults/main.yml b/test/integration/targets/scaleway_ip/defaults/main.yml
deleted file mode 100644
index fe7aa93baf..0000000000
--- a/test/integration/targets/scaleway_ip/defaults/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-scaleway_organization: '{{ scw_org }}'
-scaleway_region: ams1
-scaleway_image_id: 89ee4018-f8c3-4dc4-a6b5-bca14f985ebe
-scaleway_commerial_type: START1-S
-scaleway_server_name: scaleway_ip_test_server
-scaleway_reverse_name: scaleway.com
diff --git a/test/integration/targets/scaleway_ip/tasks/main.yml b/test/integration/targets/scaleway_ip/tasks/main.yml
deleted file mode 100644
index b12ab0270b..0000000000
--- a/test/integration/targets/scaleway_ip/tasks/main.yml
+++ /dev/null
@@ -1,439 +0,0 @@
-- name: Create IP (Check)
- check_mode: yes
- scaleway_ip:
- state: present
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- register: ip_creation_check_task
-
-- debug: var=ip_creation_check_task
-
-- name: ip_creation_check_task is success
- assert:
- that:
- - ip_creation_check_task is success
-
-- name: ip_creation_check_task is changed
- assert:
- that:
- - ip_creation_check_task is changed
-
-- name: Create IP
- scaleway_ip:
- state: present
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- register: ip_creation_task
-
-- debug: var=ip_creation_task
-
-- name: ip_creation_task is success
- assert:
- that:
- - ip_creation_task is success
-
-- name: ip_creation_task is changed
- assert:
- that:
- - ip_creation_task is changed
-
-- name: ip_creation_task.scaleway_ip.server is none
- assert:
- that:
- - '{{ ip_creation_task.scaleway_ip.server is none }}'
-
-- name: Create IP (Confirmation)
- scaleway_ip:
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- state: present
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- register: ip_creation_confirmation_task
-
-- debug: var=ip_creation_confirmation_task
-
-- name: ip_creation_confirmation_task is success
- assert:
- that:
- - ip_creation_confirmation_task is success
-
-- name: ip_creation_confirmation_task is not changed
- assert:
- that:
- - ip_creation_confirmation_task is not changed
-
-- name: ip_creation_confirmation_task.scaleway_ip.server is none
- assert:
- that:
- - '{{ ip_creation_task.scaleway_ip.server is none }}'
-
-- name: Assign reverse to server (Check)
- check_mode: yes
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- reverse: '{{ scaleway_reverse_name }}'
- register: ip_reverse_assignation_check_task
-
-- debug: var=ip_reverse_assignation_check_task
-
-- name: ip_reverse_assignation_check_task is success
- assert:
- that:
- - ip_reverse_assignation_check_task is success
-
-- name: ip_reverse_assignation_check_task is success
- assert:
- that:
- - ip_reverse_assignation_check_task is success
-
-- name: Assign reverse to an IP
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- reverse: '{{ scaleway_reverse_name }}'
- register: ip_reverse_assignation_task
-
-- debug: var=ip_reverse_assignation_task
-
-- name: ip_reverse_assignation_task is success
- assert:
- that:
- - ip_reverse_assignation_task is success
-
-- name: ip_reverse_assignation_task is changed
- assert:
- that:
- - ip_reverse_assignation_task is changed
-
-- name: Assign reverse to an IP (Confirmation)
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- reverse: '{{ scaleway_reverse_name }}'
- register: ip_reverse_assignation_confirmation_task
-
-- debug: var=ip_reverse_assignation_confirmation_task
-
-- name: ip_reverse_assignation_confirmation_task is success
- assert:
- that:
- - ip_reverse_assignation_confirmation_task is success
-
-- name: ip_reverse_assignation_confirmation_task is not changed
- assert:
- that:
- - ip_reverse_assignation_confirmation_task is not changed
-
-- name: Create a server
- scaleway_compute:
- state: present
- name: '{{ scaleway_server_name }}'
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- dynamic_ip_required: false
- wait: true
-
- register: server_creation_task
-
-- debug: var=server_creation_task
-
-- name: server_creation_task is success
- assert:
- that:
- - server_creation_task is success
-
-- name: Assign IP to server (Check)
- check_mode: yes
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- server: '{{ server_creation_task.msg.id }}'
- reverse: '{{ scaleway_reverse_name }}'
- register: ip_assignation_check_task
-
-- debug: var=ip_assignation_check_task
-
-- name: ip_assignation_check_task is success
- assert:
- that:
- - ip_assignation_check_task is success
-
-- name: ip_assignation_check_task is success
- assert:
- that:
- - ip_assignation_check_task is success
-
-- name: Assign IP to server
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- server: '{{ server_creation_task.msg.id }}'
- reverse: '{{ scaleway_reverse_name }}'
- register: ip_assignation_task
-
-- debug: var=ip_assignation_task
-
-- name: ip_assignation_task is success
- assert:
- that:
- - ip_assignation_task is success
-
-- name: ip_assignation_task is changed
- assert:
- that:
- - ip_assignation_task is changed
-
-- name: Assign IP to server (Confirmation)
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- server: '{{ server_creation_task.msg.id }}'
- reverse: '{{ scaleway_reverse_name }}'
- register: ip_assignation_confirmation_task
-
-- debug: var=ip_assignation_confirmation_task
-
-- name: ip_assignation_confirmation_task is success
- assert:
- that:
- - ip_assignation_confirmation_task is success
-
-- name: ip_assignation_confirmation_task is not changed
- assert:
- that:
- - ip_assignation_confirmation_task is not changed
-
-- name: Unassign IP to server (Check)
- check_mode: yes
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- reverse: '{{ scaleway_reverse_name }}'
- register: ip_unassignation_check_task
-
-- debug: var=ip_unassignation_check_task
-
-- name: ip_unassignation_check_task is success
- assert:
- that:
- - ip_unassignation_check_task is success
-
-- name: ip_unassignation_check_task is changed
- assert:
- that:
- - ip_unassignation_check_task is changed
-
-- name: Unassign IP to server
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- reverse: '{{ scaleway_reverse_name }}'
- register: ip_unassignation_task
-
-- debug: var=ip_unassignation_task
-
-- name: ip_unassignation_task is success
- assert:
- that:
- - ip_unassignation_task is success
-
-- name: ip_unassignation_task is changed
- assert:
- that:
- - ip_unassignation_task is changed
-
-- name: ip_unassignation_task.scaleway_ip.server is none
- assert:
- that:
- - '{{ ip_unassignation_task.scaleway_ip.server is none }}'
-
-- name: Unassign IP to server (Confirmation)
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- reverse: '{{ scaleway_reverse_name }}'
- register: ip_unassignation_confirmation_task
-
-- debug: var=ip_unassignation_confirmation_task
-
-- name: ip_unassignation_confirmation_task is success
- assert:
- that:
- - ip_unassignation_confirmation_task is success
-
-- name: ip_unassignation_confirmation_task is not changed
- assert:
- that:
- - ip_unassignation_confirmation_task is not changed
-
-- name: ip_unassignation_confirmation_task.scaleway_ip.server is none
- assert:
- that:
- - '{{ ip_unassignation_task.scaleway_ip.server is none }}'
-
-- name: Unassign reverse to IP (Check)
- check_mode: yes
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- register: ip_reverse_unassignation_check_task
-
-- debug: var=ip_reverse_unassignation_check_task
-
-- name: ip_reverse_unassignation_check_task is success
- assert:
- that:
- - ip_reverse_unassignation_check_task is success
-
-- name: ip_reverse_unassignation_check_task is changed
- assert:
- that:
- - ip_reverse_unassignation_check_task is changed
-
-- name: Unassign reverse to an IP
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- register: ip_reverse_unassignation_task
-
-- debug: var=ip_reverse_unassignation_task
-
-- name: ip_reverse_unassignation_task is success
- assert:
- that:
- - ip_reverse_unassignation_task is success
-
-- name: ip_reverse_unassignation_task is changed
- assert:
- that:
- - ip_reverse_unassignation_task is changed
-
-- name: ip_reverse_unassignation_task.scaleway_ip.reverse is none
- assert:
- that:
- - '{{ ip_reverse_unassignation_task.scaleway_ip.reverse is none }}'
-
-- name: Unassign reverse to an IP (Confirmation)
- scaleway_ip:
- state: present
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- register: ip_reverse_unassignation_confirmation_task
-
-- debug: var=ip_reverse_unassignation_confirmation_task
-
-- name: ip_reverse_unassignation_confirmation_task is success
- assert:
- that:
- - ip_reverse_unassignation_confirmation_task is success
-
-- name: ip_reverse_unassignation_confirmation_task is not changed
- assert:
- that:
- - ip_reverse_unassignation_confirmation_task is not changed
-
-- name: ip_reverse_unassignation_confirmation_task.scaleway_ip.server is none
- assert:
- that:
- - '{{ ip_reverse_unassignation_confirmation_task.scaleway_ip.reverse is none }}'
-
-- name: Destroy a server
- scaleway_compute:
- name: '{{ scaleway_server_name }}'
- state: absent
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- register: server_destroy_task
-
-- debug: var=server_destroy_task
-
-- name: server_destroy_task is success
- assert:
- that:
- - server_destroy_task is success
-
-- name: server_destroy_task is changed
- assert:
- that:
- - server_destroy_task is changed
-
-- name: Delete IP (Check)
- check_mode: yes
- scaleway_ip:
- state: absent
- region: '{{ scaleway_region }}'
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- register: ip_deletion_check_task
-
-- name: ip_deletion_check_task is success
- assert:
- that:
- - ip_deletion_check_task is success
-
-- name: ip_deletion_check_task is changed
- assert:
- that:
- - ip_deletion_check_task is changed
-
-- name: Delete IP
- scaleway_ip:
- state: absent
- region: '{{ scaleway_region }}'
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- register: ip_deletion_task
-
-- name: ip_deletion_task is success
- assert:
- that:
- - ip_deletion_task is success
-
-- name: ip_deletion_task is changed
- assert:
- that:
- - ip_deletion_task is changed
-
-- name: Delete IP (Confirmation)
- scaleway_ip:
- state: absent
- region: '{{ scaleway_region }}'
- id: '{{ ip_creation_task.scaleway_ip.id }}'
- register: ip_deletion_confirmation_task
-
-- name: ip_deletion_confirmation_task is success
- assert:
- that:
- - ip_deletion_confirmation_task is success
-
-- name: ip_deletion_confirmation_task is not changed
- assert:
- that:
- - ip_deletion_confirmation_task is not changed
diff --git a/test/integration/targets/scaleway_ip_info/aliases b/test/integration/targets/scaleway_ip_info/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_ip_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_ip_info/tasks/main.yml b/test/integration/targets/scaleway_ip_info/tasks/main.yml
deleted file mode 100644
index a3509f3d02..0000000000
--- a/test/integration/targets/scaleway_ip_info/tasks/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-- name: Get ip informations and register it in a variable
- scaleway_ip_info:
- region: par1
- register: ips
-
-- name: Display ips variable
- debug:
- var: ips
-
-- name: Ensure retrieval of ips info is success
- assert:
- that:
- - ips is success
-
-- name: Get ip informations and register it in a variable
- scaleway_ip_info:
- region: ams1
- register: ips_ams1
-
-- name: Display ips variable
- debug:
- var: ips_ams1
-
-- name: Ensure retrieval of ips info is success
- assert:
- that:
- - ips_ams1 is success
diff --git a/test/integration/targets/scaleway_lb/aliases b/test/integration/targets/scaleway_lb/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_lb/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_lb/defaults/main.yml b/test/integration/targets/scaleway_lb/defaults/main.yml
deleted file mode 100644
index 48d56e1089..0000000000
--- a/test/integration/targets/scaleway_lb/defaults/main.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-scaleway_region: fr-par
-name: lb_ansible_test
-description: Load-balancer used for testing scaleway_lb ansible module
-updated_description: Load-balancer used for testing scaleway_lb ansible module (Updated description)
-tags:
- - first_tag
- - second_tag
diff --git a/test/integration/targets/scaleway_lb/tasks/main.yml b/test/integration/targets/scaleway_lb/tasks/main.yml
deleted file mode 100644
index 45d3551a48..0000000000
--- a/test/integration/targets/scaleway_lb/tasks/main.yml
+++ /dev/null
@@ -1,214 +0,0 @@
-- name: Create a load-balancer (Check)
- check_mode: yes
- scaleway_lb:
- state: present
- name: '{{ name }}'
- region: '{{ scaleway_region }}'
- organization_id: '{{ scw_org }}'
- description: '{{ description }}'
- tags: '{{ tags }}'
- register: lb_creation_check_task
-
-- debug: var=lb_creation_check_task
-
-- name: lb_creation_check_task is success
- assert:
- that:
- - lb_creation_check_task is success
-
-- name: lb_creation_check_task is changed
- assert:
- that:
- - lb_creation_check_task is changed
-
-- name: Create load-balancer
- scaleway_lb:
- state: present
- name: '{{ name }}'
- region: '{{ scaleway_region }}'
- organization_id: '{{ scw_org }}'
- description: '{{ description }}'
- tags: '{{ tags }}'
- wait: true
- register: lb_creation_task
-
-- debug: var=lb_creation_task
-
-- name: lb_creation_task is success
- assert:
- that:
- - lb_creation_task is success
-
-- name: lb_creation_task is changed
- assert:
- that:
- - lb_creation_task is changed
-
-- name: Assert that the load-balancer is in a valid state
- assert:
- that:
- - lb_creation_task.scaleway_lb.status == "ready"
-
-- name: Create load-balancer (Confirmation)
- scaleway_lb:
- state: present
- name: '{{ name }}'
- region: '{{ scaleway_region }}'
- organization_id: '{{ scw_org }}'
- tags: '{{ tags }}'
- description: '{{ description }}'
- register: lb_creation_confirmation_task
-
-- debug: var=lb_creation_confirmation_task
-
-- name: lb_creation_confirmation_task is success
- assert:
- that:
- - lb_creation_confirmation_task is success
-
-- name: lb_creation_confirmation_task is not changed
- assert:
- that:
- - lb_creation_confirmation_task is not changed
-
-- name: Assert that the load-balancer is in a valid state
- assert:
- that:
- - lb_creation_confirmation_task.scaleway_lb.status == "ready"
-
-- name: Update load-balancer (Check)
- check_mode: yes
- scaleway_lb:
- state: present
- name: '{{ name }}'
- region: '{{ scaleway_region }}'
- organization_id: '{{ scw_org }}'
- tags: '{{ tags }}'
- description: '{{ updated_description }}'
- register: lb_update_check_task
-
-- debug: var=lb_update_check_task
-
-- name: lb_update_check_task is success
- assert:
- that:
- - lb_update_check_task is success
-
-- name: lb_update_check_task is changed
- assert:
- that:
- - lb_update_check_task is changed
-
-- name: Update load-balancer
- scaleway_lb:
- state: present
- name: '{{ name }}'
- region: '{{ scaleway_region }}'
- tags: '{{ tags }}'
- organization_id: '{{ scw_org }}'
- description: '{{ updated_description }}'
- wait: true
- register: lb_update_task
-
-- debug: var=lb_update_task
-
-- name: lb_update_task is success
- assert:
- that:
- - lb_update_task is success
-
-- name: lb_update_task is changed
- assert:
- that:
- - lb_update_task is changed
-
-- name: Assert that the load-balancer is in a valid state
- assert:
- that:
- - lb_update_task.scaleway_lb.status == "ready"
-
-- name: Update load-balancer (Confirmation)
- scaleway_lb:
- state: present
- name: '{{ name }}'
- region: '{{ scaleway_region }}'
- tags: '{{ tags }}'
- organization_id: '{{ scw_org }}'
- description: '{{ updated_description }}'
- register: lb_update_confirmation_task
-
-- debug: var=lb_update_confirmation_task
-
-- name: lb_update_confirmation_task is success
- assert:
- that:
- - lb_update_confirmation_task is success
-
-- name: lb_update_confirmation_task is not changed
- assert:
- that:
- - lb_update_confirmation_task is not changed
-
-- name: Assert that the load-balancer is in a valid state
- assert:
- that:
- - lb_update_confirmation_task.scaleway_lb.status == "ready"
-
-- name: Delete load-balancer (Check)
- check_mode: yes
- scaleway_lb:
- state: absent
- name: '{{ name }}'
- region: '{{ scaleway_region }}'
- description: '{{ description }}'
- organization_id: '{{ scw_org }}'
- register: lb_deletion_check_task
-
-- name: lb_deletion_check_task is success
- assert:
- that:
- - lb_deletion_check_task is success
-
-- name: lb_deletion_check_task is changed
- assert:
- that:
- - lb_deletion_check_task is changed
-
-- name: Delete load-balancer
- scaleway_lb:
- state: absent
- name: '{{ name }}'
- region: '{{ scaleway_region }}'
- description: '{{ description }}'
- organization_id: '{{ scw_org }}'
- wait: true
- register: lb_deletion_task
-
-- name: lb_deletion_task is success
- assert:
- that:
- - lb_deletion_task is success
-
-- name: lb_deletion_task is changed
- assert:
- that:
- - lb_deletion_task is changed
-
-- name: Delete load-balancer (Confirmation)
- scaleway_lb:
- state: absent
- name: '{{ name }}'
- region: '{{ scaleway_region }}'
- description: '{{ description }}'
- organization_id: '{{ scw_org }}'
- register: lb_deletion_confirmation_task
-
-- name: lb_deletion_confirmation_task is success
- assert:
- that:
- - lb_deletion_confirmation_task is success
-
-- name: lb_deletion_confirmation_task is not changed
- assert:
- that:
- - lb_deletion_confirmation_task is not changed
diff --git a/test/integration/targets/scaleway_organization_info/aliases b/test/integration/targets/scaleway_organization_info/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_organization_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_organization_info/tasks/main.yml b/test/integration/targets/scaleway_organization_info/tasks/main.yml
deleted file mode 100644
index 716a47b2da..0000000000
--- a/test/integration/targets/scaleway_organization_info/tasks/main.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-- name: Get organization informations and register it in a variable
- scaleway_organization_info:
- register: organizations
-
-- name: Display organizations variable
- debug:
- var: organizations
-
-- name: Ensure retrieval of organizations info is success
- assert:
- that:
- - organizations is success
diff --git a/test/integration/targets/scaleway_security_group/aliases b/test/integration/targets/scaleway_security_group/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_security_group/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_security_group/defaults/main.yml b/test/integration/targets/scaleway_security_group/defaults/main.yml
deleted file mode 100644
index 13bbef06af..0000000000
--- a/test/integration/targets/scaleway_security_group/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-scaleway_organization: '{{ scw_org }}'
-scaleway_region: ams1
diff --git a/test/integration/targets/scaleway_security_group/tasks/main.yml b/test/integration/targets/scaleway_security_group/tasks/main.yml
deleted file mode 100644
index 068bfe8354..0000000000
--- a/test/integration/targets/scaleway_security_group/tasks/main.yml
+++ /dev/null
@@ -1,129 +0,0 @@
-- name: Create security group check
- check_mode: yes
- scaleway_security_group:
- state: present
- region: '{{ scaleway_region }}'
- name: security_group
- description: 'my security group description'
- organization: '{{ scaleway_organization }}'
- stateful: false
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false
- register: security_group_creation
-
-- debug: var=security_group_creation
-
-- name: Ensure security groups check facts is success
- assert:
- that:
- - security_group_creation is success
- - security_group_creation is changed
-
-- block:
- - name: Create security group
- scaleway_security_group:
- state: present
- region: '{{ scaleway_region }}'
- name: security_group
- description: 'my security group description'
- organization: '{{ scaleway_organization }}'
- stateful: false
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false
- register: security_group_creation
-
- - debug: var=security_group_creation
-
- - name: Ensure security groups facts is success
- assert:
- that:
- - security_group_creation is success
- - security_group_creation is changed
-
- - name: Create security group duplicate
- scaleway_security_group:
- state: present
- region: '{{ scaleway_region }}'
- name: security_group
- description: 'my security group description'
- organization: '{{ scaleway_organization }}'
- stateful: false
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false
- register: security_group_creation
-
- - debug: var=security_group_creation
-
- - name: Ensure security groups duplicate facts is success
- assert:
- that:
- - security_group_creation is success
- - security_group_creation is not changed
-
- - name: Delete security group check
- check_mode: yes
- scaleway_security_group:
- state: absent
- region: '{{ scaleway_region }}'
- name: security_group
- description: 'my security group description'
- organization: '{{ scaleway_organization }}'
- stateful: false
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false
- register: security_group_deletion
-
- - debug: var=security_group_deletion
-
- - name: Ensure security groups delete check facts is success
- assert:
- that:
- - security_group_deletion is success
- - security_group_deletion is changed
-
- always:
- - name: Delete security group
- scaleway_security_group:
- state: absent
- region: '{{ scaleway_region }}'
- name: security_group
- description: 'my security group description'
- organization: '{{ scaleway_organization }}'
- stateful: false
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false
- register: security_group_deletion
-
- - debug: var=security_group_deletion
-
- - name: Ensure security groups delete facts is success
- assert:
- that:
- - security_group_deletion is success
- - security_group_deletion is changed
-
-- name: Delete security group duplicate
- scaleway_security_group:
- state: absent
- region: '{{ scaleway_region }}'
- name: security_group
- description: 'my security group description'
- organization: '{{ scaleway_organization }}'
- stateful: false
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false
- register: security_group_deletion
-
-- debug: var=security_group_deletion
-
-- name: Ensure security groups delete duplicate facts is success
- assert:
- that:
- - security_group_deletion is success
- - security_group_deletion is not changed \ No newline at end of file
diff --git a/test/integration/targets/scaleway_security_group_info/aliases b/test/integration/targets/scaleway_security_group_info/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_security_group_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_security_group_info/tasks/main.yml b/test/integration/targets/scaleway_security_group_info/tasks/main.yml
deleted file mode 100644
index 3164fabcbc..0000000000
--- a/test/integration/targets/scaleway_security_group_info/tasks/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-- name: Get security group informations and register it in a variable
- scaleway_security_group_info:
- region: par1
- register: security_groups
-
-- name: Display security_groups variable
- debug:
- var: security_groups
-
-- name: Ensure retrieval of security groups info is success
- assert:
- that:
- - security_groups is success
-
-- name: Get security group informations and register it in a variable (AMS1)
- scaleway_security_group_info:
- region: ams1
- register: ams1_security_groups
-
-- name: Display security_groups variable (AMS1)
- debug:
- var: ams1_security_groups
-
-- name: Ensure retrieval of security groups info is success (AMS1)
- assert:
- that:
- - ams1_security_groups is success
diff --git a/test/integration/targets/scaleway_security_group_rule/aliases b/test/integration/targets/scaleway_security_group_rule/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_security_group_rule/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_security_group_rule/defaults/main.yml b/test/integration/targets/scaleway_security_group_rule/defaults/main.yml
deleted file mode 100644
index 9c56c4db77..0000000000
--- a/test/integration/targets/scaleway_security_group_rule/defaults/main.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-scaleway_organization: '{{ scw_org }}'
-scaleway_region: par1
-protocol: "TCP"
-port: 80
-ip_range: "0.0.0.0/0"
-direction: "inbound"
-action: "accept"
diff --git a/test/integration/targets/scaleway_security_group_rule/tasks/main.yml b/test/integration/targets/scaleway_security_group_rule/tasks/main.yml
deleted file mode 100644
index 2b436c1267..0000000000
--- a/test/integration/targets/scaleway_security_group_rule/tasks/main.yml
+++ /dev/null
@@ -1,242 +0,0 @@
-- name: Create a scaleway security_group
- scaleway_security_group:
- state: present
- region: '{{ scaleway_region }}'
- name: test_compute
- description: test_compute
- organization: '{{ scaleway_organization }}'
- stateful: true
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false
- register: security_group
-
-- debug: var=security_group
-
-- name: Create security_group_rule check
- check_mode: true
- scaleway_security_group_rule:
- state: present
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: '{{ port }}'
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_creation_task
-
-- debug: var=security_group_rule_creation_task
-
-- assert:
- that:
- - security_group_rule_creation_task is success
- - security_group_rule_creation_task is changed
-
-- block:
- - name: Create security_group_rule check
- scaleway_security_group_rule:
- state: present
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: '{{ port }}'
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_creation_task
-
- - debug: var=security_group_rule_creation_task
-
- - assert:
- that:
- - security_group_rule_creation_task is success
- - security_group_rule_creation_task is changed
-
- - name: Create security_group_rule duplicate
- scaleway_security_group_rule:
- state: present
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: '{{ port }}'
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_creation_task
-
- - debug: var=security_group_rule_creation_task
-
- - assert:
- that:
- - security_group_rule_creation_task is success
- - security_group_rule_creation_task is not changed
-
- - name: Delete security_group_rule check
- check_mode: true
- scaleway_security_group_rule:
- state: absent
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: '{{ port }}'
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_deletion_task
-
- - debug: var=security_group_rule_deletion_task
-
- - assert:
- that:
- - security_group_rule_deletion_task is success
- - security_group_rule_deletion_task is changed
-
- always:
- - name: Delete security_group_rule check
- scaleway_security_group_rule:
- state: absent
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: '{{ port }}'
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_deletion_task
-
- - debug: var=security_group_rule_deletion_task
-
- - assert:
- that:
- - security_group_rule_deletion_task is success
- - security_group_rule_deletion_task is changed
-
-- name: Delete security_group_rule check
- scaleway_security_group_rule:
- state: absent
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: '{{ port }}'
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_deletion_task
-
-- debug: var=security_group_rule_deletion_task
-
-- assert:
- that:
- - security_group_rule_deletion_task is success
- - security_group_rule_deletion_task is not changed
-
-- block:
- - name: Create security_group_rule with null check
- scaleway_security_group_rule:
- state: present
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: null
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_creation_task
-
- - debug: var=security_group_rule_creation_task
-
- - assert:
- that:
- - security_group_rule_creation_task is success
- - security_group_rule_creation_task is changed
-
- - name: Create security_group_rule with null duplicate
- scaleway_security_group_rule:
- state: present
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: null
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_creation_task
-
- - debug: var=security_group_rule_creation_task
-
- - assert:
- that:
- - security_group_rule_creation_task is success
- - security_group_rule_creation_task is not changed
-
- - name: Delete security_group_rule with null check
- check_mode: true
- scaleway_security_group_rule:
- state: absent
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: null
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_deletion_task
-
- - debug: var=security_group_rule_deletion_task
-
- - assert:
- that:
- - security_group_rule_deletion_task is success
- - security_group_rule_deletion_task is changed
-
- always:
- - name: Delete security_group_rule with null check
- scaleway_security_group_rule:
- state: absent
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: null
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_deletion_task
-
- - debug: var=security_group_rule_deletion_task
-
- - assert:
- that:
- - security_group_rule_deletion_task is success
- - security_group_rule_deletion_task is changed
-
-- name: Delete security_group_rule with null check
- scaleway_security_group_rule:
- state: absent
- region: '{{ scaleway_region }}'
- protocol: '{{ protocol }}'
- port: null
- ip_range: '{{ ip_range }}'
- direction: '{{ direction }}'
- action: '{{ action }}'
- security_group: '{{ security_group.scaleway_security_group.id }}'
- register: security_group_rule_deletion_task
-
-- debug: var=security_group_rule_deletion_task
-
-- assert:
- that:
- - security_group_rule_deletion_task is success
- - security_group_rule_deletion_task is not changed
-
-- name: Delete scaleway security_group
- scaleway_security_group:
- state: absent
- region: '{{ scaleway_region }}'
- name: test_compute
- description: test_compute
- organization: '{{ scaleway_organization }}'
- stateful: true
- inbound_default_policy: accept
- outbound_default_policy: accept
- organization_default: false \ No newline at end of file
diff --git a/test/integration/targets/scaleway_server_info/aliases b/test/integration/targets/scaleway_server_info/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_server_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_server_info/tasks/main.yml b/test/integration/targets/scaleway_server_info/tasks/main.yml
deleted file mode 100644
index 585cc61ed3..0000000000
--- a/test/integration/targets/scaleway_server_info/tasks/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-- name: Get server informations and register it in a variable
- scaleway_server_info:
- region: par1
- register: servers
-
-- name: Display servers variable
- debug:
- var: servers
-
-- name: Ensure retrieval of servers info is success
- assert:
- that:
- - servers is success
-
-- name: Get server informations and register it in a variable
- scaleway_server_info:
- region: ams1
- register: ams1_servers
-
-- name: Display servers variable
- debug:
- var: ams1_servers
-
-- name: Ensure retrieval of servers info is success
- assert:
- that:
- - ams1_servers is success
diff --git a/test/integration/targets/scaleway_snapshot_info/aliases b/test/integration/targets/scaleway_snapshot_info/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_snapshot_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_snapshot_info/tasks/main.yml b/test/integration/targets/scaleway_snapshot_info/tasks/main.yml
deleted file mode 100644
index 20ad969515..0000000000
--- a/test/integration/targets/scaleway_snapshot_info/tasks/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-- name: Get snapshot informations and register it in a variable
- scaleway_snapshot_info:
- region: par1
- register: snapshots
-
-- name: Display snapshots variable
- debug:
- var: snapshots
-
-- name: Ensure retrieval of snapshots info is success
- assert:
- that:
- - snapshots is success
-
-- name: Get snapshot informations and register it in a variable (AMS1)
- scaleway_snapshot_info:
- region: ams1
- register: ams1_snapshots
-
-- name: Display snapshots variable (AMS1)
- debug:
- var: ams1_snapshots
-
-- name: Ensure retrieval of snapshots info is success (AMS1)
- assert:
- that:
- - ams1_snapshots is success
diff --git a/test/integration/targets/scaleway_sshkey/aliases b/test/integration/targets/scaleway_sshkey/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_sshkey/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_sshkey/tasks/main.yml b/test/integration/targets/scaleway_sshkey/tasks/main.yml
deleted file mode 100644
index ca6beb1094..0000000000
--- a/test/integration/targets/scaleway_sshkey/tasks/main.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-- scaleway_sshkey:
- ssh_pub_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf29yyommeGyKSIgSmX0ISVXP+3x6RUY4JDGLoAMFh2efkfDaRVdsvkvnFuUywgP2RewrjTyLE8w0NpCBHVS5Fm1BAn3yvxOUtTMxTbsQcw6HQ8swJ02+1tewJYjHPwc4GrBqiDo3Nmlq354Us0zBOJg/bBzuEnVD5eJ3GO3gKaCSUYTVrYwO0U4eJE0D9OJeUP9J48kl4ULbCub976+mTHdBvlzRw0Tzfl2kxgdDwlks0l2NefY/uiTdz2oMt092bAY3wZHxjto/DXoChxvaf5s2k8Zb+J7CjimUYnzPlH+zA9F6ROjP5AUu6ZWPd0jOIBl1nDWWb2j/qfNLYM43l sieben@sieben-macbook.local"
- state: present
- check_mode: yes
-
-- scaleway_sshkey:
- ssh_pub_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf29yyommeGyKSIgSmX0ISVXP+3x6RUY4JDGLoAMFh2efkfDaRVdsvkvnFuUywgP2RewrjTyLE8w0NpCBHVS5Fm1BAn3yvxOUtTMxTbsQcw6HQ8swJ02+1tewJYjHPwc4GrBqiDo3Nmlq354Us0zBOJg/bBzuEnVD5eJ3GO3gKaCSUYTVrYwO0U4eJE0D9OJeUP9J48kl4ULbCub976+mTHdBvlzRw0Tzfl2kxgdDwlks0l2NefY/uiTdz2oMt092bAY3wZHxjto/DXoChxvaf5s2k8Zb+J7CjimUYnzPlH+zA9F6ROjP5AUu6ZWPd0jOIBl1nDWWb2j/qfNLYM43l sieben@sieben-macbook.local"
- state: present
- register: result1
-
-- scaleway_sshkey:
- ssh_pub_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf29yyommeGyKSIgSmX0ISVXP+3x6RUY4JDGLoAMFh2efkfDaRVdsvkvnFuUywgP2RewrjTyLE8w0NpCBHVS5Fm1BAn3yvxOUtTMxTbsQcw6HQ8swJ02+1tewJYjHPwc4GrBqiDo3Nmlq354Us0zBOJg/bBzuEnVD5eJ3GO3gKaCSUYTVrYwO0U4eJE0D9OJeUP9J48kl4ULbCub976+mTHdBvlzRw0Tzfl2kxgdDwlks0l2NefY/uiTdz2oMt092bAY3wZHxjto/DXoChxvaf5s2k8Zb+J7CjimUYnzPlH+zA9F6ROjP5AUu6ZWPd0jOIBl1nDWWb2j/qfNLYM43l sieben@sieben-macbook.local"
- state: present
- register: result2
-
-- assert:
- that:
- - result1 is success and result1 is changed
- - result2 is success and result2 is not changed
-
-- scaleway_sshkey:
- ssh_pub_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf29yyommeGyKSIgSmX0ISVXP+3x6RUY4JDGLoAMFh2efkfDaRVdsvkvnFuUywgP2RewrjTyLE8w0NpCBHVS5Fm1BAn3yvxOUtTMxTbsQcw6HQ8swJ02+1tewJYjHPwc4GrBqiDo3Nmlq354Us0zBOJg/bBzuEnVD5eJ3GO3gKaCSUYTVrYwO0U4eJE0D9OJeUP9J48kl4ULbCub976+mTHdBvlzRw0Tzfl2kxgdDwlks0l2NefY/uiTdz2oMt092bAY3wZHxjto/DXoChxvaf5s2k8Zb+J7CjimUYnzPlH+zA9F6ROjP5AUu6ZWPd0jOIBl1nDWWb2j/qfNLYM43l sieben@sieben-macbook.local"
- state: absent
- check_mode: yes
-
-- scaleway_sshkey:
- ssh_pub_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf29yyommeGyKSIgSmX0ISVXP+3x6RUY4JDGLoAMFh2efkfDaRVdsvkvnFuUywgP2RewrjTyLE8w0NpCBHVS5Fm1BAn3yvxOUtTMxTbsQcw6HQ8swJ02+1tewJYjHPwc4GrBqiDo3Nmlq354Us0zBOJg/bBzuEnVD5eJ3GO3gKaCSUYTVrYwO0U4eJE0D9OJeUP9J48kl4ULbCub976+mTHdBvlzRw0Tzfl2kxgdDwlks0l2NefY/uiTdz2oMt092bAY3wZHxjto/DXoChxvaf5s2k8Zb+J7CjimUYnzPlH+zA9F6ROjP5AUu6ZWPd0jOIBl1nDWWb2j/qfNLYM43l sieben@sieben-macbook.local"
- state: absent
- register: result1
-
-- scaleway_sshkey:
- ssh_pub_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf29yyommeGyKSIgSmX0ISVXP+3x6RUY4JDGLoAMFh2efkfDaRVdsvkvnFuUywgP2RewrjTyLE8w0NpCBHVS5Fm1BAn3yvxOUtTMxTbsQcw6HQ8swJ02+1tewJYjHPwc4GrBqiDo3Nmlq354Us0zBOJg/bBzuEnVD5eJ3GO3gKaCSUYTVrYwO0U4eJE0D9OJeUP9J48kl4ULbCub976+mTHdBvlzRw0Tzfl2kxgdDwlks0l2NefY/uiTdz2oMt092bAY3wZHxjto/DXoChxvaf5s2k8Zb+J7CjimUYnzPlH+zA9F6ROjP5AUu6ZWPd0jOIBl1nDWWb2j/qfNLYM43l sieben@sieben-macbook.local"
- state: absent
- register: result2
-
-- assert:
- that:
- - result1 is success and result1 is changed
- - result2 is success and result2 is not changed
diff --git a/test/integration/targets/scaleway_user_data/aliases b/test/integration/targets/scaleway_user_data/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_user_data/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_user_data/defaults/main.yml b/test/integration/targets/scaleway_user_data/defaults/main.yml
deleted file mode 100644
index 69396fccaa..0000000000
--- a/test/integration/targets/scaleway_user_data/defaults/main.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-
-cloud_init_script: '''
-#cloud-config
-
-# final_message
-# default: cloud-init boot finished at $TIMESTAMP. Up $UPTIME seconds
-# this message is written by cloud-final when the system is finished
-# its first boot
-final_message: "The system is finally up, after $UPTIME seconds"
-'''
-scaleway_image_id: 89ee4018-f8c3-4dc4-a6b5-bca14f985ebe
-scaleway_organization: '{{ scw_org }}'
-scaleway_region: ams1
-scaleway_commerial_type: START1-S
diff --git a/test/integration/targets/scaleway_user_data/tasks/main.yml b/test/integration/targets/scaleway_user_data/tasks/main.yml
deleted file mode 100644
index 68d23bac5e..0000000000
--- a/test/integration/targets/scaleway_user_data/tasks/main.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-- name: Create a server
- scaleway_compute:
- name: foobar
- state: present
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- region: '{{ scaleway_region }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
-
- register: server_creation_task
-
-- debug: var=server_creation_task
-
-- set_fact:
- server_id: "{{ server_creation_task.msg.id }}"
-
-- debug: var=server_id
-
-- name: Patch user_data cloud-init configuration (Check)
- check_mode: yes
- scaleway_user_data:
- region: '{{ scaleway_region }}'
- server_id: "{{ server_id }}"
- user_data:
- cloud-init: "{{ cloud_init_script }}"
- register: user_data_check_task
-
-- debug: var=user_data_check_task
-
-- assert:
- that:
- - user_data_check_task is success
- - user_data_check_task is changed
-
-- name: Patch user_data cloud-init configuration
- scaleway_user_data:
- region: '{{ scaleway_region }}'
- server_id: "{{ server_id }}"
- user_data:
- cloud-init: "{{ cloud_init_script }}"
- register: user_data_task
-
-- debug: var=user_data_task
-
-- assert:
- that:
- - user_data_task is success
- - user_data_task is changed
-
-- name: Patch user_data cloud-init configuration (Confirmation)
- scaleway_user_data:
- region: '{{ scaleway_region }}'
- server_id: "{{ server_id }}"
- user_data:
- cloud-init: "{{ cloud_init_script }}"
- register: user_data_confirmation_task
-
-- debug: var=user_data_confirmation_task
-
-- assert:
- that:
- - user_data_confirmation_task is success
- - user_data_confirmation_task is not changed
-
-- name: Destroy it
- scaleway_compute:
- name: foobar
- state: absent
- region: '{{ scaleway_region }}'
- image: '{{ scaleway_image_id }}'
- organization: '{{ scaleway_organization }}'
- commercial_type: '{{ scaleway_commerial_type }}'
- wait: true
- register: server_destroy_task
-
-- debug: var=server_destroy_task
diff --git a/test/integration/targets/scaleway_volume/aliases b/test/integration/targets/scaleway_volume/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_volume/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_volume/defaults/main.yml b/test/integration/targets/scaleway_volume/defaults/main.yml
deleted file mode 100644
index 13bbef06af..0000000000
--- a/test/integration/targets/scaleway_volume/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-scaleway_organization: '{{ scw_org }}'
-scaleway_region: ams1
diff --git a/test/integration/targets/scaleway_volume/tasks/main.yml b/test/integration/targets/scaleway_volume/tasks/main.yml
deleted file mode 100644
index c4182e0036..0000000000
--- a/test/integration/targets/scaleway_volume/tasks/main.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-- name: Make sure volume is not there before tests
- scaleway_volume:
- name: ansible-test-volume
- state: absent
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- register: server_creation_check_task
-
-- assert:
- that:
- - server_creation_check_task is success
-
-- name: Create volume
- scaleway_volume:
- name: ansible-test-volume
- state: present
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- "size": 10000000000
- volume_type: l_ssd
- register: server_creation_check_task
-
-- debug: var=server_creation_check_task
-
-- assert:
- that:
- - server_creation_check_task is success
- - server_creation_check_task is changed
-
-- name: Make sure volume is deleted
- scaleway_volume:
- name: ansible-test-volume
- state: absent
- region: '{{ scaleway_region }}'
- organization: '{{ scaleway_organization }}'
- register: server_creation_check_task
-
-- assert:
- that:
- - server_creation_check_task is success
- - server_creation_check_task is changed
diff --git a/test/integration/targets/scaleway_volume_info/aliases b/test/integration/targets/scaleway_volume_info/aliases
deleted file mode 100644
index f24a42a8e5..0000000000
--- a/test/integration/targets/scaleway_volume_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/scaleway
-unsupported
diff --git a/test/integration/targets/scaleway_volume_info/tasks/main.yml b/test/integration/targets/scaleway_volume_info/tasks/main.yml
deleted file mode 100644
index 41e8d4bb11..0000000000
--- a/test/integration/targets/scaleway_volume_info/tasks/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-- name: Get volume informations and register it in a variable
- scaleway_volume_info:
- region: par1
- register: volumes
-
-- name: Display volumes variable
- debug:
- var: volumes
-
-- name: Ensure retrieval of volumes info is success
- assert:
- that:
- - volumes is success
-
-- name: Get volume informations and register it in a variable (AMS1)
- scaleway_volume_info:
- region: ams1
- register: ams1_volumes
-
-- name: Display volumes variable
- debug:
- var: ams1_volumes
-
-- name: Ensure retrieval of volumes info is success
- assert:
- that:
- - ams1_volumes is success
diff --git a/test/integration/targets/script_inventory_foreman/aliases b/test/integration/targets/script_inventory_foreman/aliases
deleted file mode 100644
index 236bb0768d..0000000000
--- a/test/integration/targets/script_inventory_foreman/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-shippable/cloud/group1
-cloud/foreman
-needs/file/contrib/inventory/foreman.py
diff --git a/test/integration/targets/script_inventory_foreman/foreman.sh b/test/integration/targets/script_inventory_foreman/foreman.sh
deleted file mode 100755
index 18e9e153f8..0000000000
--- a/test/integration/targets/script_inventory_foreman/foreman.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env bash
-# Wrapper to use the correct Python interpreter and support code coverage.
-
-REL_SCRIPT="../../../../contrib/inventory/foreman.py"
-ABS_SCRIPT="$("${ANSIBLE_TEST_PYTHON_INTERPRETER}" -c "import os; print(os.path.abspath('${REL_SCRIPT}'))")"
-
-# Make sure output written to current directory ends up in the temp dir.
-cd "${OUTPUT_DIR}"
-
-python.py "${ABS_SCRIPT}" "$@"
diff --git a/test/integration/targets/script_inventory_foreman/runme.sh b/test/integration/targets/script_inventory_foreman/runme.sh
deleted file mode 100755
index a9c94fbe7d..0000000000
--- a/test/integration/targets/script_inventory_foreman/runme.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-
-export FOREMAN_HOST="${FOREMAN_HOST:-localhost}"
-export FOREMAN_PORT="${FOREMAN_PORT:-8080}"
-export FOREMAN_INI_PATH="${OUTPUT_DIR}/foreman.ini"
-
-
-############################################
-# SMOKETEST WITH SIMPLE INI
-############################################
-
-cat > "$FOREMAN_INI_PATH" <<FOREMAN_INI
-[foreman]
-url = http://${FOREMAN_HOST}:${FOREMAN_PORT}
-user = ansible-tester
-password = secure
-ssl_verify = False
-use_reports_api = False
-FOREMAN_INI
-
-# use ansible to validate the return data
-ansible-playbook -i foreman.sh test_foreman_inventory.yml --connection=local
-RC=$?
-if [[ $RC != 0 ]]; then
- echo "foreman inventory script smoketest failed"
- exit $RC
-fi
-
-############################################
-# SMOKETEST WITH NON-ASCII INI
-############################################
-
-cat > "$FOREMAN_INI_PATH" <<FOREMAN_INI
-[foreman]
-url = http://${FOREMAN_HOST}:${FOREMAN_PORT}
-user = ansible-tester
-password = secure
-ssl_verify = False
-group_prefix = Ľuboš_
-FOREMAN_INI
-
-# use ansible to validate the return data
-ansible-playbook -i foreman.sh test_foreman_inventory.yml --connection=local
-RC=$?
-if [[ $RC != 0 ]]; then
- echo "foreman inventory script non-ascii failed"
- exit $RC
-fi
diff --git a/test/integration/targets/script_inventory_foreman/test_foreman_inventory.yml b/test/integration/targets/script_inventory_foreman/test_foreman_inventory.yml
deleted file mode 100644
index 3b563c7656..0000000000
--- a/test/integration/targets/script_inventory_foreman/test_foreman_inventory.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-- name: check the foreman inventory script result size and attributes
- hosts: localhost
- gather_facts: False
- tasks:
- - assert:
- that:
- - "{{ groups['all']|length > 900 }}"
diff --git a/test/integration/targets/sefcontext/aliases b/test/integration/targets/sefcontext/aliases
deleted file mode 100644
index 58a2a31e7e..0000000000
--- a/test/integration/targets/sefcontext/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-needs/root
-shippable/posix/group2
-skip/aix
diff --git a/test/integration/targets/sefcontext/tasks/main.yml b/test/integration/targets/sefcontext/tasks/main.yml
deleted file mode 100644
index bedbc70520..0000000000
--- a/test/integration/targets/sefcontext/tasks/main.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-# (c) 2016, Dag Wieers <dag@wieers.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# FIXME: Unfortunately ansible_selinux could be a boolean or a dictionary !
-- debug:
- msg: SELinux is disabled
- when: ansible_selinux is defined and ansible_selinux == False
-
-- debug:
- msg: SELinux is {{ ansible_selinux.status }}
- when: ansible_selinux is defined and ansible_selinux != False
-
-- include: sefcontext.yml
- when: ansible_selinux is defined and ansible_selinux != False and ansible_selinux.status == 'enabled'
diff --git a/test/integration/targets/sefcontext/tasks/sefcontext.yml b/test/integration/targets/sefcontext/tasks/sefcontext.yml
deleted file mode 100644
index b452ea28c2..0000000000
--- a/test/integration/targets/sefcontext/tasks/sefcontext.yml
+++ /dev/null
@@ -1,114 +0,0 @@
-# (c) 2016, Dag Wieers <dag@wieers.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: install requirements for RHEL
- package:
- name: policycoreutils-python
- when:
- - ansible_distribution == 'RedHat'
- - ansible_distribution_major_version|int < 8
-
-- name: install requirements for rhel8 beta
- package:
- name: python3-policycoreutils
- when:
- - ansible_distribution == 'RedHat'
- - ansible_distribution_major_version|int >= 8
-
-- name: Ensure we start with a clean state
- sefcontext:
- path: '/tmp/foo/bar(/.*)?'
- setype: httpd_sys_content_t
- state: absent
-
-- name: Set SELinux file context of foo/bar
- sefcontext:
- path: '/tmp/foo/bar(/.*)?'
- setype: httpd_sys_content_t
- state: present
- reload: no
- register: first
-
-- assert:
- that:
- - first is changed
- - first.setype == 'httpd_sys_content_t'
-
-- name: Set SELinux file context of foo/bar (again)
- sefcontext:
- path: '/tmp/foo/bar(/.*)?'
- setype: httpd_sys_content_t
- state: present
- reload: no
- register: second
-
-- assert:
- that:
- - second is not changed
- - second.setype == 'httpd_sys_content_t'
-
-- name: Change SELinux file context of foo/bar
- sefcontext:
- path: '/tmp/foo/bar(/.*)?'
- setype: unlabeled_t
- state: present
- reload: no
- register: third
-
-- assert:
- that:
- - third is changed
- - third.setype == 'unlabeled_t'
-
-- name: Change SELinux file context of foo/bar (again)
- sefcontext:
- path: '/tmp/foo/bar(/.*)?'
- setype: unlabeled_t
- state: present
- reload: no
- register: fourth
-
-- assert:
- that:
- - fourth is not changed
- - fourth.setype == 'unlabeled_t'
-
-- name: Delete SELinux file context of foo/bar
- sefcontext:
- path: '/tmp/foo/bar(/.*)?'
- setype: httpd_sys_content_t
- state: absent
- reload: no
- register: fifth
-
-- assert:
- that:
- - fifth is changed
- - fifth.setype == 'httpd_sys_content_t'
-
-- name: Delete SELinux file context of foo/bar (again)
- sefcontext:
- path: '/tmp/foo/bar(/.*)?'
- setype: unlabeled_t
- state: absent
- reload: no
- register: sixth
-
-- assert:
- that:
- - sixth is not changed
- - sixth.setype == 'unlabeled_t'
diff --git a/test/integration/targets/sensu_client/aliases b/test/integration/targets/sensu_client/aliases
deleted file mode 100644
index 5dcaaac61c..0000000000
--- a/test/integration/targets/sensu_client/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/posix/group1
-needs/root
diff --git a/test/integration/targets/sensu_client/tasks/main.yml b/test/integration/targets/sensu_client/tasks/main.yml
deleted file mode 100644
index 387a7c1e22..0000000000
--- a/test/integration/targets/sensu_client/tasks/main.yml
+++ /dev/null
@@ -1,169 +0,0 @@
-- name: Creating a client if the directory doesn't exist should work
- sensu_client:
- subscriptions:
- - default
-
-- name: Set variable for client file
- set_fact:
- client_file: "/etc/sensu/conf.d/client.json"
-
-- name: Insert invalid JSON in the client file
- lineinfile:
- state: "present"
- create: "yes"
- path: "{{ client_file }}"
- line: "{'foo' = bar}"
-
-- name: Configure Sensu client with an existing invalid file
- sensu_client:
- name: "client"
- state: "present"
- subscriptions:
- - default
- register: client
-
-- name: Retrieve configuration file
- slurp:
- src: "{{ client_file }}"
- register: client_config
-
-- name: Assert that client data was set successfully and properly
- assert:
- that:
- - "client is successful"
- - "client is changed"
- - "client['config']['name'] == 'client'"
- - "'default' in client['config']['subscriptions']"
- - "client['file'] == client_file"
-
-- name: Assert that the client configuration file is actually configured properly
- vars:
- config: "{{ client_config.content | b64decode | from_json }}"
- assert:
- that:
- - "config['client']['keepalives'] == true"
- - "config['client']['name'] == 'client'"
- - "config['client']['safe_mode'] == false"
- - "'default' in config['client']['subscriptions']"
-
-- name: Delete Sensu client configuration
- sensu_client:
- state: "absent"
- register: client_delete
-
-- name: Delete Sensu client configuration (again)
- sensu_client:
- state: "absent"
- register: client_delete_twice
-
-- name: Retrieve configuration file stat
- stat:
- path: "{{ client_file }}"
- register: client_stat
-
-- name: Assert that client deletion was successful
- assert:
- that:
- - "client_delete is successful"
- - "client_delete is changed"
- - "client_delete_twice is successful"
- - "client_delete_twice is not changed"
- - "client_stat.stat.exists == false"
-
-- name: Configuring a client without subscriptions should fail
- sensu_client:
- name: "failure"
- register: failure
- ignore_errors: true
-
-- name: Assert failure to create client
- assert:
- that:
- - failure is failed
- - "'the following are missing: subscriptions' in failure['msg']"
-
-- name: Configure a new client from scratch with custom parameters
- sensu_client:
- name: "custom"
- address: "host.fqdn"
- subscriptions:
- - "default"
- - "webserver"
- redact:
- - "password"
- socket:
- bind: "127.0.0.1"
- port: "3030"
- keepalive:
- thresholds:
- warning: "180"
- critical: "300"
- handlers:
- - "email"
- custom:
- - broadcast: "irc"
- occurrences: "3"
- register: client
-
-- name: Configure a new client from scratch with custom parameters (twice)
- sensu_client:
- name: "custom"
- address: "host.fqdn"
- subscriptions:
- - "default"
- - "webserver"
- redact:
- - "password"
- socket:
- bind: "127.0.0.1"
- port: "3030"
- keepalive:
- thresholds:
- warning: "180"
- critical: "300"
- handlers:
- - "email"
- custom:
- - broadcast: "irc"
- occurrences: "3"
- register: client_twice
-
-- name: Retrieve configuration file
- slurp:
- src: "{{ client_file }}"
- register: client_config
-
-- name: Assert that client data was set successfully and properly
- assert:
- that:
- - "client is successful"
- - "client is changed"
- - "client_twice is successful"
- - "client_twice is not changed"
- - "client['config']['name'] == 'custom'"
- - "client['config']['address'] == 'host.fqdn'"
- - "'default' in client['config']['subscriptions']"
- - "'webserver' in client['config']['subscriptions']"
- - "'password' in client['config']['redact']"
- - "client['config']['keepalive']['thresholds']['warning'] == '180'"
- - "client['config']['keepalive']['thresholds']['critical'] == '300'"
- - "'email' in client['config']['keepalive']['handlers']"
- - "client['config']['keepalive']['occurrences'] == '3'"
- - "client['file'] == client_file"
-
-- name: Assert that the client configuration file is actually configured properly
- vars:
- config: "{{ client_config.content | b64decode | from_json }}"
- assert:
- that:
- - "config['client']['name'] == 'custom'"
- - "config['client']['address'] == 'host.fqdn'"
- - "config['client']['keepalives'] == true"
- - "config['client']['safe_mode'] == false"
- - "'default' in config['client']['subscriptions']"
- - "'webserver' in config['client']['subscriptions']"
- - "'password' in config['client']['redact']"
- - "config['client']['keepalive']['thresholds']['warning'] == '180'"
- - "config['client']['keepalive']['thresholds']['critical'] == '300'"
- - "'email' in config['client']['keepalive']['handlers']"
- - "config['client']['keepalive']['occurrences'] == '3'"
diff --git a/test/integration/targets/sensu_handler/aliases b/test/integration/targets/sensu_handler/aliases
deleted file mode 100644
index 5dcaaac61c..0000000000
--- a/test/integration/targets/sensu_handler/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/posix/group1
-needs/root
diff --git a/test/integration/targets/sensu_handler/tasks/main.yml b/test/integration/targets/sensu_handler/tasks/main.yml
deleted file mode 100644
index 0c0b56d23e..0000000000
--- a/test/integration/targets/sensu_handler/tasks/main.yml
+++ /dev/null
@@ -1,119 +0,0 @@
-- name: Creating a handler if the directory doesn't exist should work
- sensu_handler:
- name: "handler"
- type: "pipe"
- command: "/bin/bash"
- state: "present"
-
-- name: Insert junk JSON in a handlers file
- lineinfile:
- state: "present"
- create: "yes"
- path: "/etc/sensu/conf.d/handlers/handler.json"
- line: "{'foo' = bar}"
-
-- name: Configure a handler with an existing invalid file
- sensu_handler:
- name: "handler"
- type: "pipe"
- command: "/bin/bash"
- state: "present"
- register: handler
-
-- name: Configure a handler (again)
- sensu_handler:
- name: "handler"
- type: "pipe"
- command: "/bin/bash"
- state: "present"
- register: handler_twice
-
-- name: Retrieve configuration file
- slurp:
- src: "{{ handler['file'] }}"
- register: handler_config
-
-- name: Assert that handler data was set successfully and properly
- assert:
- that:
- - "handler is successful"
- - "handler is changed"
- - "handler_twice is successful"
- - "handler_twice is not changed"
- - "handler['name'] == 'handler'"
- - "handler['file'] == '/etc/sensu/conf.d/handlers/handler.json'"
- - "handler['config']['type'] == 'pipe'"
- - "handler['config']['command'] == '/bin/bash'"
- - "handler['config']['timeout'] == 10"
- - "handler['config']['handle_flapping'] == false"
- - "handler['config']['handle_silenced'] == false"
-
-- name: Assert that the handler configuration file is actually configured properly
- vars:
- config: "{{ handler_config.content | b64decode | from_json }}"
- assert:
- that:
- - "'handler' in config['handlers']"
- - "config['handlers']['handler']['type'] == 'pipe'"
- - "config['handlers']['handler']['command'] == '/bin/bash'"
- - "config['handlers']['handler']['timeout'] == 10"
- - "config['handlers']['handler']['handle_flapping'] == false"
- - "config['handlers']['handler']['handle_silenced'] == false"
-
-- name: Delete Sensu handler configuration
- sensu_handler:
- name: "handler"
- state: "absent"
- register: handler_delete
-
-- name: Delete Sensu handler configuration (again)
- sensu_handler:
- name: "handler"
- state: "absent"
- register: handler_delete_twice
-
-- name: Retrieve configuration file stat
- stat:
- path: "{{ handler['file'] }}"
- register: handler_stat
-
-- name: Assert that handler deletion was successful
- assert:
- that:
- - "handler_delete is successful"
- - "handler_delete is changed"
- - "handler_delete_twice is successful"
- - "handler_delete_twice is not changed"
- - "handler_stat.stat.exists == false"
-
-- name: Configuring a handler without a name should fail
- sensu_handler:
- type: "pipe"
- command: "/bin/bash"
- register: failure
- ignore_errors: true
-
-- name: Assert that configuring a handler without a name fails
- assert:
- that:
- - failure is failed
- - "'required arguments: name' in failure['msg']"
-
-- name: Configuring a handler without a type should fail
- sensu_handler:
- name: "pipe"
- command: "/bin/bash"
- register: failure
- ignore_errors: true
-
-- name: Assert that configuring a handler without a type fails
- assert:
- that:
- - failure is failed
- - "'the following are missing: type' in failure['msg']"
-
-- include: pipe.yml
-- include: tcp.yml
-- include: udp.yml
-- include: set.yml
-- include: transport.yml
diff --git a/test/integration/targets/sensu_handler/tasks/pipe.yml b/test/integration/targets/sensu_handler/tasks/pipe.yml
deleted file mode 100644
index 02f59a4cd1..0000000000
--- a/test/integration/targets/sensu_handler/tasks/pipe.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-# Note: Pipe handlers are also tested and used as part of basic main.yml coverage
-- name: Configuring a handler with missing pipe parameters should fail
- sensu_handler:
- name: "pipe"
- type: "pipe"
- register: failure
- ignore_errors: true
-
-- name: Assert that configuring a handler with missing pipe parameters fails
- assert:
- that:
- - failure is failed
- - "'the following are missing: command' in failure['msg']"
-
-- name: Configure a handler with pipe parameters
- sensu_handler:
- name: "pipe"
- type: "pipe"
- command: "/bin/bash"
- register: handler
diff --git a/test/integration/targets/sensu_handler/tasks/set.yml b/test/integration/targets/sensu_handler/tasks/set.yml
deleted file mode 100644
index 393d711dc3..0000000000
--- a/test/integration/targets/sensu_handler/tasks/set.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-- name: Configuring a handler with missing set parameters should fail
- sensu_handler:
- name: "set"
- type: "set"
- register: failure
- ignore_errors: true
-
-- name: Assert that configuring a handler with missing set parameters fails
- assert:
- that:
- - failure is failed
- - "'the following are missing: handlers' in failure['msg']"
-
-- name: Configure a set handler
- sensu_handler:
- name: "set"
- type: "set"
- handlers:
- - anotherhandler
- register: handler
-
-- name: Retrieve configuration file
- slurp:
- src: "{{ handler['file'] }}"
- register: handler_config
-
-- name: Validate set handler return data
- assert:
- that:
- - "handler is successful"
- - "handler is changed"
- - "handler['name'] == 'set'"
- - "handler['file'] == '/etc/sensu/conf.d/handlers/set.json'"
- - "handler['config']['type'] == 'set'"
- - "'anotherhandler' in handler['config']['handlers']"
- - "handler['config']['handle_flapping'] == false"
- - "handler['config']['handle_silenced'] == false"
-
-- name: Assert that the handler configuration file is actually configured properly
- vars:
- config: "{{ handler_config.content | b64decode | from_json }}"
- assert:
- that:
- - "'set' in config['handlers']"
- - "config['handlers']['set']['type'] == 'set'"
- - "'anotherhandler' in config['handlers']['set']['handlers']"
- - "config['handlers']['set']['handle_flapping'] == false"
- - "config['handlers']['set']['handle_silenced'] == false"
diff --git a/test/integration/targets/sensu_handler/tasks/tcp.yml b/test/integration/targets/sensu_handler/tasks/tcp.yml
deleted file mode 100644
index 076ea14e1e..0000000000
--- a/test/integration/targets/sensu_handler/tasks/tcp.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-- name: Configuring a handler with missing tcp parameters should fail
- sensu_handler:
- name: "tcp"
- type: "tcp"
- register: failure
- ignore_errors: true
-
-- name: Assert that configuring a handler with missing tcp parameters fails
- assert:
- that:
- - failure is failed
- - "'the following are missing: socket' in failure['msg']"
-
-- name: Configure a tcp handler
- sensu_handler:
- name: "tcp"
- type: "tcp"
- socket:
- host: 127.0.0.1
- port: 8000
- register: handler
-
-- name: Retrieve configuration file
- slurp:
- src: "{{ handler['file'] }}"
- register: handler_config
-
-- name: Validate tcp handler return data
- assert:
- that:
- - "handler is successful"
- - "handler is changed"
- - "handler['name'] == 'tcp'"
- - "handler['file'] == '/etc/sensu/conf.d/handlers/tcp.json'"
- - "handler['config']['type'] == 'tcp'"
- - "handler['config']['socket']['host'] == '127.0.0.1'"
- - "handler['config']['socket']['port'] == 8000"
- - "handler['config']['handle_flapping'] == false"
- - "handler['config']['handle_silenced'] == false"
-
-- name: Assert that the handler configuration file is actually configured properly
- vars:
- config: "{{ handler_config.content | b64decode | from_json }}"
- assert:
- that:
- - "'tcp' in config['handlers']"
- - "config['handlers']['tcp']['type'] == 'tcp'"
- - "config['handlers']['tcp']['socket']['host'] == '127.0.0.1'"
- - "config['handlers']['tcp']['socket']['port'] == 8000"
- - "config['handlers']['tcp']['handle_flapping'] == false"
- - "config['handlers']['tcp']['handle_silenced'] == false"
diff --git a/test/integration/targets/sensu_handler/tasks/transport.yml b/test/integration/targets/sensu_handler/tasks/transport.yml
deleted file mode 100644
index 34816194fa..0000000000
--- a/test/integration/targets/sensu_handler/tasks/transport.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-- name: Configuring a handler with missing transport parameters should fail
- sensu_handler:
- name: "transport"
- type: "transport"
- register: failure
- ignore_errors: true
-
-- name: Assert that configuring a handler with missing transport parameters fails
- assert:
- that:
- - failure is failed
- - "'the following are missing: pipe' in failure['msg']"
-
-- name: Configure a transport handler
- sensu_handler:
- name: "transport"
- type: "transport"
- pipe:
- type: "topic"
- name: "transport_handler"
- register: handler
-
-- name: Retrieve configuration file
- slurp:
- src: "{{ handler['file'] }}"
- register: handler_config
-
-- name: Validate transport handler return data
- assert:
- that:
- - "handler is successful"
- - "handler is changed"
- - "handler['name'] == 'transport'"
- - "handler['file'] == '/etc/sensu/conf.d/handlers/transport.json'"
- - "handler['config']['type'] == 'transport'"
- - "handler['config']['pipe']['type'] == 'topic'"
- - "handler['config']['pipe']['name'] == 'transport_handler'"
- - "handler['config']['handle_flapping'] == false"
- - "handler['config']['handle_silenced'] == false"
-
-- name: Assert that the handler configuration file is actually configured properly
- vars:
- config: "{{ handler_config.content | b64decode | from_json }}"
- assert:
- that:
- - "'transport' in config['handlers']"
- - "config['handlers']['transport']['type'] == 'transport'"
- - "config['handlers']['transport']['pipe']['type'] == 'topic'"
- - "config['handlers']['transport']['pipe']['name'] == 'transport_handler'"
- - "config['handlers']['transport']['handle_flapping'] == false"
- - "config['handlers']['transport']['handle_silenced'] == false"
diff --git a/test/integration/targets/sensu_handler/tasks/udp.yml b/test/integration/targets/sensu_handler/tasks/udp.yml
deleted file mode 100644
index 8f13a2a25e..0000000000
--- a/test/integration/targets/sensu_handler/tasks/udp.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-- name: Configuring a handler with missing udp parameters should fail
- sensu_handler:
- name: "udp"
- type: "udp"
- register: failure
- ignore_errors: true
-
-- name: Assert that configuring a handler with missing udp parameters fails
- assert:
- that:
- - failure is failed
- - "'the following are missing: socket' in failure['msg']"
-
-- name: Configure a udp handler
- sensu_handler:
- name: "udp"
- type: "udp"
- socket:
- host: 127.0.0.1
- port: 8000
- register: handler
-
-- name: Retrieve configuration file
- slurp:
- src: "{{ handler['file'] }}"
- register: handler_config
-
-- name: Validate udp handler return data
- assert:
- that:
- - "handler is successful"
- - "handler is changed"
- - "handler['name'] == 'udp'"
- - "handler['file'] == '/etc/sensu/conf.d/handlers/udp.json'"
- - "handler['config']['type'] == 'udp'"
- - "handler['config']['socket']['host'] == '127.0.0.1'"
- - "handler['config']['socket']['port'] == 8000"
- - "handler['config']['handle_flapping'] == false"
- - "handler['config']['handle_silenced'] == false"
-
-- name: Assert that the handler configuration file is actually configured properly
- vars:
- config: "{{ handler_config.content | b64decode | from_json }}"
- assert:
- that:
- - "'udp' in config['handlers']"
- - "config['handlers']['udp']['type'] == 'udp'"
- - "config['handlers']['udp']['socket']['host'] == '127.0.0.1'"
- - "config['handlers']['udp']['socket']['port'] == 8000"
- - "config['handlers']['udp']['handle_flapping'] == false"
- - "config['handlers']['udp']['handle_silenced'] == false"
diff --git a/test/integration/targets/supervisorctl/aliases b/test/integration/targets/supervisorctl/aliases
deleted file mode 100644
index 1dbdd80109..0000000000
--- a/test/integration/targets/supervisorctl/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group2
-skip/python3
-skip/aix
diff --git a/test/integration/targets/supervisorctl/files/sendProcessStdin.py b/test/integration/targets/supervisorctl/files/sendProcessStdin.py
deleted file mode 100755
index 4237339ae5..0000000000
--- a/test/integration/targets/supervisorctl/files/sendProcessStdin.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-import sys
-import time
-
-proc = sys.argv[1]
-value = sys.argv[2]
-username = sys.argv[3]
-password = sys.argv[4]
-
-if sys.version_info[0] == 2:
- from xmlrpclib import ServerProxy
- from urllib import quote
-else:
- from xmlrpc.client import ServerProxy
- from urllib.parse import quote
-
-if username:
- url = 'http://%s:%s@127.0.0.1:9001/RPC2' % (quote(username, safe=''), quote(password, safe=''))
-else:
- url = 'http://127.0.0.1:9001/RPC2'
-
-server = ServerProxy(url, verbose=True)
-server.supervisor.sendProcessStdin(proc, 'import sys; print(%s); sys.stdout.flush();\n' % value)
diff --git a/test/integration/targets/supervisorctl/tasks/install_Darwin.yml b/test/integration/targets/supervisorctl/tasks/install_Darwin.yml
deleted file mode 120000
index 7fe8a88f08..0000000000
--- a/test/integration/targets/supervisorctl/tasks/install_Darwin.yml
+++ /dev/null
@@ -1 +0,0 @@
-install_pip.yml \ No newline at end of file
diff --git a/test/integration/targets/supervisorctl/tasks/install_FreeBSD.yml b/test/integration/targets/supervisorctl/tasks/install_FreeBSD.yml
deleted file mode 120000
index 7fe8a88f08..0000000000
--- a/test/integration/targets/supervisorctl/tasks/install_FreeBSD.yml
+++ /dev/null
@@ -1 +0,0 @@
-install_pip.yml \ No newline at end of file
diff --git a/test/integration/targets/supervisorctl/tasks/install_Linux.yml b/test/integration/targets/supervisorctl/tasks/install_Linux.yml
deleted file mode 100644
index af1790ccad..0000000000
--- a/test/integration/targets/supervisorctl/tasks/install_Linux.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-- name: install supervisor
- package:
- name: supervisor
- state: present
-
-- name: disable supervisord system service
- service:
- name: '{{ supervisor_service_name }}'
- state: stopped
- enabled: no
diff --git a/test/integration/targets/supervisorctl/tasks/install_RedHat.yml b/test/integration/targets/supervisorctl/tasks/install_RedHat.yml
deleted file mode 120000
index 7fe8a88f08..0000000000
--- a/test/integration/targets/supervisorctl/tasks/install_RedHat.yml
+++ /dev/null
@@ -1 +0,0 @@
-install_pip.yml \ No newline at end of file
diff --git a/test/integration/targets/supervisorctl/tasks/install_Suse.yml b/test/integration/targets/supervisorctl/tasks/install_Suse.yml
deleted file mode 120000
index 7fe8a88f08..0000000000
--- a/test/integration/targets/supervisorctl/tasks/install_Suse.yml
+++ /dev/null
@@ -1 +0,0 @@
-install_pip.yml \ No newline at end of file
diff --git a/test/integration/targets/supervisorctl/tasks/install_pip.yml b/test/integration/targets/supervisorctl/tasks/install_pip.yml
deleted file mode 100644
index e3582160c8..0000000000
--- a/test/integration/targets/supervisorctl/tasks/install_pip.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- name: install supervisord
- pip:
- name: supervisor<4.0.0 # supervisor version 4.0.0 fails tests
- state: present
diff --git a/test/integration/targets/supervisorctl/tasks/main.yml b/test/integration/targets/supervisorctl/tasks/main.yml
deleted file mode 100644
index 38846b1c9f..0000000000
--- a/test/integration/targets/supervisorctl/tasks/main.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-- block:
- - command: 'echo {{ output_dir }}'
- register: echo
- - set_fact:
- remote_dir: '{{ echo.stdout }}'
-
- - include_vars: '{{ item }}'
- with_first_found:
- - files:
- - '{{ ansible_distribution }}.yml'
- - '{{ ansible_os_family }}.yml'
- - 'defaults.yml'
-
- - include_tasks: '{{ item }}'
- with_first_found:
- - files:
- - 'install_{{ ansible_distribution }}.yml' # CentOS
- - 'install_{{ ansible_os_family }}.yml' # RedHat
- - 'install_{{ ansible_system }}.yml' # Linux
-
- - include_tasks: test.yml
- with_items:
- - { username: '', password: '' }
- - { username: 'testétest', password: 'passéword' } # non-ASCII credentials
- loop_control:
- loop_var: credentials
-
- # setuptools is too old on RHEL/CentOS 6 (https://github.com/Supervisor/meld3/issues/23)
- when: ansible_os_family != 'RedHat' or ansible_distribution_major_version|int > 6
-
- always:
- - include_tasks: '{{ item }}'
- when: ansible_os_family != 'RedHat' or ansible_distribution_major_version|int > 6
- with_first_found:
- - files:
- - 'uninstall_{{ ansible_distribution }}.yml' # CentOS
- - 'uninstall_{{ ansible_os_family }}.yml' # RedHat
- - 'uninstall_{{ ansible_system }}.yml' # Linux
diff --git a/test/integration/targets/supervisorctl/tasks/start_supervisord.yml b/test/integration/targets/supervisorctl/tasks/start_supervisord.yml
deleted file mode 100644
index 49559cf07d..0000000000
--- a/test/integration/targets/supervisorctl/tasks/start_supervisord.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-- name: start supervisord
- command: 'supervisord -c {{ remote_dir }}/supervisord.conf'
-
-- name: wait_for supervisord
- wait_for:
- port: 9001
- host: 127.0.0.1
- timeout: 15
- state: started
diff --git a/test/integration/targets/supervisorctl/tasks/stop_supervisord.yml b/test/integration/targets/supervisorctl/tasks/stop_supervisord.yml
deleted file mode 100644
index 1bf48f2139..0000000000
--- a/test/integration/targets/supervisorctl/tasks/stop_supervisord.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-- name: stop supervisord
- command: "supervisorctl -c {{ remote_dir }}/supervisord.conf {% if credentials.username %}-u {{ credentials.username }} -p {{ credentials.password }}{% endif %} shutdown"
diff --git a/test/integration/targets/supervisorctl/tasks/test.yml b/test/integration/targets/supervisorctl/tasks/test.yml
deleted file mode 100644
index bfd2a06e17..0000000000
--- a/test/integration/targets/supervisorctl/tasks/test.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-- name: generate supervisor configuration
- template:
- src: supervisord.conf
- dest: '{{ remote_dir }}/supervisord.conf'
-
-- block:
- - import_tasks: start_supervisord.yml
-
- - import_tasks: test_start.yml
- - import_tasks: test_stop.yml
- always:
- - import_tasks: stop_supervisord.yml
diff --git a/test/integration/targets/supervisorctl/tasks/test_start.yml b/test/integration/targets/supervisorctl/tasks/test_start.yml
deleted file mode 100644
index cc56ac5a99..0000000000
--- a/test/integration/targets/supervisorctl/tasks/test_start.yml
+++ /dev/null
@@ -1,135 +0,0 @@
-- name: start py1 service (without auth)
- supervisorctl:
- name: 'pys:py1'
- state: started
- config: '{{ remote_dir }}/supervisord.conf'
- register: result
- when: credentials.username == ''
-
-- name: start py1 service (with auth)
- supervisorctl:
- name: 'pys:py1'
- state: started
- server_url: http://127.0.0.1:9001
- username: '{{ credentials.username }}'
- password: '{{ credentials.password }}'
- register: result_with_auth
- when: credentials.username != ''
-
-- command: "supervisorctl -c {{ remote_dir }}/supervisord.conf {% if credentials.username %}-u {{ credentials.username }} -p {{ credentials.password }}{% endif %} status"
-
-- name: check that service is started
- assert:
- that:
- - (result is success and result_with_auth is skip) or (result is skip and result_with_auth is changed)
- - (result is changed and result_with_auth is skip) or (result is skip and result_with_auth is changed)
-
-- name: check that service is running (part1) # py1.log content is checked below
- script: "files/sendProcessStdin.py 'pys:py1' 2 \
- '{{ credentials.username }}' '{{ credentials.password }}'"
-
-- name: try again to start py1 service (without auth)
- supervisorctl:
- name: pys:py1
- state: started
- config: '{{ remote_dir }}/supervisord.conf'
- register: result
- when: credentials.username == ''
-
-- name: try again to start py1 service (with auth)
- supervisorctl:
- name: pys:py1
- state: started
- server_url: http://127.0.0.1:9001
- username: '{{ credentials.username }}'
- password: '{{ credentials.password }}'
- register: result_with_auth
- when: credentials.username != ''
-
-- name: check that service is already running
- assert:
- that:
- - (result is success and result_with_auth is skip) or (result is skip and result_with_auth is success)
- - (result is not changed and result_with_auth is skip) or (result is skip and result_with_auth is not changed)
-
-- import_tasks: stop_supervisord.yml
-
-# supervisord has been stopped, check logfile
-- name: check that service has done what it was expected (part 2)
- shell: 'test "$(tail -2 {{ remote_dir }}/py1.log | head -1)" = ">>> 2"'
-
-# restart supervisord and py1 service for next tasks
-- import_tasks: start_supervisord.yml
-
-- name: start py1 service (without auth)
- supervisorctl:
- name: 'pys:py1'
- state: started
- config: '{{ remote_dir }}/supervisord.conf'
- register: result
- when: credentials.username == ''
-
-- name: start py1 service (with auth)
- supervisorctl:
- name: 'pys:py1'
- state: started
- server_url: http://127.0.0.1:9001
- username: '{{ credentials.username }}'
- password: '{{ credentials.password }}'
- register: result_with_auth
- when: credentials.username != ''
-
-- name: check that service is started
- assert:
- that:
- - (result is success and result_with_auth is skip) or (result is skip and result_with_auth is changed)
- - (result is changed and result_with_auth is skip) or (result is skip and result_with_auth is changed)
-
-#############################################################
-
-- name: Check an error occurs when wrong credentials are used
- supervisorctl:
- name: pys:py1
- state: started
- server_url: http://127.0.0.1:9001
- username: '{{ credentials.username }}wrong_creds'
- password: '{{ credentials.password }}same_here'
- register: result
- failed_when: result is not skip and (result is success or result is not failed)
- when: credentials.username != ''
-
-- name: Check an error occurs when wrong URL is used
- supervisorctl:
- name: pys:py1
- state: started
- server_url: http://127.0.0.1:9002
- register: result
- failed_when: result is success or result is not failed
-
-- name: Check an error occurs when wrong config path is used
- supervisorctl:
- name: 'pys:py1'
- state: started
- config: '{{ remote_dir }}/supervisord_not_here.conf'
- register: result
- failed_when: result is success or result is not failed
-
-- name: Check an error occurs wrong name is used (without auth)
- supervisorctl:
- name: 'invalid'
- state: started
- config: '{{ remote_dir }}/supervisord.conf'
- register: result
- failed_when: result is skip or (result is success or result is not failed)
- when: credentials.username == ''
-
-- name: Check an error occurs wrong name is used (with auth)
- supervisorctl:
- name: 'invalid'
- state: started
- config: '{{ remote_dir }}/supervisord.conf'
- username: '{{ credentials.username }}wrong_creds'
- password: '{{ credentials.password }}same_here'
- register: result
- failed_when: result is skip or (result is success or result is not failed)
- when: credentials.username != ''
diff --git a/test/integration/targets/supervisorctl/tasks/test_stop.yml b/test/integration/targets/supervisorctl/tasks/test_stop.yml
deleted file mode 100644
index faf6d79358..0000000000
--- a/test/integration/targets/supervisorctl/tasks/test_stop.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-- name: stop py1 service
- supervisorctl:
- name: 'pys:py1'
- state: stopped
- # test with 'server_url' parameter
- server_url: 'unix://{{ remote_dir }}/supervisord.sock'
- register: result
- when: credentials.username == ''
-
-- name: stop py1 service
- supervisorctl:
- name: 'pys:py1'
- state: stopped
- # test with unix socket
- server_url: 'unix://{{ remote_dir }}/supervisord.sock'
- username: '{{ credentials.username }}'
- password: '{{ credentials.password }}'
- register: result_with_auth
- when: credentials.username != ''
-
-- command: "supervisorctl -c {{ remote_dir }}/supervisord.conf {% if credentials.username %}-u {{ credentials.username }} -p {{ credentials.password }}{% endif %} status"
-
-- name: check that service is stopped
- assert:
- that:
- - (result is success and result_with_auth is skip) or (result is skip and result_with_auth is success)
- - (result is changed and result_with_auth is skip) or (result is skip and result_with_auth is changed)
-
-- name: "check that service isn't running"
- script: "files/sendProcessStdin.py 'pys:py1' 1 \
- '{{ credentials.username }}' '{{ credentials.password }}'"
- register: is_py1_alive
- failed_when: is_py1_alive is success
-
-- name: try again to stop py1 service (without auth)
- supervisorctl:
- name: pys:py1
- state: stopped
- # test with 'server_url' parameter
- server_url: 'unix://{{ remote_dir }}/supervisord.sock'
- register: result
- when: credentials.username == ''
-
-- name: try again to stop py1 service (with auth)
- supervisorctl:
- name: pys:py1
- state: stopped
- # test with unix socket
- server_url: 'unix://{{ remote_dir }}/supervisord.sock'
- username: '{{ credentials.username }}'
- password: '{{ credentials.password }}'
- register: result_with_auth
- when: credentials.username != ''
-
-- name: check that service is already stopped
- assert:
- that:
- - (result is success and result_with_auth is skip) or (result is skip and result_with_auth is success)
- - (result is not changed and result_with_auth is skip) or (result is skip and result_with_auth is not changed)
diff --git a/test/integration/targets/supervisorctl/tasks/uninstall_Darwin.yml b/test/integration/targets/supervisorctl/tasks/uninstall_Darwin.yml
deleted file mode 120000
index 577ca5abbf..0000000000
--- a/test/integration/targets/supervisorctl/tasks/uninstall_Darwin.yml
+++ /dev/null
@@ -1 +0,0 @@
-uninstall_pip.yml \ No newline at end of file
diff --git a/test/integration/targets/supervisorctl/tasks/uninstall_FreeBSD.yml b/test/integration/targets/supervisorctl/tasks/uninstall_FreeBSD.yml
deleted file mode 120000
index 577ca5abbf..0000000000
--- a/test/integration/targets/supervisorctl/tasks/uninstall_FreeBSD.yml
+++ /dev/null
@@ -1 +0,0 @@
-uninstall_pip.yml \ No newline at end of file
diff --git a/test/integration/targets/supervisorctl/tasks/uninstall_Linux.yml b/test/integration/targets/supervisorctl/tasks/uninstall_Linux.yml
deleted file mode 100644
index 300239730b..0000000000
--- a/test/integration/targets/supervisorctl/tasks/uninstall_Linux.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- name: uninstall supervisor
- package:
- name: supervisor
- state: absent
diff --git a/test/integration/targets/supervisorctl/tasks/uninstall_RedHat.yml b/test/integration/targets/supervisorctl/tasks/uninstall_RedHat.yml
deleted file mode 120000
index 577ca5abbf..0000000000
--- a/test/integration/targets/supervisorctl/tasks/uninstall_RedHat.yml
+++ /dev/null
@@ -1 +0,0 @@
-uninstall_pip.yml \ No newline at end of file
diff --git a/test/integration/targets/supervisorctl/tasks/uninstall_Suse.yml b/test/integration/targets/supervisorctl/tasks/uninstall_Suse.yml
deleted file mode 120000
index 577ca5abbf..0000000000
--- a/test/integration/targets/supervisorctl/tasks/uninstall_Suse.yml
+++ /dev/null
@@ -1 +0,0 @@
-uninstall_pip.yml \ No newline at end of file
diff --git a/test/integration/targets/supervisorctl/tasks/uninstall_pip.yml b/test/integration/targets/supervisorctl/tasks/uninstall_pip.yml
deleted file mode 100644
index 5bb5ee130e..0000000000
--- a/test/integration/targets/supervisorctl/tasks/uninstall_pip.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-- name: uninstall supervisord
- pip:
- name: supervisor
- state: absent
diff --git a/test/integration/targets/supervisorctl/templates/supervisord.conf b/test/integration/targets/supervisorctl/templates/supervisord.conf
deleted file mode 100644
index 2e805bd8d9..0000000000
--- a/test/integration/targets/supervisorctl/templates/supervisord.conf
+++ /dev/null
@@ -1,42 +0,0 @@
-[supervisord]
-pidfile={{ remote_dir }}/supervisord.pid
-logfile={{ remote_dir }}/supervisord.log
-
-[program:py1]
-command={{ ansible_python.executable }} -i -u -
-user={{ ansible_user_id }}
-autostart=false
-autorestart=false
-stdout_logfile={{ remote_dir }}/py1.log
-redirect_stderr=yes
-
-[program:py2]
-command={{ ansible_python.executable }} -i -u -
-user={{ ansible_user_id }}
-autostart=false
-autorestart=false
-stdout_logfile={{ remote_dir }}/py2.log
-redirect_stderr=yes
-
-[group:pys]
-programs=py1,py2
-
-[unix_http_server]
-file={{ remote_dir }}/supervisord.sock
-{% if credentials.username is defined and credentials.username|default(false, boolean=true) %}
-username = {{ credentials.username }}
-password = {{ credentials.password }}
-{% endif %}
-
-[inet_http_server]
-port=127.0.0.1:9001
-{% if credentials.username is defined and credentials.username|default(false, boolean=true) %}
-username = {{ credentials.username }}
-password = {{ credentials.password }}
-{% endif %}
-
-[supervisorctl]
-serverurl=unix://{{ remote_dir }}/supervisord.sock
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
diff --git a/test/integration/targets/supervisorctl/vars/Debian.yml b/test/integration/targets/supervisorctl/vars/Debian.yml
deleted file mode 100644
index d4b1bdcca9..0000000000
--- a/test/integration/targets/supervisorctl/vars/Debian.yml
+++ /dev/null
@@ -1 +0,0 @@
-supervisor_service_name: supervisor
diff --git a/test/integration/targets/supervisorctl/vars/defaults.yml b/test/integration/targets/supervisorctl/vars/defaults.yml
deleted file mode 100644
index fc3aa0a81c..0000000000
--- a/test/integration/targets/supervisorctl/vars/defaults.yml
+++ /dev/null
@@ -1 +0,0 @@
-supervisor_service_name: supervisord
diff --git a/test/integration/targets/synchronize-buildah/aliases b/test/integration/targets/synchronize-buildah/aliases
deleted file mode 100644
index 30b10b7ccb..0000000000
--- a/test/integration/targets/synchronize-buildah/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-non_local
-needs/root
-unsupported
diff --git a/test/integration/targets/synchronize-buildah/inventory b/test/integration/targets/synchronize-buildah/inventory
deleted file mode 100644
index 2eeaf31350..0000000000
--- a/test/integration/targets/synchronize-buildah/inventory
+++ /dev/null
@@ -1 +0,0 @@
-buildah-container ansible_host=buildah-container ansible_connection=buildah
diff --git a/test/integration/targets/synchronize-buildah/roles/test_buildah_synchronize/files/normal_file.txt b/test/integration/targets/synchronize-buildah/roles/test_buildah_synchronize/files/normal_file.txt
deleted file mode 100644
index 33257a92c0..0000000000
--- a/test/integration/targets/synchronize-buildah/roles/test_buildah_synchronize/files/normal_file.txt
+++ /dev/null
@@ -1 +0,0 @@
-abnormal content
diff --git a/test/integration/targets/synchronize-buildah/roles/test_buildah_synchronize/tasks/main.yml b/test/integration/targets/synchronize-buildah/roles/test_buildah_synchronize/tasks/main.yml
deleted file mode 100644
index 251c81768c..0000000000
--- a/test/integration/targets/synchronize-buildah/roles/test_buildah_synchronize/tasks/main.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# test code for the synchronize module
-# (c) 2014, James Tanner <tanner.jc@gmail.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- name: cleanup old files
- file:
- path: '{{ output_dir }}'
- state: absent
-
-- name: ensure the target directory exists
- file:
- path: '{{ output_dir }}'
- state: directory
-
-- name: synchronize file to new filename
- synchronize:
- src: normal_file.txt
- dest: '{{ output_dir }}/remote_file.txt'
- register: sync_result
-
-- assert:
- that:
- - "'changed' in sync_result"
- - "sync_result.changed == true"
- - "'cmd' in sync_result"
- - "'rsync' in sync_result.cmd"
- - "'msg' in sync_result"
- - "sync_result.msg.startswith('<f+')"
- - "sync_result.msg.endswith('+ normal_file.txt\n')"
-
-- name: test that the file was really copied over
- stat:
- path: "{{ output_dir }}/remote_file.txt"
- register: stat_result
-
-- assert:
- that:
- - "stat_result.stat.exists == True"
- - "stat_result.stat.checksum == '4f11fb5cd9fe0171ea6fab02ae33f65138f3e44e'"
-
-- name: test that the file is not copied a second time
- synchronize: src=normal_file.txt dest={{output_dir}}/remote_file.txt
- register: sync_result
-
-- assert:
- that:
- - "sync_result.changed == False"
-
-- name: cleanup old files
- file:
- path: '{{ output_dir }}'
- state: absent
diff --git a/test/integration/targets/synchronize-buildah/runme.sh b/test/integration/targets/synchronize-buildah/runme.sh
deleted file mode 100755
index e9e4811f77..0000000000
--- a/test/integration/targets/synchronize-buildah/runme.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-
-set -ux
-
-CONTAINER_NAME=buildah-container
-
-buildah rm $CONTAINER_NAME >/dev/null 2>/dev/null
-
-set -e
-
-buildah from --name $CONTAINER_NAME docker.io/library/centos:7
-trap '{ buildah rm $CONTAINER_NAME; }' EXIT
-buildah run $CONTAINER_NAME -- yum install -y rsync
-
-ansible-playbook test_synchronize_buildah.yml -c buildah -i inventory -vv
diff --git a/test/integration/targets/synchronize-buildah/test_synchronize_buildah.yml b/test/integration/targets/synchronize-buildah/test_synchronize_buildah.yml
deleted file mode 100644
index e1cc96657e..0000000000
--- a/test/integration/targets/synchronize-buildah/test_synchronize_buildah.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-- hosts: buildah-container
- connection: buildah
- gather_facts: no
- vars:
- output_dir: /tmp/ansible_test_synchronize_buildah
- roles:
- - test_buildah_synchronize
diff --git a/test/integration/targets/timezone/aliases b/test/integration/targets/timezone/aliases
deleted file mode 100644
index a68be2b03b..0000000000
--- a/test/integration/targets/timezone/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
diff --git a/test/integration/targets/timezone/tasks/main.yml b/test/integration/targets/timezone/tasks/main.yml
deleted file mode 100644
index 91858918a2..0000000000
--- a/test/integration/targets/timezone/tasks/main.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Because hwclock usually isn't available inside Docker containers in Shippable
-# these tasks will detect if hwclock works and only run hwclock tests if it is
-# supported. That is why it is recommended to run these tests locally with
-# `--docker-privileged` on centos6, centos7 and ubuntu1404 images. Example
-# command to run on centos6:
-#
-# ansible-test integration --docker centos6 --docker-privileged -v timezone
-
-##
-## set path to timezone config files
-##
-
-- name: set config file path on Debian
- set_fact:
- timezone_config_file: '/etc/timezone'
- when: ansible_os_family == 'Debian'
-
-- name: set config file path on RedHat
- set_fact:
- timezone_config_file: '/etc/sysconfig/clock'
- when: ansible_os_family == 'RedHat'
-
-##
-## set path to hwclock config files
-##
-
-- name: set config file path on Debian
- set_fact:
- hwclock_config_file: '/etc/default/rcS'
- when: ansible_os_family == 'Debian'
-
-- name: set config file path on RedHat
- set_fact:
- hwclock_config_file: '/etc/sysconfig/clock'
- when: ansible_os_family == 'RedHat'
-
-####
-#### timezone tests
-####
-
-- name: make sure the dbus service is started under systemd
- systemd:
- name: dbus
- state: started
- when:
- - ansible_service_mgr == 'systemd'
- - ansible_distribution == 'Fedora'
- - ansible_facts.distribution_major_version is version('31', '<')
-
-
-- name: Run tests
- # Skip tests on Fedora 31 because dbus fails to start unless the container is run in priveleged mode.
- # Even then, it starts unreliably. This may be due to the move to cgroup v2 in Fedora 31.
- # https://www.redhat.com/sysadmin/fedora-31-control-group-v2
- when: ansible_facts.distribution ~ ansible_facts.distribution_major_version != 'Fedora31'
- block:
- - name: set timezone to Etc/UTC
- timezone:
- name: Etc/UTC
- register: original_timezone
-
- - block:
- - include_tasks: test.yml
- always:
- - name: Restore original system timezone - {{ original_timezone.diff.before.name }}
- timezone:
- name: "{{ original_timezone.diff.before.name }}"
- when: original_timezone is changed
diff --git a/test/integration/targets/timezone/tasks/test.yml b/test/integration/targets/timezone/tasks/test.yml
deleted file mode 100644
index ec0d854df0..0000000000
--- a/test/integration/targets/timezone/tasks/test.yml
+++ /dev/null
@@ -1,607 +0,0 @@
-##
-## test setting timezone, idempotency and checkmode
-##
-
-- name: set timezone to Australia/Brisbane (checkmode)
- timezone:
- name: Australia/Brisbane
- check_mode: yes
- register: timezone_set_checkmode
-
-- name: ensure timezone reported as changed in checkmode
- assert:
- that:
- - timezone_set_checkmode.changed
- - timezone_set_checkmode.diff.after.name == 'Australia/Brisbane'
- - timezone_set_checkmode.diff.before.name == 'Etc/UTC'
-
-- name: ensure checkmode didn't change the timezone
- command: cmp /etc/localtime /usr/share/zoneinfo/Australia/Brisbane
- register: result
- failed_when: result is not failed
- changed_when: no
-
-- name: ensure that checkmode didn't update the timezone in the config file
- command: egrep '^(TIME)?ZONE="Etc/UTC"' {{ timezone_config_file }}
- when:
- - ansible_service_mgr != 'systemd'
- - ansible_os_family == 'RedHat'
-
-- name: ensure that checkmode didn't update the timezone in the config file
- command: egrep '^Etc/UTC' {{ timezone_config_file }}
- when:
- - ansible_service_mgr != 'systemd'
- - ansible_os_family == 'Debian'
-
-- name: set timezone to Australia/Brisbane
- timezone:
- name: Australia/Brisbane
- register: timezone_set
-
-- name: ensure timezone changed
- assert:
- that:
- - timezone_set.changed
- - timezone_set.diff.after.name == 'Australia/Brisbane'
- - timezone_set.diff.before.name == 'Etc/UTC'
-
-- name: ensure that the timezone is actually set
- command: cmp /etc/localtime /usr/share/zoneinfo/Australia/Brisbane
- changed_when: no
-
-- name: ensure that the timezone is updated in the config file
- command: egrep '^(TIME)?ZONE="Australia/Brisbane"' {{ timezone_config_file }}
- when:
- - ansible_service_mgr != 'systemd'
- - ansible_os_family == 'RedHat'
-
-- name: ensure that the timezone is updated in the config file
- command: egrep '^Australia/Brisbane' {{ timezone_config_file }}
- when:
- - ansible_service_mgr != 'systemd'
- - ansible_os_family == 'Debian'
-
-- name: set timezone to Australia/Brisbane again
- timezone:
- name: Australia/Brisbane
- register: timezone_again
-
-- name: ensure timezone idempotency
- assert:
- that:
- - not timezone_again.changed
-
-- name: set timezone to Australia/Brisbane again in checkmode
- timezone:
- name: Australia/Brisbane
- register: timezone_again_checkmode
-
-- name: set timezone idempotency (checkmode)
- assert:
- that:
- - not timezone_again_checkmode.changed
-
-##
-## tests for same timezones with different names
-##
-
-- name: check dpkg-reconfigure
- shell: type dpkg-reconfigure
- register: check_dpkg_reconfigure
- ignore_errors: yes
- changed_when: no
-
-- name: check timedatectl
- shell: type timedatectl && timedatectl
- register: check_timedatectl
- ignore_errors: yes
- changed_when: no
-
-- block:
- - name: set timezone to Etc/UTC
- timezone:
- name: Etc/UTC
-
- - name: change timezone from Etc/UTC to UTC
- timezone:
- name: UTC
- register: timezone_etcutc_to_utc
-
- - name: check timezone changed from Etc/UTC to UTC
- assert:
- that:
- - timezone_etcutc_to_utc.changed
- - timezone_etcutc_to_utc.diff.before.name == 'Etc/UTC'
- - timezone_etcutc_to_utc.diff.after.name == 'UTC'
-
- - name: change timezone from UTC to Etc/UTC
- timezone:
- name: Etc/UTC
- register: timezone_utc_to_etcutc
-
- - name: check timezone changed from UTC to Etc/UTC
- assert:
- that:
- - timezone_utc_to_etcutc.changed
- - timezone_utc_to_etcutc.diff.before.name == 'UTC'
- - timezone_utc_to_etcutc.diff.after.name == 'Etc/UTC'
-
- when:
- # FIXME: Due to the bug of the dpkg-reconfigure, those tests failed on non-systemd debian
- - check_dpkg_reconfigure.rc != 0 or check_timedatectl.rc == 0
-
-##
-## no systemd tests for timezone
-##
-
-- block:
- ##
- ## test with empty config file
- ##
-
- - name: empty config file
- command: cp /dev/null {{ timezone_config_file }}
-
- - name: set timezone to Europe/Belgrade (empty config file)
- timezone:
- name: Europe/Belgrade
- register: timezone_empty_conf
-
- - name: check if timezone set (empty config file)
- assert:
- that:
- - timezone_empty_conf.changed
- - timezone_empty_conf.diff.after.name == 'Europe/Belgrade'
- - timezone_empty_conf.diff.before.name == 'n/a'
-
- - name: check if the timezone is actually set (empty config file)
- command: cmp /etc/localtime /usr/share/zoneinfo/Europe/Belgrade
- changed_when: no
-
-
- ##
- ## test with deleted config file
- ##
-
- - name: remove config file
- file:
- path: '{{ timezone_config_file }}'
- state: absent
-
- - name: set timezone to Europe/Belgrade (no config file)
- timezone:
- name: Europe/Belgrade
- register: timezone_missing_conf
-
- - name: check if timezone set (no config file)
- assert:
- that:
- - timezone_missing_conf.changed
- - timezone_missing_conf.diff.after.name == 'Europe/Belgrade'
- - timezone_missing_conf.diff.before.name == 'n/a'
-
- - name: check if the timezone is actually set (no config file)
- command: cmp /etc/localtime /usr/share/zoneinfo/Europe/Belgrade
- changed_when: no
-
-
- ##
- ## test with /etc/localtime as symbolic link to a zoneinfo file
- ##
-
- - name: create symlink /etc/locatime -> /usr/share/zoneinfo/Etc/UTC
- file:
- src: /usr/share/zoneinfo/Etc/UTC
- dest: /etc/localtime
- state: link
- force: yes
-
- - name: set timezone to Europe/Belgrade (over symlink)
- timezone:
- name: Europe/Belgrade
- register: timezone_symllink
-
- - name: check if timezone set (over symlink)
- assert:
- that:
- - timezone_symllink.changed
- - timezone_symllink.diff.after.name == 'Europe/Belgrade'
- - timezone_symllink.diff.before.name == 'Etc/UTC'
-
- - name: check if the timezone is actually set (over symlink)
- command: cmp /etc/localtime /usr/share/zoneinfo/Europe/Belgrade
- changed_when: no
-
-
- ##
- ## test with /etc/localtime as broken symbolic link
- ##
-
- - name: set timezone to a broken symlink
- file:
- src: /tmp/foo
- dest: /etc/localtime
- state: link
- force: yes
-
- - name: set timezone to Europe/Belgrade (over broken symlink)
- timezone:
- name: Europe/Belgrade
- register: timezone_symllink_broken
-
- - name: check if timezone set (over broken symlink)
- assert:
- that:
- - timezone_symllink_broken.changed
- - timezone_symllink_broken.diff.after.name == 'Europe/Belgrade'
- - timezone_symllink_broken.diff.before.name == 'n/a'
-
- - name: check if the timezone is actually set (over broken symlink)
- command: cmp /etc/localtime /usr/share/zoneinfo/Europe/Belgrade
- changed_when: no
-
-
- ##
- ## test with /etc/localtime set manually using copy
- ##
-
- - name: set timezone manually by coping zone info file to /etc/localtime
- copy:
- src: /usr/share/zoneinfo/Etc/UTC
- dest: /etc/localtime
- remote_src: yes
-
- - name: set timezone to Europe/Belgrade (over copied file)
- timezone:
- name: Europe/Belgrade
- register: timezone_copied
-
- - name: check if timezone set (over copied file)
- assert:
- that:
- - timezone_copied.changed
- - timezone_copied.diff.after.name == 'Europe/Belgrade'
- - timezone_copied.diff.before.name == 'n/a'
-
- - name: check if the timezone is actually set (over copied file)
- command: cmp /etc/localtime /usr/share/zoneinfo/Europe/Belgrade
- changed_when: no
- when:
- - ansible_service_mgr != 'systemd'
- - timezone_config_file is defined
-
-
-####
-#### hwclock tests
-####
-
-- name: check if hwclock is supported in the environment
- command: hwclock --test
- register: hwclock_test
- ignore_errors: yes
-
-- name: check if timedatectl works in the environment
- command: timedatectl
- register: timedatectl_test
- ignore_errors: yes
-
-- name:
- set_fact:
- hwclock_supported: '{{ hwclock_test is successful or timedatectl_test is successful }}'
-##
-## test set hwclock, idempotency and checkmode
-##
-
-- block:
- - name: set hwclock to local
- timezone:
- hwclock: local
-
- - name: set hwclock to UTC (checkmode)
- timezone:
- hwclock: UTC
- check_mode: yes
- register: hwclock_set_checkmode
-
- - name: ensure hwclock reported as changed (checkmode)
- assert:
- that:
- - hwclock_set_checkmode.changed
- - hwclock_set_checkmode.diff.after.hwclock == 'UTC'
- - hwclock_set_checkmode.diff.before.hwclock == 'local'
-
- - block:
- - name: ensure that checkmode didn't update hwclock in /etc/adjtime
- command: grep ^UTC /etc/adjtime
- register: result
- failed_when: result is not failed
-
- - name: ensure that checkmode didn't update hwclock the config file
- command: grep ^UTC=no {{ hwclock_config_file }}
- when: ansible_service_mgr != 'systemd'
-
- - name: set hwclock to UTC
- timezone:
- hwclock: UTC
- register: hwclock_set
-
- - name: ensure hwclock changed
- assert:
- that:
- - hwclock_set.changed
- - hwclock_set.diff.after.hwclock == 'UTC'
- - hwclock_set.diff.before.hwclock == 'local'
-
- - block:
- - name: ensure that hwclock is updated in /etc/adjtime
- command: grep ^UTC /etc/adjtime
-
- - name: ensure that hwclock is updated in the config file
- command: grep ^UTC=yes {{ hwclock_config_file }}
- when: ansible_service_mgr != 'systemd'
-
- - name: set hwclock to RTC again
- timezone:
- hwclock: UTC
- register: hwclock_again
-
- - name: set hwclock idempotency
- assert:
- that:
- - not hwclock_again.changed
-
- - name: set hwclock to RTC again (checkmode)
- timezone:
- hwclock: UTC
- check_mode: yes
- register: hwclock_again_checkmode
-
- - name: set hwclock idempotency (checkmode)
- assert:
- that:
- - not hwclock_again_checkmode.changed
-
-
- ##
- ## no systemd tests for hwclock
- ##
-
- - block:
- ##
- ## test set hwclock with both /etc/adjtime and conf file deleted
- ##
-
- - name: remove /etc/adjtime and conf file
- file:
- path: '{{ item }}'
- state: absent
- with_items:
- - /etc/adjtime
- - '{{ hwclock_config_file }}'
-
- - name: set hwclock to UTC with deleted /etc/adjtime and conf file
- timezone:
- hwclock: UTC
- register: hwclock_set_utc_deleted_adjtime_and_conf
-
- - name: ensure hwclock changed with deleted /etc/adjtime and conf
- assert:
- that:
- - hwclock_set_utc_deleted_adjtime_and_conf.changed
- - hwclock_set_utc_deleted_adjtime_and_conf.diff.after.hwclock == 'UTC'
- - hwclock_set_utc_deleted_adjtime_and_conf.diff.before.hwclock == 'n/a'
-
-
- ##
- ## test set hwclock with /etc/adjtime deleted
- ##
-
- - name: remove /etc/adjtime
- file:
- path: '{{ item }}'
- state: absent
- with_items:
- - /etc/adjtime
-
- - name: set hwclock to UTC with deleted /etc/adjtime
- timezone:
- hwclock: UTC
- register: hwclock_set_utc_deleted_adjtime_utc
-
- - name: ensure hwclock changed with deleted /etc/adjtime
- assert:
- that:
- - not hwclock_set_utc_deleted_adjtime_utc.changed
- - hwclock_set_utc_deleted_adjtime_utc.diff.after.hwclock == 'UTC'
- - hwclock_set_utc_deleted_adjtime_utc.diff.before.hwclock == 'UTC'
-
- - name: set hwclock to LOCAL with deleted /etc/adjtime
- timezone:
- hwclock: local
- register: hwclock_set_local_deleted_adjtime_local
-
- - name: ensure hwclock changed to LOCAL with deleted /etc/adjtime
- assert:
- that:
- - hwclock_set_local_deleted_adjtime_local.changed
- - hwclock_set_local_deleted_adjtime_local.diff.after.hwclock == 'local'
- - hwclock_set_local_deleted_adjtime_local.diff.before.hwclock == 'UTC'
-
-
- ##
- ## test set hwclock with conf file deleted
- ##
-
- - name: remove conf file
- file:
- path: '{{ item }}'
- state: absent
- with_items:
- - '{{ hwclock_config_file }}'
-
- - name: set hwclock to UTC with deleted conf
- timezone:
- hwclock: UTC
- register: hwclock_set_utc_deleted_conf
-
- - name: ensure hwclock changed with deleted /etc/adjtime
- assert:
- that:
- - hwclock_set_utc_deleted_conf.changed
- - hwclock_set_utc_deleted_conf.diff.after.hwclock == 'UTC'
- - hwclock_set_utc_deleted_conf.diff.before.hwclock == 'n/a'
-
-
- ##
- ## test set hwclock with /etc/adjtime missing UTC/LOCAL strings
- ##
-
- - name: create /etc/adjtime without UTC/LOCAL
- copy:
- content: '0.0 0 0\n0'
- dest: /etc/adjtime
-
- - name: set hwclock to UTC with broken /etc/adjtime
- timezone:
- hwclock: UTC
- register: hwclock_set_utc_broken_adjtime
-
- - name: ensure hwclock doesn't report changed with broken /etc/adjtime
- assert:
- that:
- - not hwclock_set_utc_broken_adjtime.changed
- - hwclock_set_utc_broken_adjtime.diff.after.hwclock == 'UTC'
- - hwclock_set_utc_broken_adjtime.diff.before.hwclock == 'UTC'
-
- - name: set hwclock to LOCAL with broken /etc/adjtime
- timezone:
- hwclock: local
- register: hwclock_set_local_broken_adjtime
-
- - name: ensure hwclock changed to LOCAL with broken /etc/adjtime
- assert:
- that:
- - hwclock_set_local_broken_adjtime.changed
- - hwclock_set_local_broken_adjtime.diff.after.hwclock == 'local'
- - hwclock_set_local_broken_adjtime.diff.before.hwclock == 'UTC'
- when:
- - ansible_service_mgr != 'systemd'
- - hwclock_config_file is defined
-
- ####
- #### timezone + hwclock tests
- ####
-
- ##
- ## test set timezone and hwclock, idempotency and checkmode
- ##
-
- - name: set timezone to Etc/UTC and hwclock to local
- timezone:
- name: Etc/UTC
- hwclock: local
-
- - name: set timezone to Europe/Belgrade and hwclock to UTC (checkmode)
- timezone:
- name: Europe/Belgrade
- hwclock: UTC
- check_mode: yes
- register: tzclock_set_checkmode
-
- - name: ensure timezone and hwclock reported as changed in checkmode
- assert:
- that:
- - tzclock_set_checkmode.changed
- - tzclock_set_checkmode.diff.after.name == 'Europe/Belgrade'
- - tzclock_set_checkmode.diff.before.name == 'Etc/UTC'
- - tzclock_set_checkmode.diff.after.hwclock == 'UTC'
- - tzclock_set_checkmode.diff.before.hwclock == 'local'
-
- - name: ensure checkmode didn't change the timezone
- command: cmp /etc/localtime /usr/share/zoneinfo/Australia/Brisbane
- register: result
- failed_when: result is not failed
- changed_when: no
-
- - block:
- - name: ensure that checkmode didn't update the timezone in the config file
- command: egrep '^(TIME)?ZONE="Etc/UTC"' {{ timezone_config_file }}
- when:
- - ansible_os_family == 'RedHat'
-
- - name: ensure that checkmode didn't update the timezone in the config file
- command: egrep '^Etc/UTC' {{ timezone_config_file }}
- when:
- - ansible_os_family == 'Debian'
-
- - name: ensure that checkmode didn't update hwclock in /etc/adjtime
- command: grep ^UTC /etc/adjtime
- register: result
- failed_when: result is not failed
-
- - name: ensure that checkmode didn't update hwclock the config file
- command: grep ^UTC=no {{ hwclock_config_file }}
- when: ansible_service_mgr != 'systemd'
-
- - name: set timezone to Europe/Belgrade and hwclock to UTC
- timezone:
- name: Europe/Belgrade
- hwclock: UTC
- register: tzclock_set
-
- - name: ensure timezone and hwclock changed
- assert:
- that:
- - tzclock_set.changed
- - tzclock_set.diff.after.name == 'Europe/Belgrade'
- - tzclock_set.diff.before.name == 'Etc/UTC'
- - tzclock_set.diff.after.hwclock == 'UTC'
- - tzclock_set.diff.before.hwclock == 'local'
-
- - name: ensure that the timezone is actually set
- command: cmp /etc/localtime /usr/share/zoneinfo/Europe/Belgrade
- changed_when: no
-
- - block:
- - name: ensure that the timezone is updated in the config file
- command: egrep '^(TIME)?ZONE="Europe/Belgrade"' {{ timezone_config_file }}
- when:
- - ansible_os_family == 'RedHat'
-
- - name: ensure that the timezone is updated in the config file
- command: egrep 'Europe/Belgrade' {{ timezone_config_file }}
- when:
- - ansible_os_family == 'Debian'
-
- - name: ensure that hwclock is updated in /etc/adjtime
- command: grep ^UTC /etc/adjtime
-
- - name: ensure that hwclock is updated in the config file
- command: grep ^UTC=yes {{ hwclock_config_file }}
- when: ansible_service_mgr != 'systemd'
-
- - name: set timezone to Europe/Belgrade and hwclock to UTC again
- timezone:
- name: Europe/Belgrade
- hwclock: UTC
- register: tzclock_set_again
-
- - name: set timezone and hwclock idempotency
- assert:
- that:
- - not tzclock_set_again.changed
-
- - name: set timezone to Europe/Belgrade and hwclock to UTC again (checkmode)
- timezone:
- name: Europe/Belgrade
- hwclock: UTC
- register: tzclock_set_again_checkmode
-
- - name: set timezone and hwclock idempotency in checkmode
- assert:
- that:
- - not tzclock_set_again_checkmode.changed
-
- when:
- - ansible_system == 'Linux'
- - hwclock_supported
diff --git a/test/integration/targets/ufw/aliases b/test/integration/targets/ufw/aliases
deleted file mode 100644
index 045218a2e8..0000000000
--- a/test/integration/targets/ufw/aliases
+++ /dev/null
@@ -1,11 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel8.0
-skip/rhel8.0b
-skip/rhel8.1b
-skip/docker
-needs/root
-destructive
-needs/target/setup_epel
diff --git a/test/integration/targets/ufw/tasks/main.yml b/test/integration/targets/ufw/tasks/main.yml
deleted file mode 100644
index 28198cd600..0000000000
--- a/test/integration/targets/ufw/tasks/main.yml
+++ /dev/null
@@ -1,34 +0,0 @@
----
-# Make sure ufw is installed
-- name: Install EPEL repository (RHEL only)
- include_role:
- name: setup_epel
- when: ansible_distribution == 'RedHat'
-- name: Install iptables (SuSE only)
- package:
- name: iptables
- become: yes
- when: ansible_os_family == 'Suse'
-- name: Install ufw
- become: yes
- package:
- name: ufw
-
-# Run the tests
-- block:
- - include_tasks: run-test.yml
- with_fileglob:
- - "tests/*.yml"
- become: yes
-
- # Cleanup
- always:
- - pause:
- # ufw creates backups of the rule files with a timestamp; if reset is called
- # twice in a row fast enough (so that both timestamps are taken in the same second),
- # the second call will notice that the backup files are already there and fail.
- # Waiting one second fixes this problem.
- seconds: 1
- - name: Reset ufw to factory defaults and disable
- ufw:
- state: reset
diff --git a/test/integration/targets/ufw/tasks/run-test.yml b/test/integration/targets/ufw/tasks/run-test.yml
deleted file mode 100644
index e9c5d2929c..0000000000
--- a/test/integration/targets/ufw/tasks/run-test.yml
+++ /dev/null
@@ -1,21 +0,0 @@
----
-- pause:
- # ufw creates backups of the rule files with a timestamp; if reset is called
- # twice in a row fast enough (so that both timestamps are taken in the same second),
- # the second call will notice that the backup files are already there and fail.
- # Waiting one second fixes this problem.
- seconds: 1
-- name: Reset ufw to factory defaults
- ufw:
- state: reset
-- name: Disable ufw
- ufw:
- # Some versions of ufw have a bug which won't disable on reset.
- # That's why we explicitly deactivate here. See
- # https://bugs.launchpad.net/ufw/+bug/1810082
- state: disabled
-- name: "Loading tasks from {{ item }}"
- include_tasks: "{{ item }}"
-- name: Reset to factory defaults
- ufw:
- state: reset
diff --git a/test/integration/targets/ufw/tasks/tests/basic.yml b/test/integration/targets/ufw/tasks/tests/basic.yml
deleted file mode 100644
index 3c625112f3..0000000000
--- a/test/integration/targets/ufw/tasks/tests/basic.yml
+++ /dev/null
@@ -1,402 +0,0 @@
----
-# ############################################
-- name: Make sure it is off
- ufw:
- state: disabled
-- name: Enable (check mode)
- ufw:
- state: enabled
- check_mode: yes
- register: enable_check
-- name: Enable
- ufw:
- state: enabled
- register: enable
-- name: Enable (idempotency)
- ufw:
- state: enabled
- register: enable_idem
-- name: Enable (idempotency, check mode)
- ufw:
- state: enabled
- check_mode: yes
- register: enable_idem_check
-- assert:
- that:
- - enable_check is changed
- - enable is changed
- - enable_idem is not changed
- - enable_idem_check is not changed
-
-# ############################################
-- name: ipv4 allow (check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- check_mode: yes
- register: ipv4_allow_check
-- name: ipv4 allow
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- register: ipv4_allow
-- name: ipv4 allow (idempotency)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- register: ipv4_allow_idem
-- name: ipv4 allow (idempotency, check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- check_mode: yes
- register: ipv4_allow_idem_check
-- assert:
- that:
- - ipv4_allow_check is changed
- - ipv4_allow is changed
- - ipv4_allow_idem is not changed
- - ipv4_allow_idem_check is not changed
-
-# ############################################
-- name: delete ipv4 allow (check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- delete: yes
- check_mode: yes
- register: delete_ipv4_allow_check
-- name: delete ipv4 allow
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- delete: yes
- register: delete_ipv4_allow
-- name: delete ipv4 allow (idempotency)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- delete: yes
- register: delete_ipv4_allow_idem
-- name: delete ipv4 allow (idempotency, check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- delete: yes
- check_mode: yes
- register: delete_ipv4_allow_idem_check
-- assert:
- that:
- - delete_ipv4_allow_check is changed
- - delete_ipv4_allow is changed
- - delete_ipv4_allow_idem is not changed
- - delete_ipv4_allow_idem_check is not changed
-
-# ############################################
-- name: ipv6 allow (check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- check_mode: yes
- register: ipv6_allow_check
-- name: ipv6 allow
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- register: ipv6_allow
-- name: ipv6 allow (idempotency)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- register: ipv6_allow_idem
-- name: ipv6 allow (idempotency, check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- check_mode: yes
- register: ipv6_allow_idem_check
-- assert:
- that:
- - ipv6_allow_check is changed
- - ipv6_allow is changed
- - ipv6_allow_idem is not changed
- - ipv6_allow_idem_check is not changed
-
-# ############################################
-- name: delete ipv6 allow (check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- delete: yes
- check_mode: yes
- register: delete_ipv6_allow_check
-- name: delete ipv6 allow
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- delete: yes
- register: delete_ipv6_allow
-- name: delete ipv6 allow (idempotency)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- delete: yes
- register: delete_ipv6_allow_idem
-- name: delete ipv6 allow (idempotency, check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- delete: yes
- check_mode: yes
- register: delete_ipv6_allow_idem_check
-- assert:
- that:
- - delete_ipv6_allow_check is changed
- - delete_ipv6_allow is changed
- - delete_ipv6_allow_idem is not changed
- - delete_ipv6_allow_idem_check is not changed
-
-
-# ############################################
-- name: ipv4 allow (check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- check_mode: yes
- register: ipv4_allow_check
-- name: ipv4 allow
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- register: ipv4_allow
-- name: ipv4 allow (idempotency)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- register: ipv4_allow_idem
-- name: ipv4 allow (idempotency, check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- check_mode: yes
- register: ipv4_allow_idem_check
-- assert:
- that:
- - ipv4_allow_check is changed
- - ipv4_allow is changed
- - ipv4_allow_idem is not changed
- - ipv4_allow_idem_check is not changed
-
-# ############################################
-- name: delete ipv4 allow (check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- delete: yes
- check_mode: yes
- register: delete_ipv4_allow_check
-- name: delete ipv4 allow
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- delete: yes
- register: delete_ipv4_allow
-- name: delete ipv4 allow (idempotency)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- delete: yes
- register: delete_ipv4_allow_idem
-- name: delete ipv4 allow (idempotency, check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: 0.0.0.0
- delete: yes
- check_mode: yes
- register: delete_ipv4_allow_idem_check
-- assert:
- that:
- - delete_ipv4_allow_check is changed
- - delete_ipv4_allow is changed
- - delete_ipv4_allow_idem is not changed
- - delete_ipv4_allow_idem_check is not changed
-
-# ############################################
-- name: ipv6 allow (check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- check_mode: yes
- register: ipv6_allow_check
-- name: ipv6 allow
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- register: ipv6_allow
-- name: ipv6 allow (idempotency)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- register: ipv6_allow_idem
-- name: ipv6 allow (idempotency, check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- check_mode: yes
- register: ipv6_allow_idem_check
-- assert:
- that:
- - ipv6_allow_check is changed
- - ipv6_allow is changed
- - ipv6_allow_idem is not changed
- - ipv6_allow_idem_check is not changed
-
-# ############################################
-- name: delete ipv6 allow (check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- delete: yes
- check_mode: yes
- register: delete_ipv6_allow_check
-- name: delete ipv6 allow
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- delete: yes
- register: delete_ipv6_allow
-- name: delete ipv6 allow (idempotency)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- delete: yes
- register: delete_ipv6_allow_idem
-- name: delete ipv6 allow (idempotency, check mode)
- ufw:
- rule: allow
- port: 23
- to_ip: "::"
- delete: yes
- check_mode: yes
- register: delete_ipv6_allow_idem_check
-- assert:
- that:
- - delete_ipv6_allow_check is changed
- - delete_ipv6_allow is changed
- - delete_ipv6_allow_idem is not changed
- - delete_ipv6_allow_idem_check is not changed
-
-# ############################################
-- name: Reload ufw
- ufw:
- state: reloaded
- register: reload
-- name: Reload ufw (check mode)
- ufw:
- state: reloaded
- check_mode: yes
- register: reload_check
-- assert:
- that:
- - reload is changed
- - reload_check is changed
-
-# ############################################
-- name: Disable (check mode)
- ufw:
- state: disabled
- check_mode: yes
- register: disable_check
-- name: Disable
- ufw:
- state: disabled
- register: disable
-- name: Disable (idempotency)
- ufw:
- state: disabled
- register: disable_idem
-- name: Disable (idempotency, check mode)
- ufw:
- state: disabled
- check_mode: yes
- register: disable_idem_check
-- assert:
- that:
- - disable_check is changed
- - disable is changed
- - disable_idem is not changed
- - disable_idem_check is not changed
-
-# ############################################
-- name: Re-enable
- ufw:
- state: enabled
-- name: Reset (check mode)
- ufw:
- state: reset
- check_mode: yes
- register: reset_check
-- pause:
- # Should not be needed, but since ufw is ignoring --dry-run for reset
- # (https://bugs.launchpad.net/ufw/+bug/1810082) we have to wait here as well.
- seconds: 1
-- name: Reset
- ufw:
- state: reset
- register: reset
-- pause:
- # ufw creates backups of the rule files with a timestamp; if reset is called
- # twice in a row fast enough (so that both timestamps are taken in the same second),
- # the second call will notice that the backup files are already there and fail.
- # Waiting one second fixes this problem.
- seconds: 1
-- name: Reset (idempotency)
- ufw:
- state: reset
- register: reset_idem
-- pause:
- # Should not be needed, but since ufw is ignoring --dry-run for reset
- # (https://bugs.launchpad.net/ufw/+bug/1810082) we have to wait here as well.
- seconds: 1
-- name: Reset (idempotency, check mode)
- ufw:
- state: reset
- check_mode: yes
- register: reset_idem_check
-- assert:
- that:
- - reset_check is changed
- - reset is changed
- - reset_idem is changed
- - reset_idem_check is changed
diff --git a/test/integration/targets/ufw/tasks/tests/global-state.yml b/test/integration/targets/ufw/tasks/tests/global-state.yml
deleted file mode 100644
index 69b2cde938..0000000000
--- a/test/integration/targets/ufw/tasks/tests/global-state.yml
+++ /dev/null
@@ -1,150 +0,0 @@
----
-- name: Enable ufw
- ufw:
- state: enabled
-
-# ############################################
-- name: Make sure logging is off
- ufw:
- logging: no
-- name: Logging (check mode)
- ufw:
- logging: yes
- check_mode: yes
- register: logging_check
-- name: Logging
- ufw:
- logging: yes
- register: logging
-- name: Get logging
- shell: |
- ufw status verbose | grep "^Logging:"
- register: ufw_logging
- environment:
- LC_ALL: C
-- name: Logging (idempotency)
- ufw:
- logging: yes
- register: logging_idem
-- name: Logging (idempotency, check mode)
- ufw:
- logging: yes
- check_mode: yes
- register: logging_idem_check
-- name: Logging (change, check mode)
- ufw:
- logging: full
- check_mode: yes
- register: logging_change_check
-- name: Logging (change)
- ufw:
- logging: full
- register: logging_change
-- name: Get logging
- shell: |
- ufw status verbose | grep "^Logging:"
- register: ufw_logging_change
- environment:
- LC_ALL: C
-- assert:
- that:
- - logging_check is changed
- - logging is changed
- - "ufw_logging.stdout == 'Logging: on (low)'"
- - logging_idem is not changed
- - logging_idem_check is not changed
- - "ufw_logging_change.stdout == 'Logging: on (full)'"
- - logging_change is changed
- - logging_change_check is changed
-
-# ############################################
-- name: Default (check mode)
- ufw:
- default: reject
- direction: incoming
- check_mode: yes
- register: default_check
-- name: Default
- ufw:
- default: reject
- direction: incoming
- register: default
-- name: Get defaults
- shell: |
- ufw status verbose | grep "^Default:"
- register: ufw_defaults
- environment:
- LC_ALL: C
-- name: Default (idempotency)
- ufw:
- default: reject
- direction: incoming
- register: default_idem
-- name: Default (idempotency, check mode)
- ufw:
- default: reject
- direction: incoming
- check_mode: yes
- register: default_idem_check
-- name: Default (change, check mode)
- ufw:
- default: allow
- direction: incoming
- check_mode: yes
- register: default_change_check
-- name: Default (change)
- ufw:
- default: allow
- direction: incoming
- register: default_change
-- name: Get defaults
- shell: |
- ufw status verbose | grep "^Default:"
- register: ufw_defaults_change
- environment:
- LC_ALL: C
-- name: Default (change again)
- ufw:
- default: deny
- direction: incoming
- register: default_change_2
-- name: Default (change incoming implicitly, check mode)
- ufw:
- default: allow
- check_mode: yes
- register: default_change_implicit_check
-- name: Default (change incoming implicitly)
- ufw:
- default: allow
- register: default_change_implicit
-- name: Get defaults
- shell: |
- ufw status verbose | grep "^Default:"
- register: ufw_defaults_change_implicit
- environment:
- LC_ALL: C
-- name: Default (change incoming implicitly, idempotent, check mode)
- ufw:
- default: allow
- check_mode: yes
- register: default_change_implicit_idem_check
-- name: Default (change incoming implicitly, idempotent)
- ufw:
- default: allow
- register: default_change_implicit_idem
-- assert:
- that:
- - default_check is changed
- - default is changed
- - "'reject (incoming)' in ufw_defaults.stdout"
- - default_idem is not changed
- - default_idem_check is not changed
- - default_change_check is changed
- - default_change is changed
- - "'allow (incoming)' in ufw_defaults_change.stdout"
- - default_change_2 is changed
- - default_change_implicit_check is changed
- - default_change_implicit is changed
- - default_change_implicit_idem_check is not changed
- - default_change_implicit_idem is not changed
- - "'allow (incoming)' in ufw_defaults_change_implicit.stdout"
diff --git a/test/integration/targets/ufw/tasks/tests/insert_relative_to.yml b/test/integration/targets/ufw/tasks/tests/insert_relative_to.yml
deleted file mode 100644
index 3bb44a0e27..0000000000
--- a/test/integration/targets/ufw/tasks/tests/insert_relative_to.yml
+++ /dev/null
@@ -1,80 +0,0 @@
----
-- name: Enable
- ufw:
- state: enabled
- register: enable
-
-# ## CREATE RULES ############################
-- name: ipv4
- ufw:
- rule: deny
- port: 22
- to_ip: 0.0.0.0
-- name: ipv4
- ufw:
- rule: deny
- port: 23
- to_ip: 0.0.0.0
-
-- name: ipv6
- ufw:
- rule: deny
- port: 122
- to_ip: "::"
-- name: ipv6
- ufw:
- rule: deny
- port: 123
- to_ip: "::"
-
-- name: first-ipv4
- ufw:
- rule: deny
- port: 10
- to_ip: 0.0.0.0
- insert: 0
- insert_relative_to: first-ipv4
-- name: last-ipv4
- ufw:
- rule: deny
- port: 11
- to_ip: 0.0.0.0
- insert: 0
- insert_relative_to: last-ipv4
-
-- name: first-ipv6
- ufw:
- rule: deny
- port: 110
- to_ip: "::"
- insert: 0
- insert_relative_to: first-ipv6
-- name: last-ipv6
- ufw:
- rule: deny
- port: 111
- to_ip: "::"
- insert: 0
- insert_relative_to: last-ipv6
-
-# ## CHECK RESULT ############################
-- name: Get rules
- shell: |
- ufw status | grep DENY | cut -f 1-2 -d ' ' | grep -E "^(0\.0\.0\.0|::) [123]+"
- # Note that there was also a rule "ff02::fb mDNS" on at least one CI run;
- # to ignore these, the extra filtering (grepping for DENY and the regex) makes
- # sure to remove all rules not added here.
- register: ufw_status
-- assert:
- that:
- - ufw_status.stdout_lines == expected_stdout
- vars:
- expected_stdout:
- - "0.0.0.0 10"
- - "0.0.0.0 22"
- - "0.0.0.0 11"
- - "0.0.0.0 23"
- - ":: 110"
- - ":: 122"
- - ":: 111"
- - ":: 123"
diff --git a/test/integration/targets/ufw/tasks/tests/interface.yml b/test/integration/targets/ufw/tasks/tests/interface.yml
deleted file mode 100644
index 776a72f879..0000000000
--- a/test/integration/targets/ufw/tasks/tests/interface.yml
+++ /dev/null
@@ -1,81 +0,0 @@
-- name: Enable
- ufw:
- state: enabled
-
-- name: Route with interface in and out
- ufw:
- rule: allow
- route: yes
- interface_in: foo
- interface_out: bar
- proto: tcp
- from_ip: 1.1.1.1
- to_ip: 8.8.8.8
- from_port: 1111
- to_port: 2222
-
-- name: Route with interface in
- ufw:
- rule: allow
- route: yes
- interface_in: foo
- proto: tcp
- from_ip: 1.1.1.1
- from_port: 1111
-
-- name: Route with interface out
- ufw:
- rule: allow
- route: yes
- interface_out: bar
- proto: tcp
- from_ip: 1.1.1.1
- from_port: 1111
-
-- name: Non-route with interface in
- ufw:
- rule: allow
- interface_in: foo
- proto: tcp
- from_ip: 1.1.1.1
- from_port: 3333
-
-- name: Non-route with interface out
- ufw:
- rule: allow
- interface_out: bar
- proto: tcp
- from_ip: 1.1.1.1
- from_port: 4444
-
-- name: Check result
- shell: ufw status |grep -E '(ALLOW|DENY|REJECT|LIMIT)' |sed -E 's/[ \t]+/ /g'
- register: ufw_status
-
-- assert:
- that:
- - '"8.8.8.8 2222/tcp on bar ALLOW FWD 1.1.1.1 1111/tcp on foo " in stdout'
- - '"Anywhere ALLOW FWD 1.1.1.1 1111/tcp on foo " in stdout'
- - '"Anywhere on bar ALLOW FWD 1.1.1.1 1111/tcp " in stdout'
- - '"Anywhere on foo ALLOW 1.1.1.1 3333/tcp " in stdout'
- - '"Anywhere ALLOW OUT 1.1.1.1 4444/tcp on bar " in stdout'
- vars:
- stdout: '{{ ufw_status.stdout_lines }}'
-
-- name: Non-route with interface_in and interface_out
- ufw:
- rule: allow
- interface_in: foo
- interface_out: bar
- proto: tcp
- from_ip: 1.1.1.1
- from_port: 1111
- to_ip: 8.8.8.8
- to_port: 2222
- ignore_errors: yes
- register: ufw_non_route_iface
-
-- assert:
- that:
- - ufw_non_route_iface is failed
- - '"Only route rules" in ufw_non_route_iface.msg'
diff --git a/test/integration/targets/virt_net/aliases b/test/integration/targets/virt_net/aliases
deleted file mode 100644
index e2a1952cbc..0000000000
--- a/test/integration/targets/virt_net/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-shippable/posix/group1
-skip/aix
-skip/freebsd
-skip/osx
-needs/privileged
-destructive
diff --git a/test/integration/targets/virt_net/files/foobar.xml b/test/integration/targets/virt_net/files/foobar.xml
deleted file mode 100644
index 768e10eaa8..0000000000
--- a/test/integration/targets/virt_net/files/foobar.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<network>
- <name>foobar</name>
- <forward mode='nat'/>
- <ip address='192.168.125.1' netmask='255.255.255.0'>
- <dhcp>
- <range start='192.168.125.2' end='192.168.125.254'/>
- </dhcp>
- </ip>
-</network>
diff --git a/test/integration/targets/virt_net/tasks/main.yml b/test/integration/targets/virt_net/tasks/main.yml
deleted file mode 100644
index b6bd241906..0000000000
--- a/test/integration/targets/virt_net/tasks/main.yml
+++ /dev/null
@@ -1,85 +0,0 @@
----
-- include_vars: '{{ item }}'
- with_first_found:
- - "{{ ansible_distribution }}-{{ ansible_distribution_version}}.yml"
- - "{{ ansible_distribution }}-{{ ansible_distribution_major_version}}.yml"
- - "{{ ansible_distribution }}.yml"
- - "default.yml"
-
-- block:
- - name: Install libvirt packages
- package:
- name: "{{ virt_net_packages }}"
-
- - name: Start libvirt
- service:
- name: libvirtd
- state: started
-
- - name: Define the foobar network
- virt_net:
- command: define
- name: foobar
- xml: '{{ lookup("file", "foobar.xml") }}'
-
- - name: Define the foobar network (again)
- virt_net:
- command: define
- name: foobar
- xml: '{{ lookup("file", "foobar.xml") }}'
- register: second_virt_net_define
-
- - name: Start the default network
- virt_net:
- uri: qemu:///system
- command: start
- name: foobar
-
- - name: Start the default network (again)
- virt_net:
- uri: qemu:///system
- command: start
- name: foobar
- register: second_virt_net_start
-
- - name: Get facts for default network
- virt_net:
- uri: qemu:///system
- command: facts
- name: foobar
- register: virt_net_facts
-
- - name: Destroy the foobar network
- virt_net:
- command: destroy
- name: foobar
-
- - name: Undefine the foobar network
- virt_net:
- command: undefine
- name: foobar
- register: second_virt_net_define
-
- - name: Undefine the foobar network (again)
- virt_net:
- command: undefine
- name: foobar
- register: second_virt_net_undefine
-
- - name: Ensure the second calls return "unchanged"
- assert:
- that:
- - "second_virt_net_start is not changed"
- - "second_virt_net_define is not changed"
- - "second_virt_net_undefine is not changed"
-
- always:
- - name: Stop libvirt
- service:
- name: libvirtd
- state: stopped
-
- - name: Remove only the libvirt packages
- package:
- name: "{{ virt_net_packages|select('match', '.*libvirt.*')|list }}"
- state: absent
diff --git a/test/integration/targets/virt_net/vars/Debian.yml b/test/integration/targets/virt_net/vars/Debian.yml
deleted file mode 100644
index 7d06d77cd6..0000000000
--- a/test/integration/targets/virt_net/vars/Debian.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-virt_net_packages:
- - libvirt-daemon
- - libvirt-daemon-system
- - python-libvirt
- - python-lxml
diff --git a/test/integration/targets/virt_net/vars/Fedora-29.yml b/test/integration/targets/virt_net/vars/Fedora-29.yml
deleted file mode 100644
index dcf754dc9b..0000000000
--- a/test/integration/targets/virt_net/vars/Fedora-29.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-virt_net_packages:
- - libvirt
- - libvirt-daemon
- - python3-libvirt
- - python3-lxml
diff --git a/test/integration/targets/virt_net/vars/RedHat-7.yml b/test/integration/targets/virt_net/vars/RedHat-7.yml
deleted file mode 100644
index 263281fec8..0000000000
--- a/test/integration/targets/virt_net/vars/RedHat-7.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-virt_net_packages:
- - libvirt
- - libvirt-daemon
- - libvirt-python
- - python-lxml
diff --git a/test/integration/targets/virt_net/vars/RedHat-8.yml b/test/integration/targets/virt_net/vars/RedHat-8.yml
deleted file mode 100644
index dcf754dc9b..0000000000
--- a/test/integration/targets/virt_net/vars/RedHat-8.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-virt_net_packages:
- - libvirt
- - libvirt-daemon
- - python3-libvirt
- - python3-lxml
diff --git a/test/integration/targets/virt_net/vars/Ubuntu-16.04.yml b/test/integration/targets/virt_net/vars/Ubuntu-16.04.yml
deleted file mode 100644
index b9ad4aa66e..0000000000
--- a/test/integration/targets/virt_net/vars/Ubuntu-16.04.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-virt_net_packages:
- - libvirt-daemon
- - python-libvirt
- - python-lxml
diff --git a/test/integration/targets/virt_net/vars/Ubuntu-18.04.yml b/test/integration/targets/virt_net/vars/Ubuntu-18.04.yml
deleted file mode 100644
index b9ad4aa66e..0000000000
--- a/test/integration/targets/virt_net/vars/Ubuntu-18.04.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-virt_net_packages:
- - libvirt-daemon
- - python-libvirt
- - python-lxml
diff --git a/test/integration/targets/virt_net/vars/Ubuntu-18.10.yml b/test/integration/targets/virt_net/vars/Ubuntu-18.10.yml
deleted file mode 100644
index 7d06d77cd6..0000000000
--- a/test/integration/targets/virt_net/vars/Ubuntu-18.10.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-virt_net_packages:
- - libvirt-daemon
- - libvirt-daemon-system
- - python-libvirt
- - python-lxml
diff --git a/test/integration/targets/virt_net/vars/default.yml b/test/integration/targets/virt_net/vars/default.yml
deleted file mode 100644
index b9ad4aa66e..0000000000
--- a/test/integration/targets/virt_net/vars/default.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-virt_net_packages:
- - libvirt-daemon
- - python-libvirt
- - python-lxml
diff --git a/test/integration/targets/vultr_account_info/aliases b/test/integration/targets/vultr_account_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_account_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_account_info/tasks/main.yml b/test/integration/targets/vultr_account_info/tasks/main.yml
deleted file mode 100644
index 1dfa8c44f2..0000000000
--- a/test/integration/targets/vultr_account_info/tasks/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test get vultr account infos in check mode
- vultr_account_info:
- check_mode: yes
- register: result
-
-- name: verify test get vultr account infos in check mode
- assert:
- that:
- - result.vultr_account_info.balance is defined
- - result.vultr_account_info.last_payment_amount is defined
- - result.vultr_account_info.last_payment_date is defined
- - result.vultr_account_info.last_payment_amount is defined
-
-- name: test get vultr account fact
- vultr_account_info:
- register: result
-
-- name: verify test get vultr account infos
- assert:
- that:
- - result.vultr_account_info.balance is defined
- - result.vultr_account_info.last_payment_amount is defined
- - result.vultr_account_info.last_payment_date is defined
- - result.vultr_account_info.last_payment_amount is defined
diff --git a/test/integration/targets/vultr_block_storage/aliases b/test/integration/targets/vultr_block_storage/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_block_storage/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_block_storage/defaults/main.yml b/test/integration/targets/vultr_block_storage/defaults/main.yml
deleted file mode 100644
index 17be33cb0f..0000000000
--- a/test/integration/targets/vultr_block_storage/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_block_storage_name: "{{ vultr_resource_prefix }}-volume"
-vultr_block_storage_size: 10
-vultr_block_storage_region: New Jersey
diff --git a/test/integration/targets/vultr_block_storage/tasks/main.yml b/test/integration/targets/vultr_block_storage/tasks/main.yml
deleted file mode 100644
index 3ef16fa775..0000000000
--- a/test/integration/targets/vultr_block_storage/tasks/main.yml
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup
- vultr_block_storage:
- name: "{{ vultr_block_storage_name }}"
- state: absent
- register: result
-- name: verify setup
- assert:
- that:
- - result is success
-
-- name: test fail if missing name
- vultr_block_storage:
- register: result
- ignore_errors: yes
-- name: verify test fail if missing name
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: name"'
-
-- name: test fail if missing params for state=present
- vultr_block_storage:
- name: "{{ vultr_block_storage_name }}"
- register: result
- ignore_errors: yes
-- name: verify fail if missing params for state=present
- assert:
- that:
- - result is failed
- - 'result.msg == "state is present but all of the following are missing: size, region"'
-
-- name: test create block storage volume in check mode
- vultr_block_storage:
- name: "{{ vultr_block_storage_name }}"
- size: "{{ vultr_block_storage_size }}"
- region: "{{ vultr_block_storage_region }}"
- register: result
- check_mode: yes
-- name: verify test create server in check mode
- assert:
- that:
- - result is changed
-
-- name: test create block storage volume
- vultr_block_storage:
- name: "{{ vultr_block_storage_name }}"
- size: "{{ vultr_block_storage_size }}"
- region: "{{ vultr_block_storage_region }}"
- register: result
-
-- name: verify test create block storage volume
- assert:
- that:
- - result is changed
- - result.vultr_block_storage.name == "{{ vultr_block_storage_name }}"
- - result.vultr_block_storage.region == "{{ vultr_block_storage_region }}"
- - result.vultr_block_storage.size == 10
-
-- name: test create block storage volume idempotence
- vultr_block_storage:
- name: "{{ vultr_block_storage_name }}"
- size: "{{ vultr_block_storage_size }}"
- region: "{{ vultr_block_storage_region }}"
- register: result
-
-- name: verify test block storage volume idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_block_storage.name == "{{ vultr_block_storage_name }}"
- - result.vultr_block_storage.region == "{{ vultr_block_storage_region }}"
- - result.vultr_block_storage.size == 10
-
-- name: test destroy block storage volume in check mode
- vultr_block_storage:
- name: "{{ vultr_block_storage_name }}"
- state: absent
- register: result
- check_mode: yes
-
-- name: verify test destroy block storage volume in check mode
- assert:
- that:
- - result is changed
- - result.vultr_block_storage.name == "{{ vultr_block_storage_name }}"
-
-- name: test destroy block storage volume
- vultr_block_storage:
- name: "{{ vultr_block_storage_name }}"
- state: absent
- register: result
-
-- name: verify test destroy an existing block storage volume
- assert:
- that:
- - result is changed
- - result.vultr_block_storage.name == "{{ vultr_block_storage_name }}"
-
-- name: test destroy an existing block storage volume idempotence
- vultr_block_storage:
- name: "{{ vultr_block_storage_name }}"
- state: absent
- register: result
-
-- name: verify test destroy an existing block storage volume idempotence
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/vultr_block_storage_info/aliases b/test/integration/targets/vultr_block_storage_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_block_storage_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_block_storage_info/defaults/main.yml b/test/integration/targets/vultr_block_storage_info/defaults/main.yml
deleted file mode 100644
index 17be33cb0f..0000000000
--- a/test/integration/targets/vultr_block_storage_info/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_block_storage_name: "{{ vultr_resource_prefix }}-volume"
-vultr_block_storage_size: 10
-vultr_block_storage_region: New Jersey
diff --git a/test/integration/targets/vultr_block_storage_info/tasks/main.yml b/test/integration/targets/vultr_block_storage_info/tasks/main.yml
deleted file mode 100644
index 1777c25e3a..0000000000
--- a/test/integration/targets/vultr_block_storage_info/tasks/main.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather vultr block storage volume info - empty resource
- vultr_block_storage_info:
-
-- name: Create the block storage volume
- vultr_block_storage:
- name: '{{ vultr_block_storage_name }}'
- size: '{{ vultr_block_storage_size }}'
- region: '{{ vultr_block_storage_region }}'
-
-- name: test gather vultr block storage volume info in check mode
- vultr_block_storage_info:
- check_mode: yes
- register: result
-
-- name: verify test gather vultr block storage volume info in check mode
- assert:
- that:
- - result.vultr_block_storage_info|selectattr('name','equalto','{{ vultr_block_storage_name }}') | list | count == 1
-
-- name: test gather vultr block storage volume info
- vultr_block_storage_info:
- register: result
-
-- name: verify test gather vultr block storage volume info
- assert:
- that:
- - result.vultr_block_storage_info|selectattr('name','equalto','{{ vultr_block_storage_name }}') | list | count == 1
-
-- name: Delete the block storage volume
- vultr_block_storage:
- name: '{{ vultr_block_storage_name }}'
- state: absent
diff --git a/test/integration/targets/vultr_dns_domain/aliases b/test/integration/targets/vultr_dns_domain/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_dns_domain/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_dns_domain/defaults/main.yml b/test/integration/targets/vultr_dns_domain/defaults/main.yml
deleted file mode 100644
index 45cbf7287c..0000000000
--- a/test/integration/targets/vultr_dns_domain/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_dns_domain_name: "{{ vultr_resource_prefix }}-example-ansible.com"
diff --git a/test/integration/targets/vultr_dns_domain/tasks/main.yml b/test/integration/targets/vultr_dns_domain/tasks/main.yml
deleted file mode 100644
index 706783978a..0000000000
--- a/test/integration/targets/vultr_dns_domain/tasks/main.yml
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup
- vultr_dns_domain:
- name: "{{ vultr_dns_domain_name }}"
- state: absent
- register: result
-- name: verify setup
- assert:
- that:
- - result is success
-
-- name: test fail if missing name
- vultr_dns_domain:
- register: result
- ignore_errors: yes
-- name: verify test fail if missing name
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: name"'
-
-- name: test fail if missing params for state=present
- vultr_dns_domain:
- name: "{{ vultr_dns_domain_name }}"
- register: result
- ignore_errors: yes
-- name: verify fail if missing params for state=present
- assert:
- that:
- - result is failed
- - 'result.msg == "state is present but all of the following are missing: server_ip"'
-
-- name: test create dns domain in check mode
- vultr_dns_domain:
- name: "{{ vultr_dns_domain_name }}"
- server_ip: 10.10.10.10
- register: result
- check_mode: yes
-- name: verify test create dns domain in check mode
- assert:
- that:
- - result is changed
-
-- name: test create dns domain
- vultr_dns_domain:
- name: "{{ vultr_dns_domain_name }}"
- server_ip: 10.10.10.10
- register: result
-- name: verify test create dns domain
- assert:
- that:
- - result is changed
- - result.vultr_dns_domain.name == '{{ vultr_dns_domain_name }}'
-
-- name: test create dns domain idempotence
- vultr_dns_domain:
- name: "{{ vultr_dns_domain_name }}"
- server_ip: 10.10.10.10
- register: result
-- name: verify test create dns domain idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_dns_domain.name == '{{ vultr_dns_domain_name }}'
-
-- name: test absent dns domain in check mode
- vultr_dns_domain:
- name: "{{ vultr_dns_domain_name }}"
- state: absent
- register: result
- check_mode: yes
-- name: verify test absent dns domain in check mode
- assert:
- that:
- - result is changed
- - result.vultr_dns_domain.name == '{{ vultr_dns_domain_name }}'
-
-- name: test absent dns domain
- vultr_dns_domain:
- name: "{{ vultr_dns_domain_name }}"
- state: absent
- register: result
-- name: verify test absent dns domain
- assert:
- that:
- - result is changed
- - result.vultr_dns_domain.name == '{{ vultr_dns_domain_name }}'
-
-- name: test absent dns domain idempotence
- vultr_dns_domain:
- name: "{{ vultr_dns_domain_name }}"
- state: absent
- register: result
-- name: verify test absent dns domain idempotence
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/vultr_dns_domain_info/aliases b/test/integration/targets/vultr_dns_domain_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_dns_domain_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_dns_domain_info/defaults/main.yml b/test/integration/targets/vultr_dns_domain_info/defaults/main.yml
deleted file mode 100644
index a452ee128d..0000000000
--- a/test/integration/targets/vultr_dns_domain_info/defaults/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-vultr_resource_prefix: "vultr-test-prefix"
-dns_domain_name: "{{ vultr_resource_prefix }}-example-ansible.com"
-dns_domain_server_ip: 104.24.16.59
diff --git a/test/integration/targets/vultr_dns_domain_info/tasks/main.yml b/test/integration/targets/vultr_dns_domain_info/tasks/main.yml
deleted file mode 100644
index d58aa10850..0000000000
--- a/test/integration/targets/vultr_dns_domain_info/tasks/main.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: Create the record
- vultr_dns_domain:
- name: '{{ dns_domain_name }}'
- server_ip: '{{ dns_domain_server_ip }}'
-
-- name: test gather vultr dns domain info in check mode
- vultr_dns_domain_info:
- check_mode: yes
- register: result
-
-- name: verify test gather vultr dns domain info in check mode
- assert:
- that:
- - result.vultr_dns_domain_info|selectattr('domain','equalto','{{ dns_domain_name }}') | list | count == 1
-
-- name: test gather vultr dns domain info
- vultr_dns_domain_info:
- register: result
-
-- name: verify test gather vultr dns domain info
- assert:
- that:
- - result.vultr_dns_domain_info|selectattr('domain','equalto','{{ dns_domain_name }}') | list | count == 1
-
-- name: Delete the record
- vultr_dns_domain:
- name: '{{ dns_domain_name }}'
- server_ip: '{{ dns_domain_server_ip }}'
- state: absent
diff --git a/test/integration/targets/vultr_dns_record/aliases b/test/integration/targets/vultr_dns_record/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_dns_record/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_dns_record/defaults/main.yml b/test/integration/targets/vultr_dns_record/defaults/main.yml
deleted file mode 100644
index fb52cfd955..0000000000
--- a/test/integration/targets/vultr_dns_record/defaults/main.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_dns_domain_name: "{{ vultr_resource_prefix }}-example-ansible.com"
-vultr_dns_record_items:
-# Single A record
-- name: test-www
- data: 10.10.10.10
- ttl: 400
- update_data: 10.10.10.11
- update_ttl: 200
-
-# Multiple A records
-- name: test-www-multiple
- data: 10.10.11.10
- update_data: 10.10.11.11
- multiple: true
- update_ttl: 600
-
-# CNAME
-- name: test-cname
- data: www.ansible.com
- update_data: www.ansible.ch
- record_type: CNAME
-
-# Single Multiple MX record
-- data: mx1.example-ansible.com
- priority: 10
- update_priority: 20
- record_type: MX
-
-# Multiple MX records
-- data: mx2.example-ansible.com
- priority: 10
- update_data: mx1.example-ansible.com
- update_priority: 20
- record_type: MX
- multiple: true
diff --git a/test/integration/targets/vultr_dns_record/tasks/create_record.yml b/test/integration/targets/vultr_dns_record/tasks/create_record.yml
deleted file mode 100644
index 5f33eb1405..0000000000
--- a/test/integration/targets/vultr_dns_record/tasks/create_record.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test setup dns record
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- record_type: "{{ item.record_type | default(omit) }}"
- state: absent
- register: result
-- name: verify test setup dns record
- assert:
- that:
- - result is successful
-
-- name: test create a dns record in check mode
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.data }}"
- ttl: "{{ item.ttl | default(omit) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- priority: "{{ item.priority | default(omit) }}"
- check_mode: yes
- register: result
-- name: verify test create a dns record in check mode
- assert:
- that:
- - result is changed
-
-- name: test create a dns record
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.data }}"
- ttl: "{{ item.ttl | default(omit) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- priority: "{{ item.priority | default(omit) }}"
- register: result
-- name: verify test create a dns record
- assert:
- that:
- - result is changed
- - result.vultr_dns_record.data == "{{ item.data }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(0) }}
-
-- name: test create a dns record idempotence
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.data }}"
- ttl: "{{ item.ttl | default(omit) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- priority: "{{ item.priority | default(omit) }}"
- register: result
-- name: verify test create a dns record idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_dns_record.data == "{{ item.data }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(0) }}
diff --git a/test/integration/targets/vultr_dns_record/tasks/main.yml b/test/integration/targets/vultr_dns_record/tasks/main.yml
deleted file mode 100644
index 19419efcb5..0000000000
--- a/test/integration/targets/vultr_dns_record/tasks/main.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup dns domain
- vultr_dns_domain:
- name: "{{ vultr_dns_domain_name }}"
- server_ip: 10.10.10.10
- register: result
-- name: verify setup dns domain
- assert:
- that:
- - result is successful
-
-- include_tasks: test_fail_multiple.yml
-
-- include_tasks: record.yml
- with_items: "{{ vultr_dns_record_items }}"
diff --git a/test/integration/targets/vultr_dns_record/tasks/record.yml b/test/integration/targets/vultr_dns_record/tasks/record.yml
deleted file mode 100644
index c8c3926dc0..0000000000
--- a/test/integration/targets/vultr_dns_record/tasks/record.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- include_tasks: create_record.yml
-- include_tasks: update_record.yml
-- include_tasks: remove_record.yml
diff --git a/test/integration/targets/vultr_dns_record/tasks/remove_record.yml b/test/integration/targets/vultr_dns_record/tasks/remove_record.yml
deleted file mode 100644
index e776a492e5..0000000000
--- a/test/integration/targets/vultr_dns_record/tasks/remove_record.yml
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test remove a dns record in check mode
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.update_data | default(item.data) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- multiple: "{{ item.multiple | default(omit) }}"
- state: absent
- check_mode: yes
- register: result
-- name: verify test remove a dns record in check mode
- assert:
- that:
- - result is changed
- - result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.update_priority | default(item.priority | default(0)) }}
-
-- name: test remove second dns record in check mode
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.data | default(item.data) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- multiple: "{{ item.multiple | default(omit) }}"
- state: absent
- check_mode: yes
- register: result
- when: item.multiple is defined and item.multiple == true
-- name: verify test remove a dns record in check mode
- assert:
- that:
- - result is changed
- - result.vultr_dns_record.data == "{{ item.data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(0) }}
- when: item.multiple is defined and item.multiple == true
-
-- name: test remove a dns record
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.update_data | default(item.data) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- multiple: "{{ item.multiple | default(omit) }}"
- state: absent
- register: result
-- name: verify test remove a dns record
- assert:
- that:
- - result is changed
- - result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.update_priority | default(item.priority | default(0)) }}
-
-- name: test remove second dns record
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.data }}"
- record_type: "{{ item.record_type | default(omit) }}"
- multiple: "{{ item.multiple | default(omit) }}"
- state: absent
- register: result
- when: item.multiple is defined and item.multiple == true
-- name: verify test remove a dns record
- assert:
- that:
- - result is changed
- - result.vultr_dns_record.data == "{{ item.data }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(0) }}
- when: item.multiple is defined and item.multiple == true
-
-- name: test remove a dns record idempotence
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.update_data | default(item.data) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- multiple: "{{ item.multiple | default(omit) }}"
- state: absent
- register: result
-- name: verify test remove a dns record idempotence
- assert:
- that:
- - result is not changed
-
-- name: test remove second dns record idempotence
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.data }}"
- record_type: "{{ item.record_type | default(omit) }}"
- multiple: "{{ item.multiple | default(omit) }}"
- state: absent
- register: result
- when: item.multiple is defined and item.multiple == true
-- name: verify test remove a dns record idempotence
- assert:
- that:
- - result is not changed
- when: item.multiple is defined and item.multiple == true
diff --git a/test/integration/targets/vultr_dns_record/tasks/test_fail_multiple.yml b/test/integration/targets/vultr_dns_record/tasks/test_fail_multiple.yml
deleted file mode 100644
index a41d9db57e..0000000000
--- a/test/integration/targets/vultr_dns_record/tasks/test_fail_multiple.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup first dns record
- vultr_dns_record:
- name: test-multiple
- domain: "{{ vultr_dns_domain_name }}"
- data: 1.2.3.4
- multiple: yes
- register: result
-- name: verify setup a dns record
- assert:
- that:
- - result is successful
-
-- name: setup second dns record
- vultr_dns_record:
- name: test-multiple
- domain: "{{ vultr_dns_domain_name }}"
- data: 1.2.3.5
- multiple: yes
- register: result
-- name: verify setup second dns record
- assert:
- that:
- - result is successful
-
-- name: test-multiple fail multiple identical records found
- vultr_dns_record:
- name: test-multiple
- domain: "{{ vultr_dns_domain_name }}"
- state: absent
- register: result
- ignore_errors: yes
-- name: verify test fail multiple identical records found
- assert:
- that:
- - result is failed
-
-- name: test-multiple fail absent multiple identical records but not data
- vultr_dns_record:
- name: test-multiple
- domain: "{{ vultr_dns_domain_name }}"
- state: absent
- multiple: yes
- register: result
- ignore_errors: yes
-- name: verify test-multiple success absent multiple identical records found
- assert:
- that:
- - result is failed
- - "result.msg == 'multiple is True but all of the following are missing: data'"
-
-- name: test-multiple success absent multiple identical records second found
- vultr_dns_record:
- name: test-multiple
- domain: "{{ vultr_dns_domain_name }}"
- data: 1.2.3.5
- state: absent
- multiple: yes
- register: result
-- name: verify test-multiple success absent multiple identical records second found
- assert:
- that:
- - result is changed
-
-- name: test-multiple success absent multiple identical records first found
- vultr_dns_record:
- name: test-multiple
- domain: "{{ vultr_dns_domain_name }}"
- data: 1.2.3.4
- state: absent
- multiple: yes
- register: result
-- name: verify test-multiple success absent multiple identical records firstfound
- assert:
- that:
- - result is changed
diff --git a/test/integration/targets/vultr_dns_record/tasks/update_record.yml b/test/integration/targets/vultr_dns_record/tasks/update_record.yml
deleted file mode 100644
index 204ebda492..0000000000
--- a/test/integration/targets/vultr_dns_record/tasks/update_record.yml
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test update or add another dns record in check mode
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.update_data | default(item.data) }}"
- ttl: "{{ item.update_ttl | default(omit) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- priority: "{{ item.update_priority | default(omit) }}"
- multiple: "{{ item.multiple | default(omit) }}"
- check_mode: yes
- register: result
-- name: verify test updatein check mode
- assert:
- that:
- - result is changed
- - result.vultr_dns_record.data == "{{ item.data }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.ttl == {{ item.ttl | default(300) }}
- - result.vultr_dns_record.priority == {{ item.priority | default(0) }}
- when: item.multiple is undefined or item.multiple == false
-- name: verify test add another dns record in check mode
- assert:
- that:
- - result is changed
- - not result.vultr_dns_record
- when: item.multiple is defined and item.multiple == true
-
-- name: test update or add another dns record
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.update_data | default(item.data) }}"
- ttl: "{{ item.update_ttl | default(omit) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- priority: "{{ item.update_priority | default(omit) }}"
- multiple: "{{ item.multiple | default(omit) }}"
- register: result
-- name: verify test update a dns record
- assert:
- that:
- - result is changed
- - result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- - result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.priority == {{ item.update_priority | default(0) }}
-
-- name: test update or add another dns record idempotence
- vultr_dns_record:
- name: "{{ item.name | default(omit) }}"
- domain: "{{ vultr_dns_domain_name }}"
- data: "{{ item.update_data | default(item.data) }}"
- ttl: "{{ item.update_ttl | default(omit) }}"
- record_type: "{{ item.record_type | default(omit) }}"
- priority: "{{ item.update_priority | default(omit) }}"
- multiple: "{{ item.multiple | default(omit) }}"
- register: result
-- name: verify test update a dns record idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_dns_record.data == "{{ item.update_data | default(item.data) }}"
- - result.vultr_dns_record.name == "{{ item.name | default("") }}"
- - result.vultr_dns_record.ttl == {{ item.update_ttl | default(300) }}
- - result.vultr_dns_record.record_type == "{{ item.record_type | default('A') }}"
- - result.vultr_dns_record.priority == {{ item.update_priority | default(0) }}
diff --git a/test/integration/targets/vultr_firewall_group/aliases b/test/integration/targets/vultr_firewall_group/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_firewall_group/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_firewall_group/defaults/main.yml b/test/integration/targets/vultr_firewall_group/defaults/main.yml
deleted file mode 100644
index 7057b46678..0000000000
--- a/test/integration/targets/vultr_firewall_group/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_firewall_group_name: "{{ vultr_resource_prefix }}_firewall-group"
diff --git a/test/integration/targets/vultr_firewall_group/tasks/main.yml b/test/integration/targets/vultr_firewall_group/tasks/main.yml
deleted file mode 100644
index 577457c2d5..0000000000
--- a/test/integration/targets/vultr_firewall_group/tasks/main.yml
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup
- vultr_firewall_group:
- name: "{{ vultr_firewall_group_name }}"
- state: absent
- register: result
-- name: verify setup
- assert:
- that:
- - result is success
-
-- name: test fail if missing name
- vultr_firewall_group:
- register: result
- ignore_errors: yes
-- name: verify test fail if missing name
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: name"'
-
-- name: test create firewall group in check mode
- vultr_firewall_group:
- name: "{{ vultr_firewall_group_name }}"
- register: result
- check_mode: yes
-- name: verify test create firewall group in check mode
- assert:
- that:
- - result is changed
-
-- name: test create firewall group
- vultr_firewall_group:
- name: "{{ vultr_firewall_group_name }}"
- register: result
-- name: verify test create firewall group
- assert:
- that:
- - result is changed
- - result.vultr_firewall_group.name == '{{ vultr_firewall_group_name }}'
-
-- name: test create firewall group idempotence
- vultr_firewall_group:
- name: "{{ vultr_firewall_group_name }}"
-
- register: result
-- name: verify test create firewall group idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_firewall_group.name == '{{ vultr_firewall_group_name }}'
-
-- name: test absent firewall group in check mode
- vultr_firewall_group:
- name: "{{ vultr_firewall_group_name }}"
- state: absent
- register: result
- check_mode: yes
-- name: verify test absent firewall group in check mode
- assert:
- that:
- - result is changed
- - result.vultr_firewall_group.name == '{{ vultr_firewall_group_name }}'
-
-- name: test absent firewall group
- vultr_firewall_group:
- name: "{{ vultr_firewall_group_name }}"
- state: absent
- register: result
-- name: verify test absent firewall group
- assert:
- that:
- - result is changed
- - result.vultr_firewall_group.name == '{{ vultr_firewall_group_name }}'
-
-- name: test absent firewall group idempotence
- vultr_firewall_group:
- name: "{{ vultr_firewall_group_name }}"
- state: absent
- register: result
-- name: verify test absent firewall group idempotence
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/vultr_firewall_group_info/aliases b/test/integration/targets/vultr_firewall_group_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_firewall_group_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_firewall_group_info/defaults/main.yml b/test/integration/targets/vultr_firewall_group_info/defaults/main.yml
deleted file mode 100644
index e545fe42e1..0000000000
--- a/test/integration/targets/vultr_firewall_group_info/defaults/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-vultr_resource_prefix: "vultr-test-prefix"
-firewall_group_name: "{{ vultr_resource_prefix }}_firewall-group"
diff --git a/test/integration/targets/vultr_firewall_group_info/tasks/main.yml b/test/integration/targets/vultr_firewall_group_info/tasks/main.yml
deleted file mode 100644
index e813afd9a3..0000000000
--- a/test/integration/targets/vultr_firewall_group_info/tasks/main.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather vultr firewall group info - empty resources
- vultr_firewall_group_info:
-
-- name: Create the firewall group
- vultr_firewall_group:
- name: '{{ firewall_group_name }}'
-
-- name: test gather vultr firewall group info in check mode
- vultr_firewall_group_info:
- check_mode: yes
- register: result
-
-- name: verify test gather vultr firewall group info in check mode
- assert:
- that:
- - result.vultr_firewall_group_info|selectattr('description','equalto','{{ firewall_group_name }}') | list | count == 1
-
-- name: test gather vultr firewall group info
- vultr_firewall_group_info:
- register: result
-
-- name: verify test gather vultr firewall group info
- assert:
- that:
- - result.vultr_firewall_group_info|selectattr('description','equalto','{{ firewall_group_name }}') | list | count == 1
-
-- name: Delete the firewall group
- vultr_firewall_group:
- name: '{{ firewall_group_name }}'
- state: absent
diff --git a/test/integration/targets/vultr_firewall_rule/aliases b/test/integration/targets/vultr_firewall_rule/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_firewall_rule/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_firewall_rule/defaults/main.yml b/test/integration/targets/vultr_firewall_rule/defaults/main.yml
deleted file mode 100644
index 7057b46678..0000000000
--- a/test/integration/targets/vultr_firewall_rule/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_firewall_group_name: "{{ vultr_resource_prefix }}_firewall-group"
diff --git a/test/integration/targets/vultr_firewall_rule/tasks/main.yml b/test/integration/targets/vultr_firewall_rule/tasks/main.yml
deleted file mode 100644
index 44097434b3..0000000000
--- a/test/integration/targets/vultr_firewall_rule/tasks/main.yml
+++ /dev/null
@@ -1,475 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup firewall group
- vultr_firewall_group:
- name: "{{ vultr_firewall_group_name }}"
- register: result
-- name: verify setup firewall group
- assert:
- that:
- - result is success
-
-- name: setup firewall rule tcp
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- state: absent
- register: result
-- name: verify setup firewal rule
- assert:
- that:
- - result is success
-
-- name: setup firewall rule udp
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- state: absent
- register: result
-- name: verify setup firewal rule udp
- assert:
- that:
- - result is success
-
-- name: setup firewall rule udp v6
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- ip_version: v6
- state: absent
- register: result
-- name: verify setup firewal rule udp v6
- assert:
- that:
- - result is success
-
-- name: setup firewall rule port range
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- start_port: 8000
- end_port: 8080
- protocol: tcp
- cidr: 10.100.12.0/24
- state: absent
- register: result
- tags: tmp
-- name: verify setup firewal rule port range
- assert:
- that:
- - result is success
-
-- name: setup firewall rule icmp
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- protocol: icmp
- state: absent
- register: result
-- name: verify setup firewal rule
- assert:
- that:
- - result is success
-
-- name: test fail if missing group
- vultr_firewall_rule:
- register: result
- ignore_errors: yes
-- name: verify test fail if missing group
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: group"'
-
-- name: test create firewall rule tcp in check mode
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- register: result
- check_mode: true
-- name: verify test create firewall rule tcp in check mode
- assert:
- that:
- - result is changed
-
-- name: test create firewall rule tcp
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- register: result
-- name: verify test create firewall rule tcp
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "tcp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "0.0.0.0/0"
-
-- name: test create firewall rule tcp idempotence
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- register: result
-- name: verify test create firewall rule tcp idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "tcp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "0.0.0.0/0"
-
-- name: test create firewall rule udp in check mode
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- register: result
- check_mode: true
-- name: verify test create firewall rule udp in check mode
- assert:
- that:
- - result is changed
-
-- name: test create firewall rule udp
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- register: result
-- name: verify test create firewall rule udp
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "udp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "0.0.0.0/0"
-
-- name: test create firewall rule udp idempotence
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- register: result
-- name: verify test create firewall rule udp idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "udp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "0.0.0.0/0"
-
-- name: test create firewall rule udp v6 in check mode
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- ip_version: v6
- register: result
- check_mode: true
-- name: verify test create firewall rule udp v6 in check mode
- assert:
- that:
- - result is changed
-
-- name: test create firewall rule udp v6
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- ip_version: v6
- register: result
-- name: verify test create firewall rule udp v6
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "udp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "::/0"
-
-- name: test create firewall rule udp v6 idempotence
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- ip_version: v6
- register: result
-- name: verify test create firewall rule udp v6 idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "udp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "::/0"
-
-- name: test create firewall rule port range in check mode
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- start_port: 8000
- end_port: 8080
- protocol: tcp
- cidr: 10.100.12.0/24
- register: result
- check_mode: true
-- name: verify test create firewall rule port range in check mode
- assert:
- that:
- - result is changed
-
-- name: test create firewall rule port range
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- start_port: 8000
- end_port: 8080
- protocol: tcp
- cidr: 10.100.12.0/24
- register: result
-- name: verify test create firewall rule port range
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "tcp"
- - result.vultr_firewall_rule.start_port == 8000
- - result.vultr_firewall_rule.end_port == 8080
- - result.vultr_firewall_rule.cidr == "10.100.12.0/24"
-
-- name: test create firewall rule port range idempotence
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- start_port: 8000
- end_port: 8080
- protocol: tcp
- cidr: 10.100.12.0/24
- register: result
-- name: test create firewall rule port range idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "tcp"
- - result.vultr_firewall_rule.start_port == 8000
- - result.vultr_firewall_rule.end_port == 8080
- - result.vultr_firewall_rule.cidr == "10.100.12.0/24"
-
-- name: test create firewall rule icmp in check mode
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- protocol: icmp
- register: result
- check_mode: true
-- name: test create firewall rule icmp in check mode
- assert:
- that:
- - result is changed
-
-- name: test create firewall rule icmp
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- protocol: icmp
- register: result
-- name: test create firewall rule icmp
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "icmp"
-
-- name: test create firewall rule icmp idempotence
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- protocol: icmp
- register: result
-- name: test create firewall rule icmp idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "icmp"
-
-- name: test remove firewall rule icmp in check mode
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- protocol: icmp
- state: absent
- register: result
- check_mode: true
-- name: test remove firewall rule icmp in check mode
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "icmp"
-
-- name: test remove firewall rule icmp
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- protocol: icmp
- state: absent
- register: result
-- name: test remove firewall rule icmp
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "icmp"
-
-- name: test remove firewall rule icmp idempotence
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- protocol: icmp
- state: absent
- register: result
-- name: test remove firewall rule icmp idempotence
- assert:
- that:
- - result is not changed
-
-- name: test remove firewall rule tcp in check mode
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- state: absent
- register: result
- check_mode: true
-- name: verify test remove firewall rule tcp in check mode
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "tcp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "0.0.0.0/0"
-
-- name: test remove firewall rule tcp
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- state: absent
- register: result
-- name: verify test remove firewall rule tcp
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "tcp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "0.0.0.0/0"
-
-- name: test remove firewall rule tcp idempotence
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- state: absent
- register: result
-- name: verify test remove firewall rule tcp idempotence
- assert:
- that:
- - result is not changed
-
-- name: test remove firewall rule udp v6 in check mode
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- ip_version: v6
- state: absent
- register: result
- check_mode: true
-- name: verify test remove firewall rule udp v6 in check mode
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "udp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "::/0"
-
-- name: test remove firewall rule udp v6
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- ip_version: v6
- state: absent
- register: result
-- name: verify test remove firewall rule udp v6
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "udp"
- - result.vultr_firewall_rule.start_port == 53
- - result.vultr_firewall_rule.cidr == "::/0"
-
-- name: test remove firewall rule udp v6 idempotence
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- port: 53
- protocol: udp
- ip_version: v6
- state: absent
- register: result
-- name: verify test remove firewall rule udp v6 idempotence
- assert:
- that:
- - result is not changed
-
-- name: test remove firewall rule port range in check mode
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- start_port: 8000
- end_port: 8080
- protocol: tcp
- cidr: 10.100.12.0/24
- state: absent
- register: result
- check_mode: true
-- name: verify test remove firewall rule port range in check mode
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "tcp"
- - result.vultr_firewall_rule.start_port == 8000
- - result.vultr_firewall_rule.end_port == 8080
- - result.vultr_firewall_rule.cidr == "10.100.12.0/24"
-
-- name: test remove firewall rule port range
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- start_port: 8000
- end_port: 8080
- protocol: tcp
- cidr: 10.100.12.0/24
- state: absent
- register: result
-- name: verify test remove firewall rule port range
- assert:
- that:
- - result is changed
- - result.vultr_firewall_rule.action == "accept"
- - result.vultr_firewall_rule.protocol == "tcp"
- - result.vultr_firewall_rule.start_port == 8000
- - result.vultr_firewall_rule.end_port == 8080
- - result.vultr_firewall_rule.cidr == "10.100.12.0/24"
-
-- name: test remove firewall rule port range idempotence
- vultr_firewall_rule:
- group: "{{ vultr_firewall_group_name }}"
- start_port: 8000
- end_port: 8080
- protocol: tcp
- cidr: 10.100.12.0/24
- state: absent
- register: result
-- name: verify test remove firewall rule port range idempotence
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/vultr_network/aliases b/test/integration/targets/vultr_network/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_network/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_network/defaults/main.yml b/test/integration/targets/vultr_network/defaults/main.yml
deleted file mode 100644
index a3d9e59264..0000000000
--- a/test/integration/targets/vultr_network/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_network_name: "{{ vultr_resource_prefix }}_network"
-vultr_network_cidr: 192.168.42.0/24
-vultr_network_region: New Jersey
diff --git a/test/integration/targets/vultr_network/tasks/main.yml b/test/integration/targets/vultr_network/tasks/main.yml
deleted file mode 100644
index 7a7b0b1b28..0000000000
--- a/test/integration/targets/vultr_network/tasks/main.yml
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup
- vultr_network:
- name: "{{ vultr_network_name }}"
- state: absent
- register: result
-- name: verify setup
- assert:
- that:
- - result is success
-
-- name: test fail if missing name
- vultr_network:
- register: result
- ignore_errors: yes
-- name: verify test fail if missing name
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: name"'
-
-- name: test fail if missing params for state=present
- vultr_network:
- name: "{{ vultr_network_name }}"
- register: result
- ignore_errors: yes
-- name: verify fail if missing params for state=present
- assert:
- that:
- - result is failed
- - 'result.msg == "state is present but all of the following are missing: cidr, region"'
-
-- name: test create network in check mode
- vultr_network:
- name: "{{ vultr_network_name }}"
- cidr: "{{ vultr_network_cidr }}"
- region: "{{ vultr_network_region }}"
- register: result
- check_mode: yes
-- name: verify test create server in check mode
- assert:
- that:
- - result is changed
-
-- name: test create network
- vultr_network:
- name: "{{ vultr_network_name }}"
- cidr: "{{ vultr_network_cidr }}"
- region: "{{ vultr_network_region }}"
- register: result
-
-- name: verify test create network
- assert:
- that:
- - result is changed
- - result.vultr_network.name == "{{ vultr_network_name }}"
- - result.vultr_network.region == "{{ vultr_network_region }}"
- - result.vultr_network.v4_subnet == "{{ vultr_network_cidr.split('/')[0] }}"
- - result.vultr_network.v4_subnet_mask == 24
-
-- name: test create network idempotence
- vultr_network:
- name: "{{ vultr_network_name }}"
- cidr: "{{ vultr_network_cidr }}"
- region: "{{ vultr_network_region }}"
- register: result
-
-- name: verify test network idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_network.name == "{{ vultr_network_name }}"
- - result.vultr_network.region == "{{ vultr_network_region }}"
- - result.vultr_network.v4_subnet == "{{ vultr_network_cidr.split('/')[0] }}"
- - result.vultr_network.v4_subnet_mask == 24
-
-- name: test destroy network in check mode
- vultr_network:
- name: "{{ vultr_network_name }}"
- state: absent
- register: result
- check_mode: yes
-
-- name: verify test destroy network in check mode
- assert:
- that:
- - result is changed
- - result.vultr_network.name == "{{ vultr_network_name }}"
-
-- name: test destroy network volume
- vultr_network:
- name: "{{ vultr_network_name }}"
- state: absent
- register: result
-
-- name: verify test destroy an existing network
- assert:
- that:
- - result is changed
- - result.vultr_network.name == "{{ vultr_network_name }}"
-
-- name: test destroy an existing network idempotence
- vultr_network:
- name: "{{ vultr_network_name }}"
- state: absent
- register: result
-
-- name: verify test destroy an existing network idempotence
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/vultr_network_info/aliases b/test/integration/targets/vultr_network_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_network_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_network_info/defaults/main.yml b/test/integration/targets/vultr_network_info/defaults/main.yml
deleted file mode 100644
index 28e3e705b3..0000000000
--- a/test/integration/targets/vultr_network_info/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-vultr_resource_prefix: "vultr_test_prefix"
-vultr_network_name: "{{ vultr_resource_prefix }}_network"
-vultr_network_cidr: 192.168.42.0/24
-vultr_network_region: New Jersey
diff --git a/test/integration/targets/vultr_network_info/tasks/main.yml b/test/integration/targets/vultr_network_info/tasks/main.yml
deleted file mode 100644
index 90d45a08bc..0000000000
--- a/test/integration/targets/vultr_network_info/tasks/main.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather vultr network info - empty resources
- vultr_network_info:
-
-- name: Create the network
- vultr_network:
- name: '{{ vultr_network_name }}'
- cidr: '{{ vultr_network_cidr }}'
- region: '{{ vultr_network_region }}'
-
-- name: test gather vultr network info in check mode
- vultr_network_info:
- check_mode: yes
- register: result
-
-- name: verify test gather vultr network info in check mode
- assert:
- that:
- - result.vultr_network_info|selectattr('name','equalto','{{ vultr_network_name }}') | list | count == 1
-
-- name: test gather vultr network info
- vultr_network_info:
- register: result
-
-- name: verify test gather vultr network info
- assert:
- that:
- - result.vultr_network_info|selectattr('name','equalto','{{ vultr_network_name }}') | list | count == 1
-
-- name: Delete the script
- vultr_network:
- name: '{{ vultr_network_name }}'
- state: absent
diff --git a/test/integration/targets/vultr_os_info/aliases b/test/integration/targets/vultr_os_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_os_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_os_info/tasks/main.yml b/test/integration/targets/vultr_os_info/tasks/main.yml
deleted file mode 100644
index a48133e4ca..0000000000
--- a/test/integration/targets/vultr_os_info/tasks/main.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# Copyright (c) 2019, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test get vultr os infos in check mode
- vultr_os_info:
- check_mode: yes
- register: result
-
-- name: verify test get vultr os infos in check mode
- assert:
- that:
- - result.vultr_os_info|selectattr('name','equalto', 'CentOS 7 x64') | list | count == 1
-
-- name: test get vultr os fact
- vultr_os_info:
- register: result
-
-- name: verify test get vultr os infos
- assert:
- that:
- - result.vultr_os_info|selectattr('name','equalto', 'CentOS 7 x64') | list | count == 1
diff --git a/test/integration/targets/vultr_plan_info/aliases b/test/integration/targets/vultr_plan_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_plan_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_plan_info/tasks/main.yml b/test/integration/targets/vultr_plan_info/tasks/main.yml
deleted file mode 100644
index 6b3790325b..0000000000
--- a/test/integration/targets/vultr_plan_info/tasks/main.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather vultr plan info in check mode
- vultr_plan_info:
- check_mode: yes
- register: result
-
-- name: verify test gather vultr plan info in check mode
- assert:
- that:
- - result.vultr_plan_info|selectattr('name','equalto','16384 MB RAM,2x110 GB SSD,20.00 TB BW') | list | count == 1
-
-- name: test gather vultr plan info
- vultr_plan_info:
- register: result
-
-- name: verify test gather vultr plan info
- assert:
- that:
- - result.vultr_plan_info|selectattr('name','equalto','16384 MB RAM,2x110 GB SSD,20.00 TB BW') | list | count == 1
diff --git a/test/integration/targets/vultr_region_info/aliases b/test/integration/targets/vultr_region_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_region_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_region_info/tasks/main.yml b/test/integration/targets/vultr_region_info/tasks/main.yml
deleted file mode 100644
index adf8a8a46b..0000000000
--- a/test/integration/targets/vultr_region_info/tasks/main.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather vultr region info in check mode
- vultr_region_info:
- check_mode: yes
- register: result
-
-- name: verify test gather vultr region info in check mode
- assert:
- that:
- - result.vultr_region_info|selectattr('name','equalto','Atlanta') | list | count == 1
-
-- name: test gather vultr region info
- vultr_region_info:
- register: result
-
-- name: verify test gather vultr region info
- assert:
- that:
- - result.vultr_region_info|selectattr('name','equalto','Atlanta') | list | count == 1
diff --git a/test/integration/targets/vultr_server/aliases b/test/integration/targets/vultr_server/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_server/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_server/defaults/main.yml b/test/integration/targets/vultr_server/defaults/main.yml
deleted file mode 100644
index 2b6852956f..0000000000
--- a/test/integration/targets/vultr_server/defaults/main.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_server_name: "{{ vultr_resource_prefix }}_vm"
-vultr_server_ssh_keys:
-- name: key1
- key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAyWYItY+3w5b8PdGRoz0oY5mufqydW96naE+VM3JSvJFAUS08rAjQQpQ03ymoALeHQy6JVZbcgecxn6p0pAOINQdqufn4udPtOPCtMjNiPGpkSM9ah/6X5+kvyWMNrvlf+Ld4OOoszP5sAkgQzIbrFQAm41XknBUha0zkewZwfrVhain4pnDjV7wCcChId/Q/Gbi4xMtXkisznWcAJcueBs3EEZDKhJ5q0VeWSJEhYJDLFN1sOxF0AIUnMrOhfKQ/LjgREXPB6uCl899INUTXRNNjRpeMXyJ2wMMmOAbua2qEd1r13Bu1n+6A823Hzb33fyMXuqWnJwBJ4DCvMlGuEsfuOK+xk7DaBfLHbcM6fsPk0/4psTE6YLgC41remr6+u5ZWsY/faMtSnNPie8Z8Ov0DIYGdhbJjUXk1HomxRV9+ZfZ2Ob8iCwlaAQAyEUM6fs3Kxt8pBD8dx1HOkhsfBWPvuDr5y+kqE7H8/MuPDTc0QgH2pjUMpmw/XBwNDHshVEjrZvtICOjOLUJxcowLO1ivNYwPwowQxfisMy56LfYdjsOslBiqsrkAqvNGm1zu8wKHeqVN9w5l3yUELpvubfm9NKIvYcl6yWF36T0c5vE+g0DU/Jy4XpTj0hZG9QV2mRQcLJnd2pxQtJT7cPFtrn/+tgRxzjEtbDXummDV4sE= mail@renemoser.net"
-- name: key2
- key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoQ9S7V+CufAgwoehnf2TqsJ9LTsu8pUA3FgpS2mdVwcMcTs++8P5sQcXHLtDmNLpWN4k7NQgxaY1oXy5e25x/4VhXaJXWEt3luSw+Phv/PB2+aGLvqCUirsLTAD2r7ieMhd/pcVf/HlhNUQgnO1mupdbDyqZoGD/uCcJiYav8i/V7nJWJouHA8yq31XS2yqXp9m3VC7UZZHzUsVJA9Us5YqF0hKYeaGruIHR2bwoDF9ZFMss5t6/pzxMljU/ccYwvvRDdI7WX4o4+zLuZ6RWvsU6LGbbb0pQdB72tlV41fSefwFsk4JRdKbyV3Xjf25pV4IXOTcqhy+4JTB/jXxrF torwalds@github.com"
-
-vultr_server_plan_1: 1024 MB RAM,25 GB SSD,1.00 TB BW
-vultr_server_plan_2: 2048 MB RAM,55 GB SSD,2.00 TB BW
diff --git a/test/integration/targets/vultr_server/tasks/main.yml b/test/integration/targets/vultr_server/tasks/main.yml
deleted file mode 100644
index ac6a6f3f43..0000000000
--- a/test/integration/targets/vultr_server/tasks/main.yml
+++ /dev/null
@@ -1,551 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: absent
- register: result
-- name: verify setup
- assert:
- that:
- - result is success
-
-# Servers can only be destroyed 5 min after creation
-- name: wait for 5 min
- wait_for:
- when: result is changed
-
-- name: test fail if missing name
- vultr_server:
- register: result
- ignore_errors: yes
-- name: verify test fail if missing name
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: name"'
-
-- name: test fail if missing params for state=present
- vultr_server:
- name: "{{ vultr_server_name }}"
- register: result
- ignore_errors: yes
-- name: verify fail if missing params for state=present
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: os, plan, region"'
-
-- name: test fail if plan does not exist
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: does_not_exist
- region: Amsterdam
- register: result
- ignore_errors: yes
-- name: verify test fail if plan does not exist
- assert:
- that:
- - result is failed
- - 'result.msg == "Could not find plans with ID or name: does_not_exist"'
-
-- name: setup create ssh keys
- vultr_ssh_key:
- name: "{{ item.name }}"
- ssh_key: "{{ item.key }}"
- loop: "{{ vultr_server_ssh_keys }}"
-
-- name: test create server in check mode
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_1 }}"
- ssh_keys:
- - key1
- - key2
- region: Amsterdam
- state: started
- register: result
- check_mode: yes
-- name: verify test create server in check mode
- assert:
- that:
- - result is changed
-
-- name: test create server
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_1 }}"
- ssh_keys:
- - key1
- - key2
- region: Amsterdam
- state: started
- register: result
-- name: verify test create server
- assert:
- that:
- - result is changed
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_1
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.power_status == 'running'
-
-- name: test create server idempotence
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_1 }}"
- ssh_keys:
- - key1
- - key2
- region: Amsterdam
- state: started
- register: result
-- name: verify test create server idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_1
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test stop an existing server in check mode
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: stopped
- register: result
- check_mode: yes
-- name: verify test stop server in check mode
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test stop an existing server
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: stopped
- register: result
-- name: verify test stop an existing server
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'stopped'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test stop an existing server idempotence
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: stopped
- register: result
-- name: verify test stop an existing server idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_server.power_status == 'stopped'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test start an existing server in check mode
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: started
- register: result
- check_mode: yes
-- name: verify test start an existing server in check mode
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'stopped'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test start an existing server
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: started
- register: result
-- name: verify test start an existing server
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test start an existing server idempotence
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: started
- register: result
-- name: verify test start an existing server idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test update plan for server in check mode without force
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_2 }}"
- region: Amsterdam
- register: result
- check_mode: yes
-- name: verify test update plan for server in check mode without force
- assert:
- that:
- - result is not changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_1
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test update plan for server without force
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_2 }}"
- region: Amsterdam
- register: result
-- name: verify test update plan for server without force
- assert:
- that:
- - result is not changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_1
- - result.vultr_server.region == 'Amsterdam'
-
-- name: setup firewall group
- vultr_firewall_group:
- name: test_firewall_group
- register: result
-- name: verify test create firewall group
- assert:
- that:
- - result is success
-
-- name: test fail with unknown firewall group
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- region: Amsterdam
- firewall_group: does not exist
- tag: test_tag
- register: result
- ignore_errors: yes
- check_mode: yes
-- name: verify test fail with unknown firewall group
- assert:
- that:
- - result is failed
- - result.msg.startswith('Could not find')
-
-- name: test update tag, firewall group for server in check mode without force
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- region: Amsterdam
- firewall_group: test_firewall_group
- tag: test_tag
- register: result
- check_mode: yes
-- name: verify test update tag, firewall group for server in check mode without force
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_1
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.tag == ''
- - result.vultr_server.firewall_group != 'test_firewall_group'
-
-- name: test update tag, firewall group for server without force
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- region: Amsterdam
- firewall_group: test_firewall_group
- tag: test_tag
- register: result
-- name: verify test update tag, firewall group for server without force
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.tag == 'test_tag'
- - result.vultr_server.firewall_group == 'test_firewall_group'
-
-- name: test update tag, firewall group for server without force idempotence
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- region: Amsterdam
- firewall_group: test_firewall_group
- tag: test_tag
- register: result
-- name: verify test update tag, firewall group for server without force idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.tag == 'test_tag'
- - result.vultr_server.firewall_group == 'test_firewall_group'
-
-- name: test update server in check mode with force
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_2 }}"
- auto_backup_enabled: yes
- private_network_enabled: yes
- region: Amsterdam
- force: yes
- register: result
- check_mode: yes
-- name: verify test update server in check mode with force
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_1
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.auto_backup_enabled == false
- - result.vultr_server.internal_ip == ''
-
-- name: test update server with force
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_2 }}"
- auto_backup_enabled: yes
- private_network_enabled: yes
- region: Amsterdam
- force: yes
- register: result
-- name: verify test update server with force
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_2
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.auto_backup_enabled == true
- - result.vultr_server.internal_ip != ''
-
-- name: test update server idempotence with force
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_2 }}"
- auto_backup_enabled: yes
- private_network_enabled: yes
- region: Amsterdam
- force: yes
- register: result
-- name: verify test update server idempotence with force
- assert:
- that:
- - result is not changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_2
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.auto_backup_enabled == true
- - result.vultr_server.internal_ip != ''
-
-- name: test update server with IDs idempotence with force
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: "127"
- plan: "202"
- auto_backup_enabled: yes
- private_network_enabled: yes
- region: "7"
- force: yes
- register: result
-- name: verify test update server idempotence with force
- assert:
- that:
- - result is not changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_2
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.auto_backup_enabled == true
- - result.vultr_server.internal_ip != ''
-
-- name: test update server to stopped in check mode
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_2 }}"
- ipv6_enabled: yes
- region: Amsterdam
- state: stopped
- register: result
- check_mode: yes
-- name: verify test update server to stopped in check mode
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_2
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.v6_main_ip == ''
-
-- name: test update server to stopped
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_2 }}"
- ipv6_enabled: yes
- region: Amsterdam
- state: stopped
- register: result
-- name: verify test update server to stopped
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'stopped'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_2
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.v6_main_ip != ''
-
-- name: test update server to stopped idempotence
- vultr_server:
- name: "{{ vultr_server_name }}"
- os: CentOS 6 x64
- plan: "{{ vultr_server_plan_2 }}"
- ipv6_enabled: yes
- region: Amsterdam
- state: stopped
- register: result
-- name: verify test update server to stopped idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_server.power_status == 'stopped'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.plan == vultr_server_plan_2
- - result.vultr_server.region == 'Amsterdam'
- - result.vultr_server.v6_main_ip != ''
-
-- name: test restart an existing server in check mode
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: restarted
- register: result
- check_mode: yes
-- name: verify test restart an existing server in check mode
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'stopped'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test restart an existing server
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: restarted
- register: result
-- name: verify test restart an existing server
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test absent server in check mode
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: absent
- register: result
- check_mode: yes
-- name: verify test absent server in check mode
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-# Servers can only be destroyed 5 min after creation
-- name: wait for 5 min
- wait_for:
-
-- name: test absent server
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: absent
- register: result
-- name: verify test absent server
- assert:
- that:
- - result is changed
- - result.vultr_server.power_status == 'running'
- - result.vultr_server.name == vultr_server_name
- - result.vultr_server.os == 'CentOS 6 x64'
- - result.vultr_server.region == 'Amsterdam'
-
-- name: test absent server idempotence
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: absent
- register: result
-- name: verify test absent server idempotence
- assert:
- that:
- - result is not changed
-
-- name: cleanup ssh keys
- vultr_ssh_key:
- name: "{{ item.name }}"
- ssh_key: "{{ item.key }}"
- state: absent
- loop: "{{ vultr_server_ssh_keys }}"
diff --git a/test/integration/targets/vultr_server_info/aliases b/test/integration/targets/vultr_server_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_server_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_server_info/defaults/main.yml b/test/integration/targets/vultr_server_info/defaults/main.yml
deleted file mode 100644
index 37134a1f38..0000000000
--- a/test/integration/targets/vultr_server_info/defaults/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_server_name: "{{ vultr_resource_prefix }}_vm"
-vultr_server_os: CentOS 7 x64
-vultr_server_plan: 1024 MB RAM,25 GB SSD,1.00 TB BW
-vultr_server_region: Amsterdam
diff --git a/test/integration/targets/vultr_server_info/tasks/main.yml b/test/integration/targets/vultr_server_info/tasks/main.yml
deleted file mode 100644
index 83deb76911..0000000000
--- a/test/integration/targets/vultr_server_info/tasks/main.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup ensure VM is absent
- vultr_server:
- name: "{{ vultr_server_name }}"
- state: absent
- register: result
-
-# Servers can only be destroyed 5 min after creation
-- name: wait for 5 min until VM is absent
- wait_for:
- when: result is changed
-
-- name: test gather vultr server info - empty resources
- vultr_server_info:
- register: result
-- name: verify test gather vultr server info - empty resources
- assert:
- that:
- - result.vultr_server_info | selectattr('name','equalto',vultr_server_name) | list | count == 0
-
-- name: setup firewall group
- vultr_firewall_group:
- name: test_vultr_server_info
-
-- name: setup create the server
- vultr_server:
- name: '{{ vultr_server_name }}'
- os: '{{ vultr_server_os }}'
- plan: '{{ vultr_server_plan }}'
- region: '{{ vultr_server_region }}'
- firewall_group: test_vultr_server_info
-
-- name: test gather vultr server info in check mode
- vultr_server_info:
- check_mode: yes
- register: result
-
-- name: verify test gather vultr server info in check mode
- assert:
- that:
- - result.vultr_server_info|selectattr('name','equalto',vultr_server_name) | list | count == 1
-
-- name: test gather vultr server info
- vultr_server_info:
- register: result
-
-- name: verify test gather vultr server info
- assert:
- that:
- - result.vultr_server_info|selectattr('name','equalto',vultr_server_name) | list | count == 1
-
-- name: Pause for 5 min before deleting the VM
- pause:
- minutes: 5
-
-- name: cleanup the server
- vultr_server:
- name: '{{ vultr_server_name }}'
- state: absent
-
-- name: cleanup firewall group
- vultr_firewall_group:
- name: test_vultr_server_info
- state: absent
diff --git a/test/integration/targets/vultr_ssh_key/aliases b/test/integration/targets/vultr_ssh_key/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_ssh_key/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_ssh_key/defaults/main.yml b/test/integration/targets/vultr_ssh_key/defaults/main.yml
deleted file mode 100644
index 53cce56767..0000000000
--- a/test/integration/targets/vultr_ssh_key/defaults/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_ssh_key_name: "{{ vultr_resource_prefix }}_ansible-ssh-key"
-vultr_ssh_key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAyWYItY+3w5b8PdGRoz0oY5mufqydW96naE+VM3JSvJFAUS08rAjQQpQ03ymoALeHQy6JVZbcgecxn6p0pAOINQdqufn4udPtOPCtMjNiPGpkSM9ah/6X5+kvyWMNrvlf+Ld4OOoszP5sAkgQzIbrFQAm41XknBUha0zkewZwfrVhain4pnDjV7wCcChId/Q/Gbi4xMtXkisznWcAJcueBs3EEZDKhJ5q0VeWSJEhYJDLFN1sOxF0AIUnMrOhfKQ/LjgREXPB6uCl899INUTXRNNjRpeMXyJ2wMMmOAbua2qEd1r13Bu1n+6A823Hzb33fyMXuqWnJwBJ4DCvMlGuEsfuOK+xk7DaBfLHbcM6fsPk0/4psTE6YLgC41remr6+u5ZWsY/faMtSnNPie8Z8Ov0DIYGdhbJjUXk1HomxRV9+ZfZ2Ob8iCwlaAQAyEUM6fs3Kxt8pBD8dx1HOkhsfBWPvuDr5y+kqE7H8/MuPDTc0QgH2pjUMpmw/XBwNDHshVEjrZvtICOjOLUJxcowLO1ivNYwPwowQxfisMy56LfYdjsOslBiqsrkAqvNGm1zu8wKHeqVN9w5l3yUELpvubfm9NKIvYcl6yWF36T0c5vE+g0DU/Jy4XpTj0hZG9QV2mRQcLJnd2pxQtJT7cPFtrn/+tgRxzjEtbDXummDV4sE= ansible@example.com"
-vultr_ssh_key2: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoQ9S7V+CufAgwoehnf2TqsJ9LTsu8pUA3FgpS2mdVwcMcTs++8P5sQcXHLtDmNLpWN4k7NQgxaY1oXy5e25x/4VhXaJXWEt3luSw+Phv/PB2+aGLvqCUirsLTAD2r7ieMhd/pcVf/HlhNUQgnO1mupdbDyqZoGD/uCcJiYav8i/V7nJWJouHA8yq31XS2yqXp9m3VC7UZZHzUsVJA9Us5YqF0hKYeaGruIHR2bwoDF9ZFMss5t6/pzxMljU/ccYwvvRDdI7WX4o4+zLuZ6RWvsU6LGbbb0pQdB72tlV41fSefwFsk4JRdKbyV3Xjf25pV4IXOTcqhy+4JTB/jXxrF torwalds@github.com"
diff --git a/test/integration/targets/vultr_ssh_key/tasks/main.yml b/test/integration/targets/vultr_ssh_key/tasks/main.yml
deleted file mode 100644
index ce46970e08..0000000000
--- a/test/integration/targets/vultr_ssh_key/tasks/main.yml
+++ /dev/null
@@ -1,140 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- state: absent
- register: result
-- name: verify setup
- assert:
- that:
- - result is success
-
-- name: test fail if missing name
- vultr_ssh_key:
- register: result
- ignore_errors: yes
-- name: verify test fail if missing name
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: name"'
-
-- name: test fail if missing params for state=present
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- register: result
- ignore_errors: yes
-- name: verify fail if missing params for state=present
- assert:
- that:
- - result is failed
- - 'result.msg == "state is present but all of the following are missing: ssh_key"'
-
-- name: test create ssh key in check mode
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- ssh_key: "{{ vultr_ssh_key }}"
- register: result
- check_mode: yes
-- name: verify test create ssh key in check mode
- assert:
- that:
- - result is changed
-
-- name: test create ssh key
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- ssh_key: "{{ vultr_ssh_key }}"
- register: result
-- name: verify test create ssh key
- assert:
- that:
- - result is changed
- - result.vultr_ssh_key.name == '{{ vultr_ssh_key_name }}'
- - result.vultr_ssh_key.ssh_key == '{{ vultr_ssh_key }}'
-
-- name: test create ssh key idempotence
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- ssh_key: "{{ vultr_ssh_key }}"
- register: result
-- name: verify test create ssh key idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_ssh_key.name == '{{ vultr_ssh_key_name }}'
- - result.vultr_ssh_key.ssh_key == '{{ vultr_ssh_key }}'
-
-- name: test update ssh key in check mode
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- ssh_key: "{{ vultr_ssh_key2 }}"
- register: result
- check_mode: yes
-- name: verify test update ssh key in check mode
- assert:
- that:
- - result is changed
- - result.vultr_ssh_key.name == '{{ vultr_ssh_key_name }}'
- - result.vultr_ssh_key.ssh_key == '{{ vultr_ssh_key }}'
-
-- name: test update ssh key
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- ssh_key: "{{ vultr_ssh_key2 }}"
- register: result
-- name: verify test update ssh key
- assert:
- that:
- - result is changed
- - result.vultr_ssh_key.name == '{{ vultr_ssh_key_name }}'
- - result.vultr_ssh_key.ssh_key == '{{ vultr_ssh_key2 }}'
-
-- name: test update ssh key idempotence
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- ssh_key: "{{ vultr_ssh_key2 }}"
- register: result
-- name: verify test update ssh key idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_ssh_key.name == '{{ vultr_ssh_key_name }}'
- - result.vultr_ssh_key.ssh_key == '{{ vultr_ssh_key2 }}'
-
-- name: test absent ssh key in check mode
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- state: absent
- register: result
- check_mode: yes
-- name: verify test absent ssh key in check mode
- assert:
- that:
- - result is changed
- - result.vultr_ssh_key.name == '{{ vultr_ssh_key_name }}'
- - result.vultr_ssh_key.ssh_key == '{{ vultr_ssh_key2 }}'
-
-- name: test absent ssh key
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- state: absent
- register: result
-- name: verify test absent ssh key
- assert:
- that:
- - result is changed
- - result.vultr_ssh_key.name == '{{ vultr_ssh_key_name }}'
- - result.vultr_ssh_key.ssh_key == '{{ vultr_ssh_key2 }}'
-
-- name: test absent ssh key idempotence
- vultr_ssh_key:
- name: "{{ vultr_ssh_key_name }}"
- state: absent
- register: result
-- name: verify test absent ssh key idempotence
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/vultr_ssh_key_info/aliases b/test/integration/targets/vultr_ssh_key_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_ssh_key_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_ssh_key_info/defaults/main.yml b/test/integration/targets/vultr_ssh_key_info/defaults/main.yml
deleted file mode 100644
index 63bda99f2e..0000000000
--- a/test/integration/targets/vultr_ssh_key_info/defaults/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-vultr_resource_prefix: "vultr_test_prefix"
-ssh_key_name: "{{ vultr_resource_prefix }}-sshkey"
-ssh_key_content: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+ZFQv3MyjtL1BMpSA0o0gIkzLVVC711rthT29hBNeORdNowQ7FSvVWUdAbTq00U7Xzak1ANIYLJyn+0r7olsdG4XEiUR0dqgC99kbT/QhY5mLe5lpl7JUjW9ctn00hNmt+TswpatCKWPNwdeAJT2ERynZaqPobENgvIq7jfOFWQIVew7qrewtqwerqwrewUr2Cdq7Nb7U0XFXh3x1p0v0+MbL4tiJwPlMAGvFTKIMt+EaA+AsRIxiOo9CMk5ZuOl9pT8h5vNuEOcvS0qx4v44EAD2VOsCVCcrPNMcpuSzZP8dRTGU9wRREAWXngD0Zq9YJMH38VTxHiskoBw1NnPz ansibletest-{{ vultr_resource_prefix }}@sshkey
diff --git a/test/integration/targets/vultr_ssh_key_info/tasks/main.yml b/test/integration/targets/vultr_ssh_key_info/tasks/main.yml
deleted file mode 100644
index 6a44144b1b..0000000000
--- a/test/integration/targets/vultr_ssh_key_info/tasks/main.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# Copyright (c) 2019, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test get vultr ssh key info - empty resources
- vultr_ssh_key_info:
- register: result
-
-- name: verify test get vultr ssh key infos in check mode
- assert:
- that:
- - result.vultr_ssh_key_info|selectattr('name','equalto','{{ ssh_key_name }}') | list | count == 0
- - result.vultr_ssh_key_info|selectattr('ssh_key','equalto','{{ ssh_key_content }}') | list | count == 0
-
-- name: Upload an ssh key
- vultr_ssh_key:
- name: '{{ ssh_key_name }}'
- ssh_key: '{{ ssh_key_content }}'
-
-- name: test get vultr ssh key infos in check mode
- vultr_ssh_key_info:
- check_mode: yes
- register: result
-
-- name: verify test get vultr ssh key infos in check mode
- assert:
- that:
- - result.vultr_ssh_key_info|selectattr('name','equalto','{{ ssh_key_name }}') | list | count == 1
- - result.vultr_ssh_key_info|selectattr('ssh_key','equalto','{{ ssh_key_content }}') | list | count == 1
-
-- name: test get vultr ssh key info
- vultr_ssh_key_info:
- register: result
-
-- name: verify test get vultr ssh key infos
- assert:
- that:
- - result.vultr_ssh_key_info|selectattr('name','equalto','{{ ssh_key_name }}') | list | count == 1
- - result.vultr_ssh_key_info|selectattr('ssh_key','equalto','{{ ssh_key_content }}') | list | count == 1
-
-- name: Destroy the ssh key
- vultr_ssh_key:
- name: '{{ ssh_key_name }}'
- state: absent
diff --git a/test/integration/targets/vultr_startup_script/aliases b/test/integration/targets/vultr_startup_script/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_startup_script/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_startup_script/defaults/main.yml b/test/integration/targets/vultr_startup_script/defaults/main.yml
deleted file mode 100644
index 38b68a6953..0000000000
--- a/test/integration/targets/vultr_startup_script/defaults/main.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_startup_script_name: "{{ vultr_resource_prefix }}_script"
-vultr_startup_script: "#!/bin/bash\necho Hello World > /root/hello"
-vultr_startup_script2: "#!/bin/bash\necho Hello to my World > /root/hello"
diff --git a/test/integration/targets/vultr_startup_script/tasks/main.yml b/test/integration/targets/vultr_startup_script/tasks/main.yml
deleted file mode 100644
index 09929beb26..0000000000
--- a/test/integration/targets/vultr_startup_script/tasks/main.yml
+++ /dev/null
@@ -1,140 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- state: absent
- register: result
-- name: verify setup
- assert:
- that:
- - result is success
-
-- name: test fail if missing name
- vultr_startup_script:
- register: result
- ignore_errors: yes
-- name: verify test fail if missing name
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: name"'
-
-- name: test fail if missing params for state=present
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- register: result
- ignore_errors: yes
-- name: verify fail if missing params for state=present
- assert:
- that:
- - result is failed
- - 'result.msg == "state is present but all of the following are missing: script"'
-
-- name: test create startup script in check mode
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- script: "{{ vultr_startup_script }}"
- register: result
- check_mode: yes
-- name: verify test create startup script in check mode
- assert:
- that:
- - result is changed
-
-- name: test create startup script
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- script: "{{ vultr_startup_script }}"
- register: result
-- name: verify test create startup script
- assert:
- that:
- - result is changed
- - result.vultr_startup_script.name == '{{ vultr_startup_script_name }}'
- - result.vultr_startup_script.script == '{{ vultr_startup_script }}'
-
-- name: test create startup script idempotence
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- script: "{{ vultr_startup_script }}"
- register: result
-- name: verify test create startup script idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_startup_script.name == '{{ vultr_startup_script_name }}'
- - result.vultr_startup_script.script == '{{ vultr_startup_script }}'
-
-- name: test update startup script in check mode
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- script: "{{ vultr_startup_script2 }}"
- register: result
- check_mode: yes
-- name: verify test update startup script in check mode
- assert:
- that:
- - result is changed
- - result.vultr_startup_script.name == '{{ vultr_startup_script_name }}'
- - result.vultr_startup_script.script == '{{ vultr_startup_script }}'
-
-- name: test update startup script
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- script: "{{ vultr_startup_script2 }}"
- register: result
-- name: verify test update startup script
- assert:
- that:
- - result is changed
- - result.vultr_startup_script.name == '{{ vultr_startup_script_name }}'
- - result.vultr_startup_script.script == '{{ vultr_startup_script2 }}'
-
-- name: test update startup script idempotence
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- script: "{{ vultr_startup_script2 }}"
- register: result
-- name: verify test update startup script idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_startup_script.name == '{{ vultr_startup_script_name }}'
- - result.vultr_startup_script.script == '{{ vultr_startup_script2 }}'
-
-- name: test absent startup script in check mode
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- state: absent
- register: result
- check_mode: yes
-- name: verify test absent startup script in check mode
- assert:
- that:
- - result is changed
- - result.vultr_startup_script.name == '{{ vultr_startup_script_name }}'
- - result.vultr_startup_script.script == '{{ vultr_startup_script2 }}'
-
-- name: test absent startup script
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- state: absent
- register: result
-- name: verify test absent startup script
- assert:
- that:
- - result is changed
- - result.vultr_startup_script.name == '{{ vultr_startup_script_name }}'
- - result.vultr_startup_script.script == '{{ vultr_startup_script2 }}'
-
-- name: test absent startup script idempotence
- vultr_startup_script:
- name: "{{ vultr_startup_script_name }}"
- state: absent
- register: result
-- name: verify test absent startup script idempotence
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/vultr_startup_script_info/aliases b/test/integration/targets/vultr_startup_script_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_startup_script_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_startup_script_info/defaults/main.yml b/test/integration/targets/vultr_startup_script_info/defaults/main.yml
deleted file mode 100644
index 017cff1a36..0000000000
--- a/test/integration/targets/vultr_startup_script_info/defaults/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-vultr_resource_prefix: "vultr_test_prefix"
-startup_script_name: "{{ vultr_resource_prefix }}_script"
-startup_script_type: boot
-startup_script_content: "#!/bin/bash\necho Hello World > /root/hello"
diff --git a/test/integration/targets/vultr_startup_script_info/tasks/main.yml b/test/integration/targets/vultr_startup_script_info/tasks/main.yml
deleted file mode 100644
index 158824383b..0000000000
--- a/test/integration/targets/vultr_startup_script_info/tasks/main.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather vultr startup script info - empty resources
- vultr_startup_script_info:
-
-- name: Create the script
- vultr_startup_script:
- name: '{{ startup_script_name }}'
- script_type: '{{ startup_script_type }}'
- script: '{{ startup_script_content }}'
-
-- name: test gather vultr startup script info in check mode
- vultr_startup_script_info:
- check_mode: yes
- register: result
-
-- name: verify test gather vultr startup script info in check mode
- assert:
- that:
- - result.vultr_startup_script_info|selectattr('name','equalto','{{ startup_script_name }}') | list | count == 1
-
-- name: test gather vultr startup script info
- vultr_startup_script_info:
- register: result
-
-- name: verify test gather vultr startup script info
- assert:
- that:
- - result.vultr_startup_script_info|selectattr('name','equalto','{{ startup_script_name }}') | list | count == 1
-
-- name: Delete the script
- vultr_startup_script:
- name: '{{ startup_script_name }}'
- state: absent
diff --git a/test/integration/targets/vultr_user/aliases b/test/integration/targets/vultr_user/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_user/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_user/defaults/main.yml b/test/integration/targets/vultr_user/defaults/main.yml
deleted file mode 100644
index 9050a68f77..0000000000
--- a/test/integration/targets/vultr_user/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-vultr_resource_prefix: "vultr-test-prefix"
-vultr_user_name: "{{ vultr_resource_prefix }}_user"
diff --git a/test/integration/targets/vultr_user/tasks/main.yml b/test/integration/targets/vultr_user/tasks/main.yml
deleted file mode 100644
index 8c3684c111..0000000000
--- a/test/integration/targets/vultr_user/tasks/main.yml
+++ /dev/null
@@ -1,225 +0,0 @@
----
-# Copyright (c) 2018, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-- name: setup
- vultr_user:
- name: "{{ vultr_user_name }}"
- state: absent
- register: result
-- name: verify setup
- assert:
- that:
- - result is success
-
-- name: test fail if missing name
- vultr_user:
- register: result
- ignore_errors: yes
-- name: verify test fail if missing name
- assert:
- that:
- - result is failed
- - 'result.msg == "missing required arguments: name"'
-
-- name: test fail if missing params for state=present
- vultr_user:
- name: "{{ vultr_user_name }}"
- register: result
- ignore_errors: yes
-- name: verify fail if missing params for state=present
- assert:
- that:
- - result is failed
- - 'result.msg.startswith("state is present but all of the following are missing")'
-
-- name: test fail param not in choices
- vultr_user:
- name: "{{ vultr_user_name }}"
- email: john.doe@example.com
- password: s3cr3t
- acls:
- - bad
- - dns
- - manage_users
- register: result
- ignore_errors: yes
-- name: verify test fail if missing name
- assert:
- that:
- - result is failed
- - 'result.msg.startswith("value of acls must be one or more of")'
-
-- name: test create user in check mode
- vultr_user:
- name: "{{ vultr_user_name }}"
- email: john.doe@example.com
- password: s3cr3t
- acls:
- - upgrade
- - dns
- - manage_users
- register: result
- check_mode: yes
-- name: verify test create user in check mode
- assert:
- that:
- - result is changed
-
-- name: test create user
- vultr_user:
- name: "{{ vultr_user_name }}"
- email: john.doe@example.com
- password: s3cr3t
- acls:
- - upgrade
- - dns
- - manage_users
- register: result
-- name: verify test create user
- assert:
- that:
- - result is changed
- - result.vultr_user.name == '{{ vultr_user_name }}'
- - result.vultr_user.email == 'john.doe@example.com'
- - result.vultr_user.api_enabled == true
- - "'upgrade' in result.vultr_user.acls"
- - "'manage_users' in result.vultr_user.acls"
- - "'dns' in result.vultr_user.acls"
- - result.vultr_user.api_key is defined
-
-- name: test create user idempotence
- vultr_user:
- name: "{{ vultr_user_name }}"
- email: john.doe@example.com
- password: s3cr3t
- acls:
- - upgrade
- - dns
- - manage_users
- register: result
-- name: verify test create user idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_user.name == '{{ vultr_user_name }}'
- - result.vultr_user.email == 'john.doe@example.com'
- - result.vultr_user.api_enabled == true
- - "'upgrade' in result.vultr_user.acls"
- - "'manage_users' in result.vultr_user.acls"
- - "'dns' in result.vultr_user.acls"
- - result.vultr_user.api_key is not defined
-
-- name: test update user in check mode
- vultr_user:
- name: "{{ vultr_user_name }}"
- email: jimmy@example.com
- password: s3cr3t
- api_enabled: false
- acls:
- - manage_users
- - upgrade
- - support
- register: result
- check_mode: yes
-- name: verify test update user in check mode
- assert:
- that:
- - result is changed
- - result.vultr_user.name == '{{ vultr_user_name }}'
- - result.vultr_user.email == 'john.doe@example.com'
- - "'upgrade' in result.vultr_user.acls"
- - "'manage_users' in result.vultr_user.acls"
- - "'dns' in result.vultr_user.acls"
- - result.vultr_user.api_enabled == true
- - result.vultr_user.api_key is not defined
-
-- name: test update user
- vultr_user:
- name: "{{ vultr_user_name }}"
- email: jimmy@example.com
- password: s3cr3t
- api_enabled: false
- acls:
- - manage_users
- - upgrade
- - support
- register: result
-- name: verify test update user
- assert:
- that:
- - result is changed
- - result.vultr_user.name == '{{ vultr_user_name }}'
- - result.vultr_user.email == 'jimmy@example.com'
- - "'upgrade' in result.vultr_user.acls"
- - "'manage_users' in result.vultr_user.acls"
- - "'support' in result.vultr_user.acls"
- - result.vultr_user.api_enabled == false
- - result.vultr_user.api_key is not defined
-
-- name: test update user idempotence
- vultr_user:
- name: "{{ vultr_user_name }}"
- email: jimmy@example.com
- password: s3cr3t
- api_enabled: false
- acls:
- - manage_users
- - upgrade
- - support
- register: result
-- name: verify test update user idempotence
- assert:
- that:
- - result is not changed
- - result.vultr_user.name == '{{ vultr_user_name }}'
- - result.vultr_user.email == 'jimmy@example.com'
- - "'upgrade' in result.vultr_user.acls"
- - "'manage_users' in result.vultr_user.acls"
- - "'support' in result.vultr_user.acls"
- - result.vultr_user.api_enabled == false
- - result.vultr_user.api_key is not defined
-
-- name: test absent user in check mode
- vultr_user:
- name: "{{ vultr_user_name }}"
- state: absent
- register: result
- check_mode: yes
-- name: verify test absent user in check mode
- assert:
- that:
- - result is changed
- - result.vultr_user.name == '{{ vultr_user_name }}'
- - result.vultr_user.email == 'jimmy@example.com'
- - "'upgrade' in result.vultr_user.acls"
- - "'manage_users' in result.vultr_user.acls"
- - "'support' in result.vultr_user.acls"
- - result.vultr_user.api_enabled == false
- - result.vultr_user.api_key is not defined
-
-- name: test absent user
- vultr_user:
- name: "{{ vultr_user_name }}"
- state: absent
- register: result
-- name: verify test absent user
- assert:
- that:
- - result is changed
- - result.vultr_user.name == '{{ vultr_user_name }}'
- - result.vultr_user.email == 'jimmy@example.com'
- - "'upgrade' in result.vultr_user.acls"
- - "'manage_users' in result.vultr_user.acls"
- - "'support' in result.vultr_user.acls"
- - result.vultr_user.api_enabled == false
- - result.vultr_user.api_key is not defined
-
-- name: test absent user idempotence
- vultr_user:
- name: "{{ vultr_user_name }}"
- state: absent
- register: result
-- name: verify test absent user idempotence
- assert:
- that:
- - result is not changed
diff --git a/test/integration/targets/vultr_user_info/aliases b/test/integration/targets/vultr_user_info/aliases
deleted file mode 100644
index 2c3fa42cbc..0000000000
--- a/test/integration/targets/vultr_user_info/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-cloud/vultr
-unsupported
diff --git a/test/integration/targets/vultr_user_info/defaults/main.yml b/test/integration/targets/vultr_user_info/defaults/main.yml
deleted file mode 100644
index 5922f6fe24..0000000000
--- a/test/integration/targets/vultr_user_info/defaults/main.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-vultr_resource_prefix: "vultr-test-prefix"
-user_name: "{{ vultr_resource_prefix }}_user"
-user_email: mytestuser-{{ vultr_resource_prefix }}@example.com
-user_password: "{{ vultr_resource_prefix }}aP4ssw0rd!"
-user_acls:
- - upgrade
- - dns
- - manage_users
- - subscriptions
diff --git a/test/integration/targets/vultr_user_info/tasks/main.yml b/test/integration/targets/vultr_user_info/tasks/main.yml
deleted file mode 100644
index 164c22fc5a..0000000000
--- a/test/integration/targets/vultr_user_info/tasks/main.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
-# Copyright (c) 2019, René Moser <mail@renemoser.net>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: Create the user
- vultr_user:
- name: '{{ user_name }}'
- email: '{{ user_email }}'
- password: '{{ user_password }}'
- acls: '{{ user_acls }}'
-
-- name: test get vultr user info in check mode
- vultr_user_info:
- register: result
- check_mode: yes
-
-- name: verify test get vultr user info in check mode
- assert:
- that:
- - result.vultr_user_info|selectattr('name','equalto','{{ user_name }}') | list | count == 1
-
-- name: test get vultr user info
- vultr_user_info:
- register: result
-
-- name: verify test get vultr user info
- assert:
- that:
- - result.vultr_user_info|selectattr('name','equalto','{{ user_name }}') | list | count == 1
-
-- name: Delete the user
- vultr_user:
- name: '{{ user_name }}'
- state: absent
diff --git a/test/integration/targets/wakeonlan/aliases b/test/integration/targets/wakeonlan/aliases
deleted file mode 100644
index ed821c2754..0000000000
--- a/test/integration/targets/wakeonlan/aliases
+++ /dev/null
@@ -1,2 +0,0 @@
-shippable/posix/group2
-skip/aix
diff --git a/test/integration/targets/wakeonlan/tasks/main.yml b/test/integration/targets/wakeonlan/tasks/main.yml
deleted file mode 100644
index e852dcfed2..0000000000
--- a/test/integration/targets/wakeonlan/tasks/main.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-- name: Send a magic Wake-on-LAN packet to 00:00:5E:00:53:66
- wakeonlan:
- mac: 00:00:5E:00:53:66
- broadcast: 192.0.2.255
-
-- name: Send a magic Wake-on-LAN packet on port 9 to 00-00-5E-00-53-66
- wakeonlan:
- mac: 00-00-5E-00-53-66
- port: 9
-
-- name: Provide an incorrect MAC length
- wakeonlan:
- mac: 00-00-5E-00-53-66-AB
- port: 9
- ignore_errors: yes
- register: incorrect_mac_length
-
-- name: Check error message
- assert:
- that:
- - incorrect_mac_length is failed
- - incorrect_mac_length.msg is search('Incorrect MAC address length')
-
-- name: Provide an incorrect MAC format
- wakeonlan:
- mac: ZW-YX-WV-UT-SR-QP
- port: 9
- ignore_errors: yes
- register: incorrect_mac_format
-
-- name: Check error message
- assert:
- that:
- - incorrect_mac_format is failed
- - incorrect_mac_format.msg is search('Incorrect MAC address format')
-
-- name: Cause a socket error
- wakeonlan:
- mac: 00-00-5E-00-53-66
- broadcast: 345.567.678.890
- ignore_errors: yes
- register: incorrect_broadcast_address
-
-- name: Check error message
- assert:
- that:
- - incorrect_broadcast_address is failed
- - incorrect_broadcast_address.msg is search('not known|Name does not resolve')
diff --git a/test/integration/targets/xattr/aliases b/test/integration/targets/xattr/aliases
deleted file mode 100644
index 1d4174e5ec..0000000000
--- a/test/integration/targets/xattr/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-shippable/posix/group2
-skip/aix
-skip/docker
-skip/freebsd
-skip/osx
-destructive
diff --git a/test/integration/targets/xattr/defaults/main.yml b/test/integration/targets/xattr/defaults/main.yml
deleted file mode 100644
index af18fb8474..0000000000
--- a/test/integration/targets/xattr/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-test_file: "{{ output_dir }}/foo.txt"
diff --git a/test/integration/targets/xattr/tasks/main.yml b/test/integration/targets/xattr/tasks/main.yml
deleted file mode 100644
index 563326b839..0000000000
--- a/test/integration/targets/xattr/tasks/main.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-- name: Setup
- include: setup.yml
-
-- name: Check availability of xattr support
- command: setfattr -n user.foo {{ test_file }}
- ignore_errors: yes
- register: xattr
-
-- name: Test
- include: test.yml
- when: xattr is not failed
diff --git a/test/integration/targets/xattr/tasks/setup.yml b/test/integration/targets/xattr/tasks/setup.yml
deleted file mode 100644
index 674e250aea..0000000000
--- a/test/integration/targets/xattr/tasks/setup.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-- name: Install
- package:
- name: attr
- state: present
-
-- name: Create file
- file:
- path: "{{ test_file }}"
- state: touch \ No newline at end of file
diff --git a/test/integration/targets/xattr/tasks/test.yml b/test/integration/targets/xattr/tasks/test.yml
deleted file mode 100644
index 616432681f..0000000000
--- a/test/integration/targets/xattr/tasks/test.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-- name: Set attributes
- xattr:
- path: "{{ test_file }}"
- key: user.foo
- value: bar
- register: xattr_set_result
-
-- name: Get attributes
- xattr:
- path: "{{ test_file }}"
- register: xattr_get_all_result
-
-- name: Get specific attribute
- xattr:
- path: "{{ test_file }}"
- key: foo
- register: xattr_get_specific_result
-
-- assert:
- that:
- - "xattr_set_result.changed"
- - "xattr_get_all_result['xattr']['user.foo'] == 'bar'"
- - "not xattr_get_all_result.changed"
- - "xattr_get_specific_result['xattr']['user.foo'] == 'bar'"
- - "not xattr_get_specific_result.changed"
-
-- name: Set attribute again
- xattr:
- path: "{{ test_file }}"
- namespace: user
- key: foo
- value: bar
- register: xattr_set_again_result
-
-- assert:
- that:
- - "not xattr_set_again_result.changed"
-
-- name: Unset attribute
- xattr:
- path: "{{ test_file }}"
- key: foo
- state: absent
- register: xattr_unset_result
-
-- name: Get attributes
- xattr:
- path: "{{ test_file }}"
- register: xattr_get_after_unset_result
-
-- assert:
- that:
- - "xattr_unset_result.changed"
- - "xattr_get_after_unset_result['xattr'] == {}"
- - "not xattr_get_after_unset_result.changed"
-
-- name: Unset attribute again
- xattr:
- path: "{{ test_file }}"
- namespace: user
- key: foo
- state: absent
- register: xattr_unset_result
-
-- assert:
- that:
- - "not xattr_set_again_result.changed"
diff --git a/test/integration/targets/xfs_quota/aliases b/test/integration/targets/xfs_quota/aliases
deleted file mode 100644
index 493c64f48f..0000000000
--- a/test/integration/targets/xfs_quota/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-needs/privileged
-needs/root
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
diff --git a/test/integration/targets/xfs_quota/defaults/main.yml b/test/integration/targets/xfs_quota/defaults/main.yml
deleted file mode 100644
index ff030ce79b..0000000000
--- a/test/integration/targets/xfs_quota/defaults/main.yml
+++ /dev/null
@@ -1,42 +0,0 @@
----
-uquota_default_bsoft: 1m
-uquota_default_bhard: 2m
-uquota_default_isoft: 100
-uquota_default_ihard: 200
-uquota_default_rtbsoft: 1m
-uquota_default_rtbhard: 2m
-
-uquota_user_bsoft: 2m
-uquota_user_bhard: 3m
-uquota_user_isoft: 300
-uquota_user_ihard: 400
-uquota_user_rtbsoft: 3m
-uquota_user_rtbhard: 4m
-
-gquota_default_bsoft: 1m
-gquota_default_bhard: 2m
-gquota_default_isoft: 100
-gquota_default_ihard: 200
-gquota_default_rtbsoft: 1m
-gquota_default_rtbhard: 2m
-
-gquota_group_bsoft: 2m
-gquota_group_bhard: 3m
-gquota_group_isoft: 300
-gquota_group_ihard: 400
-gquota_group_rtbsoft: 3m
-gquota_group_rtbhard: 4m
-
-pquota_default_bsoft: 1m
-pquota_default_bhard: 2m
-pquota_default_isoft: 100
-pquota_default_ihard: 200
-pquota_default_rtbsoft: 1m
-pquota_default_rtbhard: 2m
-
-pquota_project_bsoft: 2m
-pquota_project_bhard: 3m
-pquota_project_isoft: 300
-pquota_project_ihard: 400
-pquota_project_rtbsoft: 3m
-pquota_project_rtbhard: 4m
diff --git a/test/integration/targets/xfs_quota/meta/main.yml b/test/integration/targets/xfs_quota/meta/main.yml
deleted file mode 100644
index 1810d4bec9..0000000000
--- a/test/integration/targets/xfs_quota/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_remote_tmp_dir
diff --git a/test/integration/targets/xfs_quota/tasks/gquota.yml b/test/integration/targets/xfs_quota/tasks/gquota.yml
deleted file mode 100644
index 6d0310205b..0000000000
--- a/test/integration/targets/xfs_quota/tasks/gquota.yml
+++ /dev/null
@@ -1,158 +0,0 @@
----
-- name: 'Create disk image'
- command: >
- dd if=/dev/zero of={{ remote_tmp_dir }}/img-gquota bs=1M count=20
-
-- name: 'Create XFS filesystem'
- filesystem:
- dev: '{{ remote_tmp_dir }}/img-gquota'
- fstype: xfs
-
-- block:
- - name: 'Mount filesystem'
- mount:
- fstab: '{{ remote_tmp_dir }}/fstab'
- src: '{{ remote_tmp_dir }}/img-gquota'
- path: '{{ remote_tmp_dir }}/gquota'
- fstype: xfs
- opts: gquota
- state: mounted
- become: True
-
- - name: 'Apply default group limits'
- xfs_quota:
- bsoft: '{{ gquota_default_bsoft }}'
- bhard: '{{ gquota_default_bhard }}'
- isoft: '{{ gquota_default_isoft }}'
- ihard: '{{ gquota_default_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/gquota'
- rtbsoft: '{{ gquota_default_rtbsoft }}'
- rtbhard: '{{ gquota_default_rtbhard }}'
- type: group
- become: True
- register: test_gquota_default_before
-
- - name: Assert default group limits results
- assert:
- that:
- - test_gquota_default_before.changed
- - test_gquota_default_before.bsoft == gquota_default_bsoft|human_to_bytes
- - test_gquota_default_before.bhard == gquota_default_bhard|human_to_bytes
- - test_gquota_default_before.isoft == gquota_default_isoft
- - test_gquota_default_before.ihard == gquota_default_ihard
- - test_gquota_default_before.rtbsoft == gquota_default_rtbsoft|human_to_bytes
- - test_gquota_default_before.rtbhard == gquota_default_rtbhard|human_to_bytes
-
- - name: 'Apply group limits'
- xfs_quota:
- bsoft: '{{ gquota_group_bsoft }}'
- bhard: '{{ gquota_group_bhard }}'
- isoft: '{{ gquota_group_isoft }}'
- ihard: '{{ gquota_group_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/gquota'
- name: xfsquotauser
- rtbsoft: '{{ gquota_group_rtbsoft }}'
- rtbhard: '{{ gquota_group_rtbhard }}'
- type: group
- become: True
- register: test_gquota_group_before
-
- - name: Assert group limits results for xfsquotauser
- assert:
- that:
- - test_gquota_group_before.changed
- - test_gquota_group_before.bsoft == gquota_group_bsoft|human_to_bytes
- - test_gquota_group_before.bhard == gquota_group_bhard|human_to_bytes
- - test_gquota_group_before.isoft == gquota_group_isoft
- - test_gquota_group_before.ihard == gquota_group_ihard
- - test_gquota_group_before.rtbsoft == gquota_group_rtbsoft|human_to_bytes
- - test_gquota_group_before.rtbhard == gquota_group_rtbhard|human_to_bytes
-
- - name: 'Re-apply default group limits'
- xfs_quota:
- bsoft: '{{ gquota_default_bsoft }}'
- bhard: '{{ gquota_default_bhard }}'
- isoft: '{{ gquota_default_isoft }}'
- ihard: '{{ gquota_default_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/gquota'
- rtbsoft: '{{ gquota_default_rtbsoft }}'
- rtbhard: '{{ gquota_default_rtbhard }}'
- type: group
- become: True
- register: test_gquota_default_after
-
- - name: Assert default group limits results after re-apply
- assert:
- that:
- - not test_gquota_default_after.changed
-
- - name: 'Re-apply group limits'
- xfs_quota:
- bsoft: '{{ gquota_group_bsoft }}'
- bhard: '{{ gquota_group_bhard }}'
- isoft: '{{ gquota_group_isoft }}'
- ihard: '{{ gquota_group_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/gquota'
- name: xfsquotauser
- rtbsoft: '{{ gquota_group_rtbsoft }}'
- rtbhard: '{{ gquota_group_rtbhard }}'
- type: group
- become: True
- register: test_gquota_group_after
-
- - name: Assert group limits results for xfsquotauser after re-apply
- assert:
- that:
- - not test_gquota_group_after.changed
-
- - name: 'Reset default group limits'
- xfs_quota:
- mountpoint: '{{ remote_tmp_dir }}/gquota'
- state: absent
- type: group
- become: True
- register: test_reset_gquota_default
-
- - name: Assert reset of default group limits results
- assert:
- that:
- - test_reset_gquota_default.changed
- - test_reset_gquota_default.bsoft == 0
- - test_reset_gquota_default.bhard == 0
- - test_reset_gquota_default.isoft == 0
- - test_reset_gquota_default.ihard == 0
- - test_reset_gquota_default.rtbsoft == 0
- - test_reset_gquota_default.rtbhard == 0
-
- - name: 'Reset group limits for xfsquotauser'
- xfs_quota:
- mountpoint: '{{ remote_tmp_dir }}/gquota'
- name: xfsquotauser
- state: absent
- type: group
- become: True
- register: test_reset_gquota_group
-
- - name: Assert reset of default group limits results
- assert:
- that:
- - test_reset_gquota_group.changed
- - test_reset_gquota_group.bsoft == 0
- - test_reset_gquota_group.bhard == 0
- - test_reset_gquota_group.isoft == 0
- - test_reset_gquota_group.ihard == 0
- - test_reset_gquota_group.rtbsoft == 0
- - test_reset_gquota_group.rtbhard == 0
-
- always:
- - name: 'Unmount filesystem'
- mount:
- fstab: '{{ remote_tmp_dir }}/fstab'
- path: '{{ remote_tmp_dir }}/gquota'
- state: unmounted
- become: True
-
- - name: Remove disk image
- file:
- path: '{{ remote_tmp_dir }}/img-gquota'
- state: absent
diff --git a/test/integration/targets/xfs_quota/tasks/main.yml b/test/integration/targets/xfs_quota/tasks/main.yml
deleted file mode 100644
index bccfd7fde5..0000000000
--- a/test/integration/targets/xfs_quota/tasks/main.yml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-- block:
- - name: Create test user
- user:
- name: xfsquotauser
- state: present
- become: yes
-
- - include_tasks: uquota.yml
- - include_tasks: gquota.yml
- - include_tasks: pquota.yml
-
- always:
- - name: cleanup test user
- user:
- name: xfsquotauser
- state: absent
- become: yes
diff --git a/test/integration/targets/xfs_quota/tasks/pquota.yml b/test/integration/targets/xfs_quota/tasks/pquota.yml
deleted file mode 100644
index 5061fca999..0000000000
--- a/test/integration/targets/xfs_quota/tasks/pquota.yml
+++ /dev/null
@@ -1,202 +0,0 @@
----
-- name: 'Create disk image'
- command: >
- dd if=/dev/zero of={{ remote_tmp_dir }}/img-pquota bs=1M count=20
-
-- name: 'Create XFS filesystem'
- filesystem:
- dev: '{{ remote_tmp_dir }}/img-pquota'
- fstype: xfs
-
-- name: Create xfs related files
- file:
- path: '/etc/{{ item }}'
- state: touch
- become: True
- loop:
- - 'projid'
- - 'projects'
-
-- name: 'Add test xfs quota project id'
- lineinfile:
- path: /etc/projid
- line: 'xft_quotaval:99999'
- state: present
- become: True
-
-- name: 'Add test xfs quota project path'
- lineinfile:
- path: /etc/projects
- line: '99999:{{ remote_tmp_dir }}/pquota/test'
- state: present
- become: True
-
-- block:
- - name: 'Mount filesystem'
- mount:
- fstab: '{{ remote_tmp_dir }}/fstab'
- src: '{{ remote_tmp_dir }}/img-pquota'
- path: '{{ remote_tmp_dir }}/pquota'
- fstype: xfs
- opts: pquota
- state: mounted
- become: True
-
- - name: 'Create test directory'
- file:
- path: '{{ remote_tmp_dir }}/pquota/test'
- state: directory
- become: True
-
-
- - name: 'Apply default project limits'
- xfs_quota:
- bsoft: '{{ pquota_default_bsoft }}'
- bhard: '{{ pquota_default_bhard }}'
- isoft: '{{ pquota_default_isoft }}'
- ihard: '{{ pquota_default_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/pquota'
- rtbsoft: '{{ pquota_default_rtbsoft }}'
- rtbhard: '{{ pquota_default_rtbhard }}'
- type: project
- become: True
- register: test_pquota_default_before
-
- - name: Assert default project limits results
- assert:
- that:
- - test_pquota_default_before.changed
- - test_pquota_default_before.bsoft == pquota_default_bsoft|human_to_bytes
- - test_pquota_default_before.bhard == pquota_default_bhard|human_to_bytes
- - test_pquota_default_before.isoft == pquota_default_isoft
- - test_pquota_default_before.ihard == pquota_default_ihard
- - test_pquota_default_before.rtbsoft == pquota_default_rtbsoft|human_to_bytes
- - test_pquota_default_before.rtbhard == pquota_default_rtbhard|human_to_bytes
-
- - name: 'Apply project limits'
- xfs_quota:
- bsoft: '{{ pquota_project_bsoft }}'
- bhard: '{{ pquota_project_bhard }}'
- isoft: '{{ pquota_project_isoft }}'
- ihard: '{{ pquota_project_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/pquota'
- name: xft_quotaval
- rtbsoft: '{{ pquota_project_rtbsoft }}'
- rtbhard: '{{ pquota_project_rtbhard }}'
- type: project
- become: True
- register: test_pquota_project_before
-
- - name: Assert project limits results for xft_quotaval
- assert:
- that:
- - test_pquota_project_before.changed
- - test_pquota_project_before.bsoft == pquota_project_bsoft|human_to_bytes
- - test_pquota_project_before.bhard == pquota_project_bhard|human_to_bytes
- - test_pquota_project_before.isoft == pquota_project_isoft
- - test_pquota_project_before.ihard == pquota_project_ihard
- - test_pquota_project_before.rtbsoft == pquota_project_rtbsoft|human_to_bytes
- - test_pquota_project_before.rtbhard == pquota_project_rtbhard|human_to_bytes
-
- - name: 'Re-apply default project limits'
- xfs_quota:
- bsoft: '{{ pquota_default_bsoft }}'
- bhard: '{{ pquota_default_bhard }}'
- isoft: '{{ pquota_default_isoft }}'
- ihard: '{{ pquota_default_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/pquota'
- rtbsoft: '{{ pquota_default_rtbsoft }}'
- rtbhard: '{{ pquota_default_rtbhard }}'
- type: project
- become: True
- register: test_pquota_default_after
-
- - name: Assert default project limits results after re-apply
- assert:
- that:
- - not test_pquota_default_after.changed
-
- - name: 'Re-apply project limits'
- xfs_quota:
- bsoft: '{{ pquota_project_bsoft }}'
- bhard: '{{ pquota_project_bhard }}'
- isoft: '{{ pquota_project_isoft }}'
- ihard: '{{ pquota_project_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/pquota'
- name: xft_quotaval
- rtbsoft: '{{ pquota_project_rtbsoft }}'
- rtbhard: '{{ pquota_project_rtbhard }}'
- type: project
- become: True
- register: test_pquota_project_after
-
- - name: Assert project limits results for xft_quotaval after re-apply
- assert:
- that:
- - not test_pquota_project_after.changed
-
- - name: 'Reset default project limits'
- xfs_quota:
- mountpoint: '{{ remote_tmp_dir }}/pquota'
- state: absent
- type: project
- become: True
- register: test_reset_pquota_default
-
- - name: Assert reset of default projecy limits results
- assert:
- that:
- - test_reset_pquota_default.changed
- - test_reset_pquota_default.bsoft == 0
- - test_reset_pquota_default.bhard == 0
- - test_reset_pquota_default.isoft == 0
- - test_reset_pquota_default.ihard == 0
- - test_reset_pquota_default.rtbsoft == 0
- - test_reset_pquota_default.rtbhard == 0
-
- - name: 'Reset project limits for xft_quotaval'
- xfs_quota:
- mountpoint: '{{ remote_tmp_dir }}/pquota'
- name: xft_quotaval
- state: absent
- type: project
- become: True
- register: test_reset_pquota_project
-
- - name: Assert reset of project limits results for xft_quotaval
- assert:
- that:
- - test_reset_pquota_project.changed
- - test_reset_pquota_project.bsoft == 0
- - test_reset_pquota_project.bhard == 0
- - test_reset_pquota_project.isoft == 0
- - test_reset_pquota_project.ihard == 0
- - test_reset_pquota_project.rtbsoft == 0
- - test_reset_pquota_project.rtbhard == 0
-
- always:
- - name: 'Unmount filesystem'
- mount:
- fstab: '{{ remote_tmp_dir }}/fstab'
- path: '{{ remote_tmp_dir }}/pquota'
- state: unmounted
- become: True
-
- - name: Remove disk image
- file:
- path: '{{ remote_tmp_dir }}/img-pquota'
- state: absent
-
- - name: Remove xfs quota project id
- lineinfile:
- path: /etc/projid
- regexp: '^xft_quotaval:99999$'
- state: absent
- become: True
-
- - name: Remove xfs quota project path
- lineinfile:
- path: /etc/projects
- regexp: '^99999:.*$'
- state: absent
- become: True
diff --git a/test/integration/targets/xfs_quota/tasks/uquota.yml b/test/integration/targets/xfs_quota/tasks/uquota.yml
deleted file mode 100644
index 04cd87f2f7..0000000000
--- a/test/integration/targets/xfs_quota/tasks/uquota.yml
+++ /dev/null
@@ -1,158 +0,0 @@
----
-- name: 'Create disk image'
- command: >
- dd if=/dev/zero of={{ remote_tmp_dir }}/img-uquota bs=1M count=20
-
-- name: 'Create XFS filesystem'
- filesystem:
- dev: '{{ remote_tmp_dir }}/img-uquota'
- fstype: xfs
-
-- block:
- - name: 'Mount filesystem'
- mount:
- fstab: '{{ remote_tmp_dir }}/fstab'
- src: '{{ remote_tmp_dir }}/img-uquota'
- path: '{{ remote_tmp_dir }}/uquota'
- fstype: xfs
- opts: uquota
- state: mounted
- become: True
-
- - name: 'Apply default user limits'
- xfs_quota:
- bsoft: '{{ uquota_default_bsoft }}'
- bhard: '{{ uquota_default_bhard }}'
- isoft: '{{ uquota_default_isoft }}'
- ihard: '{{ uquota_default_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/uquota'
- rtbsoft: '{{ uquota_default_rtbsoft }}'
- rtbhard: '{{ uquota_default_rtbhard }}'
- type: user
- become: True
- register: test_uquota_default_before
-
- - name: Assert default user limits results
- assert:
- that:
- - test_uquota_default_before.changed
- - test_uquota_default_before.bsoft == uquota_default_bsoft|human_to_bytes
- - test_uquota_default_before.bhard == uquota_default_bhard|human_to_bytes
- - test_uquota_default_before.isoft == uquota_default_isoft
- - test_uquota_default_before.ihard == uquota_default_ihard
- - test_uquota_default_before.rtbsoft == uquota_default_rtbsoft|human_to_bytes
- - test_uquota_default_before.rtbhard == uquota_default_rtbhard|human_to_bytes
-
- - name: 'Apply user limits'
- xfs_quota:
- bsoft: '{{ uquota_user_bsoft }}'
- bhard: '{{ uquota_user_bhard }}'
- isoft: '{{ uquota_user_isoft }}'
- ihard: '{{ uquota_user_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/uquota'
- name: xfsquotauser
- rtbsoft: '{{ uquota_user_rtbsoft }}'
- rtbhard: '{{ uquota_user_rtbhard }}'
- type: user
- become: True
- register: test_uquota_user_before
-
- - name: Assert user limits results
- assert:
- that:
- - test_uquota_user_before.changed
- - test_uquota_user_before.bsoft == uquota_user_bsoft|human_to_bytes
- - test_uquota_user_before.bhard == uquota_user_bhard|human_to_bytes
- - test_uquota_user_before.isoft == uquota_user_isoft
- - test_uquota_user_before.ihard == uquota_user_ihard
- - test_uquota_user_before.rtbsoft == uquota_user_rtbsoft|human_to_bytes
- - test_uquota_user_before.rtbhard == uquota_user_rtbhard|human_to_bytes
-
- - name: 'Re-apply default user limits'
- xfs_quota:
- bsoft: '{{ uquota_default_bsoft }}'
- bhard: '{{ uquota_default_bhard }}'
- isoft: '{{ uquota_default_isoft }}'
- ihard: '{{ uquota_default_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/uquota'
- rtbsoft: '{{ uquota_default_rtbsoft }}'
- rtbhard: '{{ uquota_default_rtbhard }}'
- type: user
- become: True
- register: test_uquota_default_after
-
- - name: Assert default user limits results after re-apply
- assert:
- that:
- - not test_uquota_default_after.changed
-
- - name: 'Re-apply user limits'
- xfs_quota:
- bsoft: '{{ uquota_user_bsoft }}'
- bhard: '{{ uquota_user_bhard }}'
- isoft: '{{ uquota_user_isoft }}'
- ihard: '{{ uquota_user_ihard }}'
- mountpoint: '{{ remote_tmp_dir }}/uquota'
- name: xfsquotauser
- rtbsoft: '{{ uquota_user_rtbsoft }}'
- rtbhard: '{{ uquota_user_rtbhard }}'
- type: user
- become: True
- register: test_uquota_user_after
-
- - name: Assert user limits results for xfsquotauser after re-apply
- assert:
- that:
- - not test_uquota_user_after.changed
-
- - name: 'Reset default user limits'
- xfs_quota:
- mountpoint: '{{ remote_tmp_dir }}/uquota'
- state: absent
- type: user
- become: True
- register: test_reset_uquota_default
-
- - name: Assert reset of default user limits results
- assert:
- that:
- - test_reset_uquota_default.changed
- - test_reset_uquota_default.bsoft == 0
- - test_reset_uquota_default.bhard == 0
- - test_reset_uquota_default.isoft == 0
- - test_reset_uquota_default.ihard == 0
- - test_reset_uquota_default.rtbsoft == 0
- - test_reset_uquota_default.rtbhard == 0
-
- - name: 'Reset user limits for xfsquotauser'
- xfs_quota:
- mountpoint: '{{ remote_tmp_dir }}/uquota'
- name: xfsquotauser
- state: absent
- type: user
- become: True
- register: test_reset_uquota_user
-
- - name: Assert reset of default user limits results
- assert:
- that:
- - test_reset_uquota_user.changed
- - test_reset_uquota_user.bsoft == 0
- - test_reset_uquota_user.bhard == 0
- - test_reset_uquota_user.isoft == 0
- - test_reset_uquota_user.ihard == 0
- - test_reset_uquota_user.rtbsoft == 0
- - test_reset_uquota_user.rtbhard == 0
-
- always:
- - name: 'Unmount filesystem'
- mount:
- fstab: '{{ remote_tmp_dir }}/fstab'
- path: '{{ remote_tmp_dir }}/uquota'
- state: unmounted
- become: True
-
- - name: Remove disk image
- file:
- path: '{{ remote_tmp_dir }}/img-uquota'
- state: absent
diff --git a/test/integration/targets/xml/aliases b/test/integration/targets/xml/aliases
deleted file mode 100644
index 0725da563f..0000000000
--- a/test/integration/targets/xml/aliases
+++ /dev/null
@@ -1,3 +0,0 @@
-destructive
-shippable/posix/group3
-skip/aix
diff --git a/test/integration/targets/xml/fixtures/ansible-xml-beers-unicode.xml b/test/integration/targets/xml/fixtures/ansible-xml-beers-unicode.xml
deleted file mode 100644
index d0e3e39af4..0000000000
--- a/test/integration/targets/xml/fixtures/ansible-xml-beers-unicode.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Толстый бар</name>
- <beers>
- <beer>Окское</beer>
- <beer>Невское</beer>
- </beers>
- <rating subjective="да">десять</rating>
- <website>
- <mobilefriendly/>
- <address>http://tolstyybar.com</address>
- </website>
-</business>
diff --git a/test/integration/targets/xml/fixtures/ansible-xml-beers.xml b/test/integration/targets/xml/fixtures/ansible-xml-beers.xml
deleted file mode 100644
index 5afc797414..0000000000
--- a/test/integration/targets/xml/fixtures/ansible-xml-beers.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/fixtures/ansible-xml-namespaced-beers.xml b/test/integration/targets/xml/fixtures/ansible-xml-namespaced-beers.xml
deleted file mode 100644
index 61747d4bbb..0000000000
--- a/test/integration/targets/xml/fixtures/ansible-xml-namespaced-beers.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
- <name>Tasty Beverage Co.</name>
- <beers xmlns="http://test.beers">
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating xmlns="http://test.rating" attr:subjective="true">10</rating>
- <website xmlns="http://test.website">
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-add-children-elements-unicode.xml b/test/integration/targets/xml/results/test-add-children-elements-unicode.xml
deleted file mode 100644
index 525330c217..0000000000
--- a/test/integration/targets/xml/results/test-add-children-elements-unicode.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- <beer>Окское</beer></beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-add-children-elements.xml b/test/integration/targets/xml/results/test-add-children-elements.xml
deleted file mode 100644
index f9ff25176a..0000000000
--- a/test/integration/targets/xml/results/test-add-children-elements.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- <beer>Old Rasputin</beer></beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-add-children-from-groupvars.xml b/test/integration/targets/xml/results/test-add-children-from-groupvars.xml
deleted file mode 100644
index 565ba402b6..0000000000
--- a/test/integration/targets/xml/results/test-add-children-from-groupvars.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- <beer>Natty Lite</beer><beer>Miller Lite</beer><beer>Coors Lite</beer></beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-add-children-insertafter.xml b/test/integration/targets/xml/results/test-add-children-insertafter.xml
deleted file mode 100644
index 8da9633636..0000000000
--- a/test/integration/targets/xml/results/test-add-children-insertafter.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Old Rasputin</beer>
- <beer>Old Motor Oil</beer>
- <beer>Old Curmudgeon</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business>
diff --git a/test/integration/targets/xml/results/test-add-children-insertbefore.xml b/test/integration/targets/xml/results/test-add-children-insertbefore.xml
deleted file mode 100644
index c409e54bfa..0000000000
--- a/test/integration/targets/xml/results/test-add-children-insertbefore.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>Old Rasputin</beer>
- <beer>Old Motor Oil</beer>
- <beer>Old Curmudgeon</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business>
diff --git a/test/integration/targets/xml/results/test-add-children-with-attributes-unicode.xml b/test/integration/targets/xml/results/test-add-children-with-attributes-unicode.xml
deleted file mode 100644
index 374652244f..0000000000
--- a/test/integration/targets/xml/results/test-add-children-with-attributes-unicode.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- <beer name="Окское" type="экстра"/></beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-add-children-with-attributes.xml b/test/integration/targets/xml/results/test-add-children-with-attributes.xml
deleted file mode 100644
index 5a3907f6f2..0000000000
--- a/test/integration/targets/xml/results/test-add-children-with-attributes.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- <beer name="Ansible Brew" type="light"/></beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-add-element-implicitly.yml b/test/integration/targets/xml/results/test-add-element-implicitly.yml
deleted file mode 100644
index fa1ddfca2f..0000000000
--- a/test/integration/targets/xml/results/test-add-element-implicitly.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- <beer color="red">George Killian's Irish Red</beer>
- <beer origin="CZ" color="blonde">Pilsner Urquell</beer>
- </beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- <validxhtml validateon=""/>
- </website>
- <phonenumber>555-555-1234</phonenumber>
- <owner dob="1976-04-12">
- <name>
- <last>Smith</last>
- <first>John</first>
- <middle>Q</middle>
- </name>
- </owner>
- <website_bis>
- <validxhtml validateon=""/>
- </website_bis>
- <testnormalelement>xml tag with no special characters</testnormalelement>
- <test-with-dash>xml tag with dashes</test-with-dash>
- <test-with-dash.and.dot>xml tag with dashes and dots</test-with-dash.and.dot>
- <test-with.dash_and.dot_and-underscores>xml tag with dashes, dots and underscores</test-with.dash_and.dot_and-underscores>
-</business>
diff --git a/test/integration/targets/xml/results/test-add-namespaced-children-elements.xml b/test/integration/targets/xml/results/test-add-namespaced-children-elements.xml
deleted file mode 100644
index 3d27e8aa3c..0000000000
--- a/test/integration/targets/xml/results/test-add-namespaced-children-elements.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
- <name>Tasty Beverage Co.</name>
- <beers xmlns="http://test.beers">
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- <beer>Old Rasputin</beer></beers>
- <rating xmlns="http://test.rating" attr:subjective="true">10</rating>
- <website xmlns="http://test.website">
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-pretty-print-only.xml b/test/integration/targets/xml/results/test-pretty-print-only.xml
deleted file mode 100644
index f47909ac69..0000000000
--- a/test/integration/targets/xml/results/test-pretty-print-only.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business>
diff --git a/test/integration/targets/xml/results/test-pretty-print.xml b/test/integration/targets/xml/results/test-pretty-print.xml
deleted file mode 100644
index b5c38262fd..0000000000
--- a/test/integration/targets/xml/results/test-pretty-print.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- <beer>Old Rasputin</beer>
- </beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business>
diff --git a/test/integration/targets/xml/results/test-remove-attribute.xml b/test/integration/targets/xml/results/test-remove-attribute.xml
deleted file mode 100644
index 8a621cf144..0000000000
--- a/test/integration/targets/xml/results/test-remove-attribute.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating>10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-remove-element.xml b/test/integration/targets/xml/results/test-remove-element.xml
deleted file mode 100644
index 454d905cd4..0000000000
--- a/test/integration/targets/xml/results/test-remove-element.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-remove-namespaced-attribute.xml b/test/integration/targets/xml/results/test-remove-namespaced-attribute.xml
deleted file mode 100644
index 732a0ed224..0000000000
--- a/test/integration/targets/xml/results/test-remove-namespaced-attribute.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
- <name>Tasty Beverage Co.</name>
- <beers xmlns="http://test.beers">
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating xmlns="http://test.rating">10</rating>
- <website xmlns="http://test.website">
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-remove-namespaced-element.xml b/test/integration/targets/xml/results/test-remove-namespaced-element.xml
deleted file mode 100644
index 16df98e201..0000000000
--- a/test/integration/targets/xml/results/test-remove-namespaced-element.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
- <name>Tasty Beverage Co.</name>
- <beers xmlns="http://test.beers">
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <website xmlns="http://test.website">
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-attribute-value-unicode.xml b/test/integration/targets/xml/results/test-set-attribute-value-unicode.xml
deleted file mode 100644
index de3bc3f600..0000000000
--- a/test/integration/targets/xml/results/test-set-attribute-value-unicode.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating subjective="нет">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-attribute-value.xml b/test/integration/targets/xml/results/test-set-attribute-value.xml
deleted file mode 100644
index 143fe7bf4e..0000000000
--- a/test/integration/targets/xml/results/test-set-attribute-value.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating subjective="false">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-children-elements-level.xml b/test/integration/targets/xml/results/test-set-children-elements-level.xml
deleted file mode 100644
index 0ef2b7e6e6..0000000000
--- a/test/integration/targets/xml/results/test-set-children-elements-level.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer alcohol="0.5" name="90 Minute IPA"><Water liter="0.2" quantity="200g"/><Starch quantity="10g"/><Hops quantity="50g"/><Yeast quantity="20g"/></beer><beer alcohol="0.3" name="Harvest Pumpkin Ale"><Water liter="0.2" quantity="200g"/><Hops quantity="25g"/><Yeast quantity="20g"/></beer></beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-children-elements-unicode.xml b/test/integration/targets/xml/results/test-set-children-elements-unicode.xml
deleted file mode 100644
index f19d53566a..0000000000
--- a/test/integration/targets/xml/results/test-set-children-elements-unicode.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Окское</beer><beer>Невское</beer></beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-children-elements.xml b/test/integration/targets/xml/results/test-set-children-elements.xml
deleted file mode 100644
index be313a5a8d..0000000000
--- a/test/integration/targets/xml/results/test-set-children-elements.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>90 Minute IPA</beer><beer>Harvest Pumpkin Ale</beer></beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-element-value-empty.xml b/test/integration/targets/xml/results/test-set-element-value-empty.xml
deleted file mode 100644
index 785beb645d..0000000000
--- a/test/integration/targets/xml/results/test-set-element-value-empty.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating subjective="true">10</rating>
- <website>
- <mobilefriendly/>
- <address></address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-element-value-unicode.xml b/test/integration/targets/xml/results/test-set-element-value-unicode.xml
deleted file mode 100644
index 734fe6dbf1..0000000000
--- a/test/integration/targets/xml/results/test-set-element-value-unicode.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating subjective="true">пять</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-<rating>пять</rating></business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-element-value.xml b/test/integration/targets/xml/results/test-set-element-value.xml
deleted file mode 100644
index fc97ec3bed..0000000000
--- a/test/integration/targets/xml/results/test-set-element-value.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business type="bar">
- <name>Tasty Beverage Co.</name>
- <beers>
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating subjective="true">5</rating>
- <website>
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-<rating>5</rating></business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-namespaced-attribute-value.xml b/test/integration/targets/xml/results/test-set-namespaced-attribute-value.xml
deleted file mode 100644
index 44abda43f0..0000000000
--- a/test/integration/targets/xml/results/test-set-namespaced-attribute-value.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
- <name>Tasty Beverage Co.</name>
- <beers xmlns="http://test.beers">
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating xmlns="http://test.rating" attr:subjective="false">10</rating>
- <website xmlns="http://test.website">
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/results/test-set-namespaced-element-value.xml b/test/integration/targets/xml/results/test-set-namespaced-element-value.xml
deleted file mode 100644
index 0cc8a79e39..0000000000
--- a/test/integration/targets/xml/results/test-set-namespaced-element-value.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
- <name>Tasty Beverage Co.</name>
- <beers xmlns="http://test.beers">
- <beer>Rochefort 10</beer>
- <beer>St. Bernardus Abbot 12</beer>
- <beer>Schlitz</beer>
- </beers>
- <rating xmlns="http://test.rating" attr:subjective="true">11</rating>
- <website xmlns="http://test.website">
- <mobilefriendly/>
- <address>http://tastybeverageco.com</address>
- </website>
-</business> \ No newline at end of file
diff --git a/test/integration/targets/xml/tasks/main.yml b/test/integration/targets/xml/tasks/main.yml
deleted file mode 100644
index 9b8f2c3678..0000000000
--- a/test/integration/targets/xml/tasks/main.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-- name: Gather facts
- setup:
-
-- name: Install lxml (FreeBSD)
- package:
- name: '{{ "py27-lxml" if ansible_python.version.major == 2 else "py36-lxml" }}'
- state: present
- when: ansible_os_family == "FreeBSD"
-
-# Needed for MacOSX !
-- name: Install lxml
- pip:
- name: lxml
- state: present
-# when: ansible_os_family == "Darwin"
-
-- name: Get lxml version
- command: "{{ ansible_python_interpreter }} -c 'from lxml import etree; print(\".\".join(str(v) for v in etree.LXML_VERSION))'"
- register: lxml_version
-
-- name: Set lxml capabilities as variables
- set_fact:
- # NOTE: Some tests require predictable element attribute order,
- # which is only guaranteed starting from lxml v3.0alpha1
- lxml_predictable_attribute_order: '{{ lxml_version.stdout is version("3", ">=") }}'
-
- # NOTE: The xml module requires at least lxml v2.3.0
- lxml_xpath_attribute_result_attrname: '{{ lxml_version.stdout is version("2.3.0", ">=") }}'
-
-- name: Only run the tests when lxml v2.3.0+
- when: lxml_xpath_attribute_result_attrname
- block:
-
- - include_tasks: test-add-children-elements.yml
- - include_tasks: test-add-children-from-groupvars.yml
- - include_tasks: test-add-children-insertafter.yml
- - include_tasks: test-add-children-insertbefore.yml
- - include_tasks: test-add-children-with-attributes.yml
- - include_tasks: test-add-element-implicitly.yml
- - include_tasks: test-count.yml
- - include_tasks: test-mutually-exclusive-attributes.yml
- - include_tasks: test-remove-attribute.yml
- - include_tasks: test-remove-element.yml
- - include_tasks: test-set-attribute-value.yml
- - include_tasks: test-set-children-elements.yml
- - include_tasks: test-set-children-elements-level.yml
- - include_tasks: test-set-element-value.yml
- - include_tasks: test-set-element-value-empty.yml
- - include_tasks: test-pretty-print.yml
- - include_tasks: test-pretty-print-only.yml
- - include_tasks: test-add-namespaced-children-elements.yml
- - include_tasks: test-remove-namespaced-attribute.yml
- - include_tasks: test-set-namespaced-attribute-value.yml
- - include_tasks: test-set-namespaced-element-value.yml
- - include_tasks: test-set-namespaced-children-elements.yml
- - include_tasks: test-get-element-content.yml
- - include_tasks: test-xmlstring.yml
- - include_tasks: test-children-elements-xml.yml
-
- # Unicode tests
- - include_tasks: test-add-children-elements-unicode.yml
- - include_tasks: test-add-children-with-attributes-unicode.yml
- - include_tasks: test-set-attribute-value-unicode.yml
- - include_tasks: test-count-unicode.yml
- - include_tasks: test-get-element-content.yml
- - include_tasks: test-set-children-elements-unicode.yml
- - include_tasks: test-set-element-value-unicode.yml
diff --git a/test/integration/targets/xml/tasks/test-add-children-elements-unicode.yml b/test/integration/targets/xml/tasks/test-add-children-elements-unicode.yml
deleted file mode 100644
index 8ad91501c3..0000000000
--- a/test/integration/targets/xml/tasks/test-add-children-elements-unicode.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add child element
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- add_children:
- - beer: Окское
- register: add_children_elements_unicode
-
- - name: Compare to expected result
- copy:
- src: results/test-add-children-elements-unicode.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - add_children_elements_unicode.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-add-children-elements-unicode.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-add-children-elements.yml b/test/integration/targets/xml/tasks/test-add-children-elements.yml
deleted file mode 100644
index 8d9b06866d..0000000000
--- a/test/integration/targets/xml/tasks/test-add-children-elements.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add child element
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- add_children:
- - beer: Old Rasputin
- register: add_children_elements
-
- - name: Compare to expected result
- copy:
- src: results/test-add-children-elements.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - add_children_elements.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-add-children-elements.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-add-children-from-groupvars.yml b/test/integration/targets/xml/tasks/test-add-children-from-groupvars.yml
deleted file mode 100644
index e062de8d14..0000000000
--- a/test/integration/targets/xml/tasks/test-add-children-from-groupvars.yml
+++ /dev/null
@@ -1,28 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add child element
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- add_children: '{{ bad_beers }}'
- register: add_children_from_groupvars
-
- - name: Compare to expected result
- copy:
- src: results/test-add-children-from-groupvars.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - add_children_from_groupvars.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-add-children-from-groupvars.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-add-children-insertafter.yml b/test/integration/targets/xml/tasks/test-add-children-insertafter.yml
deleted file mode 100644
index 2d42e2d54e..0000000000
--- a/test/integration/targets/xml/tasks/test-add-children-insertafter.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add child element
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: '/business/beers/beer[text()="St. Bernardus Abbot 12"]'
- insertafter: yes
- add_children:
- - beer: Old Rasputin
- - beer: Old Motor Oil
- - beer: Old Curmudgeon
- pretty_print: yes
- register: add_children_insertafter
-
- - name: Compare to expected result
- copy:
- src: results/test-add-children-insertafter.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - add_children_insertafter.changed == true
- - comparison.changed == false # identical
diff --git a/test/integration/targets/xml/tasks/test-add-children-insertbefore.yml b/test/integration/targets/xml/tasks/test-add-children-insertbefore.yml
deleted file mode 100644
index 8550f12cf7..0000000000
--- a/test/integration/targets/xml/tasks/test-add-children-insertbefore.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add child element
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: '/business/beers/beer[text()="St. Bernardus Abbot 12"]'
- insertbefore: yes
- add_children:
- - beer: Old Rasputin
- - beer: Old Motor Oil
- - beer: Old Curmudgeon
- pretty_print: yes
- register: add_children_insertbefore
-
- - name: Compare to expected result
- copy:
- src: results/test-add-children-insertbefore.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - add_children_insertbefore.changed == true
- - comparison.changed == false # identical
diff --git a/test/integration/targets/xml/tasks/test-add-children-with-attributes-unicode.yml b/test/integration/targets/xml/tasks/test-add-children-with-attributes-unicode.yml
deleted file mode 100644
index d4a2329f69..0000000000
--- a/test/integration/targets/xml/tasks/test-add-children-with-attributes-unicode.yml
+++ /dev/null
@@ -1,31 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add child element
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- add_children:
- - beer:
- name: Окское
- type: экстра
- register: add_children_with_attributes_unicode
-
- - name: Compare to expected result
- copy:
- src: results/test-add-children-with-attributes-unicode.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - add_children_with_attributes_unicode.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-add-children-with-attributes-unicode.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-add-children-with-attributes.yml b/test/integration/targets/xml/tasks/test-add-children-with-attributes.yml
deleted file mode 100644
index 91e92637fc..0000000000
--- a/test/integration/targets/xml/tasks/test-add-children-with-attributes.yml
+++ /dev/null
@@ -1,35 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add child element
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- add_children:
- - beer:
- name: Ansible Brew
- type: light
- register: add_children_with_attributes
-
- - name: Compare to expected result
- copy:
- src: results/test-add-children-with-attributes.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- # NOTE: This test may fail if lxml does not support predictable element attribute order
- # So we filter the failure out for these platforms (e.g. CentOS 6)
- # The module still works fine, we simply are not comparing as smart as we should.
- - name: Test expected result
- assert:
- that:
- - add_children_with_attributes.changed == true
- - comparison.changed == false # identical
- when: lxml_predictable_attribute_order
- #command: diff -u {{ role_path }}/results/test-add-children-with-attributes.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-add-element-implicitly.yml b/test/integration/targets/xml/tasks/test-add-element-implicitly.yml
deleted file mode 100644
index db674ba4fc..0000000000
--- a/test/integration/targets/xml/tasks/test-add-element-implicitly.yml
+++ /dev/null
@@ -1,237 +0,0 @@
----
-- name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers-implicit.xml
-
-
-- name: Add a phonenumber element to the business element. Implicit mkdir -p behavior where applicable
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/phonenumber
- value: 555-555-1234
-
-- name: Add a owner element to the business element, testing implicit mkdir -p behavior 1/2
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/owner/name/last
- value: Smith
-
-- name: Add a owner element to the business element, testing implicit mkdir -p behavior 2/2
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/owner/name/first
- value: John
-
-- name: Add a validxhtml element to the website element. Note that ensure is present by default and while value defaults to null for elements, if one doesn't specify it we don't know what to do.
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/website/validxhtml
-
-- name: Add an empty validateon attribute to the validxhtml element. This actually makes the previous example redundant because of the implicit parent-node creation behavior.
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/website/validxhtml/@validateon
-
-- name: Add an empty validateon attribute to the validxhtml element. Actually verifies the implicit parent-node creation behavior.
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/website_bis/validxhtml/@validateon
-
-- name: Add an attribute with a value
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/owner/@dob='1976-04-12'
-
-- name: Add an element with a value, alternate syntax
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/beers/beer/text()="George Killian's Irish Red" # note the quote within an XPath string thing
-
-- name: Add an element without special characters
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/testnormalelement
- value: xml tag with no special characters
- pretty_print: yes
-
-- name: Add an element with dash
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/test-with-dash
- value: xml tag with dashes
- pretty_print: yes
-
-- name: Add an element with dot
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/test-with-dash.and.dot
- value: xml tag with dashes and dots
- pretty_print: yes
-
-- name: Add an element with underscore
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/test-with.dash_and.dot_and-underscores
- value: xml tag with dashes, dots and underscores
- pretty_print: yes
-
-- name: Add an attribute on a conditional element
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/beers/beer[text()="George Killian's Irish Red"]/@color='red'
-
-- name: Add two attributes on a conditional element
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/beers/beer[text()="Pilsner Urquell" and @origin='CZ']/@color='blonde'
-
-- name: Add a owner element to the business element, testing implicit mkdir -p behavior 3/2 -- complex lookup
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/owner/name[first/text()='John']/middle
- value: Q
-
-- name: Pretty Print this!
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- pretty_print: yes
-
-- name: Compare to expected result
- copy:
- src: results/test-add-element-implicitly.yml
- dest: /tmp/ansible-xml-beers-implicit.xml
- check_mode: yes
- diff: yes
- register: comparison
-
-- name: Test expected result
- assert:
- that:
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-add-element-implicitly.yml /tmp/ansible-xml-beers-implicit.xml
-
-
-# Now we repeat the same, just to ensure proper use of namespaces
-- name: Add a phonenumber element to the business element. Implicit mkdir -p behavior where applicable
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:phonenumber
- value: 555-555-1234
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add a owner element to the business element, testing implicit mkdir -p behavior 1/2
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:owner/a:name/a:last
- value: Smith
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add a owner element to the business element, testing implicit mkdir -p behavior 2/2
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:owner/a:name/a:first
- value: John
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add a validxhtml element to the website element. Note that ensure is present by default and while value defaults to null for elements, if one doesn't specify it we don't know what to do.
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:website/a:validxhtml
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add an empty validateon attribute to the validxhtml element. This actually makes the previous example redundant because of the implicit parent-node creation behavior.
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:website/a:validxhtml/@a:validateon
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add an empty validateon attribute to the validxhtml element. Actually verifies the implicit parent-node creation behavior.
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:website_bis/a:validxhtml/@a:validateon
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add an attribute with a value
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:owner/@a:dob='1976-04-12'
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add an element with a value, alternate syntax
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:beers/a:beer/text()="George Killian's Irish Red" # note the quote within an XPath string thing
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add an attribute on a conditional element
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:beers/a:beer[text()="George Killian's Irish Red"]/@a:color='red'
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add two attributes on a conditional element
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:beers/a:beer[text()="Pilsner Urquell" and @a:origin='CZ']/@a:color='blonde'
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add a owner element to the business element, testing implicit mkdir -p behavior 3/2 -- complex lookup
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/a:owner/a:name[a:first/text()='John']/a:middle
- value: Q
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add an element without special characters
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/testnormalelement
- value: xml tag with no special characters
- pretty_print: yes
- namespaces:
- a: http://example.com/some/namespace
-
-
-- name: Add an element with dash
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/test-with-dash
- value: xml tag with dashes
- pretty_print: yes
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add an element with dot
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/test-with-dash.and.dot
- value: xml tag with dashes and dots
- pretty_print: yes
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Add an element with underscore
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- xpath: /business/test-with.dash_and.dot_and-underscores
- value: xml tag with dashes, dots and underscores
- pretty_print: yes
- namespaces:
- a: http://example.com/some/namespace
-
-- name: Pretty Print this!
- xml:
- file: /tmp/ansible-xml-beers-implicit.xml
- pretty_print: yes
diff --git a/test/integration/targets/xml/tasks/test-add-namespaced-children-elements.yml b/test/integration/targets/xml/tasks/test-add-namespaced-children-elements.yml
deleted file mode 100644
index 25eca47f5b..0000000000
--- a/test/integration/targets/xml/tasks/test-add-namespaced-children-elements.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-namespaced-beers.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
-
-
- - name: Add namespaced child element
- xml:
- path: /tmp/ansible-xml-namespaced-beers.xml
- xpath: /bus:business/ber:beers
- namespaces:
- bus: http://test.business
- ber: http://test.beers
- add_children:
- - beer: Old Rasputin
- register: add_namespaced_children_elements
-
- - name: Compare to expected result
- copy:
- src: results/test-add-namespaced-children-elements.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - add_namespaced_children_elements.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-add-namespaced-children-elements.xml /tmp/ansible-xml-namespaced-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-children-elements-xml.yml b/test/integration/targets/xml/tasks/test-children-elements-xml.yml
deleted file mode 100644
index f4a3c3d582..0000000000
--- a/test/integration/targets/xml/tasks/test-children-elements-xml.yml
+++ /dev/null
@@ -1,30 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add child element with xml format
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- input_type: xml
- add_children:
- - '<beer>Old Rasputin</beer>'
- register: children_elements
-
- - name: Compare to expected result
- copy:
- src: results/test-add-children-elements.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes·
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - children_elements.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-add-children-elements.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-count-unicode.yml b/test/integration/targets/xml/tasks/test-count-unicode.yml
deleted file mode 100644
index 47a806bf98..0000000000
--- a/test/integration/targets/xml/tasks/test-count-unicode.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers-unicode.xml
- dest: /tmp/ansible-xml-beers-unicode.xml
-
-
- - name: Count child element
- xml:
- path: /tmp/ansible-xml-beers-unicode.xml
- xpath: /business/beers/beer
- count: yes
- register: beers
-
- - name: Test expected result
- assert:
- that:
- - beers.changed == false
- - beers.count == 2
diff --git a/test/integration/targets/xml/tasks/test-count.yml b/test/integration/targets/xml/tasks/test-count.yml
deleted file mode 100644
index cbc97e323c..0000000000
--- a/test/integration/targets/xml/tasks/test-count.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add child element
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers/beer
- count: yes
- register: beers
-
- - name: Test expected result
- assert:
- that:
- - beers.changed == false
- - beers.count == 3
diff --git a/test/integration/targets/xml/tasks/test-get-element-content-unicode.yml b/test/integration/targets/xml/tasks/test-get-element-content-unicode.yml
deleted file mode 100644
index 73ae96674f..0000000000
--- a/test/integration/targets/xml/tasks/test-get-element-content-unicode.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers-unicode.xml
- dest: /tmp/ansible-xml-beers-unicode.xml
-
-
- - name: Get element attributes
- xml:
- path: /tmp/ansible-xml-beers-unicode.xml
- xpath: /business/rating
- content: attribute
- register: get_element_attribute
-
- - name: Test expected result
- assert:
- that:
- - get_element_attribute.changed == false
- - get_element_attribute.matches[0]['rating'] is defined and get_element_attribute.matches[0]['rating']['subjective'] == 'да'
-
- - name: Get element text
- xml:
- path: /tmp/ansible-xml-beers-unicode.xml
- xpath: /business/rating
- content: text
- register: get_element_text
-
- - name: Test expected result
- assert:
- that:
- - get_element_text.changed == false
- - get_element_text.matches[0]['rating'] == 'десять'
diff --git a/test/integration/targets/xml/tasks/test-get-element-content.yml b/test/integration/targets/xml/tasks/test-get-element-content.yml
deleted file mode 100644
index 58ca7767e7..0000000000
--- a/test/integration/targets/xml/tasks/test-get-element-content.yml
+++ /dev/null
@@ -1,52 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Get element attributes
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- content: attribute
- register: get_element_attribute
-
- - name: Test expected result
- assert:
- that:
- - get_element_attribute.changed == false
- - get_element_attribute.matches[0]['rating'] is defined
- - get_element_attribute.matches[0]['rating']['subjective'] == 'true'
-
- # TODO: Remove this in Ansible v2.12 when this incorrect use of attribute is deprecated
- - name: Get element attributes
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- content: attribute
- attribute: subjective
- register: get_element_attribute_wrong
-
- - name: Test expected result
- assert:
- that:
- - get_element_attribute_wrong.changed == false
- - get_element_attribute_wrong.matches[0]['rating'] is defined
- - get_element_attribute_wrong.matches[0]['rating']['subjective'] == 'true'
- - get_element_attribute_wrong.deprecations is defined
- - get_element_attribute_wrong.deprecations[0].msg == "Parameter 'attribute=subjective' is ignored when using 'content=attribute' only 'xpath' is used. Please remove entry."
- - get_element_attribute_wrong.deprecations[0].version == '2.12'
-
- - name: Get element text
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- content: text
- register: get_element_text
-
- - name: Test expected result
- assert:
- that:
- - get_element_text.changed == false
- - get_element_text.matches[0]['rating'] == '10'
diff --git a/test/integration/targets/xml/tasks/test-mutually-exclusive-attributes.yml b/test/integration/targets/xml/tasks/test-mutually-exclusive-attributes.yml
deleted file mode 100644
index 3f24b0ac84..0000000000
--- a/test/integration/targets/xml/tasks/test-mutually-exclusive-attributes.yml
+++ /dev/null
@@ -1,22 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Specify both children to add and a value
- xml:
- path: /tmp/ansible-xml-beers.xml
- add_children:
- - child01
- - child02
- value: conflict!
- register: module_output
- ignore_errors: yes
-
- - name: Test expected result
- assert:
- that:
- - module_output.changed == false
- - module_output.failed == true
diff --git a/test/integration/targets/xml/tasks/test-pretty-print-only.yml b/test/integration/targets/xml/tasks/test-pretty-print-only.yml
deleted file mode 100644
index 7c0f7d5fd6..0000000000
--- a/test/integration/targets/xml/tasks/test-pretty-print-only.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml.orig
-
- - name: Remove spaces from test fixture
- shell: sed 's/^[ ]*//g' < /tmp/ansible-xml-beers.xml.orig > /tmp/ansible-xml-beers.xml
-
- - name: Pretty print without modification
- xml:
- path: /tmp/ansible-xml-beers.xml
- pretty_print: yes
- register: pretty_print_only
-
- - name: Compare to expected result
- copy:
- src: results/test-pretty-print-only.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - pretty_print_only.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-pretty-print-only.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-pretty-print.yml b/test/integration/targets/xml/tasks/test-pretty-print.yml
deleted file mode 100644
index 88b618b25d..0000000000
--- a/test/integration/targets/xml/tasks/test-pretty-print.yml
+++ /dev/null
@@ -1,30 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Pretty print
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- pretty_print: yes
- add_children:
- - beer: Old Rasputin
- register: pretty_print
-
- - name: Compare to expected result
- copy:
- src: results/test-pretty-print.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - pretty_print.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-pretty-print.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-remove-attribute.yml b/test/integration/targets/xml/tasks/test-remove-attribute.yml
deleted file mode 100644
index 9aa395e666..0000000000
--- a/test/integration/targets/xml/tasks/test-remove-attribute.yml
+++ /dev/null
@@ -1,28 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Remove '/business/rating/@subjective'
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating/@subjective
- state: absent
- register: remove_attribute
-
- - name: Compare to expected result
- copy:
- src: results/test-remove-attribute.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - remove_attribute.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-remove-attribute.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-remove-element.yml b/test/integration/targets/xml/tasks/test-remove-element.yml
deleted file mode 100644
index f2e20ea220..0000000000
--- a/test/integration/targets/xml/tasks/test-remove-element.yml
+++ /dev/null
@@ -1,28 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Remove '/business/rating'
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- state: absent
- register: remove_element
-
- - name: Compare to expected result
- copy:
- src: results/test-remove-element.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - remove_element.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-remove-element.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-remove-namespaced-attribute.yml b/test/integration/targets/xml/tasks/test-remove-namespaced-attribute.yml
deleted file mode 100644
index 36682b2202..0000000000
--- a/test/integration/targets/xml/tasks/test-remove-namespaced-attribute.yml
+++ /dev/null
@@ -1,33 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-namespaced-beers.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
-
-
- - name: Remove namespaced '/bus:business/rat:rating/@attr:subjective'
- xml:
- path: /tmp/ansible-xml-namespaced-beers.xml
- xpath: /bus:business/rat:rating/@attr:subjective
- namespaces:
- bus: http://test.business
- ber: http://test.beers
- rat: http://test.rating
- attr: http://test.attribute
- state: absent
- register: remove_namespaced_attribute
-
- - name: Compare to expected result
- copy:
- src: results/test-remove-namespaced-attribute.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - remove_element.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-remove-namespaced-attribute.xml /tmp/ansible-xml-namespaced-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-remove-namespaced-element.yml b/test/integration/targets/xml/tasks/test-remove-namespaced-element.yml
deleted file mode 100644
index be78af6803..0000000000
--- a/test/integration/targets/xml/tasks/test-remove-namespaced-element.yml
+++ /dev/null
@@ -1,33 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-namespaced-beers.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
-
-
- - name: Remove namespaced '/bus:business/rat:rating'
- xml:
- path: /tmp/ansible-xml-namespaced-beers.xml
- xpath: /bus:business/rat:rating
- namespaces:
- bus: http://test.business
- ber: http://test.beers
- rat: http://test.rating
- attr: http://test.attribute
- state: absent
- register: remove_namespaced_element
-
- - name: Compare to expected result
- copy:
- src: results/test-remove-element.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - remove_namespaced_element.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-remove-element.xml /tmp/ansible-xml-namespaced-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-set-attribute-value-unicode.yml b/test/integration/targets/xml/tasks/test-set-attribute-value-unicode.yml
deleted file mode 100644
index dabf72a1b7..0000000000
--- a/test/integration/targets/xml/tasks/test-set-attribute-value-unicode.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Set '/business/rating/@subjective' to 'нет'
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- attribute: subjective
- value: нет
- register: set_attribute_value_unicode
-
- - name: Compare to expected result
- copy:
- src: results/test-set-attribute-value-unicode.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_attribute_value_unicode.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-attribute-value-unicode.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-set-attribute-value.yml b/test/integration/targets/xml/tasks/test-set-attribute-value.yml
deleted file mode 100644
index 2aa39fe22f..0000000000
--- a/test/integration/targets/xml/tasks/test-set-attribute-value.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Set '/business/rating/@subjective' to 'false'
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- attribute: subjective
- value: 'false'
- register: set_attribute_value
-
- - name: Compare to expected result
- copy:
- src: results/test-set-attribute-value.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_attribute_value.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-attribute-value.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-set-children-elements-level.yml b/test/integration/targets/xml/tasks/test-set-children-elements-level.yml
deleted file mode 100644
index 3e2c0adb6f..0000000000
--- a/test/integration/targets/xml/tasks/test-set-children-elements-level.yml
+++ /dev/null
@@ -1,74 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Set child elements
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- set_children: &children
- - beer:
- alcohol: "0.5"
- name: 90 Minute IPA
- _:
- - Water:
- liter: "0.2"
- quantity: 200g
- - Starch:
- quantity: 10g
- - Hops:
- quantity: 50g
- - Yeast:
- quantity: 20g
- - beer:
- alcohol: "0.3"
- name: Harvest Pumpkin Ale
- _:
- - Water:
- liter: "0.2"
- quantity: 200g
- - Hops:
- quantity: 25g
- - Yeast:
- quantity: 20g
- register: set_children_elements_level
-
- - name: Compare to expected result
- copy:
- src: results/test-set-children-elements-level.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_children_elements_level.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-children-elements-level.xml /tmp/ansible-xml-beers.xml
-
-
- - name: Set child elements (again)
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- set_children: *children
- register: set_children_again
-
- - name: Compare to expected result
- copy:
- src: results/test-set-children-elements-level.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_children_again.changed == false
- - comparison.changed == false # identical
diff --git a/test/integration/targets/xml/tasks/test-set-children-elements-unicode.yml b/test/integration/targets/xml/tasks/test-set-children-elements-unicode.yml
deleted file mode 100644
index 240b894ac7..0000000000
--- a/test/integration/targets/xml/tasks/test-set-children-elements-unicode.yml
+++ /dev/null
@@ -1,46 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Set child elements
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- set_children: &children
- - beer: Окское
- - beer: Невское
- register: set_children_elements_unicode
-
- - name: Compare to expected result
- copy:
- src: results/test-set-children-elements-unicode.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_children_elements_unicode.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-children-elements-unicode.xml /tmp/ansible-xml-beers.xml
-
-
- - name: Compare to expected result
- copy:
- src: results/test-set-children-elements-unicode.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_children_again.changed == false
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-children-elements-unicode.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-set-children-elements.yml b/test/integration/targets/xml/tasks/test-set-children-elements.yml
deleted file mode 100644
index 7b0f3247ad..0000000000
--- a/test/integration/targets/xml/tasks/test-set-children-elements.yml
+++ /dev/null
@@ -1,53 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Set child elements
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- set_children: &children
- - beer: 90 Minute IPA
- - beer: Harvest Pumpkin Ale
- register: set_children_elements
-
- - name: Compare to expected result
- copy:
- src: results/test-set-children-elements.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_children_elements.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-children-elements.xml /tmp/ansible-xml-beers.xml
-
-
- - name: Set child elements (again)
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/beers
- set_children: *children
- register: set_children_again
-
- - name: Compare to expected result
- copy:
- src: results/test-set-children-elements.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_children_again.changed == false
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-children-elements.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-set-element-value-empty.yml b/test/integration/targets/xml/tasks/test-set-element-value-empty.yml
deleted file mode 100644
index 5814803cb7..0000000000
--- a/test/integration/targets/xml/tasks/test-set-element-value-empty.yml
+++ /dev/null
@@ -1,28 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Set '/business/website/address' to empty string.
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/website/address
- value: ''
- register: set_element_value_empty
-
- - name: Compare to expected result
- copy:
- src: results/test-set-element-value-empty.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_element_value_empty.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-element-value-empty.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-set-element-value-unicode.yml b/test/integration/targets/xml/tasks/test-set-element-value-unicode.yml
deleted file mode 100644
index c3a40b7d93..0000000000
--- a/test/integration/targets/xml/tasks/test-set-element-value-unicode.yml
+++ /dev/null
@@ -1,43 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add 2nd '/business/rating' with value 'пять'
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business
- add_children:
- - rating: пять
-
- - name: Set '/business/rating' to 'пять'
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- value: пять
- register: set_element_first_run
-
- - name: Set '/business/rating' to 'false'... again
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- value: пять
- register: set_element_second_run
-
- - name: Compare to expected result
- copy:
- src: results/test-set-element-value-unicode.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_element_first_run.changed == true
- - set_element_second_run.changed == false
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-element-value-unicode.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-set-element-value.yml b/test/integration/targets/xml/tasks/test-set-element-value.yml
deleted file mode 100644
index dbd070f139..0000000000
--- a/test/integration/targets/xml/tasks/test-set-element-value.yml
+++ /dev/null
@@ -1,43 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-beers.xml
- dest: /tmp/ansible-xml-beers.xml
-
-
- - name: Add 2nd '/business/rating' with value '5'
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business
- add_children:
- - rating: '5'
-
- - name: Set '/business/rating' to '5'
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- value: '5'
- register: set_element_first_run
-
- - name: Set '/business/rating' to '5'... again
- xml:
- path: /tmp/ansible-xml-beers.xml
- xpath: /business/rating
- value: '5'
- register: set_element_second_run
-
- - name: Compare to expected result
- copy:
- src: results/test-set-element-value.xml
- dest: /tmp/ansible-xml-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_element_first_run.changed == true
- - set_element_second_run.changed == false
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-element-value.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-set-namespaced-attribute-value.yml b/test/integration/targets/xml/tasks/test-set-namespaced-attribute-value.yml
deleted file mode 100644
index e0086efe3a..0000000000
--- a/test/integration/targets/xml/tasks/test-set-namespaced-attribute-value.yml
+++ /dev/null
@@ -1,34 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-namespaced-beers.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
-
-
- - name: Set namespaced '/bus:business/rat:rating/@attr:subjective' to 'false'
- xml:
- path: /tmp/ansible-xml-namespaced-beers.xml
- xpath: /bus:business/rat:rating
- namespaces:
- bus: http://test.business
- ber: http://test.beers
- rat: http://test.rating
- attr: http://test.attribute
- attribute: attr:subjective
- value: 'false'
- register: set_namespaced_attribute_value
-
- - name: Compare to expected result
- copy:
- src: results/test-set-namespaced-attribute-value.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - set_namespaced_attribute_value.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-set-namespaced-attribute-value.xml /tmp/ansible-xml-namespaced-beers.xml
diff --git a/test/integration/targets/xml/tasks/test-set-namespaced-children-elements.yml b/test/integration/targets/xml/tasks/test-set-namespaced-children-elements.yml
deleted file mode 100644
index 8e66e70eeb..0000000000
--- a/test/integration/targets/xml/tasks/test-set-namespaced-children-elements.yml
+++ /dev/null
@@ -1,57 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-namespaced-beers.xml
- dest: /tmp/ansible-xml-namespaced-beers-xml.xml
-
- - name: Set child elements
- xml:
- path: /tmp/ansible-xml-namespaced-beers-xml.xml
- xpath: /bus:business/ber:beers
- namespaces:
- bus: http://test.business
- ber: http://test.beers
- set_children:
- - beer: 90 Minute IPA
- - beer: Harvest Pumpkin Ale
-
- - name: Copy state after first set_children
- copy:
- src: /tmp/ansible-xml-namespaced-beers.xml
- dest: /tmp/ansible-xml-namespaced-beers-1.xml
- remote_src: yes
-
- - name: Set child elements again
- xml:
- path: /tmp/ansible-xml-namespaced-beers-xml.xml
- xpath: /bus:business/ber:beers
- namespaces:
- bus: http://test.business
- ber: http://test.beers
- set_children:
- - beer: 90 Minute IPA
- - beer: Harvest Pumpkin Ale
- register: set_children_again
-
- - name: Copy state after second set_children
- copy:
- src: /tmp/ansible-xml-namespaced-beers.xml
- dest: /tmp/ansible-xml-namespaced-beers-2.xml
- remote_src: yes
-
- - name: Compare to expected result
- copy:
- src: /tmp/ansible-xml-namespaced-beers-1.xml
- dest: /tmp/ansible-xml-namespaced-beers-2.xml
- remote_src: yes
- check_mode: yes
- diff: yes
- register: comparison
- #command: diff /tmp/ansible-xml-namespaced-beers-1.xml /tmp/ansible-xml-namespaced-beers-2.xml
-
- - name: Test expected result
- assert:
- that:
- - set_children_again.changed == false # idempotency
- - set_namespaced_attribute_value.changed == true
- - comparison.changed == false # identical
diff --git a/test/integration/targets/xml/tasks/test-set-namespaced-element-value.yml b/test/integration/targets/xml/tasks/test-set-namespaced-element-value.yml
deleted file mode 100644
index f77d7537e9..0000000000
--- a/test/integration/targets/xml/tasks/test-set-namespaced-element-value.yml
+++ /dev/null
@@ -1,46 +0,0 @@
----
- - name: Setup test fixture
- copy:
- src: fixtures/ansible-xml-namespaced-beers.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
-
-
- - name: Set namespaced '/bus:business/rat:rating' to '11'
- xml:
- path: /tmp/ansible-xml-namespaced-beers.xml
- namespaces:
- bus: http://test.business
- ber: http://test.beers
- rat: http://test.rating
- attr: http://test.attribute
- xpath: /bus:business/rat:rating
- value: '11'
- register: set_element_first_run
-
- - name: Set namespaced '/bus:business/rat:rating' to '11' again
- xml:
- path: /tmp/ansible-xml-namespaced-beers.xml
- namespaces:
- bus: http://test.business
- ber: http://test.beers
- rat: http://test.rating
- attr: http://test.attribute
- xpath: /bus:business/rat:rating
- value: '11'
- register: set_element_second_run
-
- - name: Compare to expected result
- copy:
- src: results/test-set-namespaced-element-value.xml
- dest: /tmp/ansible-xml-namespaced-beers.xml
- check_mode: yes
- diff: yes
- register: comparison
- #command: diff -u {{ role_path }}/results/test-set-namespaced-element-value.xml /tmp/ansible-xml-namespaced-beers.xml
-
- - name: Test expected result
- assert:
- that:
- - set_element_first_run.changed == true
- - set_element_second_run.changed == false
- - comparison.changed == false # identical
diff --git a/test/integration/targets/xml/tasks/test-xmlstring.yml b/test/integration/targets/xml/tasks/test-xmlstring.yml
deleted file mode 100644
index 4620d984fa..0000000000
--- a/test/integration/targets/xml/tasks/test-xmlstring.yml
+++ /dev/null
@@ -1,81 +0,0 @@
----
- - name: Copy expected results to remote
- copy:
- src: "results/{{ item }}"
- dest: "/tmp/{{ item }}"
- with_items:
- - test-pretty-print.xml
- - test-pretty-print-only.xml
-
- # NOTE: Jinja2 templating eats trailing newlines
- - name: Read from xmlstring (not using pretty_print)
- xml:
- xmlstring: "{{ lookup('file', '{{ role_path }}/fixtures/ansible-xml-beers.xml') }}"
- xpath: .
- register: xmlresponse
-
- - name: Compare to expected result
- copy:
- content: "{{ xmlresponse.xmlstring }}\n"
- dest: '/tmp/test-pretty-print-only.xml'
- check_mode: yes
- diff: yes
- register: comparison
-
- - name: Test expected result
- assert:
- that:
- - xmlresponse.changed == false
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-pretty-print-only.xml /tmp/ansible-xml-beers.xml
-
-
- # NOTE: Jinja2 templating eats trailing newlines
- - name: Read from xmlstring (using pretty_print)
- xml:
- xmlstring: "{{ lookup('file', '{{ role_path }}/fixtures/ansible-xml-beers.xml') }}"
- pretty_print: yes
- register: xmlresponse
-
- - name: Compare to expected result
- copy:
- content: '{{ xmlresponse.xmlstring }}'
- dest: '/tmp/test-pretty-print-only.xml'
- check_mode: yes
- diff: yes
- register: comparison
-
- # FIXME: This change is related to the newline added by pretty_print
- - name: Test expected result
- assert:
- that:
- - xmlresponse.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-pretty-print-only.xml /tmp/ansible-xml-beers.xml
-
-
- # NOTE: Jinja2 templating eats trailing newlines
- - name: Read from xmlstring
- xml:
- xmlstring: "{{ lookup('file', '{{ role_path }}/fixtures/ansible-xml-beers.xml') }}"
- xpath: /business/beers
- pretty_print: yes
- add_children:
- - beer: Old Rasputin
- register: xmlresponse_modification
-
- - name: Compare to expected result
- copy:
- content: '{{ xmlresponse_modification.xmlstring }}'
- dest: '/tmp/test-pretty-print.xml'
- check_mode: yes
- diff: yes
- register: comparison
-
- # FIXME: This change is related to the newline added by pretty_print
- - name: Test expected result
- assert:
- that:
- - xmlresponse_modification.changed == true
- - comparison.changed == false # identical
- #command: diff -u {{ role_path }}/results/test-pretty-print.xml /tmp/ansible-xml-beers.xml
diff --git a/test/integration/targets/xml/vars/main.yml b/test/integration/targets/xml/vars/main.yml
deleted file mode 100644
index 7c5675bd93..0000000000
--- a/test/integration/targets/xml/vars/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- mode: yaml -*
----
-bad_beers:
-- beer: "Natty Lite"
-- beer: "Miller Lite"
-- beer: "Coors Lite"
diff --git a/test/integration/targets/yarn/aliases b/test/integration/targets/yarn/aliases
deleted file mode 100644
index 6cd621d42d..0000000000
--- a/test/integration/targets/yarn/aliases
+++ /dev/null
@@ -1,4 +0,0 @@
-shippable/posix/group1
-destructive
-skip/aix
-skip/freebsd
diff --git a/test/integration/targets/yarn/tasks/main.yml b/test/integration/targets/yarn/tasks/main.yml
deleted file mode 100644
index 6c1762d6d2..0000000000
--- a/test/integration/targets/yarn/tasks/main.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-# Yarn package manager integration tests
-# (c) 2018 David Gunter, <david.gunter@tivix.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# ============================================================
-
-- include: run.yml
- vars:
- nodejs_version: '{{ item.node_version }}'
- nodejs_path: 'node-v{{ nodejs_version }}-{{ ansible_system|lower }}-x{{ ansible_userspace_bits }}'
- yarn_version: '{{ item.yarn_version }}'
- with_items:
- - {node_version: 4.8.0, yarn_version: 1.6.0} # Lowest compatible nodejs version
- - {node_version: 8.0.0, yarn_version: 1.6.0} \ No newline at end of file
diff --git a/test/integration/targets/yarn/tasks/run.yml b/test/integration/targets/yarn/tasks/run.yml
deleted file mode 100644
index 37fb7acfbc..0000000000
--- a/test/integration/targets/yarn/tasks/run.yml
+++ /dev/null
@@ -1,114 +0,0 @@
-- name: 'Create directory for Node'
- file:
- path: /usr/local/lib/nodejs
- state: directory
-
-- name: 'Download Nodejs'
- unarchive:
- src: 'https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/yarn/{{ nodejs_path }}.tar.gz'
- dest: '{{ output_dir }}'
- remote_src: yes
- creates: '{{ output_dir }}/{{ nodejs_path }}.tar.gz'
-
-- name: 'Download Yarn'
- unarchive:
- src: 'https://ansible-ci-files.s3.amazonaws.com/test/integration/targets/yarn/yarn-v{{yarn_version}}.tar.gz'
- dest: '{{ output_dir }}'
- remote_src: yes
- creates: '{{ output_dir }}/yarn-v{{yarn_version}}_pkg.tar.gz'
-
-- name: 'Copy node to directory created earlier'
- command: "mv {{ output_dir }}/{{ nodejs_path }} /usr/local/lib/nodejs/{{nodejs_path}}"
-
-# Clean up before running tests
-- name: Remove any previous Nodejs modules
- file:
- path: '{{output_dir}}/node_modules'
- state: absent
-
-# Set vars for our test harness
-- vars:
- #node_bin_path: "/usr/local/lib/nodejs/node-v{{nodejs_version}}/bin"
- node_bin_path: "/usr/local/lib/nodejs/{{ nodejs_path }}/bin"
- yarn_bin_path: "{{ output_dir }}/yarn-v{{ yarn_version }}/bin"
- package: 'iconv-lite'
- environment:
- PATH: "{{ node_bin_path }}:{{ansible_env.PATH}}"
- block:
-
- # Get the version of Yarn and register to a variable
- - shell: '{{ yarn_bin_path }}/yarn --version'
- environment:
- PATH: '{{ node_bin_path }}:{{ ansible_env.PATH }}'
- register: yarn_version
-
- - name: 'Create dummy package.json'
- copy:
- src: templates/package.j2
- dest: '{{ output_dir }}/package.json'
-
- - name: 'Install all packages.'
- yarn:
- path: '{{ output_dir }}'
- executable: '{{ yarn_bin_path }}/yarn'
- state: present
- environment:
- PATH: '{{ node_bin_path }}:{{ ansible_env.PATH }}'
-
- - name: 'Install the same package from package.json again.'
- yarn:
- path: '{{ output_dir }}'
- executable: '{{ yarn_bin_path }}/yarn'
- name: '{{ package }}'
- state: present
- environment:
- PATH: '{{ node_bin_path }}:{{ ansible_env.PATH }}'
- register: yarn_install
-
- - assert:
- that:
- - not (yarn_install is changed)
-
- - name: 'Install package with explicit version (older version of package)'
- yarn:
- path: '{{ output_dir }}'
- executable: '{{ yarn_bin_path }}/yarn'
- name: left-pad
- version: 1.1.0
- state: present
- environment:
- PATH: '{{ node_bin_path }}:{{ ansible_env.PATH }}'
- register: yarn_install_old_package
-
- - assert:
- that:
- - yarn_install_old_package is changed
-
- - name: 'Upgrade old package'
- yarn:
- path: '{{ output_dir }}'
- executable: '{{ yarn_bin_path }}/yarn'
- name: left-pad
- state: latest
- environment:
- PATH: '{{ node_bin_path }}:{{ ansible_env.PATH }}'
- register: yarn_update_old_package
-
- - assert:
- that:
- - yarn_update_old_package is changed
-
- - name: 'Remove a package'
- yarn:
- path: '{{ output_dir }}'
- executable: '{{ yarn_bin_path }}/yarn'
- name: '{{ package }}'
- state: absent
- environment:
- PATH: '{{ node_bin_path }}:{{ ansible_env.PATH }}'
- register: yarn_uninstall_package
-
- - name: 'Assert package removed'
- assert:
- that:
- - yarn_uninstall_package is changed
diff --git a/test/integration/targets/yarn/templates/package.j2 b/test/integration/targets/yarn/templates/package.j2
deleted file mode 100644
index 5af8b4bab6..0000000000
--- a/test/integration/targets/yarn/templates/package.j2
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "name": "ansible-yarn-testing",
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "iconv-lite": "^0.4.21"
- }
-} \ No newline at end of file
diff --git a/test/integration/targets/zabbix_host/aliases b/test/integration/targets/zabbix_host/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/zabbix_host/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/zabbix_host/defaults/main.yml b/test/integration/targets/zabbix_host/defaults/main.yml
deleted file mode 100644
index 5482107368..0000000000
--- a/test/integration/targets/zabbix_host/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-
-zabbix_server_url: http://127.0.0.1/zabbix/
-zabbix_login_user: Admin
-zabbix_login_password: zabbix
diff --git a/test/integration/targets/zabbix_host/meta/main.yml b/test/integration/targets/zabbix_host/meta/main.yml
deleted file mode 100644
index d30074784c..0000000000
--- a/test/integration/targets/zabbix_host/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_zabbix
diff --git a/test/integration/targets/zabbix_host/tasks/main.yml b/test/integration/targets/zabbix_host/tasks/main.yml
deleted file mode 100644
index 914c1e5fcf..0000000000
--- a/test/integration/targets/zabbix_host/tasks/main.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-# setup stuff not testing zabbix_host
-- block:
- - include: zabbix_host_setup.yml
-
- # zabbix_host module tests
- - include: zabbix_host_tests.yml
-
- # documentation example tests
- - include: zabbix_host_doc.yml
-
- # tear down stuff set up earlier
- - include: zabbix_host_teardown.yml
-
- when:
- - ansible_distribution == 'Ubuntu'
diff --git a/test/integration/targets/zabbix_host/tasks/zabbix_host_doc.yml b/test/integration/targets/zabbix_host/tasks/zabbix_host_doc.yml
deleted file mode 100644
index 40f702bb45..0000000000
--- a/test/integration/targets/zabbix_host/tasks/zabbix_host_doc.yml
+++ /dev/null
@@ -1,83 +0,0 @@
----
-# These two tests are close to documentation example
-
-- name: Create a new host or update an existing host's info
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost1
- visible_name: ExampleName
- description: My ExampleHost Description
- host_groups:
- - Linux servers
- - Zabbix servers
- link_templates:
- - Template App IMAP Service
- - Template App NTP Service
- status: enabled
- state: present
- inventory_mode: manual
- inventory_zabbix:
- tag: test-tag
- alias: test-alias
- notes: "Special Informations: test-info"
- location: test-location
- site_rack: test-rack
- os: test-os
- hardware: test-hw
- ipmi_authtype: 2
- ipmi_privilege: 4
- ipmi_username: username
- ipmi_password: password
- interfaces:
- - type: 1
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "10050"
- - type: 4
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "12345"
- macros:
- - macro: '{$EXAMPLEMACRO}'
- value: ExampleMacroValue
- - macro: EXAMPLEMACRO2
- value: ExampleMacroValue2
- description: Example desc that work only with Zabbix 4.4 and higher
- tags:
- - tag: ExampleHostsTag
- - tag: ExampleHostsTag2
- value: ExampleTagValue
- register: zabbix_host1
-
-- name: Update an existing host's tls settings
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost2
- visible_name: ExampleName2
- interfaces:
- - type: 1
- main: 1
- useip: 1
- ip: 10.1.1.2
- dns: ""
- port: "10050"
- host_groups:
- - Linux servers
- tls_psk_identity: test
- tls_connect: 2
- tls_psk: 123456789abcdef123456789abcdef12
- register: zabbix_host2
-
-- name: expect both to succeed
- assert:
- that:
- - "zabbix_host1 is changed"
- - "zabbix_host2 is changed"
diff --git a/test/integration/targets/zabbix_host/tasks/zabbix_host_setup.yml b/test/integration/targets/zabbix_host/tasks/zabbix_host_setup.yml
deleted file mode 100644
index 498a725f29..0000000000
--- a/test/integration/targets/zabbix_host/tasks/zabbix_host_setup.yml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-# set up a zabbix proxy to test zabbix_host with
-
-- name: Create a new proxy
- zabbix_proxy:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- proxy_name: ExampleProxy
- description: ExampleProxy
- status: active
- state: present
- interface:
- type: 0
- main: 1
- useip: 1
- ip: 10.5.6.7
- dns: ""
- port: 10050
- register: zabbix_proxy
diff --git a/test/integration/targets/zabbix_host/tasks/zabbix_host_teardown.yml b/test/integration/targets/zabbix_host/tasks/zabbix_host_teardown.yml
deleted file mode 100644
index 1d76c516c7..0000000000
--- a/test/integration/targets/zabbix_host/tasks/zabbix_host_teardown.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-# remove zabbix_proxy (hopefully) created earlier
-
-- name: remove proxy
- zabbix_proxy:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- proxy_name: ExampleProxy
- state: absent
diff --git a/test/integration/targets/zabbix_host/tasks/zabbix_host_tests.yml b/test/integration/targets/zabbix_host/tasks/zabbix_host_tests.yml
deleted file mode 100644
index 63be018988..0000000000
--- a/test/integration/targets/zabbix_host/tasks/zabbix_host_tests.yml
+++ /dev/null
@@ -1,1169 +0,0 @@
----
-
-- name: "test: create host with many options set"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- visible_name: ExampleName
- description: My ExampleHost Description
- host_groups:
- - Linux servers
- - Zabbix servers
- link_templates:
- - Template App IMAP Service
- - Template App NTP Service
- status: enabled
- state: present
- inventory_mode: manual
- inventory_zabbix:
- tag: test-tag
- alias: test-alias
- notes: "Special Informations: test-info"
- location: test-location
- site_rack: test-rack
- os: test-os
- hardware: test-hw
- interfaces:
- - type: 1
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "10050"
- - type: 1
- main: 0
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "{$MACRO}"
- - type: 4
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "12345"
- proxy: ExampleProxy
- tls_psk_identity: test
- tls_connect: 2
- tls_psk: 123456789abcdef123456789abcdef12
- macros:
- - macro: MACRO1
- value: test1
- - macro: '{$MACRO2}'
- value: test2
- tags:
- - tag: Tag1
- - tag: Tag2
- value: test2
- register: zabbix_host1
-
-- name: expect to succeed and that things changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: try to create the same host with the same settings"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- visible_name: ExampleName
- description: My ExampleHost Description
- host_groups:
- - Linux servers
- - Zabbix servers
- link_templates:
- - Template App IMAP Service
- - Template App NTP Service
- status: enabled
- state: present
- inventory_mode: manual
- inventory_zabbix:
- tag: test-tag
- alias: test-alias
- notes: "Special Informations: test-info"
- location: test-location
- site_rack: test-rack
- os: test-os
- hardware: test-hw
- interfaces:
- - type: 1
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "10050"
- - type: 1
- main: 0
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "{$MACRO}"
- - type: 4
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "12345"
- proxy: ExampleProxy
- tls_psk_identity: test
- tls_connect: 2
- tls_psk: 123456789abcdef123456789abcdef12
- macros:
- - macro: MACRO1
- value: test1
- - macro: '{$MACRO2}'
- value: test2
- tags:
- - tag: Tag1
- - tag: Tag2
- value: test2
- register: zabbix_host1
-
-- name: updating with same values should be idempotent
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: try to create the same host with the same settings and force false"
- zabbix_host:
- force: false
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- visible_name: ExampleName
- description: My ExampleHost Description
- host_groups:
- - Linux servers
- - Zabbix servers
- link_templates:
- - Template App IMAP Service
- - Template App NTP Service
- status: enabled
- state: present
- inventory_mode: manual
- inventory_zabbix:
- tag: test-tag
- alias: test-alias
- notes: "Special Informations: test-info"
- location: test-location
- site_rack: test-rack
- os: test-os
- hardware: test-hw
- interfaces:
- - type: 1
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "10050"
- - type: 1
- main: 0
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "{$MACRO}"
- - type: 4
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "12345"
- proxy: ExampleProxy
- tls_psk_identity: test
- tls_connect: 2
- tls_psk: 123456789abcdef123456789abcdef12
- register: zabbix_host1
-
-- name: updating with same values and force false should be idempotent
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: try to create the same host changing one parameter in the inventory with force false"
- zabbix_host:
- force: false
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- visible_name: ExampleName
- description: My ExampleHost Description
- host_groups:
- - Linux servers
- - Zabbix servers
- link_templates:
- - Template App IMAP Service
- - Template App NTP Service
- status: enabled
- state: present
- inventory_mode: manual
- inventory_zabbix:
- tag: test-tag
- alias: test-alias
- notes: "Special Informations: test-info"
- location: test-location
- site_rack: test-rack
- os: test-os
- hardware: test-hw-modified
- interfaces:
- - type: 1
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "10050"
- - type: 1
- main: 0
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "{$MACRO}"
- - type: 4
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "12345"
- proxy: ExampleProxy
- tls_psk_identity: test
- tls_connect: 2
- tls_psk: 123456789abcdef123456789abcdef12
- register: zabbix_host1
-
-- name: changing the value of an already defined inventory should work and mark task as changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change visible_name"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- visible_name: "ExampleName Changed"
- register: zabbix_host1
-
-- name: expect to succeed and that things changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change visible_name (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- visible_name: "ExampleName Changed"
- register: zabbix_host1
-
-- name: updating with same values should be idempotent
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change description"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- description: "My ExampleHost Description Changed"
- register: zabbix_host1
-
-- name: expect to succeed and that things changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change description (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- description: "My ExampleHost Description Changed"
- register: zabbix_host1
-
-- name: updating with same values should be idempotent
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change host groups (adding one group)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- host_groups:
- - Linux servers
- - Zabbix servers
- - Virtual machines
- register: zabbix_host1
-
-- name: expect to succeed and that things changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change host groups (remove one group)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- host_groups:
- - Linux servers
- - Zabbix servers
- register: zabbix_host1
-
-- name: expect to succeed and that things changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change host groups (add one group using force=no)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- host_groups:
- - Virtual machines
- force: no
- register: zabbix_host1
-
-- name: expect to succeed and that things changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-
-- name: "test: change host groups (check whether we are at three groups)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- host_groups:
- - Linux servers
- - Zabbix servers
- - Virtual machines
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change host groups (attempt to remove all host groups)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- host_groups:
- -
- register: zabbix_host1
- ignore_errors: yes
-
-- name: expect to fail
- assert:
- that:
- - "zabbix_host1 is failed"
-
-- name: "test: change host linked templates (same as before)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- link_templates:
- - Template App IMAP Service
- - Template App NTP Service
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change host linked templates (add one template)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- link_templates:
- - Template App IMAP Service
- - Template App NTP Service
- - Template App HTTP Service
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change host linked templates (add one template, using force=no)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- link_templates:
- - Template App LDAP Service
- force: no
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change host linked templates (make sure we are at 4 templates)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- link_templates:
- - Template App IMAP Service
- - Template App NTP Service
- - Template App HTTP Service
- - Template App LDAP Service
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change host linked templates (remove all templates)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- link_templates:
- -
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change host linked templates (check we have no templates left)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- link_templates:
- -
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change host status"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- status: disabled
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change host status (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- status: disabled
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change host inventory mode"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- inventory_mode: automatic
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change host inventory mode"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- inventory_mode: automatic
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change host inventory data (one field)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- inventory_zabbix:
- tag: test-tag-two
- alias: test-alias
- notes: "Special Informations: test-info"
- location: test-location
- site_rack: test-rack
- os: test-os
- hardware: test-hw
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change host inventory data (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- inventory_zabbix:
- tag: test-tag-two
- alias: test-alias
- notes: "Special Informations: test-info"
- location: test-location
- site_rack: test-rack
- os: test-os
- hardware: test-hw
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: remove host proxy"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- proxy: ''
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add host proxy"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- proxy: ExampleProxy
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add host proxy (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- proxy: ExampleProxy
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change tls settings"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- tls_psk_identity: test2
- tls_connect: 4
- tls_accept: 7
- tls_psk: 123456789abcdef123456789abcdef13
- tls_issuer: AcmeCorp
- tls_subject: AcmeCorpServer
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change tls settings (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- tls_psk_identity: test2
- tls_connect: 4
- tls_accept: 7
- tls_psk: 123456789abcdef123456789abcdef13
- tls_issuer: AcmeCorp
- tls_subject: AcmeCorpServer
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change interface settings (remove one)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- interfaces:
- - type: 1
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "10050"
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change interface settings (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- interfaces:
- - type: 1
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "10050"
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: change interface settings (add one interface using force=no)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- interfaces:
- - type: 4
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "12345"
- force: no
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change interface settings (verify that we are at two interfaces)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- interfaces:
- - type: 1
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "10050"
- - type: 4
- main: 1
- useip: 1
- ip: 10.1.1.1
- dns: ""
- port: "12345"
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "not zabbix_host1 is changed"
-
-- name: "test: add IPMI settings"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- ipmi_authtype: 2
- ipmi_privilege: 4
- ipmi_username: username
- ipmi_password: password
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add IPMI settings again"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- ipmi_authtype: 2
- ipmi_privilege: 4
- ipmi_username: username
- ipmi_password: password
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: verify that an empty change is idempotent"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: IPMI set default values"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- ipmi_authtype: -1
- ipmi_privilege: 2
- ipmi_username: ""
- ipmi_password: ""
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: IPMI set default values (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- ipmi_authtype: -1
- ipmi_privilege: 2
- ipmi_username: ""
- ipmi_password: ""
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: change host inventory mode to disabled"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- inventory_mode: disabled
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: change host inventory mode to manual"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- inventory_mode: manual
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add new set of user macros to the host"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- macros:
- - macro: '{$NEWMACRO1}'
- value: test123
- - macro: NEWMACRO2
- value: abc
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add new set of user macros to the host (again - lowercase)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- macros:
- - macro: '{$newmacro1}'
- value: test123
- - macro: newmacro2
- value: abc
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: update one of the user macros present on the host"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- macros:
- - macro: '{$NEWMACRO1}'
- value: test1234
- - macro: NEWMACRO2
- value: abc
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: update one of the user macros with description"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- macros:
- - macro: '{$NEWMACRO1}'
- value: test1234
- description: Example Description
- - macro: NEWMACRO2
- value: abc
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: update one of the user macros with description (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- macros:
- - macro: '{$NEWMACRO1}'
- value: test1234
- description: Example Description
- - macro: NEWMACRO2
- value: abc
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: update one of the user macros by removing description"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- macros:
- - macro: '{$NEWMACRO1}'
- value: test1234
- - macro: NEWMACRO2
- value: abc
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add user macro while keeping previous ones with force=no"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- force: no
- macros:
- - macro: '{$NEWMACRO3}'
- value: testing
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add the same user macros (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- macros:
- - macro: '{$NEWMACRO1}'
- value: test1234
- - macro: NEWMACRO2
- value: abc
- - macro: '{$NEWMACRO3}'
- value: testing
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: wipe out all of the user macros"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- macros: []
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: wipe out all of the user macros (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- macros: []
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: add new set of tags to the host"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- tags:
- - tag: NEWTAG1
- - tag: NewTag2
- value: abc
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add new set of tags to the host (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- tags:
- - tag: NEWTAG1
- - tag: NewTag2
- value: abc
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: update one of the tags present on the host"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- tags:
- - tag: NEWTAG1
- - tag: NewTag2
- value: abcd
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add tag while keeping previous ones with force=no"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- force: no
- tags:
- - tag: newtag3
- value: testing
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: add the same tags (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- tags:
- - tag: NEWTAG1
- - tag: NewTag2
- value: abcd
- - tag: newtag3
- value: testing
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: wipe out all of the tags"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- tags: []
- register: zabbix_host1
-
-- name: expect to succeed and that things have changed
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: wipe out all of the tags (again)"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- tags: []
- register: zabbix_host1
-
-- name: expect to succeed and that things have not changed
- assert:
- that:
- - "zabbix_host1 is not changed"
-
-- name: "test: attempt to delete host created earlier"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- state: absent
- register: zabbix_host1
-
-- name: deleting a host is a change, right?
- assert:
- that:
- - "zabbix_host1 is changed"
-
-- name: "test: attempt deleting a non-existant host"
- zabbix_host:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- host_name: ExampleHost
- state: absent
- register: zabbix_host1
-
-- name: deleting a non-existant host is not a change, right?
- assert:
- that:
- - "not zabbix_host1 is changed"
diff --git a/test/integration/targets/zabbix_template/aliases b/test/integration/targets/zabbix_template/aliases
deleted file mode 100644
index f37e6c6fb0..0000000000
--- a/test/integration/targets/zabbix_template/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/osx
-skip/freebsd
-skip/rhel
diff --git a/test/integration/targets/zabbix_template/defaults/main.yml b/test/integration/targets/zabbix_template/defaults/main.yml
deleted file mode 100644
index 5482107368..0000000000
--- a/test/integration/targets/zabbix_template/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-
-zabbix_server_url: http://127.0.0.1/zabbix/
-zabbix_login_user: Admin
-zabbix_login_password: zabbix
diff --git a/test/integration/targets/zabbix_template/meta/main.yml b/test/integration/targets/zabbix_template/meta/main.yml
deleted file mode 100644
index d30074784c..0000000000
--- a/test/integration/targets/zabbix_template/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_zabbix
diff --git a/test/integration/targets/zabbix_template/tasks/main.yml b/test/integration/targets/zabbix_template/tasks/main.yml
deleted file mode 100644
index ccabc31d9a..0000000000
--- a/test/integration/targets/zabbix_template/tasks/main.yml
+++ /dev/null
@@ -1,159 +0,0 @@
----
-- when:
- - ansible_distribution == 'Ubuntu'
- block:
- - name: Create a new Zabbix template.
- zabbix_template:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- template_name: ExampleHost
- template_groups:
- - 'Linux servers'
- - 'Templates'
- state: present
- register: create_zabbix_template_result
-
- - assert:
- that:
- - create_zabbix_template_result.changed is sameas true
-
- - name: Gather Zabbix template infomation.
- zabbix_template_info:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- template_name: ExampleHost
- format: json
- register: gather_template_result
-
- - assert:
- that:
- - gather_template_result.template_json.zabbix_export.groups.0.name == 'Linux servers'
- - gather_template_result.template_json.zabbix_export.groups.1.name == 'Templates'
-
- - name: Add link_templates to Zabbix template.
- zabbix_template:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- template_name: ExampleHost
- template_groups:
- - 'Linux servers'
- - 'Templates'
- link_templates:
- - 'Template App Zabbix Proxy'
- - 'Template Module Zabbix agent'
- state: present
- register: update_zabbix_template_result
-
- - assert:
- that:
- - create_zabbix_template_result.changed is sameas true
-
- - name: Gather Zabbix template infomation.
- zabbix_template_info:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- template_name: ExampleHost
- format: json
- register: gather_template_result
-
- - assert:
- that:
- - gather_template_result.template_json.zabbix_export.groups.0.name == 'Linux servers'
- - gather_template_result.template_json.zabbix_export.groups.1.name == 'Templates'
- - gather_template_result.template_json.zabbix_export.templates.0.templates.0.name == 'Template App Zabbix Proxy'
- - gather_template_result.template_json.zabbix_export.templates.0.templates.1.name == 'Template Module Zabbix agent'
-
- - name: Add macros to Zabbix template.
- zabbix_template:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- template_name: ExampleHost
- template_groups:
- - 'Linux servers'
- - 'Templates'
- link_templates:
- - 'Template App Zabbix Proxy'
- - 'Template Module Zabbix agent'
- macros:
- - macro: '{$EXAMPLE_MACRO1}'
- value: 1000
- - macro: '{$EXAMPLE_MACRO2}'
- value: 'text'
- state: present
- register: update_zabbix_template_result
-
- - assert:
- that:
- - create_zabbix_template_result.changed is sameas true
-
- - name: Gather Zabbix template infomation.
- zabbix_template_info:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- template_name: ExampleHost
- format: json
- register: gather_template_result
-
- - assert:
- that:
- - gather_template_result.template_json.zabbix_export.groups.0.name == 'Linux servers'
- - gather_template_result.template_json.zabbix_export.groups.1.name == 'Templates'
- - gather_template_result.template_json.zabbix_export.templates.0.templates.0.name == 'Template App Zabbix Proxy'
- - gather_template_result.template_json.zabbix_export.templates.0.templates.1.name == 'Template Module Zabbix agent'
- - gather_template_result.template_json.zabbix_export.templates.0.macros.0.macro == '{$EXAMPLE_MACRO1}'
- - gather_template_result.template_json.zabbix_export.templates.0.macros.0.value == '1000'
- - gather_template_result.template_json.zabbix_export.templates.0.macros.1.macro == '{$EXAMPLE_MACRO2}'
- - gather_template_result.template_json.zabbix_export.templates.0.macros.1.value == 'text'
-
- - name: Dump Zabbix template to XML format.
- zabbix_template:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- template_name: ExampleHost
- dump_format: xml
- state: dump
- register: template_dump_result
-
- - debug: var=template_dump_result
-
- - assert:
- that:
- - template_dump_result.deprecations is defined
- - template_dump_result.deprecations.0.version == '2.14'
-
- - name: Dump Zabbix template to JSON format.
- zabbix_template:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- template_name: ExampleHost
- dump_format: json
- state: dump
- register: template_dump_result
-
- - debug: var=template_dump_result
-
- - assert:
- that:
- - template_dump_result.deprecations is defined
- - template_dump_result.deprecations.0.version == '2.14'
-
- - name: Delete Zabbix template.
- zabbix_template:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- template_name: ExampleHost
- state: absent
- register: delete_zabbix_template_result
-
- - assert:
- that:
- - delete_zabbix_template_result.changed is sameas true
diff --git a/test/integration/targets/zabbix_user/aliases b/test/integration/targets/zabbix_user/aliases
deleted file mode 100644
index cc949990c8..0000000000
--- a/test/integration/targets/zabbix_user/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/osx
-skip/freebsd
-skip/rhel
-skip/aix
diff --git a/test/integration/targets/zabbix_user/defaults/main.yml b/test/integration/targets/zabbix_user/defaults/main.yml
deleted file mode 100644
index 5482107368..0000000000
--- a/test/integration/targets/zabbix_user/defaults/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-
-zabbix_server_url: http://127.0.0.1/zabbix/
-zabbix_login_user: Admin
-zabbix_login_password: zabbix
diff --git a/test/integration/targets/zabbix_user/meta/main.yml b/test/integration/targets/zabbix_user/meta/main.yml
deleted file mode 100644
index d30074784c..0000000000
--- a/test/integration/targets/zabbix_user/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - setup_zabbix
diff --git a/test/integration/targets/zabbix_user/tasks/main.yml b/test/integration/targets/zabbix_user/tasks/main.yml
deleted file mode 100644
index b72337bc87..0000000000
--- a/test/integration/targets/zabbix_user/tasks/main.yml
+++ /dev/null
@@ -1,912 +0,0 @@
----
-- when:
- - ansible_distribution == 'Ubuntu'
- block:
- # New user create test from here
- - name: test - Create a new Zabbix user with check_mode and diff
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- passwd: password
- check_mode: yes
- diff: yes
- register: create_zabbix_user_result
-
- - assert:
- that:
- - create_zabbix_user_result.changed is sameas true
-
- - name: test - Create a new Zabbix user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- passwd: password
- register: create_zabbix_user_result
-
- - assert:
- that:
- - create_zabbix_user_result.changed is sameas true
-
- - name: test - Create a new Zabbix user(again)
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- passwd: password
- register: create_zabbix_user_result
-
- - assert:
- that:
- - not create_zabbix_user_result.changed is sameas true
-
- # Parameter add test from here to existing user
- - name: test - Add user group to existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: password
- register: add_usergroup_to_existing_user_result
-
- - assert:
- that:
- - add_usergroup_to_existing_user_result.changed is sameas true
-
- - name: test - Add user medias(Email) to existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: password
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- register: add_user_medias_to_existing_user_result
-
- - assert:
- that:
- - add_user_medias_to_existing_user_result.changed is sameas true
-
- - name: test - Add multiple user medias(Email and SMS) to existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: password
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: add_user_medias_to_existing_user_result
-
- - assert:
- that:
- - add_user_medias_to_existing_user_result.changed is sameas true
-
- # Existing parameter updates test from here
- - name: test - Update password parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- override_passwd: yes
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_password_parameter_existing_user_result
-
- - assert:
- that:
- - update_password_parameter_existing_user_result.changed is sameas true
-
- - name: test - Update autologin parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologin: yes
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_autologin_parameter_existing_user_result
-
- - assert:
- that:
- - update_autologin_parameter_existing_user_result.changed is sameas true
-
- - name: test - Update autologout parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_autologout_parameter_existing_user_result
-
- - assert:
- that:
- - update_autologout_parameter_existing_user_result.changed is sameas true
-
- - name: test - Update refresh parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_refresh_parameter_existing_user_result
-
- - assert:
- that:
- - update_refresh_parameter_existing_user_result.changed is sameas true
-
- - name: test - Update rows_per_page parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_rows_per_page_parameter_existing_user_result
-
- - assert:
- that:
- - update_rows_per_page_parameter_existing_user_result.changed is sameas true
-
- - name: test - Update after_login_url parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_after_login_url_parameter_existing_user_result
-
- - assert:
- that:
- - update_after_login_url_parameter_existing_user_result.changed is sameas true
-
- - name: test - Update theme parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: "{{ item }}"
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- loop:
- - blue-theme
- - dark-theme
- register: update_theme_parameter_existing_user_result
-
- - assert:
- that:
- - item.changed is sameas true
- loop: "{{ update_theme_parameter_existing_user_result.results }}"
-
- - name: test - Update type parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: dark-theme
- type: "{{ item }}"
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- loop:
- - Zabbix admin
- - Zabbix super admin
- register: update_type_parameter_existing_user_result
-
- - assert:
- that:
- - item.changed is sameas true
- loop: "{{ update_type_parameter_existing_user_result.results }}"
-
- - name: test - Update lang parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example
- surname: test
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: dark-theme
- type: Zabbix super admin
- lang: en_US
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_lang_parameter_existing_user_result
-
- - assert:
- that:
- - update_lang_parameter_existing_user_result.changed is sameas true
-
- - name: test - Update name and surname parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example2
- surname: test2
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: dark-theme
- type: Zabbix super admin
- lang: en_US
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_name_and_surname_parameter_existing_user_result
-
- - assert:
- that:
- - update_name_and_surname_parameter_existing_user_result.changed is sameas true
-
- - name: test - Update lang parameter for existing user with check_mode and diff
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example2
- surname: test2
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: dark-theme
- type: Zabbix super admin
- lang: en_GB
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- check_mode: yes
- diff: yes
- register: update_lang_parameter_existing_user_with_check_mode_diff_result
-
- - assert:
- that:
- - update_lang_parameter_existing_user_with_check_mode_diff_result.changed is sameas true
-
- - name: test - Update lang parameter for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example2
- surname: test2
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: dark-theme
- type: Zabbix super admin
- lang: en_GB
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_lang_parameter_existing_user_result
-
- - assert:
- that:
- - update_lang_parameter_existing_user_result.changed is sameas true
-
- - name: test - Update lang parameter for existing user(again)
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example2
- surname: test2
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: dark-theme
- type: Zabbix super admin
- lang: en_GB
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- - mediatype: SMS
- sendto: example@example.com
- period: 1-5,01:00-23:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: no
- high: yes
- disaster: yes
- active: yes
- register: update_lang_parameter_existing_user_result
-
- - assert:
- that:
- - not update_lang_parameter_existing_user_result.changed is sameas true
-
- # Parameter delete test from here from existing user
- - name: test - Delete user medias(SNS) for existing user with check_mode and diff
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example2
- surname: test2
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: dark-theme
- type: Zabbix super admin
- lang: en_GB
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- check_mode: yes
- diff: yes
- register: delete_user_medias_existing_user_result
-
- - assert:
- that:
- - delete_user_medias_existing_user_result.changed is sameas true
-
- - name: test - Delete user medias(SNS) for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example2
- surname: test2
- usrgrps:
- - Guests
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: dark-theme
- type: Zabbix super admin
- lang: en_GB
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- register: delete_user_medias_existing_user_result
-
- - assert:
- that:
- - delete_user_medias_existing_user_result.changed is sameas true
-
- - name: test - Delete user group for existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- name: example2
- surname: test2
- usrgrps:
- - Zabbix administrators
- passwd: update_password
- autologout: 500
- refresh: 60
- rows_per_page: 300
- after_login_url: http://example.com
- theme: dark-theme
- type: Zabbix super admin
- lang: en_GB
- user_medias:
- - mediatype: Email
- sendto: example@example.com
- period: 1-7,00:00-24:00
- severity:
- not_classified: no
- information: yes
- warning: yes
- average: yes
- high: yes
- disaster: yes
- active: yes
- register: delete_user_group_existing_user_result
-
- - assert:
- that:
- - delete_user_group_existing_user_result.changed is sameas true
-
- - name: test - Delete existing user with check_mode and diff
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- usrgrps:
- - Zabbix administrators
- passwd: update_password
- state: absent
- check_mode: yes
- diff: yes
- register: delete_existing_user_result
-
- - assert:
- that:
- - delete_existing_user_result.changed is sameas true
-
- - name: test - Delete existing user
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- usrgrps:
- - Zabbix administrators
- passwd: update_password
- state: absent
- register: delete_existing_user_result
-
- - assert:
- that:
- - delete_existing_user_result.changed is sameas true
-
- - name: test - Delete existing user(again)
- zabbix_user:
- server_url: "{{ zabbix_server_url }}"
- login_user: "{{ zabbix_login_user }}"
- login_password: "{{ zabbix_login_password }}"
- alias: example1
- usrgrps:
- - Zabbix administrators
- passwd: update_password
- state: absent
- register: delete_existing_user_result
-
- - assert:
- that:
- - not delete_existing_user_result.changed is sameas true
diff --git a/test/integration/targets/zypper/aliases b/test/integration/targets/zypper/aliases
deleted file mode 100644
index f7aed308a3..0000000000
--- a/test/integration/targets/zypper/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/freebsd
-skip/osx
-skip/rhel
diff --git a/test/integration/targets/zypper/files/empty.spec b/test/integration/targets/zypper/files/empty.spec
deleted file mode 100644
index 044ea3a548..0000000000
--- a/test/integration/targets/zypper/files/empty.spec
+++ /dev/null
@@ -1,12 +0,0 @@
-Summary: Empty RPM
-Name: empty
-Version: 1
-Release: 0
-License: GPLv3
-Group: Applications/System
-BuildArch: noarch
-
-%description
-Empty RPM
-
-%files
diff --git a/test/integration/targets/zypper/meta/main.yml b/test/integration/targets/zypper/meta/main.yml
deleted file mode 100644
index 07faa21776..0000000000
--- a/test/integration/targets/zypper/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_tests
diff --git a/test/integration/targets/zypper/tasks/main.yml b/test/integration/targets/zypper/tasks/main.yml
deleted file mode 100644
index 905b5ddcfd..0000000000
--- a/test/integration/targets/zypper/tasks/main.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# test code for the zyppe module
-#
-# (c) 2015, Guido Günther <agx@sigxcpu.org>
-#
-# heavily based on the yum tests which are
-#
-# (c) 2014, James Tanner <tanner.jc@gmail.com>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- include: 'zypper.yml'
- when: ansible_os_family == 'Suse'
diff --git a/test/integration/targets/zypper/tasks/zypper.yml b/test/integration/targets/zypper/tasks/zypper.yml
deleted file mode 100644
index fb2dd7a892..0000000000
--- a/test/integration/targets/zypper/tasks/zypper.yml
+++ /dev/null
@@ -1,439 +0,0 @@
-- name: get hello package version
- shell: zypper --xml se -svx hello | grep 'name="hello"' | sed 's/.*edition="\([^ ]*\)".*/\1/'
- register: hello_version
-
-- name: set URL of test package
- set_fact:
- hello_package_url: http://download.opensuse.org/repositories/openSUSE:/Leap:/{{ ansible_distribution_version }}/standard/x86_64/hello-{{ hello_version.stdout }}.x86_64.rpm
-
-- debug: var=hello_package_url
-
-# UNINSTALL
-- name: uninstall hello
- zypper:
- name: hello
- state: removed
- register: zypper_result
-
-- name: check hello with rpm
- shell: rpm -q hello
- failed_when: False
- register: rpm_result
-
-- debug: var=zypper_result
-- debug: var=rpm_result
-
-- name: verify uninstallation of hello
- assert:
- that:
- - "zypper_result.rc == 0"
- - "rpm_result.rc == 1"
-
-# UNINSTALL AGAIN
-- name: uninstall hello again
- zypper:
- name: hello
- state: removed
- register: zypper_result
-
-- name: verify no change on re-uninstall
- assert:
- that:
- - "not zypper_result.changed"
-
-# INSTALL
-- name: install hello
- zypper:
- name: hello
- state: present
- register: zypper_result
-
-- name: check hello with rpm
- shell: rpm -q hello
- failed_when: False
- register: rpm_result
-
-- debug: var=zypper_result
-- debug: var=rpm_result
-
-- name: verify installation of hello
- assert:
- that:
- - "zypper_result.rc == 0"
- - "zypper_result.changed"
- - "rpm_result.rc == 0"
-
-# INSTALL AGAIN
-- name: install hello again
- zypper:
- name: hello
- state: present
- register: zypper_result
-
-- name: verify no change on second install
- assert:
- that:
- - "not zypper_result.changed"
-
-# Multiple packages
-- name: uninstall hello and metamail
- zypper:
- name:
- - hello
- - metamail
- state: removed
- register: zypper_result
-
-- name: check hello with rpm
- shell: rpm -q hello
- failed_when: False
- register: rpm_hello_result
-
-- name: check metamail with rpm
- shell: rpm -q metamail
- failed_when: False
- register: rpm_metamail_result
-
-- name: verify packages uninstalled
- assert:
- that:
- - "rpm_hello_result.rc != 0"
- - "rpm_metamail_result.rc != 0"
-
-- name: install hello and metamail
- zypper:
- name:
- - hello
- - metamail
- state: present
- register: zypper_result
-
-- name: check hello with rpm
- shell: rpm -q hello
- failed_when: False
- register: rpm_hello_result
-
-- name: check metamail with rpm
- shell: rpm -q metamail
- failed_when: False
- register: rpm_metamail_result
-
-- name: verify packages installed
- assert:
- that:
- - "zypper_result.rc == 0"
- - "zypper_result.changed"
- - "rpm_hello_result.rc == 0"
- - "rpm_metamail_result.rc == 0"
-
-- name: uninstall hello and metamail
- zypper:
- name:
- - hello
- - metamail
- state: removed
-
-# INSTALL nonexistent package
-- name: install hello from url
- zypper:
- name: doesnotexist
- state: present
- register: zypper_result
- ignore_errors: yes
-
-- name: verify package installation failed
- assert:
- that:
- - "zypper_result.rc == 104"
- - "zypper_result.msg.startswith('No provider of')"
-
-# INSTALL broken local package
-- name: create directory
- file:
- path: "{{output_dir | expanduser}}/zypper1"
- state: directory
-
-- name: fake rpm package
- file:
- path: "{{output_dir | expanduser}}/zypper1/broken.rpm"
- state: touch
-
-- name: install broken rpm
- zypper:
- name: "{{output_dir | expanduser}}/zypper1/broken.rpm"
- state: present
- register: zypper_result
- ignore_errors: yes
-
-- debug: var=zypper_result
-
-- name: verify we failed installation of broken rpm
- assert:
- that:
- - "zypper_result.rc == 3"
- - "'Problem reading the RPM header' in zypper_result.stdout"
-
-# Build and install an empty rpm
-- name: uninstall empty
- zypper:
- name: empty
- state: removed
-
-- name: clean zypper RPM cache
- file:
- name: /var/cache/zypper/RPMS
- state: absent
-
-- name: create directory
- file:
- path: "{{output_dir | expanduser}}/zypper2"
- state: directory
-
-- name: copy spec file
- copy:
- src: empty.spec
- dest: "{{ output_dir | expanduser }}/zypper2/empty.spec"
-
-- name: build rpm
- command: |
- rpmbuild -bb \
- --define "_topdir {{output_dir | expanduser }}/zypper2/rpm-build"
- --define "_builddir %{_topdir}" \
- --define "_rpmdir %{_topdir}" \
- --define "_srcrpmdir %{_topdir}" \
- --define "_specdir {{output_dir | expanduser}}/zypper2" \
- --define "_sourcedir %{_topdir}" \
- {{ output_dir }}/zypper2/empty.spec
- register: rpm_build_result
-
-- name: install empty rpm
- zypper:
- name: "{{ output_dir | expanduser }}/zypper2/rpm-build/noarch/empty-1-0.noarch.rpm"
- disable_gpg_check: yes
- register: zypper_result
-
-- name: check empty with rpm
- shell: rpm -q empty
- failed_when: False
- register: rpm_result
-
-- name: verify installation of empty
- assert:
- that:
- - "zypper_result.rc == 0"
- - "zypper_result.changed"
- - "rpm_result.rc == 0"
-
-- name: uninstall empty
- zypper:
- name: empty
- state: removed
-
-- name: extract from rpm
- zypper:
- name: "{{ output_dir | expanduser }}/zypper2/rpm-build/noarch/empty-1-0.noarch.rpm"
- state: installed
- disable_gpg_check: yes
- extra_args_precommand: --root {{ output_dir | expanduser }}/testdir/
-
-- name: check that dir var is exist
- stat: path={{ output_dir | expanduser }}/testdir/var
- register: stat_result
-
-- name: check that we extract rpm package in testdir folder and folder var is exist
- assert:
- that:
- - "stat_result.stat.exists == true"
-
-
-# test simultaneous remove and install using +- prefixes
-
-- name: install hello to prep next task
- zypper:
- name: hello
- state: present
-
-- name: remove metamail to prep next task
- zypper:
- name: metamail
- state: absent
-
-- name: install and remove in the same run, with +- prefix
- zypper:
- name:
- - -hello
- - +metamail
- state: present
- register: zypper_res1
-
-- name: install and remove again, leave out plus
- zypper:
- name:
- - metamail
- - -hello
- state: present
- register: zypper_res1a
-
-- name: in and rm swapped
- zypper:
- name:
- - -metamail
- - hello
- state: present
- register: zypper_res1b
-
-- name: install metamail
- zypper:
- name: metamail
- state: absent
- register: zypper_res2
-
-- name: remove hello
- zypper:
- name: hello
- state: present
- register: zypper_res3
-
-- name: verify simultaneous install/remove worked
- assert:
- that:
- - zypper_res1 is successful
- - zypper_res1 is changed
- - zypper_res1a is not changed
- - zypper_res1b is changed
- - zypper_res2 is not changed
- - zypper_res3 is not changed
-
-
-- name: install and remove with state=absent
- zypper:
- name:
- - metamail
- - +hello
- state: absent
- register: zypper_res
- ignore_errors: yes
-
-- name: verify simultaneous install/remove failed with absent
- assert:
- that:
- - zypper_res is failed
- - zypper_res.msg == "Can not combine '+' prefix with state=remove/absent."
-
-- name: try rm patch
- zypper:
- name: openSUSE-2016-128
- type: patch
- state: absent
- ignore_errors: yes
- register: zypper_patch
-- assert:
- that:
- - zypper_patch is failed
- - zypper_patch.msg.startswith('Can not remove patches.')
-
-- name: try rm URL
- zypper:
- name: "{{ hello_package_url }}"
- state: absent
- ignore_errors: yes
- register: zypper_rm
-- assert:
- that:
- - zypper_rm is failed
- - zypper_rm.msg.startswith('Can not remove via URL.')
-
-- name: remove pattern update_test
- zypper:
- name: update_test
- type: pattern
- state: absent
-
-- name: install pattern update_test
- zypper:
- name: update_test
- type: pattern
- state: present
- register: zypper_install_pattern1
-
-- name: install pattern update_test again
- zypper:
- name: update_test
- type: pattern
- state: present
- register: zypper_install_pattern2
-
-- assert:
- that:
- - zypper_install_pattern1 is changed
- - zypper_install_pattern2 is not changed
-
-- name: remove hello
- zypper:
- name: hello
- state: absent
-
-- name: install via URL
- zypper:
- state: present
- name: "{{ hello_package_url }}"
- register: zypperin1
-
-- name: test install
- zypper:
- name: hello
- state: present
- register: zypperin2
-
-- assert:
- that:
- - zypperin1 is succeeded
- - zypperin1 is changed
- - zypperin2 is not changed
-
-# check for https://github.com/ansible/ansible/issues/20139
-- name: run updatecache
- zypper:
- name: hello
- state: present
- update_cache: True
- register: zypper_result_update_cache
-
-- name: run updatecache in check mode
- zypper:
- name: hello
- state: present
- update_cache: True
- check_mode: True
- register: zypper_result_update_cache_check
-
-
-- assert:
- that:
- - zypper_result_update_cache is successful
- - zypper_result_update_cache_check is successful
- - zypper_result_update_cache_check is not changed
-
-
-- name: install netcat-openbsd which conflicts with gnu-netcat
- zypper:
- name: netcat-openbsd
- state: present
-
-- name: try installation of gnu-netcat which should fail due to the conflict
- zypper:
- name: gnu-netcat
- state: present
- ignore_errors: yes
- register: zypper_pkg_conflict
-
-- assert:
- that:
- - zypper_pkg_conflict is failed
- - "'conflicts with netcat-openbsd provided' in zypper_pkg_conflict.stdout"
-
-- name: retry installation of gnu-netcat with force_resolution set to choose a resolution
- zypper:
- name: gnu-netcat
- state: present
- force_resolution: True
diff --git a/test/integration/targets/zypper_repository/aliases b/test/integration/targets/zypper_repository/aliases
deleted file mode 100644
index f7aed308a3..0000000000
--- a/test/integration/targets/zypper_repository/aliases
+++ /dev/null
@@ -1,6 +0,0 @@
-destructive
-shippable/posix/group1
-skip/aix
-skip/freebsd
-skip/osx
-skip/rhel
diff --git a/test/integration/targets/zypper_repository/meta/main.yml b/test/integration/targets/zypper_repository/meta/main.yml
deleted file mode 100644
index 07faa21776..0000000000
--- a/test/integration/targets/zypper_repository/meta/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-dependencies:
- - prepare_tests
diff --git a/test/integration/targets/zypper_repository/tasks/main.yml b/test/integration/targets/zypper_repository/tasks/main.yml
deleted file mode 100644
index a94ed4ba91..0000000000
--- a/test/integration/targets/zypper_repository/tasks/main.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-# test code for the zypper repository module
-#
-# (c) 2016, Guido Günther <agx@sigxcpu.org>
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-- include: 'test.yml'
- when: ansible_os_family == 'Suse'
diff --git a/test/integration/targets/zypper_repository/tasks/test.yml b/test/integration/targets/zypper_repository/tasks/test.yml
deleted file mode 100644
index 14343ee5a4..0000000000
--- a/test/integration/targets/zypper_repository/tasks/test.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-- name: collect repo configuration before test
- shell: "grep . /etc/zypp/repos.d/*"
- register: before
-
-- name: ensure zypper ref works
- command: zypper -n ref
-
-- block:
- - include: 'zypper_repository.yml'
- always:
- - name: remove repositories added during test
- zypper_repository:
- name: "{{item}}"
- state: absent
- with_items:
- - chrome1
- - chrome2
- - test
- - testrefresh
- - testprio
- - Apache_Modules
-
- - name: collect repo configuration after test
- shell: "grep . /etc/zypp/repos.d/*"
- register: after
-
- - name: verify repo configuration has been restored
- assert:
- that:
- - before.stdout == after.stdout
-
- - name: ensure zypper ref still works
- command: zypper -n ref
diff --git a/test/integration/targets/zypper_repository/tasks/zypper_repository.yml b/test/integration/targets/zypper_repository/tasks/zypper_repository.yml
deleted file mode 100644
index ddce7e6e7d..0000000000
--- a/test/integration/targets/zypper_repository/tasks/zypper_repository.yml
+++ /dev/null
@@ -1,127 +0,0 @@
-- name: Delete test repo
- zypper_repository:
- name: test
- state: absent
- register: zypper_result
-
-- name: Add test repo
- zypper_repository:
- name: test
- state: present
- repo: http://dl.google.com/linux/chrome/rpm/stable/x86_64
- register: zypper_result
-
-- name: verify repo addition
- assert:
- that:
- - "zypper_result.changed"
-
-- name: Add same repo again
- zypper_repository:
- name: test
- state: present
- repo: http://dl.google.com/linux/chrome/rpm/stable/x86_64
- register: zypper_result
-
-- name: verify no change on second install
- assert:
- that:
- - "not zypper_result.changed"
-
-- name: Change repo URL
- zypper_repository:
- name: test
- state: present
- repo: http://download.videolan.org/pub/vlc/SuSE/Leap_{{ ansible_distribution_version }}/
- register: zypper_result
-
-- name: Verify change on URL only change
- assert:
- that:
- - "zypper_result.changed"
-
-- name: use refresh option
- zypper_repository:
- name: testrefresh
- refresh: no
- state: present
- repo: http://download.videolan.org/pub/vlc/SuSE/Leap_{{ ansible_distribution_version }}/
-
-- name: check refreshoption
- command: zypper -x lr testrefresh
- register: zypper_result
-
-- assert:
- that:
- - '"autorefresh=\"0\"" in zypper_result.stdout'
-
-- name: set repo priority
- zypper_repository:
- name: testprio
- priority: 55
- state: present
- repo: http://download.videolan.org/pub/vlc/SuSE/Leap_{{ ansible_distribution_version }}/
-
-- name: check refreshoption
- command: zypper -x lr testprio
- register: zypper_result
-
-- assert:
- that:
- - '"priority=\"55\"" in zypper_result.stdout'
-
-- name: add two repos with same url
- zypper_repository:
- name: "{{item}}"
- state: present
- repo: http://dl.google.com/linux/chrome/rpm/stable/x86_64
- with_items:
- - chrome1
- - chrome2
-
-- name: check repo is updated by url
- command: zypper lr chrome1
- register: zypper_result1
- ignore_errors: yes
-
-- name: check repo is updated by url
- command: zypper lr chrome2
- register: zypper_result2
-
-- assert:
- that:
- - "zypper_result1.rc != 0"
- - "'not found' in zypper_result1.stderr"
- - "zypper_result2.rc == 0"
- - "'http://dl.google.com/linux/chrome/rpm/stable/x86_64' in zypper_result2.stdout"
-
-- name: add two repos with same name
- zypper_repository:
- name: samename
- state: present
- repo: "{{ item }}"
- with_items:
- - http://download.opensuse.org/repositories/science/openSUSE_Leap_{{ ansible_distribution_version }}/
- - http://download.opensuse.org/repositories/devel:/languages:/ruby/openSUSE_Leap_{{ ansible_distribution_version }}/
-
-- name: check repo is updated by name
- command: zypper lr samename
- register: zypper_result
-
-- assert:
- that:
- - "'/science/' not in zypper_result.stdout"
- - "'/devel:/languages:/ruby/' in zypper_result.stdout"
-
-- name: remove last added repos (by URL to test that)
- zypper_repository:
- repo: http://download.opensuse.org/repositories/devel:/languages:/ruby/openSUSE_Leap_{{ ansible_distribution_version }}/
- state: absent
-
-- name: "Test adding a repo with custom GPG key"
- zypper_repository:
- name: "Apache_Modules"
- repo: "http://download.opensuse.org/repositories/Apache:/Modules/openSUSE_Tumbleweed/"
- priority: 100
- auto_import_keys: true
- state: "present"
diff --git a/test/sanity/ignore.txt b/test/sanity/ignore.txt
index c3ad80a517..a912e1f554 100644
--- a/test/sanity/ignore.txt
+++ b/test/sanity/ignore.txt
@@ -1,104 +1,7 @@
-contrib/inventory/abiquo.py future-import-boilerplate
-contrib/inventory/abiquo.py metaclass-boilerplate
-contrib/inventory/apache-libcloud.py future-import-boilerplate
-contrib/inventory/apache-libcloud.py metaclass-boilerplate
-contrib/inventory/apstra_aos.py future-import-boilerplate
-contrib/inventory/apstra_aos.py metaclass-boilerplate
-contrib/inventory/azure_rm.py future-import-boilerplate
-contrib/inventory/azure_rm.py metaclass-boilerplate
-contrib/inventory/brook.py future-import-boilerplate
-contrib/inventory/brook.py metaclass-boilerplate
-contrib/inventory/cloudforms.py future-import-boilerplate
-contrib/inventory/cloudforms.py metaclass-boilerplate
-contrib/inventory/cobbler.py future-import-boilerplate
-contrib/inventory/cobbler.py metaclass-boilerplate
-contrib/inventory/collins.py future-import-boilerplate
-contrib/inventory/collins.py metaclass-boilerplate
-contrib/inventory/consul_io.py future-import-boilerplate
-contrib/inventory/consul_io.py metaclass-boilerplate
-contrib/inventory/digital_ocean.py future-import-boilerplate
-contrib/inventory/digital_ocean.py metaclass-boilerplate
-contrib/inventory/fleet.py future-import-boilerplate
-contrib/inventory/fleet.py metaclass-boilerplate
-contrib/inventory/foreman.py future-import-boilerplate
-contrib/inventory/foreman.py metaclass-boilerplate
-contrib/inventory/freeipa.py future-import-boilerplate
-contrib/inventory/freeipa.py metaclass-boilerplate
-contrib/inventory/gce.py future-import-boilerplate
-contrib/inventory/gce.py metaclass-boilerplate
-contrib/inventory/gce.py pylint:blacklisted-name
-contrib/inventory/infoblox.py future-import-boilerplate
-contrib/inventory/infoblox.py metaclass-boilerplate
-contrib/inventory/jail.py future-import-boilerplate
-contrib/inventory/jail.py metaclass-boilerplate
-contrib/inventory/landscape.py future-import-boilerplate
-contrib/inventory/landscape.py metaclass-boilerplate
-contrib/inventory/libvirt_lxc.py future-import-boilerplate
-contrib/inventory/libvirt_lxc.py metaclass-boilerplate
-contrib/inventory/linode.py future-import-boilerplate
-contrib/inventory/linode.py metaclass-boilerplate
-contrib/inventory/lxc_inventory.py future-import-boilerplate
-contrib/inventory/lxc_inventory.py metaclass-boilerplate
-contrib/inventory/lxd.py future-import-boilerplate
-contrib/inventory/lxd.py metaclass-boilerplate
-contrib/inventory/mdt_dynamic_inventory.py future-import-boilerplate
-contrib/inventory/mdt_dynamic_inventory.py metaclass-boilerplate
-contrib/inventory/nagios_livestatus.py future-import-boilerplate
-contrib/inventory/nagios_livestatus.py metaclass-boilerplate
-contrib/inventory/nagios_ndo.py future-import-boilerplate
-contrib/inventory/nagios_ndo.py metaclass-boilerplate
-contrib/inventory/nsot.py future-import-boilerplate
-contrib/inventory/nsot.py metaclass-boilerplate
-contrib/inventory/openshift.py future-import-boilerplate
-contrib/inventory/openshift.py metaclass-boilerplate
-contrib/inventory/openstack_inventory.py future-import-boilerplate
-contrib/inventory/openstack_inventory.py metaclass-boilerplate
-contrib/inventory/openvz.py future-import-boilerplate
-contrib/inventory/openvz.py metaclass-boilerplate
-contrib/inventory/ovirt.py future-import-boilerplate
-contrib/inventory/ovirt.py metaclass-boilerplate
-contrib/inventory/ovirt4.py future-import-boilerplate
-contrib/inventory/ovirt4.py metaclass-boilerplate
-contrib/inventory/packet_net.py future-import-boilerplate
-contrib/inventory/packet_net.py metaclass-boilerplate
-contrib/inventory/proxmox.py future-import-boilerplate
-contrib/inventory/proxmox.py metaclass-boilerplate
-contrib/inventory/rackhd.py future-import-boilerplate
-contrib/inventory/rackhd.py metaclass-boilerplate
-contrib/inventory/rax.py future-import-boilerplate
-contrib/inventory/rax.py metaclass-boilerplate
-contrib/inventory/rudder.py future-import-boilerplate
-contrib/inventory/rudder.py metaclass-boilerplate
-contrib/inventory/scaleway.py future-import-boilerplate
-contrib/inventory/scaleway.py metaclass-boilerplate
-contrib/inventory/serf.py future-import-boilerplate
-contrib/inventory/serf.py metaclass-boilerplate
-contrib/inventory/softlayer.py future-import-boilerplate
-contrib/inventory/softlayer.py metaclass-boilerplate
-contrib/inventory/spacewalk.py future-import-boilerplate
-contrib/inventory/spacewalk.py metaclass-boilerplate
-contrib/inventory/ssh_config.py future-import-boilerplate
-contrib/inventory/ssh_config.py metaclass-boilerplate
-contrib/inventory/stacki.py future-import-boilerplate
-contrib/inventory/stacki.py metaclass-boilerplate
-contrib/inventory/vagrant.py future-import-boilerplate
-contrib/inventory/vagrant.py metaclass-boilerplate
-contrib/inventory/vbox.py future-import-boilerplate
-contrib/inventory/vbox.py metaclass-boilerplate
contrib/inventory/vmware.py future-import-boilerplate
contrib/inventory/vmware.py metaclass-boilerplate
contrib/inventory/vmware_inventory.py future-import-boilerplate
contrib/inventory/vmware_inventory.py metaclass-boilerplate
-contrib/inventory/zabbix.py future-import-boilerplate
-contrib/inventory/zabbix.py metaclass-boilerplate
-contrib/inventory/zone.py future-import-boilerplate
-contrib/inventory/zone.py metaclass-boilerplate
-contrib/vault/azure_vault.py future-import-boilerplate
-contrib/vault/azure_vault.py metaclass-boilerplate
-contrib/vault/vault-keyring-client.py future-import-boilerplate
-contrib/vault/vault-keyring-client.py metaclass-boilerplate
-contrib/vault/vault-keyring.py future-import-boilerplate
-contrib/vault/vault-keyring.py metaclass-boilerplate
docs/bin/find-plugin-refs.py future-import-boilerplate
docs/bin/find-plugin-refs.py metaclass-boilerplate
docs/docsite/_extensions/pygments_lexer.py future-import-boilerplate
@@ -156,8 +59,6 @@ lib/ansible/executor/powershell/exec_wrapper.ps1 pslint:PSCustomUseLiteralPath
lib/ansible/executor/task_queue_manager.py pylint:blacklisted-name
lib/ansible/module_utils/_text.py future-import-boilerplate
lib/ansible/module_utils/_text.py metaclass-boilerplate
-lib/ansible/module_utils/alicloud_ecs.py future-import-boilerplate
-lib/ansible/module_utils/alicloud_ecs.py metaclass-boilerplate
lib/ansible/module_utils/ansible_tower.py future-import-boilerplate
lib/ansible/module_utils/ansible_tower.py metaclass-boilerplate
lib/ansible/module_utils/api.py future-import-boilerplate
@@ -169,8 +70,6 @@ lib/ansible/module_utils/azure_rm_common_ext.py metaclass-boilerplate
lib/ansible/module_utils/azure_rm_common_rest.py future-import-boilerplate
lib/ansible/module_utils/azure_rm_common_rest.py metaclass-boilerplate
lib/ansible/module_utils/basic.py metaclass-boilerplate
-lib/ansible/module_utils/cloud.py future-import-boilerplate
-lib/ansible/module_utils/cloud.py metaclass-boilerplate
lib/ansible/module_utils/common/network.py future-import-boilerplate
lib/ansible/module_utils/common/network.py metaclass-boilerplate
lib/ansible/module_utils/compat/ipaddress.py future-import-boilerplate
@@ -179,19 +78,11 @@ lib/ansible/module_utils/compat/ipaddress.py no-assert
lib/ansible/module_utils/compat/ipaddress.py no-unicode-literals
lib/ansible/module_utils/connection.py future-import-boilerplate
lib/ansible/module_utils/connection.py metaclass-boilerplate
-lib/ansible/module_utils/database.py future-import-boilerplate
-lib/ansible/module_utils/database.py metaclass-boilerplate
-lib/ansible/module_utils/digital_ocean.py future-import-boilerplate
-lib/ansible/module_utils/digital_ocean.py metaclass-boilerplate
-lib/ansible/module_utils/dimensiondata.py future-import-boilerplate
-lib/ansible/module_utils/dimensiondata.py metaclass-boilerplate
lib/ansible/module_utils/distro/__init__.py empty-init # breaks namespacing, bundled, do not override
lib/ansible/module_utils/distro/_distro.py future-import-boilerplate # ignore bundled
lib/ansible/module_utils/distro/_distro.py metaclass-boilerplate # ignore bundled
lib/ansible/module_utils/distro/_distro.py no-assert
lib/ansible/module_utils/distro/_distro.py pep8!skip # bundled code we don't want to modify
-lib/ansible/module_utils/f5_utils.py future-import-boilerplate
-lib/ansible/module_utils/f5_utils.py metaclass-boilerplate
lib/ansible/module_utils/facts/__init__.py empty-init # breaks namespacing, deprecate and eventually remove
lib/ansible/module_utils/facts/network/linux.py pylint:blacklisted-name
lib/ansible/module_utils/facts/sysctl.py future-import-boilerplate
@@ -199,24 +90,8 @@ lib/ansible/module_utils/facts/sysctl.py metaclass-boilerplate
lib/ansible/module_utils/facts/system/distribution.py pylint:ansible-bad-function
lib/ansible/module_utils/facts/utils.py future-import-boilerplate
lib/ansible/module_utils/facts/utils.py metaclass-boilerplate
-lib/ansible/module_utils/firewalld.py future-import-boilerplate
-lib/ansible/module_utils/firewalld.py metaclass-boilerplate
-lib/ansible/module_utils/gcdns.py future-import-boilerplate
-lib/ansible/module_utils/gcdns.py metaclass-boilerplate
-lib/ansible/module_utils/gce.py future-import-boilerplate
-lib/ansible/module_utils/gce.py metaclass-boilerplate
-lib/ansible/module_utils/gcp.py future-import-boilerplate
-lib/ansible/module_utils/gcp.py metaclass-boilerplate
lib/ansible/module_utils/gcp_utils.py future-import-boilerplate
lib/ansible/module_utils/gcp_utils.py metaclass-boilerplate
-lib/ansible/module_utils/gitlab.py future-import-boilerplate
-lib/ansible/module_utils/gitlab.py metaclass-boilerplate
-lib/ansible/module_utils/hwc_utils.py future-import-boilerplate
-lib/ansible/module_utils/hwc_utils.py metaclass-boilerplate
-lib/ansible/module_utils/infinibox.py future-import-boilerplate
-lib/ansible/module_utils/infinibox.py metaclass-boilerplate
-lib/ansible/module_utils/ipa.py future-import-boilerplate
-lib/ansible/module_utils/ipa.py metaclass-boilerplate
lib/ansible/module_utils/ismount.py future-import-boilerplate
lib/ansible/module_utils/ismount.py metaclass-boilerplate
lib/ansible/module_utils/json_utils.py future-import-boilerplate
@@ -224,56 +99,16 @@ lib/ansible/module_utils/json_utils.py metaclass-boilerplate
lib/ansible/module_utils/k8s/common.py metaclass-boilerplate
lib/ansible/module_utils/k8s/raw.py metaclass-boilerplate
lib/ansible/module_utils/k8s/scale.py metaclass-boilerplate
-lib/ansible/module_utils/known_hosts.py future-import-boilerplate
-lib/ansible/module_utils/known_hosts.py metaclass-boilerplate
-lib/ansible/module_utils/kubevirt.py future-import-boilerplate
-lib/ansible/module_utils/kubevirt.py metaclass-boilerplate
-lib/ansible/module_utils/linode.py future-import-boilerplate
-lib/ansible/module_utils/linode.py metaclass-boilerplate
-lib/ansible/module_utils/lxd.py future-import-boilerplate
-lib/ansible/module_utils/lxd.py metaclass-boilerplate
-lib/ansible/module_utils/manageiq.py future-import-boilerplate
-lib/ansible/module_utils/manageiq.py metaclass-boilerplate
-lib/ansible/module_utils/memset.py future-import-boilerplate
-lib/ansible/module_utils/memset.py metaclass-boilerplate
-lib/ansible/module_utils/mysql.py future-import-boilerplate
-lib/ansible/module_utils/mysql.py metaclass-boilerplate
lib/ansible/module_utils/net_tools/netbox/netbox_utils.py future-import-boilerplate
-lib/ansible/module_utils/net_tools/nios/api.py future-import-boilerplate
-lib/ansible/module_utils/net_tools/nios/api.py metaclass-boilerplate
lib/ansible/module_utils/netapp.py future-import-boilerplate
lib/ansible/module_utils/netapp.py metaclass-boilerplate
lib/ansible/module_utils/netapp_elementsw_module.py future-import-boilerplate
lib/ansible/module_utils/netapp_elementsw_module.py metaclass-boilerplate
lib/ansible/module_utils/netapp_module.py future-import-boilerplate
lib/ansible/module_utils/netapp_module.py metaclass-boilerplate
-lib/ansible/module_utils/network/a10/a10.py future-import-boilerplate
-lib/ansible/module_utils/network/a10/a10.py metaclass-boilerplate
-lib/ansible/module_utils/network/aireos/aireos.py future-import-boilerplate
-lib/ansible/module_utils/network/aireos/aireos.py metaclass-boilerplate
-lib/ansible/module_utils/network/aos/aos.py future-import-boilerplate
-lib/ansible/module_utils/network/aos/aos.py metaclass-boilerplate
-lib/ansible/module_utils/network/aruba/aruba.py future-import-boilerplate
-lib/ansible/module_utils/network/aruba/aruba.py metaclass-boilerplate
lib/ansible/module_utils/network/asa/asa.py future-import-boilerplate
lib/ansible/module_utils/network/asa/asa.py metaclass-boilerplate
-lib/ansible/module_utils/network/avi/ansible_utils.py future-import-boilerplate
-lib/ansible/module_utils/network/avi/ansible_utils.py metaclass-boilerplate
-lib/ansible/module_utils/network/avi/avi.py future-import-boilerplate
-lib/ansible/module_utils/network/avi/avi.py metaclass-boilerplate
-lib/ansible/module_utils/network/avi/avi_api.py future-import-boilerplate
-lib/ansible/module_utils/network/avi/avi_api.py metaclass-boilerplate
-lib/ansible/module_utils/network/bigswitch/bigswitch.py future-import-boilerplate
-lib/ansible/module_utils/network/bigswitch/bigswitch.py metaclass-boilerplate
lib/ansible/module_utils/network/checkpoint/checkpoint.py metaclass-boilerplate
-lib/ansible/module_utils/network/cloudengine/ce.py future-import-boilerplate
-lib/ansible/module_utils/network/cloudengine/ce.py metaclass-boilerplate
-lib/ansible/module_utils/network/cnos/cnos.py future-import-boilerplate
-lib/ansible/module_utils/network/cnos/cnos.py metaclass-boilerplate
-lib/ansible/module_utils/network/cnos/cnos_devicerules.py future-import-boilerplate
-lib/ansible/module_utils/network/cnos/cnos_devicerules.py metaclass-boilerplate
-lib/ansible/module_utils/network/cnos/cnos_errorcodes.py future-import-boilerplate
-lib/ansible/module_utils/network/cnos/cnos_errorcodes.py metaclass-boilerplate
lib/ansible/module_utils/network/common/cfg/base.py future-import-boilerplate
lib/ansible/module_utils/network/common/cfg/base.py metaclass-boilerplate
lib/ansible/module_utils/network/common/config.py future-import-boilerplate
@@ -294,15 +129,6 @@ lib/ansible/module_utils/network/dellos6/dellos6.py future-import-boilerplate
lib/ansible/module_utils/network/dellos6/dellos6.py metaclass-boilerplate
lib/ansible/module_utils/network/dellos9/dellos9.py future-import-boilerplate
lib/ansible/module_utils/network/dellos9/dellos9.py metaclass-boilerplate
-lib/ansible/module_utils/network/edgeos/edgeos.py future-import-boilerplate
-lib/ansible/module_utils/network/edgeos/edgeos.py metaclass-boilerplate
-lib/ansible/module_utils/network/edgeswitch/edgeswitch.py future-import-boilerplate
-lib/ansible/module_utils/network/edgeswitch/edgeswitch.py metaclass-boilerplate
-lib/ansible/module_utils/network/edgeswitch/edgeswitch_interface.py future-import-boilerplate
-lib/ansible/module_utils/network/edgeswitch/edgeswitch_interface.py metaclass-boilerplate
-lib/ansible/module_utils/network/edgeswitch/edgeswitch_interface.py pylint:duplicate-string-formatting-argument
-lib/ansible/module_utils/network/enos/enos.py future-import-boilerplate
-lib/ansible/module_utils/network/enos/enos.py metaclass-boilerplate
lib/ansible/module_utils/network/eos/eos.py future-import-boilerplate
lib/ansible/module_utils/network/eos/eos.py metaclass-boilerplate
lib/ansible/module_utils/network/eos/providers/cli/config/bgp/address_family.py future-import-boilerplate
@@ -315,24 +141,12 @@ lib/ansible/module_utils/network/eos/providers/module.py future-import-boilerpla
lib/ansible/module_utils/network/eos/providers/module.py metaclass-boilerplate
lib/ansible/module_utils/network/eos/providers/providers.py future-import-boilerplate
lib/ansible/module_utils/network/eos/providers/providers.py metaclass-boilerplate
-lib/ansible/module_utils/network/exos/exos.py future-import-boilerplate
-lib/ansible/module_utils/network/exos/exos.py metaclass-boilerplate
lib/ansible/module_utils/network/fortimanager/common.py future-import-boilerplate
lib/ansible/module_utils/network/fortimanager/common.py metaclass-boilerplate
lib/ansible/module_utils/network/fortimanager/fortimanager.py future-import-boilerplate
lib/ansible/module_utils/network/fortimanager/fortimanager.py metaclass-boilerplate
lib/ansible/module_utils/network/fortios/fortios.py future-import-boilerplate
lib/ansible/module_utils/network/fortios/fortios.py metaclass-boilerplate
-lib/ansible/module_utils/network/ftd/common.py future-import-boilerplate
-lib/ansible/module_utils/network/ftd/common.py metaclass-boilerplate
-lib/ansible/module_utils/network/ftd/configuration.py future-import-boilerplate
-lib/ansible/module_utils/network/ftd/configuration.py metaclass-boilerplate
-lib/ansible/module_utils/network/ftd/device.py future-import-boilerplate
-lib/ansible/module_utils/network/ftd/device.py metaclass-boilerplate
-lib/ansible/module_utils/network/ftd/fdm_swagger_client.py future-import-boilerplate
-lib/ansible/module_utils/network/ftd/fdm_swagger_client.py metaclass-boilerplate
-lib/ansible/module_utils/network/ftd/operation.py future-import-boilerplate
-lib/ansible/module_utils/network/ftd/operation.py metaclass-boilerplate
lib/ansible/module_utils/network/ios/ios.py future-import-boilerplate
lib/ansible/module_utils/network/ios/ios.py metaclass-boilerplate
lib/ansible/module_utils/network/ios/providers/cli/config/base.py future-import-boilerplate
@@ -371,12 +185,6 @@ lib/ansible/module_utils/network/meraki/meraki.py future-import-boilerplate
lib/ansible/module_utils/network/meraki/meraki.py metaclass-boilerplate
lib/ansible/module_utils/network/netconf/netconf.py future-import-boilerplate
lib/ansible/module_utils/network/netconf/netconf.py metaclass-boilerplate
-lib/ansible/module_utils/network/netscaler/netscaler.py future-import-boilerplate
-lib/ansible/module_utils/network/netscaler/netscaler.py metaclass-boilerplate
-lib/ansible/module_utils/network/nos/nos.py future-import-boilerplate
-lib/ansible/module_utils/network/nos/nos.py metaclass-boilerplate
-lib/ansible/module_utils/network/nso/nso.py future-import-boilerplate
-lib/ansible/module_utils/network/nso/nso.py metaclass-boilerplate
lib/ansible/module_utils/network/nxos/argspec/facts/facts.py future-import-boilerplate
lib/ansible/module_utils/network/nxos/argspec/facts/facts.py metaclass-boilerplate
lib/ansible/module_utils/network/nxos/facts/facts.py future-import-boilerplate
@@ -387,39 +195,18 @@ lib/ansible/module_utils/network/nxos/nxos.py future-import-boilerplate
lib/ansible/module_utils/network/nxos/nxos.py metaclass-boilerplate
lib/ansible/module_utils/network/nxos/utils/utils.py future-import-boilerplate
lib/ansible/module_utils/network/nxos/utils/utils.py metaclass-boilerplate
-lib/ansible/module_utils/network/onyx/onyx.py future-import-boilerplate
-lib/ansible/module_utils/network/onyx/onyx.py metaclass-boilerplate
-lib/ansible/module_utils/network/ordnance/ordnance.py future-import-boilerplate
-lib/ansible/module_utils/network/ordnance/ordnance.py metaclass-boilerplate
lib/ansible/module_utils/network/restconf/restconf.py future-import-boilerplate
lib/ansible/module_utils/network/restconf/restconf.py metaclass-boilerplate
-lib/ansible/module_utils/network/routeros/routeros.py future-import-boilerplate
-lib/ansible/module_utils/network/routeros/routeros.py metaclass-boilerplate
lib/ansible/module_utils/network/skydive/api.py future-import-boilerplate
lib/ansible/module_utils/network/skydive/api.py metaclass-boilerplate
-lib/ansible/module_utils/network/slxos/slxos.py future-import-boilerplate
-lib/ansible/module_utils/network/slxos/slxos.py metaclass-boilerplate
-lib/ansible/module_utils/network/sros/sros.py future-import-boilerplate
-lib/ansible/module_utils/network/sros/sros.py metaclass-boilerplate
-lib/ansible/module_utils/network/voss/voss.py future-import-boilerplate
-lib/ansible/module_utils/network/voss/voss.py metaclass-boilerplate
lib/ansible/module_utils/network/vyos/vyos.py future-import-boilerplate
lib/ansible/module_utils/network/vyos/vyos.py metaclass-boilerplate
-lib/ansible/module_utils/oneandone.py future-import-boilerplate
-lib/ansible/module_utils/oneandone.py metaclass-boilerplate
-lib/ansible/module_utils/oneview.py metaclass-boilerplate
-lib/ansible/module_utils/opennebula.py future-import-boilerplate
-lib/ansible/module_utils/opennebula.py metaclass-boilerplate
lib/ansible/module_utils/openstack.py future-import-boilerplate
lib/ansible/module_utils/openstack.py metaclass-boilerplate
-lib/ansible/module_utils/oracle/oci_utils.py future-import-boilerplate
-lib/ansible/module_utils/oracle/oci_utils.py metaclass-boilerplate
lib/ansible/module_utils/ovirt.py future-import-boilerplate
lib/ansible/module_utils/ovirt.py metaclass-boilerplate
lib/ansible/module_utils/parsing/convert_bool.py future-import-boilerplate
lib/ansible/module_utils/parsing/convert_bool.py metaclass-boilerplate
-lib/ansible/module_utils/postgres.py future-import-boilerplate
-lib/ansible/module_utils/postgres.py metaclass-boilerplate
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.ArgvParser.psm1 pslint:PSUseApprovedVerbs
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 pslint:PSProvideCommentHelp # need to agree on best format for comment location
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.CommandUtil.psm1 pslint:PSUseApprovedVerbs
@@ -428,24 +215,13 @@ lib/ansible/module_utils/powershell/Ansible.ModuleUtils.FileUtil.psm1 pslint:PSP
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 pslint:PSCustomUseLiteralPath
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 pslint:PSUseApprovedVerbs
lib/ansible/module_utils/powershell/Ansible.ModuleUtils.LinkUtil.psm1 pslint:PSUseApprovedVerbs
-lib/ansible/module_utils/pure.py future-import-boilerplate
-lib/ansible/module_utils/pure.py metaclass-boilerplate
lib/ansible/module_utils/pycompat24.py future-import-boilerplate
lib/ansible/module_utils/pycompat24.py metaclass-boilerplate
lib/ansible/module_utils/pycompat24.py no-get-exception
-lib/ansible/module_utils/rax.py future-import-boilerplate
-lib/ansible/module_utils/rax.py metaclass-boilerplate
-lib/ansible/module_utils/redhat.py future-import-boilerplate
-lib/ansible/module_utils/redhat.py metaclass-boilerplate
-lib/ansible/module_utils/remote_management/dellemc/dellemc_idrac.py future-import-boilerplate
lib/ansible/module_utils/remote_management/intersight.py future-import-boilerplate
lib/ansible/module_utils/remote_management/intersight.py metaclass-boilerplate
-lib/ansible/module_utils/remote_management/lxca/common.py future-import-boilerplate
-lib/ansible/module_utils/remote_management/lxca/common.py metaclass-boilerplate
lib/ansible/module_utils/remote_management/ucs.py future-import-boilerplate
lib/ansible/module_utils/remote_management/ucs.py metaclass-boilerplate
-lib/ansible/module_utils/scaleway.py future-import-boilerplate
-lib/ansible/module_utils/scaleway.py metaclass-boilerplate
lib/ansible/module_utils/service.py future-import-boilerplate
lib/ansible/module_utils/service.py metaclass-boilerplate
lib/ansible/module_utils/six/__init__.py empty-init # breaks namespacing, bundled, do not override
@@ -458,26 +234,14 @@ lib/ansible/module_utils/six/__init__.py no-dict-itervalues
lib/ansible/module_utils/six/__init__.py replace-urlopen
lib/ansible/module_utils/splitter.py future-import-boilerplate
lib/ansible/module_utils/splitter.py metaclass-boilerplate
-lib/ansible/module_utils/storage/hpe3par/hpe3par.py future-import-boilerplate
-lib/ansible/module_utils/storage/hpe3par/hpe3par.py metaclass-boilerplate
-lib/ansible/module_utils/univention_umc.py future-import-boilerplate
-lib/ansible/module_utils/univention_umc.py metaclass-boilerplate
lib/ansible/module_utils/urls.py future-import-boilerplate
lib/ansible/module_utils/urls.py metaclass-boilerplate
lib/ansible/module_utils/urls.py pylint:blacklisted-name
lib/ansible/module_utils/urls.py replace-urlopen
lib/ansible/module_utils/vca.py future-import-boilerplate
lib/ansible/module_utils/vca.py metaclass-boilerplate
-lib/ansible/module_utils/vexata.py future-import-boilerplate
-lib/ansible/module_utils/vexata.py metaclass-boilerplate
lib/ansible/module_utils/yumdnf.py future-import-boilerplate
lib/ansible/module_utils/yumdnf.py metaclass-boilerplate
-lib/ansible/modules/cloud/alicloud/ali_instance.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/alicloud/ali_instance.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/alicloud/ali_instance_info.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/alicloud/ali_instance_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/alicloud/ali_instance_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/alicloud/ali_instance_info.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/amazon/aws_netapp_cvs_FileSystems.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/amazon/aws_s3.py validate-modules:doc-elements-mismatch
lib/ansible/modules/cloud/amazon/aws_s3.py validate-modules:parameter-list-no-elements
@@ -508,13 +272,6 @@ lib/ansible/modules/cloud/amazon/ec2_vpc_net_info.py validate-modules:doc-elemen
lib/ansible/modules/cloud/amazon/ec2_vpc_net_info.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_info.py validate-modules:doc-elements-mismatch
lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/atomic/atomic_container.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/atomic/atomic_container.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/atomic/atomic_container.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/cloud/atomic/atomic_container.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/atomic/atomic_container.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/atomic/atomic_host.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/atomic/atomic_image.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/azure/azure_rm_acs.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/azure/azure_rm_acs.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/azure/azure_rm_acs.py validate-modules:required_if-requirements-unknown
@@ -1170,219 +927,6 @@ lib/ansible/modules/cloud/azure/azure_rm_webappslot.py validate-modules:doc-requ
lib/ansible/modules/cloud/azure/azure_rm_webappslot.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/azure/azure_rm_webappslot.py validate-modules:required_if-requirements-unknown
lib/ansible/modules/cloud/azure/azure_rm_webappslot.py validate-modules:required_if-unknown-key
-lib/ansible/modules/cloud/centurylink/clc_aa_policy.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_aa_policy.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/cloud/centurylink/clc_alert_policy.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_alert_policy.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/cloud/centurylink/clc_alert_policy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/centurylink/clc_alert_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/centurylink/clc_alert_policy.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/cloud/centurylink/clc_group.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_group.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/centurylink/clc_modify_server.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_modify_server.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/centurylink/clc_modify_server.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/centurylink/clc_publicip.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_publicip.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/centurylink/clc_publicip.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/centurylink/clc_server.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_server.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/centurylink/clc_server.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/cloudscale/cloudscale_floating_ip.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/cloudscale/cloudscale_server.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/cloudscale/cloudscale_server.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudscale/cloudscale_server_group.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/cloudscale/cloudscale_volume.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/cloudscale/cloudscale_volume.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_disk_offering.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_firewall.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_host.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_instance.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_ip_address.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_iso.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_network.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_network_offering.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_physical_network.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_portforward.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_project.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/cloudstack/cs_service_offering.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_template.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_volume.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_vpc.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_vpc_offering.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/cloudstack/cs_vpn_customer_gateway.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/digital_ocean/_digital_ocean.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/digital_ocean/_digital_ocean.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/digital_ocean/_digital_ocean.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/_digital_ocean.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_certificate.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_certificate.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_certificate.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_certificate_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_droplet.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_droplet.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_droplet.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_droplet.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_firewall_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_image_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_load_balancer_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_snapshot_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/digital_ocean/digital_ocean_volume_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/dimensiondata/dimensiondata_vlan.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/dimensiondata/dimensiondata_vlan.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/dimensiondata/dimensiondata_vlan.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/dimensiondata/dimensiondata_vlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/docker/docker_container.py use-argspec-type-path # uses colon-separated paths, can't use type=path
-lib/ansible/modules/cloud/docker/docker_stack.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/cloud/google/_gcdns_record.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/_gcdns_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/_gcdns_zone.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/_gce.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/_gce.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/_gce.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/_gce.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/google/_gce.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/_gce.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/_gce.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/cloud/google/_gcp_backend_service.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/_gcp_backend_service.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/_gcp_backend_service.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/google/_gcp_backend_service.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/_gcp_backend_service.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/_gcp_backend_service.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/_gcp_backend_service.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/_gcp_forwarding_rule.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/_gcp_forwarding_rule.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/google/_gcp_forwarding_rule.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/_gcp_forwarding_rule.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/google/_gcp_forwarding_rule.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/_gcp_forwarding_rule.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/_gcp_forwarding_rule.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/_gcp_healthcheck.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/_gcp_healthcheck.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/_gcp_healthcheck.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/google/_gcp_healthcheck.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/_gcp_healthcheck.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/google/_gcp_healthcheck.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/_gcp_healthcheck.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/_gcp_target_proxy.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/_gcp_target_proxy.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/_gcp_target_proxy.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/google/_gcp_target_proxy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/_gcp_target_proxy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/_gcp_target_proxy.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/_gcp_url_map.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/_gcp_url_map.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/google/_gcp_url_map.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/_gcp_url_map.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/_gcp_url_map.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/_gcp_url_map.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/_gcspanner.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/_gcspanner.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/gc_storage.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/gc_storage.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/google/gc_storage.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gc_storage.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gc_storage.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/gce_eip.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/gce_eip.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gce_eip.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gce_eip.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gce_eip.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/gce_img.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/gce_img.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gce_img.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gce_instance_template.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/gce_instance_template.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/gce_instance_template.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/google/gce_instance_template.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gce_instance_template.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gce_instance_template.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gce_instance_template.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/gce_labels.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/gce_labels.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/google/gce_labels.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gce_labels.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gce_labels.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gce_labels.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/gce_lb.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/gce_lb.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/gce_lb.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gce_lb.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/cloud/google/gce_lb.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gce_lb.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gce_mig.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/gce_mig.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gce_mig.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gce_mig.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gce_mig.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/gce_net.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/gce_net.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/gce_net.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gce_net.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/cloud/google/gce_net.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gce_net.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gce_pd.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/gce_pd.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/gce_pd.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gce_pd.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gce_pd.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gce_pd.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/gce_snapshot.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/gce_snapshot.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/google/gce_snapshot.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gce_snapshot.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/google/gce_snapshot.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gce_snapshot.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gce_tag.py pylint:blacklisted-name
-lib/ansible/modules/cloud/google/gce_tag.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gce_tag.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule_info.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/google/gcp_bigquery_dataset.py validate-modules:doc-elements-mismatch
@@ -1614,150 +1158,9 @@ lib/ansible/modules/cloud/google/gcp_storage_bucket_access_control.py validate-m
lib/ansible/modules/cloud/google/gcp_storage_object.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/google/gcp_tpu_node.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/google/gcp_tpu_node_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gcpubsub.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/cloud/google/gcpubsub.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/google/gcpubsub.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/google/gcpubsub.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:undocumented-parameter
lib/ansible/modules/cloud/hcloud/hcloud_network_info.py validate-modules:return-syntax-error
lib/ansible/modules/cloud/hcloud/hcloud_server.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/hcloud/hcloud_server_network.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/heroku/heroku_collaborator.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/heroku/heroku_collaborator.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/huawei/hwc_ecs_instance.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/cloud/huawei/hwc_vpc_port.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/cloud/huawei/hwc_vpc_subnet.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/cloud/kubevirt/kubevirt_cdi_upload.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/kubevirt/kubevirt_cdi_upload.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/kubevirt/kubevirt_cdi_upload.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/cloud/kubevirt/kubevirt_cdi_upload.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/kubevirt/kubevirt_preset.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/kubevirt/kubevirt_preset.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/cloud/kubevirt/kubevirt_preset.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/kubevirt/kubevirt_preset.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/kubevirt/kubevirt_pvc.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/kubevirt/kubevirt_pvc.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/cloud/kubevirt/kubevirt_pvc.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/kubevirt/kubevirt_pvc.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/kubevirt/kubevirt_pvc.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/kubevirt/kubevirt_rs.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/kubevirt/kubevirt_rs.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/kubevirt/kubevirt_rs.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/cloud/kubevirt/kubevirt_rs.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/kubevirt/kubevirt_rs.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/kubevirt/kubevirt_template.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/kubevirt/kubevirt_template.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/cloud/kubevirt/kubevirt_template.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/kubevirt/kubevirt_vm.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/kubevirt/kubevirt_vm.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/cloud/kubevirt/kubevirt_vm.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/kubevirt/kubevirt_vm.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/linode/linode.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/linode/linode.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/linode/linode.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/linode/linode.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/linode/linode_v4.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/linode/linode_v4.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/lxc/lxc_container.py pylint:blacklisted-name
-lib/ansible/modules/cloud/lxc/lxc_container.py use-argspec-type-path
-lib/ansible/modules/cloud/lxc/lxc_container.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/lxc/lxc_container.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/lxc/lxc_container.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/lxc/lxc_container.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/lxc/lxc_container.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/lxc/lxc_container.py validate-modules:use-run-command-not-popen
-lib/ansible/modules/cloud/lxd/lxd_container.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/lxd/lxd_container.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/lxd/lxd_container.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/lxd/lxd_container.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/lxd/lxd_container.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/lxd/lxd_container.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/lxd/lxd_profile.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/lxd/lxd_profile.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/lxd/lxd_profile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/memset/memset_dns_reload.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/memset/memset_memstore_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/memset/memset_server_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/memset/memset_zone.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/memset/memset_zone_domain.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/memset/memset_zone_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/misc/cloud_init_data_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/misc/helm.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/misc/helm.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/misc/proxmox.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/misc/proxmox.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/misc/proxmox_kvm.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/misc/proxmox_kvm.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/misc/proxmox_kvm.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/misc/proxmox_kvm.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/misc/proxmox_template.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/misc/proxmox_template.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/misc/proxmox_template.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/cloud/misc/proxmox_template.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/misc/rhevm.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/misc/rhevm.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/misc/rhevm.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/cloud/misc/serverless.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/misc/terraform.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/misc/terraform.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/misc/terraform.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/misc/terraform.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/misc/terraform.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/misc/virt.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/misc/virt.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/misc/virt.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/misc/virt_net.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/misc/virt_net.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/misc/virt_pool.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/misc/virt_pool.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/oneandone/oneandone_firewall_policy.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/oneandone/oneandone_firewall_policy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/oneandone/oneandone_firewall_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/oneandone/oneandone_load_balancer.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/oneandone/oneandone_load_balancer.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/oneandone/oneandone_load_balancer.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/oneandone/oneandone_load_balancer.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/oneandone/oneandone_load_balancer.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/oneandone/oneandone_monitoring_policy.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/oneandone/oneandone_monitoring_policy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/oneandone/oneandone_monitoring_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/oneandone/oneandone_private_network.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/oneandone/oneandone_private_network.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/oneandone/oneandone_private_network.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/oneandone/oneandone_private_network.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/oneandone/oneandone_private_network.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/oneandone/oneandone_public_ip.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/oneandone/oneandone_public_ip.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/oneandone/oneandone_public_ip.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/oneandone/oneandone_public_ip.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/oneandone/oneandone_public_ip.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/oneandone/oneandone_server.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/oneandone/oneandone_server.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/oneandone/oneandone_server.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/oneandone/oneandone_server.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/oneandone/oneandone_server.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/online/_online_server_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/online/_online_server_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/online/_online_user_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/online/_online_user_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/online/online_server_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/online/online_server_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/online/online_user_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/online/online_user_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/opennebula/one_host.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/opennebula/one_host.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/opennebula/one_host.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/opennebula/one_image.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/opennebula/one_image_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/opennebula/one_image_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/opennebula/one_service.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/opennebula/one_vm.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/opennebula/one_vm.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/openstack/os_auth.py validate-modules:doc-missing-type
lib/ansible/modules/cloud/openstack/os_client_config.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/openstack/os_client_config.py validate-modules:parameter-type-not-in-doc
@@ -1890,12 +1293,6 @@ lib/ansible/modules/cloud/openstack/os_volume_snapshot.py validate-modules:doc-m
lib/ansible/modules/cloud/openstack/os_zone.py validate-modules:doc-missing-type
lib/ansible/modules/cloud/openstack/os_zone.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/openstack/os_zone.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/oracle/oci_vcn.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/oracle/oci_vcn.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/ovh/ovh_ip_failover.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/ovh/ovh_ip_failover.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py future-import-boilerplate
lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py metaclass-boilerplate
lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py validate-modules:doc-required-mismatch
@@ -2146,265 +1543,6 @@ lib/ansible/modules/cloud/ovirt/ovirt_vnic_profile.py metaclass-boilerplate
lib/ansible/modules/cloud/ovirt/ovirt_vnic_profile.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/ovirt/ovirt_vnic_profile.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/ovirt/ovirt_vnic_profile_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/packet/packet_device.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/packet/packet_device.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/packet/packet_device.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/packet/packet_ip_subnet.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/packet/packet_sshkey.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/packet/packet_sshkey.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/packet/packet_sshkey.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/packet/packet_volume_attachment.py pylint:ansible-bad-function
-lib/ansible/modules/cloud/packet/packet_volume_attachment.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/profitbricks/profitbricks.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/profitbricks/profitbricks.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/profitbricks/profitbricks.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/profitbricks/profitbricks.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/profitbricks/profitbricks.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/profitbricks/profitbricks.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/profitbricks/profitbricks.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/pubnub/pubnub_blocks.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/pubnub/pubnub_blocks.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/pubnub/pubnub_blocks.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax.py use-argspec-type-path # fix needed
-lib/ansible/modules/cloud/rackspace/rax.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/rackspace/rax.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/rackspace/rax_cbs.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_cbs.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_cbs.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/rackspace/rax_cbs.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_cdb.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_cdb.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_cdb.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_cdb.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/rackspace/rax_cdb.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_cdb_database.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_cdb_database.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_cdb_database.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/rackspace/rax_cdb_database.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_cdb_user.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_cdb_user.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_cdb_user.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/rackspace/rax_cdb_user.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/rackspace/rax_cdb_user.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_clb.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_clb.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_clb.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/rackspace/rax_clb.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_dns.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_dns.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_dns.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_dns_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_dns_record.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_dns_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_facts.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_files.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_files.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_files.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_files.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/rackspace/rax_files.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/cloud/rackspace/rax_files.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_files_objects.py use-argspec-type-path
-lib/ansible/modules/cloud/rackspace/rax_files_objects.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_files_objects.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_files_objects.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/cloud/rackspace/rax_files_objects.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_identity.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_identity.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_identity.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_identity.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_keypair.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_keypair.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_keypair.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_meta.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_meta.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_meta.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_mon_check.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_mon_check.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_mon_check.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_mon_check.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_mon_entity.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_mon_entity.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_mon_entity.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_mon_notification.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_mon_notification.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_mon_notification.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_network.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_network.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_network.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/rackspace/rax_network.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_queue.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_queue.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_queue.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_scaling_group.py use-argspec-type-path # fix needed
-lib/ansible/modules/cloud/rackspace/rax_scaling_group.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_scaling_group.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_scaling_group.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/rackspace/rax_scaling_group.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/scaleway/_scaleway_image_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/_scaleway_image_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/_scaleway_image_facts.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/_scaleway_image_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/_scaleway_ip_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/_scaleway_ip_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/_scaleway_ip_facts.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/_scaleway_ip_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/_scaleway_organization_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/_scaleway_organization_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/_scaleway_security_group_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/_scaleway_security_group_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/_scaleway_security_group_facts.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/_scaleway_security_group_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/_scaleway_server_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/_scaleway_server_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/_scaleway_server_facts.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/_scaleway_server_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/_scaleway_snapshot_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/_scaleway_snapshot_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/_scaleway_snapshot_facts.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/_scaleway_snapshot_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/_scaleway_volume_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/_scaleway_volume_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/_scaleway_volume_facts.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/_scaleway_volume_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/scaleway_compute.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_compute.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_compute.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_compute.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/scaleway/scaleway_compute.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/scaleway/scaleway_image_info.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_image_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_image_info.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_image_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/scaleway_ip.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_ip.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_ip.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_ip_info.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_ip_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_ip_info.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_ip_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/scaleway_lb.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_lb.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_lb.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_lb.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/scaleway/scaleway_lb.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/scaleway/scaleway_organization_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_organization_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/scaleway_security_group.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_security_group.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_security_group_info.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_security_group_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_security_group_info.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_security_group_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/scaleway_security_group_rule.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_security_group_rule.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_security_group_rule.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/scaleway/scaleway_server_info.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_server_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_server_info.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_server_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/scaleway_snapshot_info.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_snapshot_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_snapshot_info.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_snapshot_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/scaleway/scaleway_sshkey.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_sshkey.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_user_data.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_user_data.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_user_data.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_user_data.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/scaleway/scaleway_volume.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_volume.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_volume.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_volume.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/scaleway/scaleway_volume_info.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/scaleway/scaleway_volume_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/scaleway/scaleway_volume_info.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/cloud/scaleway/scaleway_volume_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/smartos/imgadm.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/smartos/imgadm.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/cloud/smartos/smartos_image_info.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/smartos/vmadm.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/smartos/vmadm.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/smartos/vmadm.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/smartos/vmadm.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/smartos/vmadm.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/smartos/vmadm.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/softlayer/sl_vm.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/softlayer/sl_vm.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/softlayer/sl_vm.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/softlayer/sl_vm.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/softlayer/sl_vm.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/spotinst/spotinst_aws_elastigroup.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/spotinst/spotinst_aws_elastigroup.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/spotinst/spotinst_aws_elastigroup.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/spotinst/spotinst_aws_elastigroup.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/spotinst/spotinst_aws_elastigroup.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/cloud/spotinst/spotinst_aws_elastigroup.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/spotinst/spotinst_aws_elastigroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/spotinst/spotinst_aws_elastigroup.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/univention/udm_dns_record.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/univention/udm_dns_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/univention/udm_dns_zone.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/univention/udm_dns_zone.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/univention/udm_dns_zone.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/univention/udm_dns_zone.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/univention/udm_group.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/univention/udm_group.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/univention/udm_share.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/univention/udm_share.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/univention/udm_share.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/cloud/univention/udm_share.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/univention/udm_share.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/univention/udm_share.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/univention/udm_user.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/univention/udm_user.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/cloud/univention/udm_user.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/univention/udm_user.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/cloud/vmware/_vmware_dns_config.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/vmware/_vmware_drs_group_facts.py validate-modules:doc-required-mismatch
lib/ansible/modules/cloud/vmware/vca_fw.py validate-modules:doc-default-does-not-match-spec
@@ -2539,63 +1677,6 @@ lib/ansible/modules/cloud/vmware_httpapi/vmware_cis_category_info.py validate-mo
lib/ansible/modules/cloud/vmware_httpapi/vmware_cis_category_info.py validate-modules:parameter-list-no-elements
lib/ansible/modules/cloud/vmware_httpapi/vmware_core_info.py validate-modules:doc-required-mismatch
lib/ansible/modules/cloud/vmware_httpapi/vmware_core_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/vultr/_vultr_block_storage_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/_vultr_dns_domain_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/_vultr_firewall_group_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/_vultr_network_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/_vultr_os_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/_vultr_region_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/_vultr_server_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/_vultr_ssh_key_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/_vultr_startup_script_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/_vultr_user_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/vultr_block_storage.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/vultr/vultr_block_storage.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/vultr/vultr_block_storage.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/vultr/vultr_dns_domain.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/vultr/vultr_dns_domain_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/vultr_dns_record.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/vultr/vultr_dns_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/vultr/vultr_firewall_group.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/vultr/vultr_firewall_group_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/vultr_firewall_rule.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/vultr/vultr_firewall_rule.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/vultr/vultr_network.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/vultr/vultr_network_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/vultr_region_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/vultr_server.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/vultr/vultr_server_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/vultr_startup_script_info.py validate-modules:return-syntax-error
-lib/ansible/modules/cloud/vultr/vultr_user.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/webfaction/webfaction_app.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/webfaction/webfaction_db.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/webfaction/webfaction_domain.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/webfaction/webfaction_domain.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/webfaction/webfaction_domain.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/webfaction/webfaction_site.py validate-modules:doc-missing-type
-lib/ansible/modules/cloud/webfaction/webfaction_site.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/cloud/webfaction/webfaction_site.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/xenserver/xenserver_guest.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/cloud/xenserver/xenserver_guest.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/cloud/xenserver/xenserver_guest.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/xenserver/xenserver_guest.py validate-modules:missing-suboption-docs
-lib/ansible/modules/cloud/xenserver/xenserver_guest.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/cloud/xenserver/xenserver_guest.py validate-modules:undocumented-parameter
-lib/ansible/modules/cloud/xenserver/xenserver_guest_info.py validate-modules:doc-required-mismatch
-lib/ansible/modules/cloud/xenserver/xenserver_guest_powerstate.py validate-modules:doc-required-mismatch
-lib/ansible/modules/clustering/consul/consul.py validate-modules:doc-missing-type
-lib/ansible/modules/clustering/consul/consul.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/clustering/consul/consul.py validate-modules:undocumented-parameter
-lib/ansible/modules/clustering/consul/consul_acl.py validate-modules:doc-missing-type
-lib/ansible/modules/clustering/consul/consul_acl.py validate-modules:doc-required-mismatch
-lib/ansible/modules/clustering/consul/consul_acl.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/clustering/consul/consul_kv.py validate-modules:doc-required-mismatch
-lib/ansible/modules/clustering/consul/consul_kv.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/clustering/consul/consul_session.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/clustering/consul/consul_session.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/clustering/etcd3.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/clustering/etcd3.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/clustering/k8s/k8s.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/clustering/k8s/k8s.py validate-modules:doc-missing-type
lib/ansible/modules/clustering/k8s/k8s.py validate-modules:doc-required-mismatch
@@ -2616,11 +1697,6 @@ lib/ansible/modules/clustering/k8s/k8s_service.py validate-modules:mutually_excl
lib/ansible/modules/clustering/k8s/k8s_service.py validate-modules:parameter-list-no-elements
lib/ansible/modules/clustering/k8s/k8s_service.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/clustering/k8s/k8s_service.py validate-modules:return-syntax-error
-lib/ansible/modules/clustering/pacemaker_cluster.py validate-modules:doc-required-mismatch
-lib/ansible/modules/clustering/pacemaker_cluster.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/clustering/znode.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/clustering/znode.py validate-modules:doc-missing-type
-lib/ansible/modules/clustering/znode.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/commands/command.py validate-modules:doc-missing-type
lib/ansible/modules/commands/command.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/commands/command.py validate-modules:parameter-list-no-elements
@@ -2628,69 +1704,11 @@ lib/ansible/modules/commands/command.py validate-modules:undocumented-parameter
lib/ansible/modules/commands/expect.py validate-modules:doc-missing-type
lib/ansible/modules/crypto/acme/acme_account_info.py validate-modules:return-syntax-error
lib/ansible/modules/crypto/acme/acme_certificate.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/database/aerospike/aerospike_migrations.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/database/misc/elasticsearch_plugin.py validate-modules:doc-missing-type
-lib/ansible/modules/database/misc/elasticsearch_plugin.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/database/misc/elasticsearch_plugin.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/database/misc/kibana_plugin.py validate-modules:doc-missing-type
-lib/ansible/modules/database/misc/kibana_plugin.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/database/misc/kibana_plugin.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/database/misc/redis.py validate-modules:doc-required-mismatch
-lib/ansible/modules/database/misc/redis.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/database/misc/riak.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/database/misc/riak.py validate-modules:doc-missing-type
-lib/ansible/modules/database/misc/riak.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/database/mongodb/mongodb_parameter.py use-argspec-type-path
lib/ansible/modules/database/mongodb/mongodb_replicaset.py use-argspec-type-path
lib/ansible/modules/database/mongodb/mongodb_shard.py use-argspec-type-path
lib/ansible/modules/database/mongodb/mongodb_user.py use-argspec-type-path
-lib/ansible/modules/database/mssql/mssql_db.py validate-modules:doc-missing-type
-lib/ansible/modules/database/mssql/mssql_db.py validate-modules:doc-required-mismatch
-lib/ansible/modules/database/mysql/mysql_db.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/database/mysql/mysql_db.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/database/mysql/mysql_db.py validate-modules:use-run-command-not-popen
-lib/ansible/modules/database/mysql/mysql_info.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/database/mysql/mysql_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/database/mysql/mysql_query.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/database/mysql/mysql_user.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/mysql/mysql_variables.py validate-modules:doc-required-mismatch
-lib/ansible/modules/database/postgresql/postgresql_db.py use-argspec-type-path
-lib/ansible/modules/database/postgresql/postgresql_db.py validate-modules:use-run-command-not-popen
-lib/ansible/modules/database/postgresql/postgresql_privs.py validate-modules:parameter-documented-multiple-times
-lib/ansible/modules/database/postgresql/postgresql_tablespace.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/database/postgresql/postgresql_user.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/database/proxysql/proxysql_backend_servers.py validate-modules:doc-missing-type
-lib/ansible/modules/database/proxysql/proxysql_backend_servers.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/database/proxysql/proxysql_backend_servers.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/proxysql/proxysql_global_variables.py validate-modules:doc-missing-type
-lib/ansible/modules/database/proxysql/proxysql_global_variables.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/database/proxysql/proxysql_global_variables.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/proxysql/proxysql_manage_config.py validate-modules:doc-missing-type
-lib/ansible/modules/database/proxysql/proxysql_manage_config.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/proxysql/proxysql_mysql_users.py validate-modules:doc-missing-type
-lib/ansible/modules/database/proxysql/proxysql_mysql_users.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/database/proxysql/proxysql_mysql_users.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/proxysql/proxysql_query_rules.py validate-modules:doc-missing-type
-lib/ansible/modules/database/proxysql/proxysql_query_rules.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/database/proxysql/proxysql_query_rules.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py validate-modules:doc-missing-type
-lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/proxysql/proxysql_scheduler.py validate-modules:doc-missing-type
-lib/ansible/modules/database/proxysql/proxysql_scheduler.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/database/proxysql/proxysql_scheduler.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/vertica/vertica_configuration.py validate-modules:doc-missing-type
-lib/ansible/modules/database/vertica/vertica_configuration.py validate-modules:doc-required-mismatch
-lib/ansible/modules/database/vertica/vertica_info.py validate-modules:doc-missing-type
-lib/ansible/modules/database/vertica/vertica_role.py validate-modules:doc-missing-type
-lib/ansible/modules/database/vertica/vertica_role.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/vertica/vertica_schema.py validate-modules:doc-missing-type
-lib/ansible/modules/database/vertica/vertica_schema.py validate-modules:undocumented-parameter
-lib/ansible/modules/database/vertica/vertica_user.py validate-modules:doc-missing-type
-lib/ansible/modules/database/vertica/vertica_user.py validate-modules:undocumented-parameter
lib/ansible/modules/files/acl.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/files/archive.py use-argspec-type-path # fix needed
-lib/ansible/modules/files/archive.py validate-modules:parameter-list-no-elements
lib/ansible/modules/files/assemble.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/files/blockinfile.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/files/blockinfile.py validate-modules:doc-default-does-not-match-spec
@@ -2705,13 +1723,9 @@ lib/ansible/modules/files/file.py validate-modules:undocumented-parameter
lib/ansible/modules/files/find.py use-argspec-type-path # fix needed
lib/ansible/modules/files/find.py validate-modules:parameter-list-no-elements
lib/ansible/modules/files/find.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/files/iso_extract.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/files/iso_extract.py validate-modules:parameter-list-no-elements
lib/ansible/modules/files/lineinfile.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/files/lineinfile.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/files/lineinfile.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/files/patch.py pylint:blacklisted-name
-lib/ansible/modules/files/read_csv.py validate-modules:parameter-list-no-elements
lib/ansible/modules/files/replace.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/files/stat.py validate-modules:parameter-invalid
lib/ansible/modules/files/stat.py validate-modules:parameter-type-not-in-doc
@@ -2725,60 +1739,7 @@ lib/ansible/modules/files/synchronize.py validate-modules:parameter-type-not-in-
lib/ansible/modules/files/synchronize.py validate-modules:undocumented-parameter
lib/ansible/modules/files/unarchive.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/files/unarchive.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/files/xml.py validate-modules:doc-required-mismatch
-lib/ansible/modules/files/xml.py validate-modules:parameter-list-no-elements
lib/ansible/modules/identity/cyberark/cyberark_authentication.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/identity/ipa/ipa_hbacrule.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/identity/keycloak/keycloak_client.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/identity/keycloak/keycloak_client.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/identity/keycloak/keycloak_client.py validate-modules:doc-missing-type
-lib/ansible/modules/identity/keycloak/keycloak_client.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/identity/keycloak/keycloak_client.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/identity/keycloak/keycloak_clienttemplate.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/identity/keycloak/keycloak_clienttemplate.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/identity/keycloak/keycloak_clienttemplate.py validate-modules:doc-missing-type
-lib/ansible/modules/identity/keycloak/keycloak_clienttemplate.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/identity/onepassword_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/identity/opendj/opendj_backendprop.py validate-modules:doc-missing-type
-lib/ansible/modules/identity/opendj/opendj_backendprop.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_binding.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_binding.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_exchange.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_exchange.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_exchange.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_global_parameter.py validate-modules:doc-missing-type
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_global_parameter.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_parameter.py validate-modules:doc-missing-type
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_plugin.py validate-modules:doc-missing-type
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_policy.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_policy.py validate-modules:doc-missing-type
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_queue.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_queue.py validate-modules:doc-default-incompatible-type
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_queue.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_user.py validate-modules:doc-missing-type
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_user.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_user.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_vhost.py validate-modules:doc-missing-type
-lib/ansible/modules/messaging/rabbitmq/rabbitmq_vhost_limits.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/airbrake_deployment.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/airbrake_deployment.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/bigpanda.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/bigpanda.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/bigpanda.py validate-modules:invalid-argument-name
-lib/ansible/modules/monitoring/bigpanda.py validate-modules:undocumented-parameter
-lib/ansible/modules/monitoring/circonus_annotation.py validate-modules:doc-default-incompatible-type
-lib/ansible/modules/monitoring/circonus_annotation.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/circonus_annotation.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/datadog/datadog_event.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/datadog/datadog_event.py validate-modules:doc-default-incompatible-type
-lib/ansible/modules/monitoring/datadog/datadog_event.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/datadog/datadog_event.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/datadog/datadog_event.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/datadog/datadog_monitor.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/datadog/datadog_monitor.py validate-modules:invalid-argument-name
-lib/ansible/modules/monitoring/datadog/datadog_monitor.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/datadog/datadog_monitor.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/monitoring/grafana/grafana_dashboard.py validate-modules:doc-missing-type
lib/ansible/modules/monitoring/grafana/grafana_dashboard.py validate-modules:doc-required-mismatch
lib/ansible/modules/monitoring/grafana/grafana_dashboard.py validate-modules:invalid-argument-name
@@ -2790,118 +1751,11 @@ lib/ansible/modules/monitoring/grafana/grafana_datasource.py validate-modules:do
lib/ansible/modules/monitoring/grafana/grafana_datasource.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/monitoring/grafana/grafana_plugin.py validate-modules:doc-missing-type
lib/ansible/modules/monitoring/grafana/grafana_plugin.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/honeybadger_deployment.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/icinga2_feature.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/icinga2_host.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/icinga2_host.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/icinga2_host.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/icinga2_host.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/icinga2_host.py validate-modules:undocumented-parameter
-lib/ansible/modules/monitoring/librato_annotation.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/librato_annotation.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/librato_annotation.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/librato_annotation.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/logentries.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/monitoring/logentries.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/logentries.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/logentries.py validate-modules:undocumented-parameter
-lib/ansible/modules/monitoring/logicmonitor.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/logicmonitor.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/logicmonitor.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/monitoring/logicmonitor.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/logicmonitor.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/logicmonitor.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/monitoring/logicmonitor_facts.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/logicmonitor_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/logicmonitor_facts.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/monitoring/logstash_plugin.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/logstash_plugin.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/monitoring/logstash_plugin.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/monit.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/monit.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/nagios.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/nagios.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/nagios.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/nagios.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/monitoring/newrelic_deployment.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/pagerduty.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/pagerduty.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/pagerduty.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/pagerduty.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/pagerduty_alert.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/pagerduty_alert.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/pingdom.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/monitoring/pingdom.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/rollbar_deployment.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/sensu/sensu_check.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/sensu/sensu_check.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/sensu/sensu_check.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/sensu/sensu_check.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/sensu/sensu_client.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/sensu/sensu_client.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/sensu/sensu_client.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/sensu/sensu_client.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/sensu/sensu_handler.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/monitoring/sensu/sensu_handler.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/sensu/sensu_handler.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/sensu/sensu_handler.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/sensu/sensu_silence.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/sensu/sensu_silence.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/sensu/sensu_silence.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/sensu/sensu_subscription.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/spectrum_device.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/spectrum_device.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/spectrum_device.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/stackdriver.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/stackdriver.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/statusio_maintenance.py pylint:blacklisted-name
-lib/ansible/modules/monitoring/statusio_maintenance.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/statusio_maintenance.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/statusio_maintenance.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/uptimerobot.py validate-modules:doc-missing-type
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:doc-required-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:invalid-argument-name
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:missing-suboption-docs
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/monitoring/zabbix/zabbix_action.py validate-modules:undocumented-parameter
-lib/ansible/modules/monitoring/zabbix/zabbix_group.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_group.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/zabbix/zabbix_group_info.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_group_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/zabbix/zabbix_host.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_host.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/zabbix/zabbix_host_info.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_host_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/zabbix/zabbix_mediatype.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_mediatype.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/zabbix/zabbix_template.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_template.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/monitoring/zabbix/zabbix_user.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/monitoring/zabbix/zabbix_user.py validate-modules:parameter-list-no-elements
lib/ansible/modules/net_tools/basics/get_url.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/net_tools/basics/uri.py pylint:blacklisted-name
lib/ansible/modules/net_tools/basics/uri.py validate-modules:doc-required-mismatch
lib/ansible/modules/net_tools/basics/uri.py validate-modules:parameter-list-no-elements
lib/ansible/modules/net_tools/basics/uri.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/cloudflare_dns.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/dnsimple.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/net_tools/dnsmadeeasy.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/dnsmadeeasy.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/dnsmadeeasy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/ip_netns.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/ipinfoio_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/ipinfoio_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/ldap/ldap_entry.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/ldap/ldap_entry.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/ldap/ldap_passwd.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/ldap/ldap_passwd.py validate-modules:doc-required-mismatch
lib/ansible/modules/net_tools/netbox/netbox_device.py validate-modules:doc-missing-type
lib/ansible/modules/net_tools/netbox/netbox_device.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/net_tools/netbox/netbox_interface.py validate-modules:parameter-type-not-in-doc
@@ -2910,134 +1764,6 @@ lib/ansible/modules/net_tools/netbox/netbox_ip_address.py validate-modules:param
lib/ansible/modules/net_tools/netbox/netbox_prefix.py validate-modules:doc-missing-type
lib/ansible/modules/net_tools/netbox/netbox_prefix.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/net_tools/netbox/netbox_site.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/netcup_dns.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/netcup_dns.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_a_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_a_record.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_a_record.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_a_record.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_a_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_a_record.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_aaaa_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_aaaa_record.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_aaaa_record.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_aaaa_record.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_aaaa_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_aaaa_record.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_cname_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_cname_record.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_cname_record.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_cname_record.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_cname_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_cname_record.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_dns_view.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_dns_view.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_dns_view.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_dns_view.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_dns_view.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_dns_view.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_fixed_address.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_fixed_address.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/net_tools/nios/nios_fixed_address.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_fixed_address.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_fixed_address.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_fixed_address.py validate-modules:parameter-alias-self
-lib/ansible/modules/net_tools/nios/nios_fixed_address.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_fixed_address.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:parameter-alias-self
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_host_record.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_member.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_member.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/net_tools/nios/nios_member.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_member.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_member.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_member.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/net_tools/nios/nios_member.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_member.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_mx_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_mx_record.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_mx_record.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_mx_record.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_mx_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_mx_record.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_naptr_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_naptr_record.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_naptr_record.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_naptr_record.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_naptr_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_naptr_record.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_network.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_network.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/net_tools/nios/nios_network.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_network.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_network.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_network.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_network.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_network_view.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_network_view.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_network_view.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_network_view.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_network_view.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_network_view.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_nsgroup.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_nsgroup.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_nsgroup.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/net_tools/nios/nios_nsgroup.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_nsgroup.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_nsgroup.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_nsgroup.py validate-modules:missing-suboption-docs
-lib/ansible/modules/net_tools/nios/nios_nsgroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_nsgroup.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_ptr_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_ptr_record.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_ptr_record.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_ptr_record.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_ptr_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_ptr_record.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_srv_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_srv_record.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_srv_record.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_srv_record.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_srv_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_srv_record.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_txt_record.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_txt_record.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_txt_record.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_txt_record.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_txt_record.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_txt_record.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nios/nios_zone.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/net_tools/nios/nios_zone.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/net_tools/nios/nios_zone.py validate-modules:doc-missing-type
-lib/ansible/modules/net_tools/nios/nios_zone.py validate-modules:doc-required-mismatch
-lib/ansible/modules/net_tools/nios/nios_zone.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/net_tools/nios/nios_zone.py validate-modules:parameter-alias-self
-lib/ansible/modules/net_tools/nios/nios_zone.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nios/nios_zone.py validate-modules:undocumented-parameter
-lib/ansible/modules/net_tools/nmcli.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/net_tools/nmcli.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/nsupdate.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/net_tools/nsupdate.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/net_tools/omapi_host.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/a10/a10_server.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/a10/a10_server.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/a10/a10_server_axapi3.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/a10/a10_server_axapi3.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/a10/a10_server_axapi3.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/a10/a10_service_group.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/a10/a10_service_group.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/a10/a10_virtual_server.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/a10/a10_virtual_server.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/a10/a10_virtual_server.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/a10/a10_virtual_server.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/aci/aci_aaa_user.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/aci/aci_aaa_user_certificate.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/aci/aci_access_port_block_to_access_port.py validate-modules:doc-required-mismatch
@@ -3137,7 +1863,6 @@ lib/ansible/modules/network/aci/mso_schema_template_bd.py validate-modules:param
lib/ansible/modules/network/aci/mso_schema_template_contract_filter.py validate-modules:invalid-ansiblemodule-schema
lib/ansible/modules/network/aci/mso_schema_template_contract_filter.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/aci/mso_schema_template_deploy.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/aci/mso_schema_template_external_epg_subnet.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/aci/mso_schema_template_filter_entry.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/aci/mso_site.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/aci/mso_site.py validate-modules:parameter-list-no-elements
@@ -3145,27 +1870,6 @@ lib/ansible/modules/network/aci/mso_tenant.py validate-modules:doc-required-mism
lib/ansible/modules/network/aci/mso_tenant.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/aci/mso_user.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/aci/mso_user.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/aireos/aireos_command.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/aireos/aireos_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/aireos/aireos_command.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/aireos/aireos_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/aireos/aireos_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/aireos/aireos_config.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/aireos/aireos_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/aireos/aireos_config.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/aireos/aireos_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/aireos/aireos_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/apconos/apconos_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/aruba/aruba_command.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/aruba/aruba_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/aruba/aruba_command.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/aruba/aruba_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/aruba/aruba_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/aruba/aruba_config.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/aruba/aruba_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/aruba/aruba_config.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/aruba/aruba_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/aruba/aruba_config.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/asa/asa_acl.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/network/asa/asa_acl.py validate-modules:doc-missing-type
lib/ansible/modules/network/asa/asa_acl.py validate-modules:parameter-list-no-elements
@@ -3187,318 +1891,6 @@ lib/ansible/modules/network/asa/asa_config.py yamllint:unparsable-with-libyaml
lib/ansible/modules/network/asa/asa_og.py validate-modules:doc-missing-type
lib/ansible/modules/network/asa/asa_og.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/asa/asa_og.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_actiongroupconfig.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_actiongroupconfig.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_actiongroupconfig.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_actiongroupconfig.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_alertconfig.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_alertconfig.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_alertconfig.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_alertconfig.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_alertemailconfig.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_alertemailconfig.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_alertemailconfig.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_alertemailconfig.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_alertscriptconfig.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_alertscriptconfig.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_alertscriptconfig.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_alertscriptconfig.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_alertsyslogconfig.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_alertsyslogconfig.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_alertsyslogconfig.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_alertsyslogconfig.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_alertsyslogconfig.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_analyticsprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_analyticsprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_analyticsprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_analyticsprofile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_analyticsprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_api_session.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_api_session.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_api_session.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_api_session.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/avi/avi_api_session.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_api_version.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_api_version.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_api_version.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_api_version.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_applicationprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_applicationprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_applicationprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_applicationprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_authprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_authprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_authprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_authprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_autoscalelaunchconfig.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_autoscalelaunchconfig.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_autoscalelaunchconfig.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_autoscalelaunchconfig.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_backup.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_backup.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_backup.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_backup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_backupconfiguration.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_backupconfiguration.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_backupconfiguration.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_backupconfiguration.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_cloud.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_cloud.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_cloud.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_cloud.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_cloud.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_cloudconnectoruser.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_cloudconnectoruser.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_cloudconnectoruser.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_cloudconnectoruser.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_cloudproperties.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_cloudproperties.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_cloudproperties.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_cloudproperties.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_cloudproperties.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_cluster.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_cluster.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_cluster.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_cluster.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_cluster.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_clusterclouddetails.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_clusterclouddetails.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_clusterclouddetails.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_clusterclouddetails.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_controllerproperties.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_controllerproperties.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_controllerproperties.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_controllerproperties.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_controllerproperties.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_customipamdnsprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_customipamdnsprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_customipamdnsprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_customipamdnsprofile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_customipamdnsprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_dnspolicy.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_dnspolicy.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_dnspolicy.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_dnspolicy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_dnspolicy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_errorpagebody.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_errorpagebody.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_errorpagebody.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_errorpagebody.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_errorpageprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_errorpageprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_errorpageprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_errorpageprofile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_errorpageprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_gslb.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_gslb.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_gslb.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_gslb.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_gslb.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_gslbservice.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_gslbservice.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_gslbservice.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_gslbservice.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_gslbservice.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_gslbservice_patch_member.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_gslbservice_patch_member.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_gslbservice_patch_member.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_gslbservice_patch_member.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_healthmonitor.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_healthmonitor.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_healthmonitor.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_healthmonitor.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_httppolicyset.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_httppolicyset.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_httppolicyset.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_httppolicyset.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_ipaddrgroup.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_ipaddrgroup.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_ipaddrgroup.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_ipaddrgroup.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_ipaddrgroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_l4policyset.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_l4policyset.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_l4policyset.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_l4policyset.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_microservicegroup.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_microservicegroup.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_microservicegroup.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_microservicegroup.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_microservicegroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_network.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_network.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_network.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_network.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_network.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_networkprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_networkprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_networkprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_networkprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_networksecuritypolicy.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_networksecuritypolicy.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_networksecuritypolicy.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_networksecuritypolicy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_networksecuritypolicy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_pkiprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_pkiprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_pkiprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_pkiprofile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_pkiprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_pool.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_pool.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_pool.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_pool.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_pool.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_poolgroup.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_poolgroup.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_poolgroup.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_poolgroup.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_poolgroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_prioritylabels.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_prioritylabels.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_prioritylabels.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_prioritylabels.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_prioritylabels.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_role.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_role.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_role.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_role.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_role.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_scheduler.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_scheduler.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_scheduler.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_scheduler.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_seproperties.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_seproperties.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_seproperties.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_seproperties.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_serviceengine.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_serviceengine.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_serviceengine.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_serviceengine.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_serviceengine.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_serviceenginegroup.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_serviceenginegroup.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_serviceenginegroup.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_serviceenginegroup.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_serviceenginegroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_snmptrapprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_snmptrapprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_snmptrapprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_snmptrapprofile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_snmptrapprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_sslprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_sslprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_sslprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_sslprofile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_sslprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_stringgroup.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_stringgroup.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_stringgroup.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_stringgroup.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_stringgroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_systemconfiguration.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_systemconfiguration.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_systemconfiguration.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_systemconfiguration.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_systemconfiguration.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_tenant.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_tenant.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_tenant.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_tenant.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_trafficcloneprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_trafficcloneprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_trafficcloneprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_trafficcloneprofile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_trafficcloneprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_user.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_user.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_user.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_useraccount.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_useraccount.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_useraccount.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_useraccount.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/avi/avi_useraccount.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_useraccountprofile.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_useraccountprofile.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_useraccountprofile.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_useraccountprofile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_virtualservice.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_virtualservice.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_virtualservice.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_virtualservice.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_virtualservice.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_vrfcontext.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_vrfcontext.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_vrfcontext.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_vrfcontext.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_vrfcontext.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_vsdatascriptset.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_vsdatascriptset.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_vsdatascriptset.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_vsdatascriptset.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_vsdatascriptset.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_vsvip.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_vsvip.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_vsvip.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_vsvip.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/avi/avi_vsvip.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/avi/avi_webhook.py future-import-boilerplate
-lib/ansible/modules/network/avi/avi_webhook.py metaclass-boilerplate
-lib/ansible/modules/network/avi/avi_webhook.py validate-modules:doc-missing-type
-lib/ansible/modules/network/avi/avi_webhook.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/bigswitch/bcf_switch.py validate-modules:doc-missing-type
-lib/ansible/modules/network/bigswitch/bcf_switch.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/bigswitch/bigmon_chain.py validate-modules:doc-missing-type
-lib/ansible/modules/network/bigswitch/bigmon_chain.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/bigswitch/bigmon_policy.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/bigswitch/bigmon_policy.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/bigswitch/bigmon_policy.py validate-modules:doc-missing-type
-lib/ansible/modules/network/bigswitch/bigmon_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/check_point/checkpoint_access_rule.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/check_point/checkpoint_access_rule.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/check_point/checkpoint_host.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/check_point/checkpoint_object_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/check_point/checkpoint_run_script.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/check_point/checkpoint_session.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/check_point/checkpoint_task_facts.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/check_point/cp_mgmt_access_layer.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/check_point/cp_mgmt_access_layer_facts.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/check_point/cp_mgmt_access_role.py validate-modules:parameter-list-no-elements
@@ -3588,563 +1980,6 @@ lib/ansible/modules/network/cli/cli_command.py validate-modules:parameter-type-n
lib/ansible/modules/network/cli/cli_config.py validate-modules:doc-missing-type
lib/ansible/modules/network/cli/cli_config.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/cli/cli_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_aaa_server.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_aaa_server.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_aaa_server.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_aaa_server.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_aaa_server.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_aaa_server.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_acl.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_acl.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_acl.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_acl.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_acl.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_acl.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_acl_advance.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_acl_advance.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_acl_advance.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_acl_advance.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_acl_advance.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_acl_advance.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_acl_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_acl_interface.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_acl_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_acl_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_acl_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_acl_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_bfd_global.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bfd_global.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bfd_global.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_bfd_global.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_bfd_global.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_bfd_global.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_bfd_session.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bfd_session.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bfd_session.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_bfd_session.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_bfd_session.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_bfd_session.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_bfd_view.py validate-modules:doc-default-incompatible-type
-lib/ansible/modules/network/cloudengine/ce_bfd_view.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_bfd_view.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cloudengine/ce_bfd_view.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_bfd_view.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_bgp.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bgp.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bgp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_bgp.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_bgp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_bgp.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_bgp_af.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bgp_af.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bgp_af.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_bgp_af.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_bgp_af.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_bgp_af.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_command.py pylint:blacklisted-name
-lib/ansible/modules/network/cloudengine/ce_command.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_command.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_command.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cloudengine/ce_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_command.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_config.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_config.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_config.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cloudengine/ce_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_config.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_dldp.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_dldp.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_dldp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_dldp.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_dldp.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/cloudengine/ce_dldp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_dldp.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_dldp_interface.py pylint:blacklisted-name
-lib/ansible/modules/network/cloudengine/ce_dldp_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_dldp_interface.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_dldp_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_dldp_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_dldp_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_dldp_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_eth_trunk.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_eth_trunk.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_eth_trunk.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_eth_trunk.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_eth_trunk.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cloudengine/ce_eth_trunk.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_eth_trunk.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_evpn_global.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_evpn_global.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_evpn_global.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_evpn_global.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_evpn_global.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_evpn_global.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_facts.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_facts.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_facts.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cloudengine/ce_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_facts.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_file_copy.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_file_copy.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_file_copy.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_file_copy.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_file_copy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_file_copy.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_info_center_debug.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_info_center_debug.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_info_center_debug.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_info_center_debug.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_info_center_debug.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_info_center_debug.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_info_center_global.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_info_center_global.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_info_center_global.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_info_center_global.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_info_center_global.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_info_center_global.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_info_center_log.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_info_center_log.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_info_center_log.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_info_center_log.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_info_center_log.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_info_center_log.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_info_center_trap.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_info_center_trap.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_info_center_trap.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_info_center_trap.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_info_center_trap.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_info_center_trap.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_interface.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_interface_ospf.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_interface_ospf.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_interface_ospf.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_interface_ospf.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_interface_ospf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_interface_ospf.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_ip_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ip_interface.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ip_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_ip_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_ip_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_ip_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_is_is_view.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cloudengine/ce_link_status.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_link_status.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_link_status.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_link_status.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_link_status.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_link_status.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_mlag_config.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_mlag_config.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_mlag_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_mlag_config.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_mlag_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_mlag_config.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_mlag_interface.py pylint:blacklisted-name
-lib/ansible/modules/network/cloudengine/ce_mlag_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_mlag_interface.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_mlag_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_mlag_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_mlag_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_mlag_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_mtu.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_mtu.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_mtu.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_mtu.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cloudengine/ce_mtu.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_mtu.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_mtu.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_netconf.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netconf.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netconf.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_netconf.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_netconf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_netconf.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_netstream_aging.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netstream_aging.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netstream_aging.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_netstream_aging.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_netstream_aging.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_netstream_aging.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_netstream_export.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netstream_export.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netstream_export.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_netstream_export.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_netstream_export.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_netstream_export.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_netstream_global.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netstream_global.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netstream_global.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_netstream_global.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_netstream_global.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_netstream_global.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_netstream_template.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netstream_template.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_netstream_template.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_netstream_template.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_netstream_template.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_netstream_template.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_ntp.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ntp.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ntp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_ntp.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_ntp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_ntp.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_ntp_auth.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ntp_auth.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ntp_auth.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_ntp_auth.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_ntp_auth.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_ntp_auth.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_ospf.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ospf.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ospf.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_ospf.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_ospf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_ospf.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_reboot.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_reboot.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_reboot.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_reboot.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_reboot.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_reboot.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_rollback.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_rollback.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_rollback.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_rollback.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cloudengine/ce_rollback.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_rollback.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_rollback.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_sflow.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_sflow.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_sflow.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_sflow.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_sflow.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cloudengine/ce_sflow.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_sflow.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_snmp_community.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_community.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_community.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_snmp_community.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_snmp_community.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_snmp_community.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_snmp_contact.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_contact.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_contact.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_snmp_contact.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_snmp_contact.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_snmp_contact.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_snmp_location.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_location.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_location.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_snmp_location.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_snmp_location.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_snmp_location.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_snmp_traps.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_traps.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_traps.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_snmp_traps.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_snmp_traps.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_snmp_traps.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_snmp_user.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_user.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_snmp_user.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_snmp_user.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_snmp_user.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/network/cloudengine/ce_snmp_user.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_snmp_user.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_startup.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_startup.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_startup.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_startup.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_startup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_startup.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_static_route.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_static_route.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_static_route.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_static_route.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_static_route.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_static_route.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_static_route_bfd.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cloudengine/ce_static_route_bfd.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cloudengine/ce_stp.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_stp.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_stp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_stp.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_stp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_stp.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_switchport.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_switchport.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_switchport.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_switchport.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_switchport.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_switchport.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vlan.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vlan.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vlan.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vlan.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vlan.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vrf.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vrf.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vrf.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vrf.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vrf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vrf.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vrf_af.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vrf_af.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vrf_af.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vrf_af.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vrf_af.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vrf_af.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vrf_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vrf_interface.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vrf_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vrf_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vrf_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vrf_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vrrp.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vrrp.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vrrp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vrrp.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vrrp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vrrp.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vxlan_global.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_global.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_global.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vxlan_global.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vxlan_global.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vxlan_global.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cloudvision/cv_server_provision.py pylint:blacklisted-name
-lib/ansible/modules/network/cloudvision/cv_server_provision.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cloudvision/cv_server_provision.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cloudvision/cv_server_provision.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/cnos/cnos_backup.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_backup.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_backup.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_backup.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/cnos/cnos_backup.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_backup.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_banner.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cnos/cnos_banner.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_banner.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_banner.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_banner.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_bgp.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_bgp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_bgp.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_bgp.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cnos/cnos_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_conditional_command.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_conditional_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_conditional_command.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_conditional_command.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_conditional_template.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_conditional_template.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_conditional_template.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_conditional_template.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cnos/cnos_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_config.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_factory.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_factory.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_factory.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_facts.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/cnos/cnos_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cnos/cnos_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_facts.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_image.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_image.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_image.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_image.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_l2_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_l2_interface.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cnos/cnos_l2_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/cnos/cnos_l2_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_l2_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_l2_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cnos/cnos_l2_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_l2_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_l3_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_l3_interface.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cnos/cnos_l3_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/cnos/cnos_l3_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_l3_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_l3_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cnos/cnos_l3_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_l3_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_linkagg.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_linkagg.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cnos/cnos_linkagg.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/cnos/cnos_linkagg.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_linkagg.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_linkagg.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cnos/cnos_linkagg.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cnos/cnos_linkagg.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_linkagg.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_lldp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_logging.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_logging.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/cnos/cnos_logging.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_logging.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cnos/cnos_logging.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_logging.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_reload.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_reload.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_reload.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_rollback.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_save.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_save.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_save.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_showrun.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_showrun.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/cnos/cnos_showrun.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_system.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_system.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cnos/cnos_system.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_template.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_template.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_template.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_template.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_user.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_user.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/cnos/cnos_user.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_user.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cnos/cnos_user.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cnos/cnos_user.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_user.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_vlag.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_vlag.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_vlag.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_vlag.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cnos/cnos_vrf.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/cnos/cnos_vrf.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/cnos/cnos_vrf.py validate-modules:doc-missing-type
-lib/ansible/modules/network/cnos/cnos_vrf.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/cnos/cnos_vrf.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/cnos/cnos_vrf.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cnos/cnos_vrf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/cnos/cnos_vrf.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/cumulus/nclu.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/cumulus/nclu.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/dellos10/dellos10_command.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/network/dellos10/dellos10_command.py validate-modules:doc-missing-type
lib/ansible/modules/network/dellos10/dellos10_command.py validate-modules:doc-required-mismatch
@@ -4199,47 +2034,6 @@ lib/ansible/modules/network/dellos9/dellos9_facts.py validate-modules:doc-requir
lib/ansible/modules/network/dellos9/dellos9_facts.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/dellos9/dellos9_facts.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/dellos9/dellos9_facts.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/edgeos/edgeos_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/edgeos/edgeos_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/edgeos/edgeos_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/edgeos/edgeos_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/edgeos/edgeos_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/edgeos/edgeos_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/edgeos/edgeos_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/edgeos/edgeos_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/edgeswitch/edgeswitch_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/edgeswitch/edgeswitch_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/edgeswitch/edgeswitch_vlan.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/edgeswitch/edgeswitch_vlan.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/edgeswitch/edgeswitch_vlan.py validate-modules:doc-missing-type
-lib/ansible/modules/network/edgeswitch/edgeswitch_vlan.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/edgeswitch/edgeswitch_vlan.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/edgeswitch/edgeswitch_vlan.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/edgeswitch/edgeswitch_vlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/edgeswitch/edgeswitch_vlan.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/enos/enos_command.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/enos/enos_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/enos/enos_command.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/enos/enos_command.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/enos/enos_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/enos/enos_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/enos/enos_command.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/enos/enos_command.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/enos/enos_config.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/enos/enos_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/enos/enos_config.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/enos/enos_config.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/enos/enos_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/enos/enos_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/enos/enos_config.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/enos/enos_facts.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/enos/enos_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/network/enos/enos_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/enos/enos_facts.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/enos/enos_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/enos/enos_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/enos/enos_facts.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/enos/enos_facts.py yamllint:unparsable-with-libyaml
lib/ansible/modules/network/eos/_eos_interface.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/network/eos/_eos_interface.py validate-modules:doc-elements-mismatch
lib/ansible/modules/network/eos/_eos_interface.py validate-modules:doc-missing-type
@@ -4355,24 +2149,6 @@ lib/ansible/modules/network/eos/eos_vrf.py validate-modules:missing-suboption-do
lib/ansible/modules/network/eos/eos_vrf.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/eos/eos_vrf.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/eos/eos_vrf.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/eric_eccli/eric_eccli_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/exos/exos_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/exos/exos_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/exos/exos_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/exos/exos_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/exos/exos_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/exos/exos_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/exos/exos_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/exos/exos_l2_interfaces.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/f5/_bigip_asm_policy.py validate-modules:doc-missing-type
-lib/ansible/modules/network/f5/_bigip_asm_policy.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/f5/_bigip_asm_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/f5/_bigip_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/f5/_bigip_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/f5/_bigip_gtm_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/network/f5/_bigip_gtm_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/f5/_bigip_gtm_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/f5/_bigip_gtm_facts.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/f5/bigip_apm_acl.py validate-modules:doc-elements-mismatch
lib/ansible/modules/network/f5/bigip_apm_acl.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/f5/bigip_apm_network_access.py validate-modules:doc-required-mismatch
@@ -4636,57 +2412,6 @@ lib/ansible/modules/network/f5/bigiq_regkey_license_assignment.py validate-modul
lib/ansible/modules/network/f5/bigiq_regkey_pool.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/f5/bigiq_utility_license.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/f5/bigiq_utility_license_assignment.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/fortianalyzer/faz_device.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/fortimanager/fmgr_device.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/fortimanager/fmgr_device.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_device_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_device_group.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/fortimanager/fmgr_device_group.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_device_provision_template.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/fortimanager/fmgr_device_provision_template.py validate-modules:invalid-argument-name
-lib/ansible/modules/network/fortimanager/fmgr_device_provision_template.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/fortimanager/fmgr_device_provision_template.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_fwobj_address.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_fwobj_ippool.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_fwobj_ippool.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_fwobj_ippool6.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_fwobj_ippool6.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_fwobj_service.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_fwobj_vip.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_fwobj_vip.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_fwpol_ipv4.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_fwpol_ipv4.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_fwpol_package.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/fortimanager/fmgr_fwpol_package.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_ha.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_provisioning.py validate-modules:doc-missing-type
-lib/ansible/modules/network/fortimanager/fmgr_provisioning.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/fortimanager/fmgr_provisioning.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_query.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_query.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_script.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/fortimanager/fmgr_script.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/fortimanager/fmgr_script.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_appctrl.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_secprof_appctrl.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_av.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_secprof_av.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_dns.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_ips.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_secprof_ips.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_profile_group.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_proxy.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_secprof_proxy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_spam.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_secprof_spam.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_ssl_ssh.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_secprof_ssl_ssh.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_voip.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_waf.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_secprof_waf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_wanopt.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/fortimanager/fmgr_secprof_web.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/fortimanager/fmgr_secprof_web.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/fortios/fortios_address.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/network/fortios/fortios_address.py validate-modules:doc-missing-type
lib/ansible/modules/network/fortios/fortios_antivirus_quarantine.py validate-modules:doc-choices-do-not-match-spec
@@ -4904,70 +2629,6 @@ lib/ansible/modules/network/fortios/fortios_wireless_controller_wtp.py validate-
lib/ansible/modules/network/fortios/fortios_wireless_controller_wtp_group.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/fortios/fortios_wireless_controller_wtp_profile.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/network/fortios/fortios_wireless_controller_wtp_profile.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/icx/icx_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/icx/icx_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/icx/icx_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/icx/icx_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/icx/icx_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/icx/icx_l3_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/icx/icx_l3_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/icx/icx_linkagg.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/icx/icx_linkagg.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/icx/icx_linkagg.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/icx/icx_lldp.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/icx/icx_lldp.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/icx/icx_logging.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/icx/icx_logging.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/icx/icx_static_route.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/icx/icx_static_route.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/icx/icx_system.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/icx/icx_system.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/icx/icx_user.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/icx/icx_user.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/icx/icx_vlan.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/icx/icx_vlan.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/icx/icx_vlan.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/illumos/dladm_etherstub.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/dladm_etherstub.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/dladm_iptun.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/dladm_iptun.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/dladm_iptun.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/illumos/dladm_linkprop.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/dladm_linkprop.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/dladm_linkprop.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/network/illumos/dladm_linkprop.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/illumos/dladm_vlan.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/dladm_vlan.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/illumos/dladm_vlan.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/dladm_vlan.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/illumos/dladm_vlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/illumos/dladm_vnic.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/dladm_vnic.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/illumos/dladm_vnic.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/flowadm.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/flowadm.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/illumos/flowadm.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/ipadm_addr.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/ipadm_addr.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/ipadm_addr.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/illumos/ipadm_addrprop.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/ipadm_addrprop.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/ipadm_addrprop.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/network/illumos/ipadm_if.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/ipadm_if.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/ipadm_ifprop.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/ipadm_ifprop.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/illumos/ipadm_ifprop.py validate-modules:doc-missing-type
-lib/ansible/modules/network/illumos/ipadm_ifprop.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/network/illumos/ipadm_prop.py pylint:blacklisted-name
-lib/ansible/modules/network/illumos/ipadm_prop.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/illumos/ipadm_prop.py validate-modules:doc-missing-type
-lib/ansible/modules/network/ingate/ig_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/ingate/ig_config.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/ingate/ig_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/ingate/ig_config.py validate-modules:return-syntax-error
-lib/ansible/modules/network/ingate/ig_unit_information.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/ingate/ig_unit_information.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/ios/_ios_interface.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/network/ios/_ios_interface.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/network/ios/_ios_interface.py validate-modules:doc-elements-mismatch
@@ -5180,22 +2841,6 @@ lib/ansible/modules/network/iosxr/iosxr_user.py validate-modules:missing-subopti
lib/ansible/modules/network/iosxr/iosxr_user.py validate-modules:mutually_exclusive-unknown
lib/ansible/modules/network/iosxr/iosxr_user.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/iosxr/iosxr_user.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/ironware/ironware_command.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/ironware/ironware_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/ironware/ironware_command.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/ironware/ironware_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/ironware/ironware_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/ironware/ironware_config.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/ironware/ironware_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/ironware/ironware_config.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/ironware/ironware_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/ironware/ironware_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/ironware/ironware_facts.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/ironware/ironware_facts.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/ironware/ironware_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/ironware/ironware_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/itential/iap_start_workflow.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/itential/iap_token.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/junos/_junos_interface.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/network/junos/_junos_interface.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/network/junos/_junos_interface.py validate-modules:doc-elements-mismatch
@@ -5389,8 +3034,6 @@ lib/ansible/modules/network/meraki/meraki_vlan.py validate-modules:doc-elements-
lib/ansible/modules/network/meraki/meraki_vlan.py validate-modules:missing-suboption-docs
lib/ansible/modules/network/meraki/meraki_vlan.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/meraki/meraki_vlan.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/netact/netact_cm_command.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/netact/netact_cm_command.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/netconf/netconf_config.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/network/netconf/netconf_config.py validate-modules:doc-missing-type
lib/ansible/modules/network/netconf/netconf_config.py validate-modules:doc-required-mismatch
@@ -5403,152 +3046,6 @@ lib/ansible/modules/network/netconf/netconf_rpc.py validate-modules:doc-missing-
lib/ansible/modules/network/netconf/netconf_rpc.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/netconf/netconf_rpc.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/netconf/netconf_rpc.py validate-modules:return-syntax-error
-lib/ansible/modules/network/netscaler/netscaler_cs_action.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/netscaler/netscaler_cs_action.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_cs_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/netscaler/netscaler_gslb_service.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/netscaler/netscaler_gslb_service.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_gslb_site.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_nitro_request.py pylint:ansible-bad-function
-lib/ansible/modules/network/netscaler/netscaler_nitro_request.py validate-modules:doc-missing-type
-lib/ansible/modules/network/netscaler/netscaler_nitro_request.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/netscaler/netscaler_nitro_request.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/netscaler/netscaler_nitro_request.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_save_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/netscaler/netscaler_save_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_server.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/netscaler/netscaler_server.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_service.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/netscaler/netscaler_service.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/netscaler/netscaler_service.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_servicegroup.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/netscaler/netscaler_servicegroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_cluster.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_cluster.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_cluster.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_ospf.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_ospf.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_ospf.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/netvisor/_pn_ospf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_ospfarea.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_ospfarea.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_ospfarea.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_show.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_show.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_show.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/netvisor/_pn_show.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_trunk.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_trunk.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_trunk.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_vlag.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vlag.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vlag.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_vlan.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vlan.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_vrouter.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vrouter.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vrouter.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_vrouterbgp.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vrouterbgp.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vrouterbgp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_vrouterif.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vrouterif.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vrouterif.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/netvisor/_pn_vrouterif.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/_pn_vrouterlbif.py future-import-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vrouterlbif.py metaclass-boilerplate
-lib/ansible/modules/network/netvisor/_pn_vrouterlbif.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/netvisor/_pn_vrouterlbif.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_access_list.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_access_list.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_access_list_ip.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_access_list_ip.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_admin_service.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_admin_session_timeout.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_admin_syslog.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_connection_stats_settings.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_cpu_class.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_cpu_class.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_cpu_mgmt_class.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_dhcp_filter.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_dscp_map.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_dscp_map.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_dscp_map_pri_map.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_fabric_local.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_fabric_local.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_igmp_snooping.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_igmp_snooping.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_ipv6security_raguard.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_ipv6security_raguard_port.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_ipv6security_raguard_vlan.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_log_audit_exception.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/netvisor/pn_log_audit_exception.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_port_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_port_config.py validate-modules:required_one_of-unknown
-lib/ansible/modules/network/netvisor/pn_port_cos_bw.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_port_cos_rate_setting.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_prefix_list.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_prefix_list_network.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_role.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/netvisor/pn_role.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_snmp_community.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_snmp_community.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_snmp_trap_sink.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_snmp_vacm.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_stp.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_stp_port.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_switch_setup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_user.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vflow_table_profile.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vrouter_bgp.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vrouter_bgp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/netvisor/pn_vrouter_bgp_network.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vrouter_interface_ip.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vrouter_loopback_interface.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vrouter_ospf.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vrouter_ospf6.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vrouter_packet_relay.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vrouter_pim_config.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/netvisor/pn_vrouter_pim_config.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/netvisor/pn_vtep.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/nos/nos_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/nos/nos_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/nos/nos_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/nos/nos_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/nos/nos_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/nos/nos_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/nos/nos_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/nos/nos_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/nso/nso_action.py validate-modules:doc-missing-type
-lib/ansible/modules/network/nso/nso_action.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/nso/nso_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/nso/nso_config.py validate-modules:return-syntax-error
-lib/ansible/modules/network/nso/nso_query.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/nso/nso_query.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/nso/nso_show.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/nso/nso_verify.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/nuage/nuage_vspk.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/nuage/nuage_vspk.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/nuage/nuage_vspk.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/nuage/nuage_vspk.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/nuage/nuage_vspk.py validate-modules:undocumented-parameter
lib/ansible/modules/network/nxos/_nxos_interface.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/network/nxos/_nxos_interface.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/network/nxos/_nxos_interface.py validate-modules:doc-default-incompatible-type
@@ -6064,131 +3561,6 @@ lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py validate-modules:paramet
lib/ansible/modules/network/nxos/storage/nxos_devicealias.py validate-modules:doc-elements-mismatch
lib/ansible/modules/network/nxos/storage/nxos_vsan.py validate-modules:doc-elements-mismatch
lib/ansible/modules/network/nxos/storage/nxos_zone_zoneset.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_bgp.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_bgp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_bgp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_buffer_pool.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_buffer_pool.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_command.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/onyx/onyx_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/onyx/onyx_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_config.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/onyx/onyx_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/onyx/onyx_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/onyx/onyx_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_igmp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_igmp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_igmp_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_igmp_vlan.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_igmp_vlan.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_igmp_vlan.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/onyx/onyx_igmp_vlan.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/onyx/onyx_igmp_vlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/onyx/onyx_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/onyx/onyx_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/onyx/onyx_interface.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/onyx/onyx_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/onyx/onyx_l2_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/onyx/onyx_l2_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_l2_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_l2_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/onyx/onyx_l2_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/onyx/onyx_l2_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_l2_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/onyx/onyx_l3_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/onyx/onyx_l3_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_l3_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_l3_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/onyx/onyx_l3_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/onyx/onyx_l3_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_l3_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/onyx/onyx_linkagg.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/onyx/onyx_linkagg.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/onyx/onyx_linkagg.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_linkagg.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_linkagg.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/onyx/onyx_linkagg.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/onyx/onyx_linkagg.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/onyx/onyx_linkagg.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_linkagg.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/onyx/onyx_lldp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_lldp_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/onyx/onyx_lldp_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_lldp_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_lldp_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/onyx/onyx_lldp_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/onyx/onyx_lldp_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_lldp_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/onyx/onyx_magp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_magp.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_mlag_ipl.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_mlag_vip.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/onyx/onyx_mlag_vip.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_mlag_vip.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_ntp.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_ntp_servers_peers.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_ospf.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_ospf.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_ospf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_pfc_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/onyx/onyx_pfc_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_pfc_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_pfc_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/onyx/onyx_pfc_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/onyx/onyx_pfc_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_pfc_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/onyx/onyx_protocol.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_ptp_global.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_ptp_global.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_ptp_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_ptp_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_qos.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_qos.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/onyx/onyx_qos.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_snmp.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_snmp_hosts.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_snmp_users.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_syslog_remote.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_traffic_class.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_traffic_class.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/onyx/onyx_traffic_class.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_vlan.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/onyx/onyx_vlan.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_vlan.py validate-modules:doc-missing-type
-lib/ansible/modules/network/onyx/onyx_vlan.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/onyx/onyx_vlan.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/onyx/onyx_vlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_vlan.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/onyx/onyx_vxlan.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/onyx/onyx_vxlan.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/onyx/onyx_vxlan.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/onyx/onyx_vxlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/onyx/onyx_vxlan.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/opx/opx_cps.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/opx/opx_cps.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/ordnance/ordnance_config.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/ordnance/ordnance_facts.py yamllint:unparsable-with-libyaml
lib/ansible/modules/network/ovs/openvswitch_bridge.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/network/ovs/openvswitch_bridge.py validate-modules:doc-missing-type
lib/ansible/modules/network/ovs/openvswitch_bridge.py validate-modules:parameter-type-not-in-doc
@@ -6196,106 +3568,8 @@ lib/ansible/modules/network/ovs/openvswitch_db.py validate-modules:doc-missing-t
lib/ansible/modules/network/ovs/openvswitch_db.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/ovs/openvswitch_port.py validate-modules:doc-missing-type
lib/ansible/modules/network/ovs/openvswitch_port.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/panos/_panos_admin.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_admin.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_admin.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_admin.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_admpwd.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_admpwd.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_admpwd.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_cert_gen_ssh.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_cert_gen_ssh.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_cert_gen_ssh.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_cert_gen_ssh.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_check.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_check.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_check.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/panos/_panos_commit.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_commit.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_commit.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_commit.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_commit.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/panos/_panos_commit.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/panos/_panos_dag.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_dag.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_dag.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_dag_tags.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_dag_tags.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_dag_tags.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_dag_tags.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_dag_tags.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/panos/_panos_dag_tags.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/panos/_panos_import.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_import.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_import.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_interface.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_interface.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_lic.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_lic.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_lic.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_lic.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_loadcfg.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_loadcfg.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_loadcfg.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_match_rule.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_match_rule.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_match_rule.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_match_rule.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_match_rule.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/panos/_panos_mgtconfig.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_mgtconfig.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_mgtconfig.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_nat_rule.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_nat_rule.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_nat_rule.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/panos/_panos_nat_rule.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/panos/_panos_object.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_object.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_object.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_object.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_object.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/panos/_panos_object.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/panos/_panos_op.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_op.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_op.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_op.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_pg.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_pg.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_pg.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_query_rules.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_query_rules.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_query_rules.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_query_rules.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_restart.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_restart.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_restart.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_sag.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_sag.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_sag.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_sag.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/panos/_panos_sag.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/panos/_panos_security_rule.py validate-modules:doc-missing-type
-lib/ansible/modules/network/panos/_panos_security_rule.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/panos/_panos_security_rule.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/panos/_panos_security_rule.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/panos/_panos_set.py future-import-boilerplate
-lib/ansible/modules/network/panos/_panos_set.py metaclass-boilerplate
-lib/ansible/modules/network/panos/_panos_set.py validate-modules:doc-missing-type
-lib/ansible/modules/network/radware/vdirect_commit.py validate-modules:doc-missing-type
-lib/ansible/modules/network/radware/vdirect_commit.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/radware/vdirect_commit.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/radware/vdirect_file.py validate-modules:doc-missing-type
-lib/ansible/modules/network/radware/vdirect_file.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/radware/vdirect_runnable.py validate-modules:doc-missing-type
-lib/ansible/modules/network/radware/vdirect_runnable.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/restconf/restconf_config.py validate-modules:doc-missing-type
lib/ansible/modules/network/restconf/restconf_get.py validate-modules:doc-missing-type
-lib/ansible/modules/network/routeros/routeros_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/routeros/routeros_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/routeros/routeros_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/routeros/routeros_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/routeros/routeros_facts.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/skydive/skydive_capture.py validate-modules:doc-missing-type
lib/ansible/modules/network/skydive/skydive_capture.py validate-modules:doc-required-mismatch
lib/ansible/modules/network/skydive/skydive_capture.py validate-modules:invalid-ansiblemodule-schema
@@ -6313,78 +3587,6 @@ lib/ansible/modules/network/skydive/skydive_node.py validate-modules:invalid-ans
lib/ansible/modules/network/skydive/skydive_node.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/network/skydive/skydive_node.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/skydive/skydive_node.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/slxos/slxos_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/slxos/slxos_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/slxos/slxos_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/slxos/slxos_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/slxos/slxos_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/slxos/slxos_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/slxos/slxos_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/slxos/slxos_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/slxos/slxos_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/slxos/slxos_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/slxos/slxos_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/slxos/slxos_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/slxos/slxos_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/slxos/slxos_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/slxos/slxos_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/slxos/slxos_l2_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/slxos/slxos_l2_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/slxos/slxos_l2_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/slxos/slxos_l2_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/slxos/slxos_l2_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/slxos/slxos_l2_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/slxos/slxos_l2_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/slxos/slxos_l3_interface.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/slxos/slxos_l3_interface.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/slxos/slxos_l3_interface.py validate-modules:doc-missing-type
-lib/ansible/modules/network/slxos/slxos_l3_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/slxos/slxos_l3_interface.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/slxos/slxos_l3_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/slxos/slxos_l3_interface.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/slxos/slxos_linkagg.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/slxos/slxos_linkagg.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/slxos/slxos_linkagg.py validate-modules:doc-missing-type
-lib/ansible/modules/network/slxos/slxos_linkagg.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/slxos/slxos_linkagg.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/slxos/slxos_linkagg.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/slxos/slxos_linkagg.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/slxos/slxos_linkagg.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/slxos/slxos_lldp.py validate-modules:doc-missing-type
-lib/ansible/modules/network/slxos/slxos_vlan.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/network/slxos/slxos_vlan.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/network/slxos/slxos_vlan.py validate-modules:doc-missing-type
-lib/ansible/modules/network/slxos/slxos_vlan.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/slxos/slxos_vlan.py validate-modules:missing-suboption-docs
-lib/ansible/modules/network/slxos/slxos_vlan.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/slxos/slxos_vlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/slxos/slxos_vlan.py validate-modules:undocumented-parameter
-lib/ansible/modules/network/sros/sros_command.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/sros/sros_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/sros/sros_command.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/sros/sros_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/sros/sros_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/sros/sros_command.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/sros/sros_config.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/sros/sros_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/sros/sros_config.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/sros/sros_config.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/network/sros/sros_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/sros/sros_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/sros/sros_config.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/sros/sros_rollback.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/network/sros/sros_rollback.py validate-modules:doc-missing-type
-lib/ansible/modules/network/sros/sros_rollback.py validate-modules:doc-required-mismatch
-lib/ansible/modules/network/sros/sros_rollback.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/sros/sros_rollback.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/network/voss/voss_command.py validate-modules:doc-missing-type
-lib/ansible/modules/network/voss/voss_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/voss/voss_command.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/voss/voss_config.py validate-modules:doc-missing-type
-lib/ansible/modules/network/voss/voss_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/voss/voss_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/network/voss/voss_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/network/voss/voss_facts.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/vyos/_vyos_interface.py future-import-boilerplate
lib/ansible/modules/network/vyos/_vyos_interface.py metaclass-boilerplate
lib/ansible/modules/network/vyos/_vyos_interface.py validate-modules:doc-choices-do-not-match-spec
@@ -6508,105 +3710,10 @@ lib/ansible/modules/network/vyos/vyos_vlan.py validate-modules:missing-suboption
lib/ansible/modules/network/vyos/vyos_vlan.py validate-modules:parameter-list-no-elements
lib/ansible/modules/network/vyos/vyos_vlan.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/network/vyos/vyos_vlan.py validate-modules:undocumented-parameter
-lib/ansible/modules/notification/bearychat.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/bearychat.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/campfire.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/catapult.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/catapult.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/catapult.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/cisco_spark.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/notification/cisco_spark.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/cisco_spark.py validate-modules:invalid-argument-name
-lib/ansible/modules/notification/cisco_spark.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/notification/cisco_spark.py validate-modules:undocumented-parameter
-lib/ansible/modules/notification/flowdock.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/grove.py validate-modules:invalid-argument-name
-lib/ansible/modules/notification/grove.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/notification/grove.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/hipchat.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/hipchat.py validate-modules:undocumented-parameter
-lib/ansible/modules/notification/irc.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/notification/irc.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/notification/irc.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/irc.py validate-modules:doc-required-mismatch
-lib/ansible/modules/notification/irc.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/irc.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/irc.py validate-modules:undocumented-parameter
-lib/ansible/modules/notification/jabber.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/jabber.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/logentries_msg.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/mail.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/notification/mail.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/mail.py validate-modules:undocumented-parameter
-lib/ansible/modules/notification/matrix.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/mattermost.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/mqtt.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/notification/mqtt.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/mqtt.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/nexmo.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/nexmo.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/nexmo.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/office_365_connector_card.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/office_365_connector_card.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/office_365_connector_card.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/pushbullet.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/pushbullet.py validate-modules:undocumented-parameter
-lib/ansible/modules/notification/pushover.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/notification/pushover.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/notification/pushover.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/pushover.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/rabbitmq_publish.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/rocketchat.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/notification/rocketchat.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/rocketchat.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/say.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/sendgrid.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/sendgrid.py validate-modules:doc-required-mismatch
-lib/ansible/modules/notification/sendgrid.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/sendgrid.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/sendgrid.py validate-modules:undocumented-parameter
-lib/ansible/modules/notification/slack.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/notification/slack.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/slack.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/notification/snow_record_find.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/syslogger.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/telegram.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/twilio.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/twilio.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/notification/twilio.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/notification/typetalk.py validate-modules:doc-missing-type
-lib/ansible/modules/notification/typetalk.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/language/bower.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/language/bower.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/language/bundler.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/packaging/language/bundler.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/language/bundler.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/language/bundler.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/language/composer.py validate-modules:parameter-invalid
-lib/ansible/modules/packaging/language/composer.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/language/cpanm.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/language/cpanm.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/language/easy_install.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/packaging/language/easy_install.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/language/easy_install.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/language/gem.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/language/maven_artifact.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/language/maven_artifact.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/language/maven_artifact.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/language/pear.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/language/pear.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/language/pear.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/language/pear.py validate-modules:undocumented-parameter
lib/ansible/modules/packaging/language/pip.py pylint:blacklisted-name
lib/ansible/modules/packaging/language/pip.py validate-modules:doc-elements-mismatch
lib/ansible/modules/packaging/language/pip.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/packaging/language/pip_package_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/language/yarn.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/language/yarn.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/apk.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/apk.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/apk.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/apk.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/packaging/os/apt.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/packaging/os/apt.py validate-modules:parameter-invalid
lib/ansible/modules/packaging/os/apt.py validate-modules:parameter-type-not-in-doc
@@ -6619,11 +3726,6 @@ lib/ansible/modules/packaging/os/apt_repository.py validate-modules:doc-default-
lib/ansible/modules/packaging/os/apt_repository.py validate-modules:parameter-invalid
lib/ansible/modules/packaging/os/apt_repository.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/packaging/os/apt_repository.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/apt_rpm.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/apt_rpm.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/packaging/os/apt_rpm.py validate-modules:parameter-invalid
-lib/ansible/modules/packaging/os/apt_rpm.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/apt_rpm.py validate-modules:undocumented-parameter
lib/ansible/modules/packaging/os/dnf.py validate-modules:doc-missing-type
lib/ansible/modules/packaging/os/dnf.py validate-modules:doc-required-mismatch
lib/ansible/modules/packaging/os/dnf.py validate-modules:parameter-invalid
@@ -6631,111 +3733,11 @@ lib/ansible/modules/packaging/os/dnf.py validate-modules:parameter-list-no-eleme
lib/ansible/modules/packaging/os/dnf.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/packaging/os/dpkg_selections.py validate-modules:doc-missing-type
lib/ansible/modules/packaging/os/dpkg_selections.py validate-modules:doc-required-mismatch
-lib/ansible/modules/packaging/os/flatpak.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/flatpak.py validate-modules:use-run-command-not-popen
-lib/ansible/modules/packaging/os/flatpak_remote.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/flatpak_remote.py validate-modules:use-run-command-not-popen
-lib/ansible/modules/packaging/os/homebrew.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/homebrew.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/homebrew.py validate-modules:parameter-invalid
-lib/ansible/modules/packaging/os/homebrew.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/homebrew.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/homebrew_cask.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/homebrew_cask.py validate-modules:doc-required-mismatch
-lib/ansible/modules/packaging/os/homebrew_cask.py validate-modules:parameter-invalid
-lib/ansible/modules/packaging/os/homebrew_cask.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/homebrew_tap.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/homebrew_tap.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/homebrew_tap.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/installp.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/layman.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/layman.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/macports.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/macports.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/macports.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/openbsd_pkg.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/openbsd_pkg.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/openbsd_pkg.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/opkg.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/opkg.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/packaging/os/opkg.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/opkg.py validate-modules:parameter-invalid
-lib/ansible/modules/packaging/os/opkg.py validate-modules:undocumented-parameter
lib/ansible/modules/packaging/os/package_facts.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/packaging/os/package_facts.py validate-modules:doc-missing-type
lib/ansible/modules/packaging/os/package_facts.py validate-modules:parameter-list-no-elements
lib/ansible/modules/packaging/os/package_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/packaging/os/pacman.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/pacman.py validate-modules:parameter-invalid
-lib/ansible/modules/packaging/os/pacman.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/pkg5.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/pkg5.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/pkg5.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/pkg5_publisher.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/pkg5_publisher.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/pkg5_publisher.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/pkgin.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/pkgin.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/pkgin.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/pkgin.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/pkgng.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/pkgng.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/pkgng.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/pkgng.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/pkgutil.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/portage.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/portage.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/portage.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/portinstall.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/portinstall.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/pulp_repo.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/packaging/os/pulp_repo.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/pulp_repo.py validate-modules:doc-required-mismatch
-lib/ansible/modules/packaging/os/pulp_repo.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/redhat_subscription.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/redhat_subscription.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/packaging/os/redhat_subscription.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/redhat_subscription.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/redhat_subscription.py validate-modules:return-syntax-error
-lib/ansible/modules/packaging/os/rhn_channel.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/rhn_channel.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/rhn_channel.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/rhn_register.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/rhsm_release.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/rhsm_repository.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/packaging/os/rhsm_repository.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/rhsm_repository.py validate-modules:doc-required-mismatch
-lib/ansible/modules/packaging/os/rhsm_repository.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/rhsm_repository.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/packaging/os/rpm_key.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/slackpkg.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/slackpkg.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/packaging/os/slackpkg.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/slackpkg.py validate-modules:parameter-invalid
-lib/ansible/modules/packaging/os/slackpkg.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/slackpkg.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/slackpkg.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/snap.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/snap.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/sorcery.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/sorcery.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/sorcery.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/svr4pkg.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/swdepot.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/swdepot.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/swupd.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/urpmi.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/urpmi.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/packaging/os/urpmi.py validate-modules:parameter-invalid
-lib/ansible/modules/packaging/os/urpmi.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/urpmi.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/urpmi.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/xbps.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/xbps.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/xbps.py validate-modules:parameter-invalid
-lib/ansible/modules/packaging/os/xbps.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/xbps.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/xbps.py validate-modules:undocumented-parameter
lib/ansible/modules/packaging/os/yum.py pylint:blacklisted-name
lib/ansible/modules/packaging/os/yum.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/packaging/os/yum.py validate-modules:doc-missing-type
@@ -6748,16 +3750,6 @@ lib/ansible/modules/packaging/os/yum_repository.py validate-modules:doc-missing-
lib/ansible/modules/packaging/os/yum_repository.py validate-modules:parameter-list-no-elements
lib/ansible/modules/packaging/os/yum_repository.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/packaging/os/yum_repository.py validate-modules:undocumented-parameter
-lib/ansible/modules/packaging/os/zypper.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/packaging/os/zypper.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/zypper.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/packaging/os/zypper.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/packaging/os/zypper_repository.py validate-modules:doc-missing-type
-lib/ansible/modules/packaging/os/zypper_repository.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/cobbler/cobbler_sync.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/cobbler/cobbler_sync.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/cobbler/cobbler_system.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/cobbler/cobbler_system.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/remote_management/cpm/cpm_plugconfig.py validate-modules:doc-missing-type
lib/ansible/modules/remote_management/cpm/cpm_plugconfig.py validate-modules:doc-required-mismatch
lib/ansible/modules/remote_management/cpm/cpm_plugconfig.py validate-modules:parameter-type-not-in-doc
@@ -6770,118 +3762,7 @@ lib/ansible/modules/remote_management/cpm/cpm_serial_port_info.py validate-modul
lib/ansible/modules/remote_management/cpm/cpm_serial_port_info.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/remote_management/cpm/cpm_user.py validate-modules:doc-missing-type
lib/ansible/modules/remote_management/cpm/cpm_user.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/dellemc/idrac_server_config_profile.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/dellemc/idrac_server_config_profile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/dellemc/ome_device_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/foreman/_foreman.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/foreman/_katello.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/foreman/_katello.py yamllint:unparsable-with-libyaml
-lib/ansible/modules/remote_management/hpilo/hpilo_boot.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/remote_management/hpilo/hpilo_boot.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/hpilo/hpilo_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/hpilo/hponcfg.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/imc/imc_rest.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/intersight/intersight_info.py validate-modules:parameter-list-no-elements
lib/ansible/modules/remote_management/intersight/intersight_rest_api.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/ipmi/ipmi_boot.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/remote_management/ipmi/ipmi_boot.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/ipmi/ipmi_boot.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/ipmi/ipmi_power.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/remote_management/ipmi/ipmi_power.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/ipmi/ipmi_power.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/lxca/lxca_cmms.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/lxca/lxca_nodes.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/manageiq/manageiq_alert_profiles.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/manageiq/manageiq_alert_profiles.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_alert_profiles.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_alert_profiles.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/manageiq/manageiq_alert_profiles.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/manageiq/manageiq_alerts.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/manageiq/manageiq_alerts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_alerts.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_alerts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/manageiq/manageiq_group.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_group.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/manageiq/manageiq_group.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_group.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_group.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/manageiq/manageiq_policies.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_policies.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_policies.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/remote_management/manageiq/manageiq_policies.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/manageiq/manageiq_policies.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/remote_management/manageiq/manageiq_policies.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/manageiq/manageiq_provider.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/remote_management/manageiq/manageiq_provider.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/remote_management/manageiq/manageiq_provider.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/manageiq/manageiq_provider.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_provider.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_provider.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/remote_management/manageiq/manageiq_provider.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/manageiq/manageiq_provider.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/manageiq/manageiq_tags.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_tags.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_tags.py validate-modules:invalid-ansiblemodule-schema
-lib/ansible/modules/remote_management/manageiq/manageiq_tags.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/manageiq/manageiq_tags.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/remote_management/manageiq/manageiq_tags.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/manageiq/manageiq_tenant.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/manageiq/manageiq_tenant.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_tenant.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_tenant.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/manageiq/manageiq_user.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/manageiq/manageiq_user.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_user.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/remote_management/manageiq/manageiq_user.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_datacenter_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/oneview/oneview_datacenter_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_datacenter_info.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_enclosure_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/oneview/oneview_enclosure_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_enclosure_info.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_info.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_fc_network.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/oneview/oneview_fc_network.py validate-modules:doc-required-mismatch
-lib/ansible/modules/remote_management/oneview/oneview_fc_network.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_fc_network.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_fc_network_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_fc_network_info.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_info.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_info.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_network_set.py validate-modules:doc-missing-type
-lib/ansible/modules/remote_management/oneview/oneview_network_set.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_network_set.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_network_set_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/oneview/oneview_network_set_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_network_set_info.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_san_manager.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_san_manager.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/oneview/oneview_san_manager_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/oneview/oneview_san_manager_info.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/redfish/idrac_redfish_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/redfish/idrac_redfish_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/redfish/idrac_redfish_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/redfish/redfish_command.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/redfish/redfish_config.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/remote_management/redfish/redfish_config.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/redfish/redfish_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/remote_management/stacki/stacki_host.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/remote_management/stacki/stacki_host.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/remote_management/stacki/stacki_host.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/remote_management/stacki/stacki_host.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/remote_management/stacki/stacki_host.py validate-modules:undocumented-parameter
lib/ansible/modules/remote_management/ucs/ucs_disk_group_policy.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/remote_management/ucs/ucs_disk_group_policy.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/remote_management/ucs/ucs_disk_group_policy.py validate-modules:doc-elements-mismatch
@@ -6928,105 +3809,15 @@ lib/ansible/modules/remote_management/ucs/ucs_wwn_pool.py validate-modules:nonex
lib/ansible/modules/remote_management/ucs/ucs_wwn_pool.py validate-modules:parameter-list-no-elements
lib/ansible/modules/remote_management/ucs/ucs_wwn_pool.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/remote_management/ucs/ucs_wwn_pool.py validate-modules:undocumented-parameter
-lib/ansible/modules/remote_management/wakeonlan.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/source_control/bzr.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/source_control/git.py pylint:blacklisted-name
lib/ansible/modules/source_control/git.py use-argspec-type-path
lib/ansible/modules/source_control/git.py validate-modules:doc-missing-type
lib/ansible/modules/source_control/git.py validate-modules:doc-required-mismatch
lib/ansible/modules/source_control/git.py validate-modules:parameter-list-no-elements
lib/ansible/modules/source_control/git.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/source_control/git_config.py validate-modules:doc-missing-type
-lib/ansible/modules/source_control/git_config.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/source_control/github/_github_hooks.py validate-modules:doc-missing-type
-lib/ansible/modules/source_control/github/github_deploy_key.py validate-modules:doc-missing-type
-lib/ansible/modules/source_control/github/github_deploy_key.py validate-modules:parameter-invalid
-lib/ansible/modules/source_control/github/github_deploy_key.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/source_control/github/github_issue.py validate-modules:doc-missing-type
-lib/ansible/modules/source_control/github/github_issue.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/source_control/github/github_key.py validate-modules:doc-missing-type
-lib/ansible/modules/source_control/github/github_release.py validate-modules:doc-missing-type
-lib/ansible/modules/source_control/github/github_release.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/source_control/github/github_webhook.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/source_control/github/github_webhook.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/source_control/github/github_webhook_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/source_control/gitlab/gitlab_deploy_key.py validate-modules:doc-required-mismatch
-lib/ansible/modules/source_control/gitlab/gitlab_hook.py validate-modules:doc-required-mismatch
-lib/ansible/modules/source_control/gitlab/gitlab_runner.py validate-modules:doc-required-mismatch
-lib/ansible/modules/source_control/gitlab/gitlab_runner.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/source_control/hg.py validate-modules:doc-required-mismatch
-lib/ansible/modules/source_control/hg.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/source_control/subversion.py validate-modules:doc-required-mismatch
lib/ansible/modules/source_control/subversion.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/source_control/subversion.py validate-modules:undocumented-parameter
-lib/ansible/modules/storage/emc/emc_vnx_sg_member.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/emc/emc_vnx_sg_member.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/glusterfs/gluster_heal_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/glusterfs/gluster_peer.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/glusterfs/gluster_peer.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/glusterfs/gluster_peer.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/glusterfs/gluster_volume.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/glusterfs/gluster_volume.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/ibm/ibm_sa_domain.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/ibm/ibm_sa_domain.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/ibm/ibm_sa_host.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/ibm/ibm_sa_host.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/ibm/ibm_sa_host_ports.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/ibm/ibm_sa_host_ports.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/ibm/ibm_sa_pool.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/ibm/ibm_sa_pool.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/ibm/ibm_sa_vol.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/ibm/ibm_sa_vol.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/ibm/ibm_sa_vol_map.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/ibm/ibm_sa_vol_map.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/infinidat/infini_export.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/storage/infinidat/infini_export.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/infinidat/infini_export.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/storage/infinidat/infini_export.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/infinidat/infini_export.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/infinidat/infini_export_client.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/infinidat/infini_export_client.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/storage/infinidat/infini_fs.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/infinidat/infini_host.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/infinidat/infini_host.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/infinidat/infini_host.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/infinidat/infini_pool.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/infinidat/infini_vol.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_na_cdot_aggregate.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_na_cdot_aggregate.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_na_cdot_license.py validate-modules:incompatible-default-type
-lib/ansible/modules/storage/netapp/_na_cdot_license.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_na_cdot_lun.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_na_cdot_lun.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_na_cdot_qtree.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_na_cdot_qtree.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_na_cdot_svm.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_na_cdot_svm.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_na_cdot_user.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_na_cdot_user.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_na_cdot_user_role.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_na_cdot_user_role.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_na_cdot_volume.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_na_cdot_volume.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/storage/netapp/_na_cdot_volume.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_na_cdot_volume.py validate-modules:undocumented-parameter
-lib/ansible/modules/storage/netapp/_na_ontap_gather_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_na_ontap_gather_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/_na_ontap_gather_facts.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/storage/netapp/_na_ontap_gather_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_sf_account_manager.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_sf_account_manager.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_sf_check_connections.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_sf_snapshot_schedule_manager.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_sf_snapshot_schedule_manager.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/_sf_snapshot_schedule_manager.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_sf_volume_access_group_manager.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_sf_volume_access_group_manager.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/_sf_volume_access_group_manager.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_sf_volume_manager.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/_sf_volume_manager.py validate-modules:parameter-invalid
-lib/ansible/modules/storage/netapp/_sf_volume_manager.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/_sf_volume_manager.py validate-modules:undocumented-parameter
lib/ansible/modules/storage/netapp/na_elementsw_access_group.py validate-modules:doc-missing-type
lib/ansible/modules/storage/netapp/na_elementsw_access_group.py validate-modules:parameter-list-no-elements
lib/ansible/modules/storage/netapp/na_elementsw_access_group.py validate-modules:parameter-type-not-in-doc
@@ -7228,87 +4019,6 @@ lib/ansible/modules/storage/netapp/na_ontap_vscan_scanner_pool.py validate-modul
lib/ansible/modules/storage/netapp/na_ontap_vserver_peer.py validate-modules:doc-required-mismatch
lib/ansible/modules/storage/netapp/na_ontap_vserver_peer.py validate-modules:parameter-list-no-elements
lib/ansible/modules/storage/netapp/na_ontap_vserver_peer.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_alerts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/netapp_e_alerts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_amg.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_amg.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_amg.py validate-modules:undocumented-parameter
-lib/ansible/modules/storage/netapp/netapp_e_amg_role.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_amg_role.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_amg_role.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_amg_role.py validate-modules:undocumented-parameter
-lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_asup.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/netapp_e_asup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_auditlog.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_auth.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_auth.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_auth.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_drive_firmware.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/netapp_e_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/storage/netapp/netapp_e_flashcache.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/storage/netapp/netapp_e_flashcache.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_flashcache.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_flashcache.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/netapp_e_flashcache.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_flashcache.py validate-modules:undocumented-parameter
-lib/ansible/modules/storage/netapp/netapp_e_global.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_host.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/netapp_e_host.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_iscsi_interface.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_iscsi_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_iscsi_target.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_ldap.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_ldap.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/netapp_e_ldap.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_mgmt_interface.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py validate-modules:undocumented-parameter
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py validate-modules:undocumented-parameter
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_storage_system.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/storage/netapp/netapp_e_storage_system.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_storage_system.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_storage_system.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/netapp_e_storage_system.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_storage_system.py validate-modules:undocumented-parameter
-lib/ansible/modules/storage/netapp/netapp_e_storagepool.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_storagepool.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_syslog.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_syslog.py validate-modules:mutually_exclusive-unknown
-lib/ansible/modules/storage/netapp/netapp_e_syslog.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/netapp/netapp_e_syslog.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_volume.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/storage/netapp/netapp_e_volume.py validate-modules:doc-default-incompatible-type
-lib/ansible/modules/storage/netapp/netapp_e_volume.py validate-modules:doc-missing-type
-lib/ansible/modules/storage/netapp/netapp_e_volume.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_volume.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py validate-modules:implied-parameter-type-mismatch
-lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py validate-modules:undocumented-parameter
-lib/ansible/modules/storage/purestorage/_purefa_facts.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/purestorage/_purefa_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/purestorage/_purefa_facts.py validate-modules:return-syntax-error
-lib/ansible/modules/storage/purestorage/_purefb_facts.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/purestorage/_purefb_facts.py validate-modules:return-syntax-error
lib/ansible/modules/storage/purestorage/purefa_alert.py validate-modules:doc-required-mismatch
lib/ansible/modules/storage/purestorage/purefa_arrayname.py validate-modules:doc-required-mismatch
lib/ansible/modules/storage/purestorage/purefa_banner.py validate-modules:doc-required-mismatch
@@ -7351,119 +4061,42 @@ lib/ansible/modules/storage/purestorage/purefb_info.py validate-modules:paramete
lib/ansible/modules/storage/purestorage/purefb_info.py validate-modules:return-syntax-error
lib/ansible/modules/storage/purestorage/purefb_s3acc.py validate-modules:doc-required-mismatch
lib/ansible/modules/storage/purestorage/purefb_s3user.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/zfs/zfs.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/zfs/zfs_delegate_admin.py validate-modules:doc-required-mismatch
-lib/ansible/modules/storage/zfs/zfs_delegate_admin.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/storage/zfs/zfs_delegate_admin.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/zfs/zfs_facts.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/storage/zfs/zfs_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/storage/zfs/zpool_facts.py validate-modules:nonexistent-parameter-documented
-lib/ansible/modules/storage/zfs/zpool_facts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/aix_devices.py validate-modules:doc-required-mismatch
-lib/ansible/modules/system/aix_filesystem.py validate-modules:doc-required-mismatch
-lib/ansible/modules/system/aix_filesystem.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/aix_inittab.py validate-modules:doc-required-mismatch
-lib/ansible/modules/system/aix_lvg.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/aix_lvol.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/alternatives.py pylint:blacklisted-name
lib/ansible/modules/system/at.py validate-modules:doc-required-mismatch
lib/ansible/modules/system/authorized_key.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/awall.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/beadm.py pylint:blacklisted-name
-lib/ansible/modules/system/cronvar.py pylint:blacklisted-name
-lib/ansible/modules/system/dconf.py pylint:blacklisted-name
-lib/ansible/modules/system/dconf.py validate-modules:doc-missing-type
-lib/ansible/modules/system/dconf.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/filesystem.py pylint:blacklisted-name
-lib/ansible/modules/system/filesystem.py validate-modules:doc-missing-type
-lib/ansible/modules/system/gconftool2.py pylint:blacklisted-name
-lib/ansible/modules/system/gconftool2.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/system/gconftool2.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/system/getent.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/system/hostname.py validate-modules:invalid-ansiblemodule-schema
lib/ansible/modules/system/hostname.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/interfaces_file.py pylint:blacklisted-name
-lib/ansible/modules/system/interfaces_file.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/system/iptables.py pylint:blacklisted-name
lib/ansible/modules/system/iptables.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/java_cert.py pylint:blacklisted-name
-lib/ansible/modules/system/java_keystore.py validate-modules:doc-missing-type
-lib/ansible/modules/system/java_keystore.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/java_keystore.py validate-modules:undocumented-parameter
-lib/ansible/modules/system/kernel_blacklist.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/system/known_hosts.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/system/known_hosts.py validate-modules:doc-missing-type
lib/ansible/modules/system/known_hosts.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/lbu.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/system/locale_gen.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/lvg.py pylint:blacklisted-name
-lib/ansible/modules/system/lvg.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/lvol.py pylint:blacklisted-name
-lib/ansible/modules/system/lvol.py validate-modules:doc-required-mismatch
-lib/ansible/modules/system/lvol.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/mksysb.py validate-modules:doc-missing-type
-lib/ansible/modules/system/modprobe.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/nosh.py validate-modules:doc-missing-type
-lib/ansible/modules/system/nosh.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/nosh.py validate-modules:return-syntax-error
-lib/ansible/modules/system/open_iscsi.py validate-modules:required_together-unknown
-lib/ansible/modules/system/openwrt_init.py validate-modules:doc-missing-type
-lib/ansible/modules/system/openwrt_init.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/osx_defaults.py validate-modules:doc-required-mismatch
-lib/ansible/modules/system/osx_defaults.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/system/pam_limits.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/pamd.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/parted.py pylint:blacklisted-name
-lib/ansible/modules/system/parted.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/parted.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/system/puppet.py use-argspec-type-path
-lib/ansible/modules/system/puppet.py validate-modules:parameter-invalid
-lib/ansible/modules/system/puppet.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/puppet.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/puppet.py validate-modules:undocumented-parameter
-lib/ansible/modules/system/python_requirements_info.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/system/python_requirements_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/runit.py validate-modules:doc-default-does-not-match-spec
-lib/ansible/modules/system/runit.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/runit.py validate-modules:undocumented-parameter
lib/ansible/modules/system/seboolean.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/sefcontext.py validate-modules:invalid-ansiblemodule-schema
lib/ansible/modules/system/selinux.py validate-modules:invalid-ansiblemodule-schema
lib/ansible/modules/system/selinux.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/selogin.py validate-modules:doc-required-mismatch
-lib/ansible/modules/system/selogin.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/seport.py validate-modules:parameter-list-no-elements
lib/ansible/modules/system/service.py validate-modules:nonexistent-parameter-documented
lib/ansible/modules/system/service.py validate-modules:use-run-command-not-popen
lib/ansible/modules/system/setup.py validate-modules:doc-missing-type
lib/ansible/modules/system/setup.py validate-modules:parameter-list-no-elements
lib/ansible/modules/system/setup.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/solaris_zone.py validate-modules:doc-required-mismatch
lib/ansible/modules/system/sysctl.py validate-modules:doc-missing-type
lib/ansible/modules/system/sysctl.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/system/syspatch.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/system/systemd.py validate-modules:parameter-invalid
lib/ansible/modules/system/systemd.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/system/systemd.py validate-modules:return-syntax-error
lib/ansible/modules/system/sysvinit.py validate-modules:parameter-list-no-elements
lib/ansible/modules/system/sysvinit.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/system/sysvinit.py validate-modules:return-syntax-error
-lib/ansible/modules/system/timezone.py pylint:blacklisted-name
lib/ansible/modules/system/user.py validate-modules:doc-default-does-not-match-spec
lib/ansible/modules/system/user.py validate-modules:doc-default-incompatible-type
lib/ansible/modules/system/user.py validate-modules:parameter-list-no-elements
lib/ansible/modules/system/user.py validate-modules:use-run-command-not-popen
-lib/ansible/modules/system/vdo.py validate-modules:doc-required-mismatch
-lib/ansible/modules/system/xfconf.py validate-modules:parameter-state-invalid-choice
-lib/ansible/modules/system/xfconf.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/utilities/logic/async_status.py use-argspec-type-path
lib/ansible/modules/utilities/logic/async_status.py validate-modules!skip
lib/ansible/modules/utilities/logic/async_wrapper.py ansible-doc!skip # not an actual module
lib/ansible/modules/utilities/logic/async_wrapper.py pylint:ansible-bad-function
lib/ansible/modules/utilities/logic/async_wrapper.py use-argspec-type-path
lib/ansible/modules/utilities/logic/wait_for.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/web_infrastructure/_nginx_status_facts.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/_nginx_status_facts.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py validate-modules:doc-choices-do-not-match-spec
lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py validate-modules:invalid-ansiblemodule-schema
lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential_type.py validate-modules:doc-missing-type
@@ -7511,61 +4144,6 @@ lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py validate-modu
lib/ansible/modules/web_infrastructure/ansible_tower/tower_workflow_launch.py validate-modules:doc-missing-type
lib/ansible/modules/web_infrastructure/ansible_tower/tower_workflow_launch.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/web_infrastructure/ansible_tower/tower_workflow_template.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/apache2_module.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/apache2_module.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/deploy_helper.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/deploy_helper.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/deploy_helper.py validate-modules:undocumented-parameter
-lib/ansible/modules/web_infrastructure/django_manage.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/web_infrastructure/django_manage.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/django_manage.py validate-modules:no-default-for-required-parameter
-lib/ansible/modules/web_infrastructure/django_manage.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/django_manage.py validate-modules:undocumented-parameter
-lib/ansible/modules/web_infrastructure/ejabberd_user.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/ejabberd_user.py validate-modules:doc-required-mismatch
-lib/ansible/modules/web_infrastructure/ejabberd_user.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/gunicorn.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/gunicorn.py validate-modules:undocumented-parameter
-lib/ansible/modules/web_infrastructure/htpasswd.py validate-modules:doc-choices-do-not-match-spec
-lib/ansible/modules/web_infrastructure/htpasswd.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/jenkins_job.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/jenkins_job_info.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/jenkins_plugin.py use-argspec-type-path
-lib/ansible/modules/web_infrastructure/jenkins_plugin.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/jenkins_plugin.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/jenkins_plugin.py validate-modules:undocumented-parameter
-lib/ansible/modules/web_infrastructure/jenkins_script.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/jira.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/jira.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/jira.py validate-modules:undocumented-parameter
-lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py pylint:blacklisted-name
-lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/rundeck_project.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_aaa_group.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_aaa_group_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_ca_host_key_cert.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_ca_host_key_cert_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_dns_host.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_network_interface_address.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_network_interface_address_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_auth_profile.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_auth_profile.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_exception.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_exception.py validate-modules:return-syntax-error
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_frontend.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_frontend.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_frontend_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_location.py validate-modules:doc-elements-mismatch
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_location.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/sophos_utm/utm_proxy_location_info.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/supervisorctl.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/supervisorctl.py validate-modules:parameter-type-not-in-doc
-lib/ansible/modules/web_infrastructure/taiga_issue.py validate-modules:doc-missing-type
-lib/ansible/modules/web_infrastructure/taiga_issue.py validate-modules:parameter-list-no-elements
-lib/ansible/modules/web_infrastructure/taiga_issue.py validate-modules:parameter-type-not-in-doc
lib/ansible/modules/windows/async_status.ps1 pslint:PSCustomUseLiteralPath
lib/ansible/modules/windows/setup.ps1 pslint:PSCustomUseLiteralPath
lib/ansible/modules/windows/win_acl_inheritance.ps1 pslint:PSAvoidTrailingWhitespace
@@ -7654,51 +4232,26 @@ lib/ansible/playbook/base.py pylint:blacklisted-name
lib/ansible/playbook/collectionsearch.py required-and-default-attributes # https://github.com/ansible/ansible/issues/61460
lib/ansible/playbook/helpers.py pylint:blacklisted-name
lib/ansible/playbook/role/__init__.py pylint:blacklisted-name
-lib/ansible/plugins/action/aireos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
-lib/ansible/plugins/action/aruba.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/asa.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/bigip.py action-plugin-docs # undocumented action plugin to fix, existed before sanity test was added
lib/ansible/plugins/action/bigiq.py action-plugin-docs # undocumented action plugin to fix, existed before sanity test was added
-lib/ansible/plugins/action/ce.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
-lib/ansible/plugins/action/ce_template.py action-plugin-docs # undocumented action plugin to fix, existed before sanity test was added
-lib/ansible/plugins/action/cnos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/dellos10.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/dellos6.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/dellos9.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
-lib/ansible/plugins/action/enos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/eos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
-lib/ansible/plugins/action/exos.py action-plugin-docs # undocumented action plugin to fix
lib/ansible/plugins/action/ios.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/iosxr.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
-lib/ansible/plugins/action/ironware.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/junos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/net_base.py action-plugin-docs # base class for other net_* action plugins which have a matching module
lib/ansible/plugins/action/netconf.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/action/network.py action-plugin-docs # base class for network action plugins
lib/ansible/plugins/action/normal.py action-plugin-docs # default action plugin for modules without a dedicated action plugin
lib/ansible/plugins/action/nxos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
-lib/ansible/plugins/action/slxos.py action-plugin-docs # undocumented action plugin to fix
-lib/ansible/plugins/action/sros.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
-lib/ansible/plugins/action/voss.py action-plugin-docs # undocumented action plugin to fix
lib/ansible/plugins/action/vyos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
lib/ansible/plugins/cache/base.py ansible-doc!skip # not a plugin, but a stub for backwards compatibility
-lib/ansible/plugins/callback/hipchat.py pylint:blacklisted-name
-lib/ansible/plugins/connection/lxc.py pylint:blacklisted-name
lib/ansible/plugins/connection/vmware_tools.py yamllint:unparsable-with-libyaml
-lib/ansible/plugins/doc_fragments/a10.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/a10.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/aireos.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/aireos.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/alicloud.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/alicloud.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/aruba.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/aruba.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/asa.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/asa.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/auth_basic.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/auth_basic.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/avi.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/avi.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/aws.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/aws.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/aws_credentials.py future-import-boilerplate
@@ -7711,10 +4264,6 @@ lib/ansible/plugins/doc_fragments/azure_tags.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/azure_tags.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/backup.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/backup.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/ce.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/ce.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/cnos.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/cnos.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/constructed.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/constructed.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/decrypt.py future-import-boilerplate
@@ -7727,18 +4276,8 @@ lib/ansible/plugins/doc_fragments/dellos6.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/dellos6.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/dellos9.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/dellos9.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/digital_ocean.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/digital_ocean.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/dimensiondata.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/dimensiondata.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/dimensiondata_wait.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/dimensiondata_wait.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/ec2.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/ec2.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/emc.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/emc.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/enos.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/enos.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/eos.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/eos.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/f5.py future-import-boilerplate
@@ -7747,22 +4286,8 @@ lib/ansible/plugins/doc_fragments/files.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/files.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/fortios.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/fortios.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/gcp.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/gcp.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/hcloud.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/hcloud.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/hetzner.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/hetzner.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/hpe3par.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/hpe3par.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/hwc.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/hwc.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/infinibox.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/infinibox.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/influxdb.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/influxdb.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/ingate.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/ingate.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/intersight.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/intersight.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/inventory_cache.py future-import-boilerplate
@@ -7771,10 +4296,6 @@ lib/ansible/plugins/doc_fragments/ios.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/ios.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/iosxr.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/iosxr.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/ipa.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/ipa.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/ironware.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/ironware.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/junos.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/junos.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/k8s_auth_options.py future-import-boilerplate
@@ -7787,114 +4308,46 @@ lib/ansible/plugins/doc_fragments/k8s_scale_options.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/k8s_scale_options.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/k8s_state_options.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/k8s_state_options.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/keycloak.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/keycloak.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/kubevirt_common_options.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/kubevirt_common_options.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/kubevirt_vm_options.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/kubevirt_vm_options.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/ldap.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/ldap.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/lxca_common.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/lxca_common.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/manageiq.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/manageiq.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/meraki.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/meraki.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/mysql.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/mysql.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/netapp.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/netapp.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/netconf.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/netconf.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/netscaler.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/netscaler.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/network_agnostic.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/network_agnostic.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/nios.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/nios.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/nso.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/nso.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/nxos.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/nxos.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/oneview.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/oneview.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/online.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/online.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/onyx.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/onyx.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/opennebula.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/opennebula.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/openstack.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/openstack.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/openswitch.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/openswitch.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/oracle.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/oracle.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_creatable_resource.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_creatable_resource.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_display_name_option.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_display_name_option.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_name_option.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_name_option.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_tags.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_tags.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_wait_options.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/oracle_wait_options.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/ovirt.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/ovirt.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/ovirt_info.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/ovirt_info.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/panos.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/panos.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/postgres.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/postgres.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/proxysql.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/proxysql.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/purestorage.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/purestorage.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/rabbitmq.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/rabbitmq.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/rackspace.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/rackspace.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/return_common.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/return_common.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/scaleway.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/scaleway.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/shell_common.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/shell_common.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/shell_windows.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/shell_windows.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/skydive.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/skydive.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/sros.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/sros.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/tower.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/tower.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/ucs.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/ucs.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/url.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/url.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/utm.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/utm.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/validate.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/validate.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/vca.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/vca.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/vexata.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/vexata.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/vmware.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/vmware.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/vmware_rest_client.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/vmware_rest_client.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/vultr.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/vultr.py metaclass-boilerplate
lib/ansible/plugins/doc_fragments/vyos.py future-import-boilerplate
lib/ansible/plugins/doc_fragments/vyos.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/xenserver.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/xenserver.py metaclass-boilerplate
-lib/ansible/plugins/doc_fragments/zabbix.py future-import-boilerplate
-lib/ansible/plugins/doc_fragments/zabbix.py metaclass-boilerplate
lib/ansible/plugins/lookup/sequence.py pylint:blacklisted-name
lib/ansible/plugins/strategy/__init__.py pylint:blacklisted-name
lib/ansible/plugins/strategy/linear.py pylint:blacklisted-name
@@ -7932,10 +4385,6 @@ test/integration/targets/incidental_win_dsc/files/xTestDsc/1.0.1/DSCResources/AN
test/integration/targets/incidental_win_dsc/files/xTestDsc/1.0.1/xTestDsc.psd1 pslint!skip
test/integration/targets/incidental_win_ping/library/win_ping_syntax_error.ps1 pslint!skip
test/integration/targets/incidental_win_reboot/templates/post_reboot.ps1 pslint!skip
-test/integration/targets/inventory_kubevirt/inventory_diff.py future-import-boilerplate
-test/integration/targets/inventory_kubevirt/inventory_diff.py metaclass-boilerplate
-test/integration/targets/inventory_kubevirt/server.py future-import-boilerplate
-test/integration/targets/inventory_kubevirt/server.py metaclass-boilerplate
test/integration/targets/jinja2_native_types/filter_plugins/native_plugins.py future-import-boilerplate
test/integration/targets/jinja2_native_types/filter_plugins/native_plugins.py metaclass-boilerplate
test/integration/targets/lookup_ini/lookup-8859-15.ini no-smart-quotes
@@ -7975,8 +4424,6 @@ test/integration/targets/service/files/ansible_test_service.py future-import-boi
test/integration/targets/service/files/ansible_test_service.py metaclass-boilerplate
test/integration/targets/setup_rpm_repo/files/create-repo.py future-import-boilerplate
test/integration/targets/setup_rpm_repo/files/create-repo.py metaclass-boilerplate
-test/integration/targets/supervisorctl/files/sendProcessStdin.py future-import-boilerplate
-test/integration/targets/supervisorctl/files/sendProcessStdin.py metaclass-boilerplate
test/integration/targets/template/files/encoding_1252_utf-8.expected no-smart-quotes
test/integration/targets/template/files/encoding_1252_windows-1252.expected no-smart-quotes
test/integration/targets/template/files/foo.dos.txt line-endings
@@ -8145,8 +4592,6 @@ test/units/module_utils/basic/test_run_command.py future-import-boilerplate
test/units/module_utils/basic/test_run_command.py pylint:blacklisted-name
test/units/module_utils/basic/test_safe_eval.py future-import-boilerplate
test/units/module_utils/basic/test_tmpdir.py future-import-boilerplate
-test/units/module_utils/cloud/test_backoff.py future-import-boilerplate
-test/units/module_utils/cloud/test_backoff.py metaclass-boilerplate
test/units/module_utils/common/test_dict_transformations.py future-import-boilerplate
test/units/module_utils/common/test_dict_transformations.py metaclass-boilerplate
test/units/module_utils/conftest.py future-import-boilerplate
@@ -8164,253 +4609,32 @@ test/units/module_utils/facts/test_collectors.py future-import-boilerplate
test/units/module_utils/facts/test_facts.py future-import-boilerplate
test/units/module_utils/facts/test_timeout.py future-import-boilerplate
test/units/module_utils/facts/test_utils.py future-import-boilerplate
-test/units/module_utils/gcp/test_auth.py future-import-boilerplate
-test/units/module_utils/gcp/test_auth.py metaclass-boilerplate
-test/units/module_utils/gcp/test_gcp_utils.py future-import-boilerplate
-test/units/module_utils/gcp/test_gcp_utils.py metaclass-boilerplate
-test/units/module_utils/gcp/test_utils.py future-import-boilerplate
-test/units/module_utils/gcp/test_utils.py metaclass-boilerplate
-test/units/module_utils/hwc/test_dict_comparison.py future-import-boilerplate
-test/units/module_utils/hwc/test_dict_comparison.py metaclass-boilerplate
-test/units/module_utils/hwc/test_hwc_utils.py future-import-boilerplate
-test/units/module_utils/hwc/test_hwc_utils.py metaclass-boilerplate
test/units/module_utils/json_utils/test_filter_non_json_lines.py future-import-boilerplate
-test/units/module_utils/net_tools/netbox/test_netbox_utils.py future-import-boilerplate
-test/units/module_utils/net_tools/netbox/test_netbox_utils.py metaclass-boilerplate
-test/units/module_utils/network/avi/test_avi_api_utils.py future-import-boilerplate
-test/units/module_utils/network/avi/test_avi_api_utils.py metaclass-boilerplate
-test/units/module_utils/network/ftd/test_common.py future-import-boilerplate
-test/units/module_utils/network/ftd/test_common.py metaclass-boilerplate
-test/units/module_utils/network/ftd/test_configuration.py future-import-boilerplate
-test/units/module_utils/network/ftd/test_configuration.py metaclass-boilerplate
-test/units/module_utils/network/ftd/test_device.py future-import-boilerplate
-test/units/module_utils/network/ftd/test_device.py metaclass-boilerplate
-test/units/module_utils/network/ftd/test_fdm_swagger_parser.py future-import-boilerplate
-test/units/module_utils/network/ftd/test_fdm_swagger_parser.py metaclass-boilerplate
-test/units/module_utils/network/ftd/test_fdm_swagger_validator.py future-import-boilerplate
-test/units/module_utils/network/ftd/test_fdm_swagger_validator.py metaclass-boilerplate
-test/units/module_utils/network/ftd/test_fdm_swagger_with_real_data.py future-import-boilerplate
-test/units/module_utils/network/ftd/test_fdm_swagger_with_real_data.py metaclass-boilerplate
-test/units/module_utils/network/ftd/test_upsert_functionality.py future-import-boilerplate
-test/units/module_utils/network/ftd/test_upsert_functionality.py metaclass-boilerplate
-test/units/module_utils/network/netscaler/test_netscaler.py future-import-boilerplate
-test/units/module_utils/network/netscaler/test_netscaler.py metaclass-boilerplate
-test/units/module_utils/network/nso/test_nso.py metaclass-boilerplate
test/units/module_utils/parsing/test_convert_bool.py future-import-boilerplate
-test/units/module_utils/postgresql/test_postgres.py future-import-boilerplate
-test/units/module_utils/postgresql/test_postgres.py metaclass-boilerplate
-test/units/module_utils/remote_management/dellemc/test_ome.py future-import-boilerplate
-test/units/module_utils/remote_management/dellemc/test_ome.py metaclass-boilerplate
-test/units/module_utils/test_database.py future-import-boilerplate
-test/units/module_utils/test_database.py metaclass-boilerplate
test/units/module_utils/test_distro.py future-import-boilerplate
test/units/module_utils/test_distro.py metaclass-boilerplate
-test/units/module_utils/test_hetzner.py future-import-boilerplate
-test/units/module_utils/test_hetzner.py metaclass-boilerplate
-test/units/module_utils/test_kubevirt.py future-import-boilerplate
-test/units/module_utils/test_kubevirt.py metaclass-boilerplate
test/units/module_utils/test_text.py future-import-boilerplate
-test/units/module_utils/test_utm_utils.py future-import-boilerplate
-test/units/module_utils/test_utm_utils.py metaclass-boilerplate
test/units/module_utils/urls/test_Request.py replace-urlopen
test/units/module_utils/urls/test_fetch_url.py replace-urlopen
-test/units/module_utils/xenserver/FakeAnsibleModule.py future-import-boilerplate
-test/units/module_utils/xenserver/FakeAnsibleModule.py metaclass-boilerplate
-test/units/module_utils/xenserver/FakeXenAPI.py future-import-boilerplate
-test/units/module_utils/xenserver/FakeXenAPI.py metaclass-boilerplate
-test/units/modules/cloud/google/test_gce_tag.py future-import-boilerplate
-test/units/modules/cloud/google/test_gce_tag.py metaclass-boilerplate
-test/units/modules/cloud/google/test_gcp_forwarding_rule.py future-import-boilerplate
-test/units/modules/cloud/google/test_gcp_forwarding_rule.py metaclass-boilerplate
-test/units/modules/cloud/google/test_gcp_url_map.py future-import-boilerplate
-test/units/modules/cloud/google/test_gcp_url_map.py metaclass-boilerplate
-test/units/modules/cloud/kubevirt/test_kubevirt_rs.py future-import-boilerplate
-test/units/modules/cloud/kubevirt/test_kubevirt_rs.py metaclass-boilerplate
-test/units/modules/cloud/kubevirt/test_kubevirt_vm.py future-import-boilerplate
-test/units/modules/cloud/kubevirt/test_kubevirt_vm.py metaclass-boilerplate
test/units/modules/cloud/linode/conftest.py future-import-boilerplate
test/units/modules/cloud/linode/conftest.py metaclass-boilerplate
-test/units/modules/cloud/linode/test_linode.py metaclass-boilerplate
-test/units/modules/cloud/linode/test_linode_v4.py metaclass-boilerplate
-test/units/modules/cloud/misc/test_terraform.py future-import-boilerplate
-test/units/modules/cloud/misc/test_terraform.py metaclass-boilerplate
-test/units/modules/cloud/misc/virt_net/conftest.py future-import-boilerplate
-test/units/modules/cloud/misc/virt_net/conftest.py metaclass-boilerplate
-test/units/modules/cloud/misc/virt_net/test_virt_net.py future-import-boilerplate
-test/units/modules/cloud/misc/virt_net/test_virt_net.py metaclass-boilerplate
test/units/modules/cloud/openstack/test_os_server.py future-import-boilerplate
test/units/modules/cloud/openstack/test_os_server.py metaclass-boilerplate
-test/units/modules/cloud/xenserver/FakeAnsibleModule.py future-import-boilerplate
-test/units/modules/cloud/xenserver/FakeAnsibleModule.py metaclass-boilerplate
-test/units/modules/cloud/xenserver/FakeXenAPI.py future-import-boilerplate
-test/units/modules/cloud/xenserver/FakeXenAPI.py metaclass-boilerplate
test/units/modules/conftest.py future-import-boilerplate
test/units/modules/conftest.py metaclass-boilerplate
test/units/modules/files/test_copy.py future-import-boilerplate
-test/units/modules/messaging/rabbitmq/test_rabbitmq_user.py future-import-boilerplate
-test/units/modules/messaging/rabbitmq/test_rabbitmq_user.py metaclass-boilerplate
-test/units/modules/monitoring/test_circonus_annotation.py future-import-boilerplate
-test/units/modules/monitoring/test_circonus_annotation.py metaclass-boilerplate
-test/units/modules/monitoring/test_icinga2_feature.py future-import-boilerplate
-test/units/modules/monitoring/test_icinga2_feature.py metaclass-boilerplate
-test/units/modules/monitoring/test_pagerduty.py future-import-boilerplate
-test/units/modules/monitoring/test_pagerduty.py metaclass-boilerplate
-test/units/modules/monitoring/test_pagerduty_alert.py future-import-boilerplate
-test/units/modules/monitoring/test_pagerduty_alert.py metaclass-boilerplate
-test/units/modules/net_tools/test_nmcli.py future-import-boilerplate
-test/units/modules/net_tools/test_nmcli.py metaclass-boilerplate
-test/units/modules/network/avi/test_avi_user.py future-import-boilerplate
-test/units/modules/network/avi/test_avi_user.py metaclass-boilerplate
-test/units/modules/network/check_point/test_checkpoint_access_rule.py future-import-boilerplate
-test/units/modules/network/check_point/test_checkpoint_access_rule.py metaclass-boilerplate
-test/units/modules/network/check_point/test_checkpoint_host.py future-import-boilerplate
-test/units/modules/network/check_point/test_checkpoint_host.py metaclass-boilerplate
-test/units/modules/network/check_point/test_checkpoint_session.py future-import-boilerplate
-test/units/modules/network/check_point/test_checkpoint_session.py metaclass-boilerplate
-test/units/modules/network/check_point/test_checkpoint_task_facts.py future-import-boilerplate
-test/units/modules/network/check_point/test_checkpoint_task_facts.py metaclass-boilerplate
-test/units/modules/network/cloudvision/test_cv_server_provision.py future-import-boilerplate
-test/units/modules/network/cloudvision/test_cv_server_provision.py metaclass-boilerplate
-test/units/modules/network/cumulus/test_nclu.py future-import-boilerplate
-test/units/modules/network/cumulus/test_nclu.py metaclass-boilerplate
-test/units/modules/network/ftd/test_ftd_configuration.py future-import-boilerplate
-test/units/modules/network/ftd/test_ftd_configuration.py metaclass-boilerplate
-test/units/modules/network/ftd/test_ftd_file_download.py future-import-boilerplate
-test/units/modules/network/ftd/test_ftd_file_download.py metaclass-boilerplate
-test/units/modules/network/ftd/test_ftd_file_upload.py future-import-boilerplate
-test/units/modules/network/ftd/test_ftd_file_upload.py metaclass-boilerplate
-test/units/modules/network/ftd/test_ftd_install.py future-import-boilerplate
-test/units/modules/network/ftd/test_ftd_install.py metaclass-boilerplate
-test/units/modules/network/netscaler/netscaler_module.py future-import-boilerplate
-test/units/modules/network/netscaler/netscaler_module.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_cs_action.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_cs_action.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_cs_policy.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_cs_policy.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_cs_vserver.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_cs_vserver.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_gslb_service.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_gslb_service.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_gslb_site.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_gslb_site.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_lb_monitor.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_lb_monitor.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_lb_vserver.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_lb_vserver.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_nitro_request.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_nitro_request.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_save_config.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_save_config.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_server.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_server.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_service.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_service.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_servicegroup.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_servicegroup.py metaclass-boilerplate
-test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py future-import-boilerplate
-test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py metaclass-boilerplate
-test/units/modules/network/nso/nso_module.py metaclass-boilerplate
-test/units/modules/network/nso/test_nso_action.py metaclass-boilerplate
-test/units/modules/network/nso/test_nso_config.py metaclass-boilerplate
-test/units/modules/network/nso/test_nso_query.py metaclass-boilerplate
-test/units/modules/network/nso/test_nso_show.py metaclass-boilerplate
-test/units/modules/network/nso/test_nso_verify.py metaclass-boilerplate
-test/units/modules/network/nuage/nuage_module.py future-import-boilerplate
-test/units/modules/network/nuage/nuage_module.py metaclass-boilerplate
-test/units/modules/network/nuage/test_nuage_vspk.py future-import-boilerplate
-test/units/modules/network/nuage/test_nuage_vspk.py metaclass-boilerplate
test/units/modules/network/nxos/test_nxos_acl_interface.py metaclass-boilerplate
-test/units/modules/network/radware/test_vdirect_commit.py future-import-boilerplate
-test/units/modules/network/radware/test_vdirect_commit.py metaclass-boilerplate
-test/units/modules/network/radware/test_vdirect_file.py future-import-boilerplate
-test/units/modules/network/radware/test_vdirect_file.py metaclass-boilerplate
-test/units/modules/network/radware/test_vdirect_runnable.py future-import-boilerplate
-test/units/modules/network/radware/test_vdirect_runnable.py metaclass-boilerplate
-test/units/modules/notification/test_slack.py future-import-boilerplate
-test/units/modules/notification/test_slack.py metaclass-boilerplate
-test/units/modules/packaging/language/test_gem.py future-import-boilerplate
-test/units/modules/packaging/language/test_gem.py metaclass-boilerplate
test/units/modules/packaging/language/test_pip.py future-import-boilerplate
test/units/modules/packaging/language/test_pip.py metaclass-boilerplate
test/units/modules/packaging/os/conftest.py future-import-boilerplate
test/units/modules/packaging/os/conftest.py metaclass-boilerplate
-test/units/modules/packaging/os/test_apk.py future-import-boilerplate
-test/units/modules/packaging/os/test_apk.py metaclass-boilerplate
test/units/modules/packaging/os/test_apt.py future-import-boilerplate
test/units/modules/packaging/os/test_apt.py metaclass-boilerplate
test/units/modules/packaging/os/test_apt.py pylint:blacklisted-name
-test/units/modules/packaging/os/test_rhn_channel.py future-import-boilerplate
-test/units/modules/packaging/os/test_rhn_channel.py metaclass-boilerplate
-test/units/modules/packaging/os/test_rhn_register.py future-import-boilerplate
-test/units/modules/packaging/os/test_rhn_register.py metaclass-boilerplate
test/units/modules/packaging/os/test_yum.py future-import-boilerplate
test/units/modules/packaging/os/test_yum.py metaclass-boilerplate
-test/units/modules/remote_management/dellemc/test_ome_device_info.py future-import-boilerplate
-test/units/modules/remote_management/dellemc/test_ome_device_info.py metaclass-boilerplate
-test/units/modules/remote_management/lxca/test_lxca_cmms.py future-import-boilerplate
-test/units/modules/remote_management/lxca/test_lxca_cmms.py metaclass-boilerplate
-test/units/modules/remote_management/lxca/test_lxca_nodes.py future-import-boilerplate
-test/units/modules/remote_management/lxca/test_lxca_nodes.py metaclass-boilerplate
test/units/modules/remote_management/oneview/conftest.py future-import-boilerplate
test/units/modules/remote_management/oneview/conftest.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/hpe_test_utils.py future-import-boilerplate
-test/units/modules/remote_management/oneview/hpe_test_utils.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/oneview_module_loader.py future-import-boilerplate
-test/units/modules/remote_management/oneview/oneview_module_loader.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_datacenter_info.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_datacenter_info.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_enclosure_info.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_enclosure_info.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_ethernet_network.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_ethernet_network.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_ethernet_network_info.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_ethernet_network_info.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_fc_network.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_fc_network.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_fc_network_info.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_fc_network_info.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_fcoe_network.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_fcoe_network.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_fcoe_network_info.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_fcoe_network_info.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_info.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_info.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_network_set.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_network_set.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_network_set_info.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_network_set_info.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_san_manager.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_san_manager.py metaclass-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_san_manager_info.py future-import-boilerplate
-test/units/modules/remote_management/oneview/test_oneview_san_manager_info.py metaclass-boilerplate
-test/units/modules/source_control/bitbucket/test_bitbucket_access_key.py future-import-boilerplate
-test/units/modules/source_control/bitbucket/test_bitbucket_access_key.py metaclass-boilerplate
-test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_key_pair.py future-import-boilerplate
-test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_key_pair.py metaclass-boilerplate
-test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_known_host.py future-import-boilerplate
-test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_known_host.py metaclass-boilerplate
-test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_variable.py future-import-boilerplate
-test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_variable.py metaclass-boilerplate
-test/units/modules/source_control/gitlab/gitlab.py future-import-boilerplate
-test/units/modules/source_control/gitlab/gitlab.py metaclass-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_deploy_key.py future-import-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_deploy_key.py metaclass-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_group.py future-import-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_group.py metaclass-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_hook.py future-import-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_hook.py metaclass-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_project.py future-import-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_project.py metaclass-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_runner.py future-import-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_runner.py metaclass-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_user.py future-import-boilerplate
-test/units/modules/source_control/gitlab/test_gitlab_user.py metaclass-boilerplate
-test/units/modules/storage/hpe3par/test_ss_3par_cpg.py future-import-boilerplate
-test/units/modules/storage/hpe3par/test_ss_3par_cpg.py metaclass-boilerplate
test/units/modules/storage/netapp/test_na_elementsw_cluster_config.py future-import-boilerplate
test/units/modules/storage/netapp/test_na_elementsw_cluster_config.py metaclass-boilerplate
test/units/modules/storage/netapp/test_na_elementsw_cluster_snmp.py future-import-boilerplate
@@ -8515,40 +4739,17 @@ test/units/modules/storage/netapp/test_na_ontap_vscan_on_demand_task.py future-i
test/units/modules/storage/netapp/test_na_ontap_vscan_on_demand_task.py metaclass-boilerplate
test/units/modules/storage/netapp/test_na_ontap_vscan_scanner_pool.py future-import-boilerplate
test/units/modules/storage/netapp/test_na_ontap_vscan_scanner_pool.py metaclass-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_alerts.py future-import-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_asup.py future-import-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_auditlog.py future-import-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_global.py future-import-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_host.py future-import-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_iscsi_interface.py future-import-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_iscsi_target.py future-import-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_ldap.py future-import-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_mgmt_interface.py future-import-boilerplate
-test/units/modules/storage/netapp/test_netapp_e_syslog.py future-import-boilerplate
-test/units/modules/system/interfaces_file/test_interfaces_file.py future-import-boilerplate
-test/units/modules/system/interfaces_file/test_interfaces_file.py metaclass-boilerplate
-test/units/modules/system/interfaces_file/test_interfaces_file.py pylint:blacklisted-name
test/units/modules/system/test_iptables.py future-import-boilerplate
test/units/modules/system/test_iptables.py metaclass-boilerplate
-test/units/modules/system/test_java_keystore.py future-import-boilerplate
-test/units/modules/system/test_java_keystore.py metaclass-boilerplate
test/units/modules/system/test_known_hosts.py future-import-boilerplate
test/units/modules/system/test_known_hosts.py metaclass-boilerplate
test/units/modules/system/test_known_hosts.py pylint:ansible-bad-function
test/units/modules/system/test_mount.py future-import-boilerplate
test/units/modules/system/test_mount.py metaclass-boilerplate
-test/units/modules/system/test_pamd.py metaclass-boilerplate
-test/units/modules/system/test_parted.py future-import-boilerplate
test/units/modules/system/test_systemd.py future-import-boilerplate
test/units/modules/system/test_systemd.py metaclass-boilerplate
-test/units/modules/system/test_ufw.py future-import-boilerplate
-test/units/modules/system/test_ufw.py metaclass-boilerplate
test/units/modules/utils.py future-import-boilerplate
test/units/modules/utils.py metaclass-boilerplate
-test/units/modules/web_infrastructure/test_apache2_module.py future-import-boilerplate
-test/units/modules/web_infrastructure/test_apache2_module.py metaclass-boilerplate
-test/units/modules/web_infrastructure/test_jenkins_plugin.py future-import-boilerplate
-test/units/modules/web_infrastructure/test_jenkins_plugin.py metaclass-boilerplate
test/units/parsing/utils/test_addresses.py future-import-boilerplate
test/units/parsing/utils/test_addresses.py metaclass-boilerplate
test/units/parsing/vault/test_vault.py pylint:blacklisted-name
@@ -8559,8 +4760,6 @@ test/units/playbook/test_conditional.py future-import-boilerplate
test/units/playbook/test_conditional.py metaclass-boilerplate
test/units/plugins/action/test_synchronize.py future-import-boilerplate
test/units/plugins/action/test_synchronize.py metaclass-boilerplate
-test/units/plugins/httpapi/test_ftd.py future-import-boilerplate
-test/units/plugins/httpapi/test_ftd.py metaclass-boilerplate
test/units/plugins/inventory/test_constructed.py future-import-boilerplate
test/units/plugins/inventory/test_constructed.py metaclass-boilerplate
test/units/plugins/loader_fixtures/import_fixture.py future-import-boilerplate
diff --git a/test/units/module_utils/cloud/test_backoff.py b/test/units/module_utils/cloud/test_backoff.py
deleted file mode 100644
index e7121c65d3..0000000000
--- a/test/units/module_utils/cloud/test_backoff.py
+++ /dev/null
@@ -1,47 +0,0 @@
-import random
-
-from units.compat import unittest
-from ansible.module_utils.cloud import _exponential_backoff, \
- _full_jitter_backoff
-
-
-class ExponentialBackoffStrategyTestCase(unittest.TestCase):
- def test_no_retries(self):
- strategy = _exponential_backoff(retries=0)
- result = list(strategy())
- self.assertEqual(result, [], 'list should be empty')
-
- def test_exponential_backoff(self):
- strategy = _exponential_backoff(retries=5, delay=1, backoff=2)
- result = list(strategy())
- self.assertEqual(result, [1, 2, 4, 8, 16])
-
- def test_max_delay(self):
- strategy = _exponential_backoff(retries=7, delay=1, backoff=2, max_delay=60)
- result = list(strategy())
- self.assertEqual(result, [1, 2, 4, 8, 16, 32, 60])
-
- def test_max_delay_none(self):
- strategy = _exponential_backoff(retries=7, delay=1, backoff=2, max_delay=None)
- result = list(strategy())
- self.assertEqual(result, [1, 2, 4, 8, 16, 32, 64])
-
-
-class FullJitterBackoffStrategyTestCase(unittest.TestCase):
- def test_no_retries(self):
- strategy = _full_jitter_backoff(retries=0)
- result = list(strategy())
- self.assertEqual(result, [], 'list should be empty')
-
- def test_full_jitter(self):
- retries = 5
- seed = 1
-
- r = random.Random(seed)
- expected = [r.randint(0, 2**i) for i in range(0, retries)]
-
- strategy = _full_jitter_backoff(
- retries=retries, delay=1, _random=random.Random(seed))
- result = list(strategy())
-
- self.assertEqual(result, expected)
diff --git a/test/units/module_utils/docker/test_common.py b/test/units/module_utils/docker/test_common.py
deleted file mode 100644
index 785ecf5efe..0000000000
--- a/test/units/module_utils/docker/test_common.py
+++ /dev/null
@@ -1,518 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import pytest
-
-from ansible.module_utils.docker.common import (
- compare_dict_allow_more_present,
- compare_generic,
- convert_duration_to_nanosecond,
- parse_healthcheck
-)
-
-DICT_ALLOW_MORE_PRESENT = (
- {
- 'av': {},
- 'bv': {'a': 1},
- 'result': True
- },
- {
- 'av': {'a': 1},
- 'bv': {'a': 1, 'b': 2},
- 'result': True
- },
- {
- 'av': {'a': 1},
- 'bv': {'b': 2},
- 'result': False
- },
- {
- 'av': {'a': 1},
- 'bv': {'a': None, 'b': 1},
- 'result': False
- },
- {
- 'av': {'a': None},
- 'bv': {'b': 1},
- 'result': False
- },
-)
-
-COMPARE_GENERIC = [
- ########################################################################################
- # value
- {
- 'a': 1,
- 'b': 2,
- 'method': 'strict',
- 'type': 'value',
- 'result': False
- },
- {
- 'a': 'hello',
- 'b': 'hello',
- 'method': 'strict',
- 'type': 'value',
- 'result': True
- },
- {
- 'a': None,
- 'b': 'hello',
- 'method': 'strict',
- 'type': 'value',
- 'result': False
- },
- {
- 'a': None,
- 'b': None,
- 'method': 'strict',
- 'type': 'value',
- 'result': True
- },
- {
- 'a': 1,
- 'b': 2,
- 'method': 'ignore',
- 'type': 'value',
- 'result': True
- },
- {
- 'a': None,
- 'b': 2,
- 'method': 'ignore',
- 'type': 'value',
- 'result': True
- },
- ########################################################################################
- # list
- {
- 'a': [
- 'x',
- ],
- 'b': [
- 'y',
- ],
- 'method': 'strict',
- 'type': 'list',
- 'result': False
- },
- {
- 'a': [
- 'x',
- ],
- 'b': [
- 'x',
- 'x',
- ],
- 'method': 'strict',
- 'type': 'list',
- 'result': False
- },
- {
- 'a': [
- 'x',
- 'y',
- ],
- 'b': [
- 'x',
- 'y',
- ],
- 'method': 'strict',
- 'type': 'list',
- 'result': True
- },
- {
- 'a': [
- 'x',
- 'y',
- ],
- 'b': [
- 'y',
- 'x',
- ],
- 'method': 'strict',
- 'type': 'list',
- 'result': False
- },
- {
- 'a': [
- 'x',
- 'y',
- ],
- 'b': [
- 'x',
- ],
- 'method': 'allow_more_present',
- 'type': 'list',
- 'result': False
- },
- {
- 'a': [
- 'x',
- ],
- 'b': [
- 'x',
- 'y',
- ],
- 'method': 'allow_more_present',
- 'type': 'list',
- 'result': True
- },
- {
- 'a': [
- 'x',
- 'x',
- 'y',
- ],
- 'b': [
- 'x',
- 'y',
- ],
- 'method': 'allow_more_present',
- 'type': 'list',
- 'result': False
- },
- {
- 'a': [
- 'x',
- 'z',
- ],
- 'b': [
- 'x',
- 'y',
- 'x',
- 'z',
- ],
- 'method': 'allow_more_present',
- 'type': 'list',
- 'result': True
- },
- {
- 'a': [
- 'x',
- 'y',
- ],
- 'b': [
- 'y',
- 'x',
- ],
- 'method': 'ignore',
- 'type': 'list',
- 'result': True
- },
- ########################################################################################
- # set
- {
- 'a': [
- 'x',
- ],
- 'b': [
- 'y',
- ],
- 'method': 'strict',
- 'type': 'set',
- 'result': False
- },
- {
- 'a': [
- 'x',
- ],
- 'b': [
- 'x',
- 'x',
- ],
- 'method': 'strict',
- 'type': 'set',
- 'result': True
- },
- {
- 'a': [
- 'x',
- 'y',
- ],
- 'b': [
- 'x',
- 'y',
- ],
- 'method': 'strict',
- 'type': 'set',
- 'result': True
- },
- {
- 'a': [
- 'x',
- 'y',
- ],
- 'b': [
- 'y',
- 'x',
- ],
- 'method': 'strict',
- 'type': 'set',
- 'result': True
- },
- {
- 'a': [
- 'x',
- 'y',
- ],
- 'b': [
- 'x',
- ],
- 'method': 'allow_more_present',
- 'type': 'set',
- 'result': False
- },
- {
- 'a': [
- 'x',
- ],
- 'b': [
- 'x',
- 'y',
- ],
- 'method': 'allow_more_present',
- 'type': 'set',
- 'result': True
- },
- {
- 'a': [
- 'x',
- 'x',
- 'y',
- ],
- 'b': [
- 'x',
- 'y',
- ],
- 'method': 'allow_more_present',
- 'type': 'set',
- 'result': True
- },
- {
- 'a': [
- 'x',
- 'z',
- ],
- 'b': [
- 'x',
- 'y',
- 'x',
- 'z',
- ],
- 'method': 'allow_more_present',
- 'type': 'set',
- 'result': True
- },
- {
- 'a': [
- 'x',
- 'a',
- ],
- 'b': [
- 'y',
- 'z',
- ],
- 'method': 'ignore',
- 'type': 'set',
- 'result': True
- },
- ########################################################################################
- # set(dict)
- {
- 'a': [
- {'x': 1},
- ],
- 'b': [
- {'y': 1},
- ],
- 'method': 'strict',
- 'type': 'set(dict)',
- 'result': False
- },
- {
- 'a': [
- {'x': 1},
- ],
- 'b': [
- {'x': 1},
- ],
- 'method': 'strict',
- 'type': 'set(dict)',
- 'result': True
- },
- {
- 'a': [
- {'x': 1},
- ],
- 'b': [
- {'x': 1, 'y': 2},
- ],
- 'method': 'strict',
- 'type': 'set(dict)',
- 'result': True
- },
- {
- 'a': [
- {'x': 1},
- {'x': 2, 'y': 3},
- ],
- 'b': [
- {'x': 1},
- {'x': 2, 'y': 3},
- ],
- 'method': 'strict',
- 'type': 'set(dict)',
- 'result': True
- },
- {
- 'a': [
- {'x': 1},
- ],
- 'b': [
- {'x': 1, 'z': 2},
- {'x': 2, 'y': 3},
- ],
- 'method': 'allow_more_present',
- 'type': 'set(dict)',
- 'result': True
- },
- {
- 'a': [
- {'x': 1, 'y': 2},
- ],
- 'b': [
- {'x': 1},
- {'x': 2, 'y': 3},
- ],
- 'method': 'allow_more_present',
- 'type': 'set(dict)',
- 'result': False
- },
- {
- 'a': [
- {'x': 1, 'y': 3},
- ],
- 'b': [
- {'x': 1},
- {'x': 1, 'y': 3, 'z': 4},
- ],
- 'method': 'allow_more_present',
- 'type': 'set(dict)',
- 'result': True
- },
- {
- 'a': [
- {'x': 1},
- {'x': 2, 'y': 3},
- ],
- 'b': [
- {'x': 1},
- ],
- 'method': 'ignore',
- 'type': 'set(dict)',
- 'result': True
- },
- ########################################################################################
- # dict
- {
- 'a': {'x': 1},
- 'b': {'y': 1},
- 'method': 'strict',
- 'type': 'dict',
- 'result': False
- },
- {
- 'a': {'x': 1},
- 'b': {'x': 1, 'y': 2},
- 'method': 'strict',
- 'type': 'dict',
- 'result': False
- },
- {
- 'a': {'x': 1},
- 'b': {'x': 1},
- 'method': 'strict',
- 'type': 'dict',
- 'result': True
- },
- {
- 'a': {'x': 1, 'z': 2},
- 'b': {'x': 1, 'y': 2},
- 'method': 'strict',
- 'type': 'dict',
- 'result': False
- },
- {
- 'a': {'x': 1, 'z': 2},
- 'b': {'x': 1, 'y': 2},
- 'method': 'ignore',
- 'type': 'dict',
- 'result': True
- },
-] + [{
- 'a': entry['av'],
- 'b': entry['bv'],
- 'method': 'allow_more_present',
- 'type': 'dict',
- 'result': entry['result']
-} for entry in DICT_ALLOW_MORE_PRESENT]
-
-
-@pytest.mark.parametrize("entry", DICT_ALLOW_MORE_PRESENT)
-def test_dict_allow_more_present(entry):
- assert compare_dict_allow_more_present(entry['av'], entry['bv']) == entry['result']
-
-
-@pytest.mark.parametrize("entry", COMPARE_GENERIC)
-def test_compare_generic(entry):
- assert compare_generic(entry['a'], entry['b'], entry['method'], entry['type']) == entry['result']
-
-
-def test_convert_duration_to_nanosecond():
- nanoseconds = convert_duration_to_nanosecond('5s')
- assert nanoseconds == 5000000000
- nanoseconds = convert_duration_to_nanosecond('1m5s')
- assert nanoseconds == 65000000000
- with pytest.raises(ValueError):
- convert_duration_to_nanosecond([1, 2, 3])
- with pytest.raises(ValueError):
- convert_duration_to_nanosecond('10x')
-
-
-def test_parse_healthcheck():
- result, disabled = parse_healthcheck({
- 'test': 'sleep 1',
- 'interval': '1s',
- })
- assert disabled is False
- assert result == {
- 'test': ['CMD-SHELL', 'sleep 1'],
- 'interval': 1000000000
- }
-
- result, disabled = parse_healthcheck({
- 'test': ['NONE'],
- })
- assert result is None
- assert disabled
-
- result, disabled = parse_healthcheck({
- 'test': 'sleep 1',
- 'interval': '1s423ms'
- })
- assert result == {
- 'test': ['CMD-SHELL', 'sleep 1'],
- 'interval': 1423000000
- }
- assert disabled is False
-
- result, disabled = parse_healthcheck({
- 'test': 'sleep 1',
- 'interval': '1h1m2s3ms4us'
- })
- assert result == {
- 'test': ['CMD-SHELL', 'sleep 1'],
- 'interval': 3662003004000
- }
- assert disabled is False
diff --git a/test/units/module_utils/gcp/test_auth.py b/test/units/module_utils/gcp/test_auth.py
deleted file mode 100644
index ee834a8ef0..0000000000
--- a/test/units/module_utils/gcp/test_auth.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# -*- coding: utf-8 -*-
-# (c) 2016, Tom Melendez (@supertom) <tom@supertom.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-import os
-
-import pytest
-
-from units.compat import mock, unittest
-from ansible.module_utils.gcp import (_get_gcp_ansible_credentials, _get_gcp_credentials, _get_gcp_environ_var,
- _get_gcp_environment_credentials,
- _validate_credentials_file)
-
-# Fake data/function used for testing
-fake_env_data = {'GCE_EMAIL': 'gce-email'}
-
-
-def fake_get_gcp_environ_var(var_name, default_value):
- if var_name not in fake_env_data:
- return default_value
- else:
- return fake_env_data[var_name]
-
-# Fake AnsibleModule for use in tests
-
-
-class FakeModule(object):
- class Params():
- data = {}
-
- def get(self, key, alt=None):
- if key in self.data:
- return self.data[key]
- else:
- return alt
-
- def __init__(self, data=None):
- data = {} if data is None else data
-
- self.params = FakeModule.Params()
- self.params.data = data
-
- def fail_json(self, **kwargs):
- raise ValueError("fail_json")
-
- def deprecate(self, **kwargs):
- return None
-
-
-class GCPAuthTestCase(unittest.TestCase):
- """Tests to verify different Auth mechanisms."""
-
- def setup_method(self, method):
- global fake_env_data
- fake_env_data = {'GCE_EMAIL': 'gce-email'}
-
- def test_get_gcp_ansible_credentials(self):
- input_data = {'service_account_email': 'mysa',
- 'credentials_file': 'path-to-file.json',
- 'project_id': 'my-cool-project'}
-
- module = FakeModule(input_data)
- actual = _get_gcp_ansible_credentials(module)
- expected = tuple(input_data.values())
- self.assertEqual(sorted(expected), sorted(actual))
-
- def test_get_gcp_environ_var(self):
- # Chose not to mock this so we could really verify that it
- # works as expected.
- existing_var_name = 'gcp_ansible_auth_test_54321'
- non_existing_var_name = 'doesnt_exist_gcp_ansible_auth_test_12345'
- os.environ[existing_var_name] = 'foobar'
- self.assertEqual('foobar', _get_gcp_environ_var(
- existing_var_name, None))
- del os.environ[existing_var_name]
- self.assertEqual('default_value', _get_gcp_environ_var(
- non_existing_var_name, 'default_value'))
-
- def test_validate_credentials_file(self):
- # TODO(supertom): Only dealing with p12 here, check the other states
- # of this function
- module = FakeModule()
- with mock.patch("ansible.module_utils.gcp.open",
- mock.mock_open(read_data='foobar'), create=True):
- # pem condition, warning is suppressed with the return_value
- credentials_file = '/foopath/pem.pem'
- with self.assertRaises(ValueError):
- _validate_credentials_file(module,
- credentials_file=credentials_file,
- require_valid_json=False,
- check_libcloud=False)
-
- @mock.patch('ansible.module_utils.gcp._get_gcp_environ_var',
- side_effect=fake_get_gcp_environ_var)
- def test_get_gcp_environment_credentials(self, mockobj):
- global fake_env_data
-
- actual = _get_gcp_environment_credentials(None, None, None)
- expected = tuple(['gce-email', None, None])
- self.assertEqual(expected, actual)
-
- fake_env_data = {'GCE_PEM_FILE_PATH': '/path/to/pem.pem'}
- expected = tuple([None, '/path/to/pem.pem', None])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- # pem and creds are set, expect creds
- fake_env_data = {'GCE_PEM_FILE_PATH': '/path/to/pem.pem',
- 'GCE_CREDENTIALS_FILE_PATH': '/path/to/creds.json'}
- expected = tuple([None, '/path/to/creds.json', None])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- # expect GOOGLE_APPLICATION_CREDENTIALS over PEM
- fake_env_data = {'GCE_PEM_FILE_PATH': '/path/to/pem.pem',
- 'GOOGLE_APPLICATION_CREDENTIALS': '/path/to/appcreds.json'}
- expected = tuple([None, '/path/to/appcreds.json', None])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- # project tests
- fake_env_data = {'GCE_PROJECT': 'my-project'}
- expected = tuple([None, None, 'my-project'])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- fake_env_data = {'GOOGLE_CLOUD_PROJECT': 'my-cloud-project'}
- expected = tuple([None, None, 'my-cloud-project'])
- actual = _get_gcp_environment_credentials(None, None, None)
- self.assertEqual(expected, actual)
-
- # data passed in, picking up project id only
- fake_env_data = {'GOOGLE_CLOUD_PROJECT': 'my-project'}
- expected = tuple(['my-sa-email', '/path/to/creds.json', 'my-project'])
- actual = _get_gcp_environment_credentials(
- 'my-sa-email', '/path/to/creds.json', None)
- self.assertEqual(expected, actual)
-
- @mock.patch('ansible.module_utils.gcp._get_gcp_environ_var',
- side_effect=fake_get_gcp_environ_var)
- def test_get_gcp_credentials(self, mockobj):
- global fake_env_data
-
- fake_env_data = {}
- module = FakeModule()
- module.params.data = {}
- # Nothing is set, calls fail_json
- with pytest.raises(ValueError):
- _get_gcp_credentials(module)
-
- # project_id (only) is set from Ansible params.
- module.params.data['project_id'] = 'my-project'
- actual = _get_gcp_credentials(
- module, require_valid_json=True, check_libcloud=False)
- expected = {'service_account_email': '',
- 'project_id': 'my-project',
- 'credentials_file': ''}
- self.assertEqual(expected, actual)
diff --git a/test/units/module_utils/gcp/test_gcp_utils.py b/test/units/module_utils/gcp/test_gcp_utils.py
deleted file mode 100644
index 044f025634..0000000000
--- a/test/units/module_utils/gcp/test_gcp_utils.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# -*- coding: utf-8 -*-
-# (c) 2016, Tom Melendez <tom@supertom.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-from units.compat import unittest
-from ansible.module_utils.gcp_utils import (GcpRequest,
- navigate_hash,
- remove_nones_from_dict,
- replace_resource_dict)
-
-
-class ReplaceResourceDictTestCase(unittest.TestCase):
- def test_given_dict(self):
- value = {
- 'selfLink': 'value'
- }
- self.assertEqual(replace_resource_dict(value, 'selfLink'), value['selfLink'])
-
- def test_given_array(self):
- value = {
- 'selfLink': 'value'
- }
- self.assertEqual(replace_resource_dict([value] * 3, 'selfLink'), [value['selfLink']] * 3)
-
-
-class NavigateHashTestCase(unittest.TestCase):
- def test_one_level(self):
- value = {
- 'key': 'value'
- }
- self.assertEqual(navigate_hash(value, ['key']), value['key'])
-
- def test_multilevel(self):
- value = {
- 'key': {
- 'key2': 'value'
- }
- }
- self.assertEqual(navigate_hash(value, ['key', 'key2']), value['key']['key2'])
-
- def test_default(self):
- value = {
- 'key': 'value'
- }
- default = 'not found'
- self.assertEqual(navigate_hash(value, ['key', 'key2'], default), default)
-
-
-class RemoveNonesFromDictTestCase(unittest.TestCase):
- def test_remove_nones(self):
- value = {
- 'key': None,
- 'good': 'value'
- }
- value_correct = {
- 'good': 'value'
- }
- self.assertEqual(remove_nones_from_dict(value), value_correct)
-
- def test_remove_empty_arrays(self):
- value = {
- 'key': [],
- 'good': 'value'
- }
- value_correct = {
- 'good': 'value'
- }
- self.assertEqual(remove_nones_from_dict(value), value_correct)
-
- def test_remove_empty_dicts(self):
- value = {
- 'key': {},
- 'good': 'value'
- }
- value_correct = {
- 'good': 'value'
- }
- self.assertEqual(remove_nones_from_dict(value), value_correct)
-
-
-class GCPRequestDifferenceTestCase(unittest.TestCase):
- def test_simple_no_difference(self):
- value1 = {
- 'foo': 'bar',
- 'test': 'original'
- }
- request = GcpRequest(value1)
- self.assertEqual(request, request)
-
- def test_simple_different(self):
- value1 = {
- 'foo': 'bar',
- 'test': 'original'
- }
- value2 = {
- 'foo': 'bar',
- 'test': 'different'
- }
- difference = {
- 'test': 'original'
- }
- request1 = GcpRequest(value1)
- request2 = GcpRequest(value2)
- self.assertNotEquals(request1, request2)
- self.assertEqual(request1.difference(request2), difference)
-
- def test_nested_dictionaries_no_difference(self):
- value1 = {
- 'foo': {
- 'quiet': {
- 'tree': 'test'
- },
- 'bar': 'baz'
- },
- 'test': 'original'
- }
- request = GcpRequest(value1)
- self.assertEqual(request, request)
-
- def test_nested_dictionaries_with_difference(self):
- value1 = {
- 'foo': {
- 'quiet': {
- 'tree': 'test'
- },
- 'bar': 'baz'
- },
- 'test': 'original'
- }
- value2 = {
- 'foo': {
- 'quiet': {
- 'tree': 'baz'
- },
- 'bar': 'hello'
- },
- 'test': 'original'
- }
- difference = {
- 'foo': {
- 'quiet': {
- 'tree': 'test'
- },
- 'bar': 'baz'
- }
- }
- request1 = GcpRequest(value1)
- request2 = GcpRequest(value2)
- self.assertNotEquals(request1, request2)
- self.assertEqual(request1.difference(request2), difference)
-
- def test_arrays_strings_no_difference(self):
- value1 = {
- 'foo': [
- 'baz',
- 'bar'
- ]
- }
- request = GcpRequest(value1)
- self.assertEqual(request, request)
-
- def test_arrays_strings_with_difference(self):
- value1 = {
- 'foo': [
- 'baz',
- 'bar',
- ]
- }
-
- value2 = {
- 'foo': [
- 'baz',
- 'hello'
- ]
- }
- difference = {
- 'foo': [
- 'bar',
- ]
- }
- request1 = GcpRequest(value1)
- request2 = GcpRequest(value2)
- self.assertNotEquals(request1, request2)
- self.assertEqual(request1.difference(request2), difference)
-
- def test_arrays_dicts_with_no_difference(self):
- value1 = {
- 'foo': [
- {
- 'test': 'value',
- 'foo': 'bar'
- },
- {
- 'different': 'dict'
- }
- ]
- }
- request = GcpRequest(value1)
- self.assertEqual(request, request)
-
- def test_arrays_dicts_with_difference(self):
- value1 = {
- 'foo': [
- {
- 'test': 'value',
- 'foo': 'bar'
- },
- {
- 'different': 'dict'
- }
- ]
- }
- value2 = {
- 'foo': [
- {
- 'test': 'value2',
- 'foo': 'bar2'
- },
- ]
- }
- difference = {
- 'foo': [
- {
- 'test': 'value',
- 'foo': 'bar'
- }
- ]
- }
- request1 = GcpRequest(value1)
- request2 = GcpRequest(value2)
- self.assertNotEquals(request1, request2)
- self.assertEqual(request1.difference(request2), difference)
diff --git a/test/units/module_utils/gcp/test_utils.py b/test/units/module_utils/gcp/test_utils.py
deleted file mode 100644
index f8f557b7a8..0000000000
--- a/test/units/module_utils/gcp/test_utils.py
+++ /dev/null
@@ -1,371 +0,0 @@
-# -*- coding: utf-8 -*-
-# (c) 2016, Tom Melendez <tom@supertom.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from units.compat import mock, unittest
-from ansible.module_utils.gcp import check_min_pkg_version, GCPUtils, GCPInvalidURLError
-
-
-def build_distribution(version):
- obj = mock.MagicMock()
- obj.version = '0.5.0'
- return obj
-
-
-class GCPUtilsTestCase(unittest.TestCase):
- params_dict = {
- 'url_map_name': 'foo_url_map_name',
- 'description': 'foo_url_map description',
- 'host_rules': [
- {
- 'description': 'host rules description',
- 'hosts': [
- 'www.example.com',
- 'www2.example.com'
- ],
- 'path_matcher': 'host_rules_path_matcher'
- }
- ],
- 'path_matchers': [
- {
- 'name': 'path_matcher_one',
- 'description': 'path matcher one',
- 'defaultService': 'bes-pathmatcher-one-default',
- 'pathRules': [
- {
- 'service': 'my-one-bes',
- 'paths': [
- '/',
- '/aboutus'
- ]
- }
- ]
- },
- {
- 'name': 'path_matcher_two',
- 'description': 'path matcher two',
- 'defaultService': 'bes-pathmatcher-two-default',
- 'pathRules': [
- {
- 'service': 'my-two-bes',
- 'paths': [
- '/webapp',
- '/graphs'
- ]
- }
- ]
- }
- ]
- }
-
- @mock.patch("pkg_resources.get_distribution", side_effect=build_distribution)
- def test_check_minimum_pkg_version(self, mockobj):
- self.assertTrue(check_min_pkg_version('foobar', '0.4.0'))
- self.assertTrue(check_min_pkg_version('foobar', '0.5.0'))
- self.assertFalse(check_min_pkg_version('foobar', '0.6.0'))
-
- def test_parse_gcp_url(self):
- # region, resource, entity, method
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers/my-mig/recreateInstances'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertEqual('us-east1', actual['region'])
- self.assertEqual('instanceGroupManagers', actual['resource_name'])
- self.assertEqual('my-mig', actual['entity_name'])
- self.assertEqual('recreateInstances', actual['method_name'])
-
- # zone, resource, entity, method
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/zones/us-east1-c/instanceGroupManagers/my-mig/recreateInstances'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertEqual('us-east1-c', actual['zone'])
- self.assertEqual('instanceGroupManagers', actual['resource_name'])
- self.assertEqual('my-mig', actual['entity_name'])
- self.assertEqual('recreateInstances', actual['method_name'])
-
- # global, resource
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/global/urlMaps'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertTrue('global' in actual)
- self.assertTrue(actual['global'])
- self.assertEqual('urlMaps', actual['resource_name'])
-
- # global, resource, entity
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/global/urlMaps/my-url-map'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('myproject', actual['project'])
- self.assertTrue('global' in actual)
- self.assertTrue(actual['global'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('compute', actual['service'])
-
- # global URL, resource, entity, method_name
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/mybackendservice/getHealth'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertTrue('global' in actual)
- self.assertTrue(actual['global'])
- self.assertEqual('backendServices', actual['resource_name'])
- self.assertEqual('mybackendservice', actual['entity_name'])
- self.assertEqual('getHealth', actual['method_name'])
-
- # no location in URL
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/targetHttpProxies/mytargetproxy/setUrlMap'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertFalse('global' in actual)
- self.assertEqual('targetHttpProxies', actual['resource_name'])
- self.assertEqual('mytargetproxy', actual['entity_name'])
- self.assertEqual('setUrlMap', actual['method_name'])
-
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/targetHttpProxies/mytargetproxy'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertFalse('global' in actual)
- self.assertEqual('targetHttpProxies', actual['resource_name'])
- self.assertEqual('mytargetproxy', actual['entity_name'])
-
- input_url = 'https://www.googleapis.com/compute/v1/projects/myproject/targetHttpProxies'
- actual = GCPUtils.parse_gcp_url(input_url)
- self.assertEqual('compute', actual['service'])
- self.assertEqual('v1', actual['api_version'])
- self.assertEqual('myproject', actual['project'])
- self.assertFalse('global' in actual)
- self.assertEqual('targetHttpProxies', actual['resource_name'])
-
- # test exceptions
- no_projects_input_url = 'https://www.googleapis.com/compute/v1/not-projects/myproject/global/backendServices/mybackendservice/getHealth'
- no_resource_input_url = 'https://www.googleapis.com/compute/v1/not-projects/myproject/global'
-
- no_resource_no_loc_input_url = 'https://www.googleapis.com/compute/v1/not-projects/myproject'
-
- with self.assertRaises(GCPInvalidURLError) as cm:
- GCPUtils.parse_gcp_url(no_projects_input_url)
- self.assertTrue(cm.exception, GCPInvalidURLError)
-
- with self.assertRaises(GCPInvalidURLError) as cm:
- GCPUtils.parse_gcp_url(no_resource_input_url)
- self.assertTrue(cm.exception, GCPInvalidURLError)
-
- with self.assertRaises(GCPInvalidURLError) as cm:
- GCPUtils.parse_gcp_url(no_resource_no_loc_input_url)
- self.assertTrue(cm.exception, GCPInvalidURLError)
-
- def test_params_to_gcp_dict(self):
-
- expected = {
- 'description': 'foo_url_map description',
- 'hostRules': [
- {
- 'description': 'host rules description',
- 'hosts': [
- 'www.example.com',
- 'www2.example.com'
- ],
- 'pathMatcher': 'host_rules_path_matcher'
- }
- ],
- 'name': 'foo_url_map_name',
- 'pathMatchers': [
- {
- 'defaultService': 'bes-pathmatcher-one-default',
- 'description': 'path matcher one',
- 'name': 'path_matcher_one',
- 'pathRules': [
- {
- 'paths': [
- '/',
- '/aboutus'
- ],
- 'service': 'my-one-bes'
- }
- ]
- },
- {
- 'defaultService': 'bes-pathmatcher-two-default',
- 'description': 'path matcher two',
- 'name': 'path_matcher_two',
- 'pathRules': [
- {
- 'paths': [
- '/webapp',
- '/graphs'
- ],
- 'service': 'my-two-bes'
- }
- ]
- }
- ]
- }
-
- actual = GCPUtils.params_to_gcp_dict(self.params_dict, 'url_map_name')
- self.assertEqual(expected, actual)
-
- def test_get_gcp_resource_from_methodId(self):
- input_data = 'compute.urlMaps.list'
- actual = GCPUtils.get_gcp_resource_from_methodId(input_data)
- self.assertEqual('urlMaps', actual)
- input_data = None
- actual = GCPUtils.get_gcp_resource_from_methodId(input_data)
- self.assertFalse(actual)
- input_data = 666
- actual = GCPUtils.get_gcp_resource_from_methodId(input_data)
- self.assertFalse(actual)
-
- def test_get_entity_name_from_resource_name(self):
- input_data = 'urlMaps'
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual('urlMap', actual)
- input_data = 'targetHttpProxies'
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual('targetHttpProxy', actual)
- input_data = 'globalForwardingRules'
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual('forwardingRule', actual)
- input_data = ''
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual(None, actual)
- input_data = 666
- actual = GCPUtils.get_entity_name_from_resource_name(input_data)
- self.assertEqual(None, actual)
-
- def test_are_params_equal(self):
- params1 = {'one': 1}
- params2 = {'one': 1}
- actual = GCPUtils.are_params_equal(params1, params2)
- self.assertTrue(actual)
-
- params1 = {'one': 1}
- params2 = {'two': 2}
- actual = GCPUtils.are_params_equal(params1, params2)
- self.assertFalse(actual)
-
- params1 = {'three': 3, 'two': 2, 'one': 1}
- params2 = {'one': 1, 'two': 2, 'three': 3}
- actual = GCPUtils.are_params_equal(params1, params2)
- self.assertTrue(actual)
-
- params1 = {
- "creationTimestamp": "2017-04-21T11:19:20.718-07:00",
- "defaultService": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/default-backend-service",
- "description": "",
- "fingerprint": "ickr_pwlZPU=",
- "hostRules": [
- {
- "description": "",
- "hosts": [
- "*."
- ],
- "pathMatcher": "path-matcher-one"
- }
- ],
- "id": "8566395781175047111",
- "kind": "compute#urlMap",
- "name": "newtesturlmap-foo",
- "pathMatchers": [
- {
- "defaultService": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/bes-pathmatcher-one-default",
- "description": "path matcher one",
- "name": "path-matcher-one",
- "pathRules": [
- {
- "paths": [
- "/data",
- "/aboutus"
- ],
- "service": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/my-one-bes"
- }
- ]
- }
- ],
- "selfLink": "https://www.googleapis.com/compute/v1/projects/myproject/global/urlMaps/newtesturlmap-foo"
- }
- params2 = {
- "defaultService": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/default-backend-service",
- "hostRules": [
- {
- "description": "",
- "hosts": [
- "*."
- ],
- "pathMatcher": "path-matcher-one"
- }
- ],
- "name": "newtesturlmap-foo",
- "pathMatchers": [
- {
- "defaultService": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/bes-pathmatcher-one-default",
- "description": "path matcher one",
- "name": "path-matcher-one",
- "pathRules": [
- {
- "paths": [
- "/data",
- "/aboutus"
- ],
- "service": "https://www.googleapis.com/compute/v1/projects/myproject/global/backendServices/my-one-bes"
- }
- ]
- }
- ],
- }
-
- # params1 has exclude fields, params2 doesn't. Should be equal
- actual = GCPUtils.are_params_equal(params1, params2)
- self.assertTrue(actual)
-
- def test_filter_gcp_fields(self):
- input_data = {
- u'kind': u'compute#httpsHealthCheck',
- u'description': u'',
- u'timeoutSec': 5,
- u'checkIntervalSec': 5,
- u'port': 443,
- u'healthyThreshold': 2,
- u'host': u'',
- u'requestPath': u'/',
- u'unhealthyThreshold': 2,
- u'creationTimestamp': u'2017-05-16T15:09:36.546-07:00',
- u'id': u'8727093129334146639',
- u'selfLink': u'https://www.googleapis.com/compute/v1/projects/myproject/global/httpsHealthChecks/myhealthcheck',
- u'name': u'myhealthcheck'}
-
- expected = {
- 'name': 'myhealthcheck',
- 'checkIntervalSec': 5,
- 'port': 443,
- 'unhealthyThreshold': 2,
- 'healthyThreshold': 2,
- 'host': '',
- 'timeoutSec': 5,
- 'requestPath': '/'}
-
- actual = GCPUtils.filter_gcp_fields(input_data)
- self.assertEqual(expected, actual)
diff --git a/test/units/module_utils/hwc/test_dict_comparison.py b/test/units/module_utils/hwc/test_dict_comparison.py
deleted file mode 100644
index e7872d5878..0000000000
--- a/test/units/module_utils/hwc/test_dict_comparison.py
+++ /dev/null
@@ -1,176 +0,0 @@
-# -*- coding: utf-8 -*-
-# 2018.07.26 --- use DictComparison instead of GcpRequest
-#
-# (c) 2016, Tom Melendez <tom@supertom.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from units.compat import unittest
-from ansible.module_utils.hwc_utils import are_different_dicts
-
-
-class HwcDictComparisonTestCase(unittest.TestCase):
- def test_simple_no_difference(self):
- value1 = {
- 'foo': 'bar',
- 'test': 'original'
- }
-
- self.assertFalse(are_different_dicts(value1, value1))
-
- def test_simple_different(self):
- value1 = {
- 'foo': 'bar',
- 'test': 'original'
- }
- value2 = {
- 'foo': 'bar',
- 'test': 'different'
- }
- value3 = {
- 'test': 'original'
- }
-
- self.assertTrue(are_different_dicts(value1, value2))
- self.assertTrue(are_different_dicts(value1, value3))
- self.assertTrue(are_different_dicts(value2, value3))
-
- def test_nested_dictionaries_no_difference(self):
- value1 = {
- 'foo': {
- 'quiet': {
- 'tree': 'test'
- },
- 'bar': 'baz'
- },
- 'test': 'original'
- }
-
- self.assertFalse(are_different_dicts(value1, value1))
-
- def test_nested_dictionaries_with_difference(self):
- value1 = {
- 'foo': {
- 'quiet': {
- 'tree': 'test'
- },
- 'bar': 'baz'
- },
- 'test': 'original'
- }
- value2 = {
- 'foo': {
- 'quiet': {
- 'tree': 'baz'
- },
- 'bar': 'hello'
- },
- 'test': 'original'
- }
- value3 = {
- 'foo': {
- 'quiet': {
- 'tree': 'test'
- },
- 'bar': 'baz'
- }
- }
-
- self.assertTrue(are_different_dicts(value1, value2))
- self.assertTrue(are_different_dicts(value1, value3))
- self.assertTrue(are_different_dicts(value2, value3))
-
- def test_arrays_strings_no_difference(self):
- value1 = {
- 'foo': [
- 'baz',
- 'bar'
- ]
- }
-
- self.assertFalse(are_different_dicts(value1, value1))
-
- def test_arrays_strings_with_difference(self):
- value1 = {
- 'foo': [
- 'baz',
- 'bar',
- ]
- }
-
- value2 = {
- 'foo': [
- 'baz',
- 'hello'
- ]
- }
- value3 = {
- 'foo': [
- 'bar',
- ]
- }
-
- self.assertTrue(are_different_dicts(value1, value2))
- self.assertTrue(are_different_dicts(value1, value3))
- self.assertTrue(are_different_dicts(value2, value3))
-
- def test_arrays_dicts_with_no_difference(self):
- value1 = {
- 'foo': [
- {
- 'test': 'value',
- 'foo': 'bar'
- },
- {
- 'different': 'dict'
- }
- ]
- }
-
- self.assertFalse(are_different_dicts(value1, value1))
-
- def test_arrays_dicts_with_difference(self):
- value1 = {
- 'foo': [
- {
- 'test': 'value',
- 'foo': 'bar'
- },
- {
- 'different': 'dict'
- }
- ]
- }
- value2 = {
- 'foo': [
- {
- 'test': 'value2',
- 'foo': 'bar2'
- },
- ]
- }
- value3 = {
- 'foo': [
- {
- 'test': 'value',
- 'foo': 'bar'
- }
- ]
- }
-
- self.assertTrue(are_different_dicts(value1, value2))
- self.assertTrue(are_different_dicts(value1, value3))
- self.assertTrue(are_different_dicts(value2, value3))
diff --git a/test/units/module_utils/hwc/test_hwc_utils.py b/test/units/module_utils/hwc/test_hwc_utils.py
deleted file mode 100644
index e349c43a85..0000000000
--- a/test/units/module_utils/hwc/test_hwc_utils.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from units.compat import unittest
-from ansible.module_utils.hwc_utils import (HwcModuleException, navigate_value)
-
-
-class HwcUtilsTestCase(unittest.TestCase):
- def test_navigate_value(self):
- value = {
- 'foo': {
- 'quiet': {
- 'tree': 'test',
- "trees": [0, 1]
- },
- }
- }
-
- self.assertEqual(navigate_value(value, ["foo", "quiet", "tree"]),
- "test")
-
- self.assertEqual(
- navigate_value(value, ["foo", "quiet", "trees"],
- {"foo.quiet.trees": 1}),
- 1)
-
- self.assertRaisesRegexp(HwcModuleException,
- r".* key\(q\) is not exist in dict",
- navigate_value, value, ["foo", "q", "tree"])
-
- self.assertRaisesRegexp(HwcModuleException,
- r".* the index is out of list",
- navigate_value, value,
- ["foo", "quiet", "trees"],
- {"foo.quiet.trees": 2})
diff --git a/test/units/module_utils/identity/keycloak/test_keycloak_connect.py b/test/units/module_utils/identity/keycloak/test_keycloak_connect.py
deleted file mode 100644
index 1531dfb774..0000000000
--- a/test/units/module_utils/identity/keycloak/test_keycloak_connect.py
+++ /dev/null
@@ -1,169 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import pytest
-from itertools import count
-
-from ansible.module_utils.identity.keycloak.keycloak import (
- get_token,
- KeycloakError,
-)
-from ansible.module_utils.six import StringIO
-from ansible.module_utils.six.moves.urllib.error import HTTPError
-
-
-def build_mocked_request(get_id_user_count, response_dict):
- def _mocked_requests(*args, **kwargs):
- url = args[0]
- method = kwargs['method']
- future_response = response_dict.get(url, None)
- return get_response(future_response, method, get_id_user_count)
- return _mocked_requests
-
-
-def get_response(object_with_future_response, method, get_id_call_count):
- if callable(object_with_future_response):
- return object_with_future_response()
- if isinstance(object_with_future_response, dict):
- return get_response(
- object_with_future_response[method], method, get_id_call_count)
- if isinstance(object_with_future_response, list):
- try:
- call_number = get_id_call_count.__next__()
- except AttributeError:
- # manage python 2 versions.
- call_number = get_id_call_count.next()
- return get_response(
- object_with_future_response[call_number], method, get_id_call_count)
- return object_with_future_response
-
-
-def create_wrapper(text_as_string):
- """Allow to mock many times a call to one address.
- Without this function, the StringIO is empty for the second call.
- """
- def _create_wrapper():
- return StringIO(text_as_string)
- return _create_wrapper
-
-
-@pytest.fixture()
-def mock_good_connection(mocker):
- token_response = {
- 'http://keycloak.url/auth/realms/master/protocol/openid-connect/token': create_wrapper('{"access_token": "alongtoken"}'), }
- return mocker.patch(
- 'ansible.module_utils.identity.keycloak.keycloak.open_url',
- side_effect=build_mocked_request(count(), token_response),
- autospec=True
- )
-
-
-def test_connect_to_keycloak(mock_good_connection):
- keycloak_header = get_token(
- base_url='http://keycloak.url/auth',
- validate_certs=True,
- auth_realm='master',
- client_id='admin-cli',
- auth_username='admin',
- auth_password='admin',
- client_secret=None
- )
- assert keycloak_header == {
- 'Authorization': 'Bearer alongtoken',
- 'Content-Type': 'application/json'
- }
-
-
-@pytest.fixture()
-def mock_bad_json_returned(mocker):
- token_response = {
- 'http://keycloak.url/auth/realms/master/protocol/openid-connect/token': create_wrapper('{"access_token":'), }
- return mocker.patch(
- 'ansible.module_utils.identity.keycloak.keycloak.open_url',
- side_effect=build_mocked_request(count(), token_response),
- autospec=True
- )
-
-
-def test_bad_json_returned(mock_bad_json_returned):
- with pytest.raises(KeycloakError) as raised_error:
- get_token(
- base_url='http://keycloak.url/auth',
- validate_certs=True,
- auth_realm='master',
- client_id='admin-cli',
- auth_username='admin',
- auth_password='admin',
- client_secret=None
- )
- # cannot check all the message, different errors message for the value
- # error in python 2.6, 2.7 and 3.*.
- assert (
- 'API returned invalid JSON when trying to obtain access token from '
- 'http://keycloak.url/auth/realms/master/protocol/openid-connect/token: '
- ) in str(raised_error.value)
-
-
-def raise_401(url):
- def _raise_401():
- raise HTTPError(url=url, code=401, msg='Unauthorized', hdrs='', fp=StringIO(''))
- return _raise_401
-
-
-@pytest.fixture()
-def mock_401_returned(mocker):
- token_response = {
- 'http://keycloak.url/auth/realms/master/protocol/openid-connect/token': raise_401(
- 'http://keycloak.url/auth/realms/master/protocol/openid-connect/token'),
- }
- return mocker.patch(
- 'ansible.module_utils.identity.keycloak.keycloak.open_url',
- side_effect=build_mocked_request(count(), token_response),
- autospec=True
- )
-
-
-def test_error_returned(mock_401_returned):
- with pytest.raises(KeycloakError) as raised_error:
- get_token(
- base_url='http://keycloak.url/auth',
- validate_certs=True,
- auth_realm='master',
- client_id='admin-cli',
- auth_username='notadminuser',
- auth_password='notadminpassword',
- client_secret=None
- )
- assert str(raised_error.value) == (
- 'Could not obtain access token from http://keycloak.url'
- '/auth/realms/master/protocol/openid-connect/token: '
- 'HTTP Error 401: Unauthorized'
- )
-
-
-@pytest.fixture()
-def mock_json_without_token_returned(mocker):
- token_response = {
- 'http://keycloak.url/auth/realms/master/protocol/openid-connect/token': create_wrapper('{"not_token": "It is not a token"}'), }
- return mocker.patch(
- 'ansible.module_utils.identity.keycloak.keycloak.open_url',
- side_effect=build_mocked_request(count(), token_response),
- autospec=True
- )
-
-
-def test_json_without_token_returned(mock_json_without_token_returned):
- with pytest.raises(KeycloakError) as raised_error:
- get_token(
- base_url='http://keycloak.url/auth',
- validate_certs=True,
- auth_realm='master',
- client_id='admin-cli',
- auth_username='admin',
- auth_password='admin',
- client_secret=None
- )
- assert str(raised_error.value) == (
- 'Could not obtain access token from http://keycloak.url'
- '/auth/realms/master/protocol/openid-connect/token'
- )
diff --git a/test/units/module_utils/net_tools/nios/test_api.py b/test/units/module_utils/net_tools/nios/test_api.py
deleted file mode 100644
index 688da86b4a..0000000000
--- a/test/units/module_utils/net_tools/nios/test_api.py
+++ /dev/null
@@ -1,251 +0,0 @@
-# (c) 2018 Red Hat, 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 copy
-
-from units.compat import unittest
-from units.compat.mock import patch, MagicMock, Mock
-from ansible.module_utils.net_tools.nios import api
-
-
-class TestNiosApi(unittest.TestCase):
-
- def setUp(self):
- super(TestNiosApi, self).setUp()
-
- self.module = MagicMock(name='AnsibleModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
-
- self.mock_connector = patch('ansible.module_utils.net_tools.nios.api.get_connector')
- self.mock_connector.start()
-
- def tearDown(self):
- super(TestNiosApi, self).tearDown()
-
- self.mock_connector.stop()
-
- def test_get_provider_spec(self):
- provider_options = ['host', 'username', 'password', 'validate_certs', 'silent_ssl_warnings',
- 'http_request_timeout', 'http_pool_connections',
- 'http_pool_maxsize', 'max_retries', 'wapi_version', 'max_results']
- res = api.WapiBase.provider_spec
- self.assertIsNotNone(res)
- self.assertIn('provider', res)
- self.assertIn('options', res['provider'])
- returned_options = res['provider']['options']
- self.assertEqual(sorted(provider_options), sorted(returned_options.keys()))
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def test_wapi_no_change(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'default',
- 'comment': 'test comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": self.module._check_type_dict().__getitem__(),
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertFalse(res['changed'])
-
- def test_wapi_change(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'default',
- 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "default",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
-
- def test_wapi_change_false(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'default',
- 'comment': 'updated comment', 'extattrs': None, 'fqdn': 'foo'}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "default",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "fqdn": {"ib_req": True, 'update': False},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
-
- def test_wapi_extattrs_change(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'default',
- 'comment': 'test comment', 'extattrs': {'Site': 'update'}}
-
- ref = "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "default",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- kwargs = copy.deepcopy(test_object[0])
- kwargs['extattrs']['Site']['value'] = 'update'
- kwargs['name'] = self.module._check_type_dict().__getitem__()
- del kwargs['_ref']
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.assert_called_once_with(ref, kwargs)
-
- def test_wapi_extattrs_nochange(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'default',
- 'comment': 'test comment', 'extattrs': {'Site': 'test'}}
-
- test_object = [{
- "comment": "test comment",
- "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": self.module._check_type_dict().__getitem__(),
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertFalse(res['changed'])
-
- def test_wapi_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible',
- 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__()})
-
- def test_wapi_delete(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible',
- 'comment': None, 'extattrs': None}
-
- ref = "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "ansible",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_wapi_strip_network_view(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible',
- 'comment': 'updated comment', 'extattrs': None,
- 'network_view': 'default'}
-
- test_object = [{
- "comment": "test comment",
- "_ref": "view/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/true",
- "name": "ansible",
- "extattrs": {},
- "network_view": "default"
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "network_view": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- kwargs = test_object[0].copy()
- ref = kwargs.pop('_ref')
- kwargs['comment'] = 'updated comment'
- kwargs['name'] = self.module._check_type_dict().__getitem__()
- del kwargs['network_view']
- del kwargs['extattrs']
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.assert_called_once_with(ref, kwargs)
diff --git a/test/units/module_utils/network/avi/test_avi_api_utils.py b/test/units/module_utils/network/avi/test_avi_api_utils.py
deleted file mode 100644
index bbc37eb707..0000000000
--- a/test/units/module_utils/network/avi/test_avi_api_utils.py
+++ /dev/null
@@ -1,699 +0,0 @@
-'''
-Created on Aug 16, 2016
-
-@author: grastogi
-'''
-import unittest
-from ansible.module_utils.network.avi.ansible_utils import \
- cleanup_absent_fields, avi_obj_cmp
-
-
-class TestAviApiUtils(unittest.TestCase):
-
- def test_avi_obj_cmp(self):
- obj = {'name': 'testpool'}
- existing_obj = {
- 'lb_algorithm': 'LB_ALGORITHM_LEAST_CONNECTIONS',
- 'use_service_port': False,
- 'server_auto_scale': False,
- 'host_check_enabled': False,
- 'enabled': True,
- 'capacity_estimation': False,
- 'fewest_tasks_feedback_delay': 10,
- '_last_modified': '1471377748747040',
- 'cloud_ref': 'https://192.0.2.42/api/cloud/cloud-afe8bf2c-9821-4272-9bc6-67634c84bec9',
- 'vrf_ref': 'https://192.0.2.42/api/vrfcontext/vrfcontext-0e8ce760-fed2-4650-9397-5b3e4966376e',
- 'inline_health_monitor': True,
- 'default_server_port': 80,
- 'request_queue_depth': 128,
- 'graceful_disable_timeout': 1,
- 'server_count': 0,
- 'sni_enabled': True,
- 'request_queue_enabled': False,
- 'name': 'testpool',
- 'max_concurrent_connections_per_server': 0,
- 'url': 'https://192.0.2.42/api/pool/pool-20084ee1-872e-4103-98e1-899103e2242a',
- 'tenant_ref': 'https://192.0.2.42/api/tenant/admin',
- 'uuid': 'pool-20084ee1-872e-4103-98e1-899103e2242a',
- 'connection_ramp_duration': 10}
-
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- def test_avi_obj_cmp_w_refs(self):
- obj = {'name': 'testpool',
- 'health_monitor_refs': ['/api/healthmonitor?name=System-HTTP'],
- 'enabled': True}
- existing_obj = {
- 'lb_algorithm': 'LB_ALGORITHM_LEAST_CONNECTIONS',
- 'use_service_port': False,
- 'server_auto_scale': False,
- 'host_check_enabled': False,
- 'enabled': True,
- 'capacity_estimation': False,
- 'fewest_tasks_feedback_delay': 10,
- '_last_modified': '1471377748747040',
- 'cloud_ref': 'https://192.0.2.42/api/cloud/cloud-afe8bf2c-9821-4272-9bc6-67634c84bec9',
- 'vrf_ref': 'https://192.0.2.42/api/vrfcontext/vrfcontext-0e8ce760-fed2-4650-9397-5b3e4966376e',
- 'inline_health_monitor': True,
- 'default_server_port': 80,
- 'request_queue_depth': 128,
- 'graceful_disable_timeout': 1,
- 'server_count': 0,
- 'sni_enabled': True,
- 'request_queue_enabled': False,
- 'name': 'testpool',
- 'max_concurrent_connections_per_server': 0,
- 'url': 'https://192.0.2.42/api/pool/pool-20084ee1-872e-4103-98e1-899103e2242a',
- 'tenant_ref': 'https://192.0.2.42/api/tenant/admin',
- 'uuid': 'pool-20084ee1-872e-4103-98e1-899103e2242a',
- 'connection_ramp_duration': 10,
- 'health_monitor_refs': [
- "https://192.0.2.42/api/healthmonitor/healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc9#System-HTTP"],
- }
-
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- obj = {'name': 'testpool',
- 'health_monitor_refs': ['/api/healthmonitor?name=System-HTTP'],
- 'server_count': 1}
- diff = avi_obj_cmp(obj, existing_obj)
- assert not diff
-
- obj = {'name': 'testpool',
- 'health_monitor_refs': ['api/healthmonitor?name=System-HTTP'],
- 'server_count': 0}
- diff = avi_obj_cmp(obj, existing_obj)
- assert not diff
- obj = {'name': 'testpool',
- 'health_monitor_refs': ['healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc9'],
- 'server_count': 0}
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
- obj = {'name': 'testpool#asdfasf',
- 'health_monitor_refs': ['api/healthmonitor?name=System-HTTP'],
- 'server_count': 0}
- diff = avi_obj_cmp(obj, existing_obj)
- assert not diff
- obj = {'name': 'testpool',
- 'health_monitor_refs': ['/api/healthmonitor?name=System-HTTP#'],
- 'server_count': 0}
- diff = avi_obj_cmp(obj, existing_obj)
- assert not diff
-
- def test_avi_obj_cmp_empty_list(self):
- obj = {'name': 'testpool',
- 'health_monitor_refs': [],
- 'enabled': True}
- existing_obj = {
- 'lb_algorithm': 'LB_ALGORITHM_LEAST_CONNECTIONS',
- 'use_service_port': False,
- 'server_auto_scale': False,
- 'host_check_enabled': False,
- 'enabled': True,
- 'capacity_estimation': False,
- 'fewest_tasks_feedback_delay': 10,
- '_last_modified': '1471377748747040',
- 'cloud_ref': 'https://192.0.2.42/api/cloud/cloud-afe8bf2c-9821-4272-9bc6-67634c84bec9',
- 'vrf_ref': 'https://192.0.2.42/api/vrfcontext/vrfcontext-0e8ce760-fed2-4650-9397-5b3e4966376e',
- 'inline_health_monitor': True,
- 'default_server_port': 80,
- 'request_queue_depth': 128,
- 'graceful_disable_timeout': 1,
- 'server_count': 0,
- 'sni_enabled': True,
- 'request_queue_enabled': False,
- 'name': 'testpool',
- 'max_concurrent_connections_per_server': 0,
- 'url': 'https://192.0.2.42/api/pool/pool-20084ee1-872e-4103-98e1-899103e2242a',
- 'tenant_ref': 'https://192.0.2.42/api/tenant/admin',
- 'uuid': 'pool-20084ee1-872e-4103-98e1-899103e2242a',
- 'connection_ramp_duration': 10
- }
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- def test_avi_obj_cmp_w_refs_n_name(self):
- existing_obj = {
- 'use_service_port': False,
- 'server_auto_scale': False,
- 'host_check_enabled': False,
- 'enabled': True,
- 'capacity_estimation': False,
- 'fewest_tasks_feedback_delay': 10,
- '_last_modified': '1471377748747040',
- 'cloud_ref': 'https://192.0.2.42/api/cloud/cloud-afe8bf2c-9821-4272-9bc6-67634c84bec9',
- 'vrf_ref': 'https://192.0.2.42/api/vrfcontext/vrfcontext-0e8ce760-fed2-4650-9397-5b3e4966376e',
- 'inline_health_monitor': True,
- 'default_server_port': 80,
- 'request_queue_depth': 128,
- 'graceful_disable_timeout': 1,
- 'server_count': 0,
- 'sni_enabled': True,
- 'request_queue_enabled': False,
- 'name': 'testpool',
- 'max_concurrent_connections_per_server': 0,
- 'url': 'https://192.0.2.42/api/pool/pool-20084ee1-872e-4103-98e1-899103e2242a',
- 'tenant_ref': 'https://192.0.2.42/api/tenant/admin',
- 'uuid': 'pool-20084ee1-872e-4103-98e1-899103e2242a',
- 'connection_ramp_duration': 10,
- 'health_monitor_refs': [
- "https://192.0.2.42/api/healthmonitor/healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc9#System-HTTP",
- "https://192.0.2.42/api/healthmonitor/healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc8",
- ],
- }
-
- obj = {'name': 'testpool',
- 'health_monitor_refs': ['https://192.0.2.42/api/healthmonitor/healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc9',
- "https://192.0.2.42/api/healthmonitor/healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc8"],
- 'server_count': 0}
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- obj = {'name': 'testpool',
- 'health_monitor_refs': [
- 'https://192.0.2.42/api/healthmonitor/healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc9#System-HTTP',
- "https://192.0.2.42/api/healthmonitor/healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc8"],
- 'server_count': 0}
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- obj = {'name': 'testpool',
- 'health_monitor_refs': [
- 'https://192.0.2.42/api/healthmonitor/healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc9#System-HTTP',
- "https://192.0.2.42/api/healthmonitor/healthmonitor-6d07b57f-126b-476c-baba-a8c8c8b06dc8#System-HTTP2"],
- 'server_count': 0,
- 'cloud_ref': 'https://192.0.2.42/api/cloud/cloud-afe8bf2c-9821-4272-9bc6-67634c84bec9#Default-Cloud',
- }
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- def test_avi_list_update(self):
- existing_obj = {
- 'services': [
- {
- "enable_ssl": False,
- "port_range_end": 80,
- "port": 80
- },
- {
- "enable_ssl": False,
- "port_range_end": 443,
- "port": 443
- }
- ],
- "name": "vs-health-test",
- "url": "https://192.0.2.42/api/virtualservice/virtualservice-526c55c2-df89-40b9-9de6-e45a472290aa",
- }
-
- obj = {
- 'services': [
- {
- "enable_ssl": False,
- "port_range_end": 80,
- "port": 80
- }
- ]
- }
-
- diff = avi_obj_cmp(obj, existing_obj)
- assert not diff
-
- obj = {
- 'services': [
- {
- "enable_ssl": False,
- "port_range_end": 80,
- "port": 80
- },
- {
- "enable_ssl": False,
- "port_range_end": 443,
- "port": 80
- }
- ],
- "name": "vs-health-test",
- "url": "https://192.0.2.42/api/virtualservice/virtualservice-526c55c2-df89-40b9-9de6-e45a472290aa",
- }
-
- diff = avi_obj_cmp(obj, existing_obj)
- assert not diff
-
- def test_cleanup_abset(self):
- obj = {'x': 10,
- 'y': {'state': 'absent'},
- 'z': {'a': {'state': 'absent'}},
- 'l': [{'y1': {'state': 'absent'}}],
- 'z1': {'a': {'state': 'absent'}, 'b': {}, 'c': 42},
- 'empty': []}
-
- obj = cleanup_absent_fields(obj)
-
- assert 'y' not in obj
- assert 'z' not in obj
- assert 'l' not in obj
- assert 'z1' in obj
- assert 'b' not in obj['z1']
- assert 'a' not in obj['z1']
- assert 'empty' not in obj
-
- def test_complex_obj(self):
-
- obj = {
- 'lb_algorithm': 'LB_ALGORITHM_ROUND_ROBIN',
- 'use_service_port': False, 'server_auto_scale': False,
- 'host_check_enabled': False,
- 'tenant_ref': 'https://192.0.2.42/api/tenant/admin#admin',
- 'capacity_estimation': False,
- 'servers': [{
- 'hostname': 'grastogi-server6', 'ratio': 1,
- 'ip': {'type': 'V4', 'addr': '198.51.100.62'},
- 'discovered_networks': [{
- 'subnet': [{
- 'ip_addr': {
- 'type': 'V4',
- 'addr': '198.51.100.0'
- },
- 'mask': 24
- }],
- 'network_ref': 'https://192.0.2.42/api/network/dvportgroup-53975-10.10.2.10#PG-964'
- }],
- 'enabled': True, 'nw_ref': 'https://192.0.2.42/api/vimgrnwruntime/dvportgroup-53975-10.10.2.10#PG-964',
- 'verify_network': False,
- 'static': False,
- 'resolve_server_by_dns': False,
- 'external_uuid': 'vm-4230615e-bc0b-3d33-3929-1c7328575993',
- 'vm_ref': 'https://192.0.2.42/api/vimgrvmruntime/vm-4230615e-bc0b-3d33-3929-1c7328575993#grastogi-server6'
- }, {
- 'hostname': 'grastogi-server6',
- 'ratio': 1,
- 'ip': {
- 'type': 'V4',
- 'addr': '198.51.100.61'
- },
- 'discovered_networks': [{
- 'subnet': [{
- 'ip_addr': {
- 'type': 'V4',
- 'addr': '198.51.100.0'
- },
- 'mask': 24
- }],
- 'network_ref': 'https://192.0.2.42/api/network/dvportgroup-53975-10.10.2.10#PG-964'
- }],
- 'enabled': True,
- 'nw_ref': 'https://192.0.2.42/api/vimgrnwruntime/dvportgroup-53975-10.10.2.10#PG-964',
- 'verify_network': False,
- 'static': False,
- 'resolve_server_by_dns': False,
- 'external_uuid': 'vm-4230615e-bc0b-3d33-3929-1c7328575993',
- 'vm_ref': 'https://192.0.2.42/api/vimgrvmruntime/vm-4230615e-bc0b-3d33-3929-1c7328575993#grastogi-server6'
- }, {
- 'hostname': 'grastogi-server6',
- 'ratio': 1,
- 'ip': {
- 'type': 'V4',
- 'addr': '198.51.100.65'
- },
- 'discovered_networks': [{
- 'subnet': [{
- 'ip_addr': {
- 'type': 'V4',
- 'addr': '198.51.100.0'
- }, 'mask': 24
- }],
- 'network_ref': 'https://192.0.2.42/api/network/dvportgroup-53975-10.10.2.10#PG-964'
- }],
- 'enabled': True,
- 'verify_network': False,
- 'static': False,
- 'resolve_server_by_dns': False
- }],
- 'fewest_tasks_feedback_delay': 10,
- '_last_modified': '1473292763246107',
- 'cloud_ref': 'https://192.0.2.42/api/cloud/cloud-e0696a58-8b72-4026-923c-9a87c38a2489#Default-Cloud',
- 'vrf_ref': 'https://192.0.2.42/api/vrfcontext/vrfcontext-33dfbcd7-867c-4e3e-acf7-96bf679d5a0d#global',
- 'inline_health_monitor': True,
- 'default_server_port': 8000,
- 'request_queue_depth': 128,
- 'graceful_disable_timeout': 1,
- 'sni_enabled': True,
- 'server_count': 3,
- 'uuid': 'pool-09201181-747e-41ea-872d-e9a7df71b726',
- 'request_queue_enabled': False,
- 'name': 'p1',
- 'max_concurrent_connections_per_server': 0,
- 'url': 'https://192.0.2.42/api/pool/pool-09201181-747e-41ea-872d-e9a7df71b726#p1',
- 'enabled': True,
- 'connection_ramp_duration': 10}
-
- existing_obj = {
- 'lb_algorithm': 'LB_ALGORITHM_ROUND_ROBIN',
- 'use_service_port': False,
- 'server_auto_scale': False,
- 'host_check_enabled': False,
- 'tenant_ref': 'https://192.0.2.42/api/tenant/admin',
- 'capacity_estimation': False,
- 'servers': [{
- 'hostname': 'grastogi-server6', 'ratio': 1,
- 'ip': {
- 'type': 'V4',
- 'addr': '198.51.100.62'
- },
- 'discovered_networks': [{
- 'subnet': [{
- 'mask': 24,
- 'ip_addr': {
- 'type': 'V4',
- 'addr': '198.51.100.0'
- }
- }],
- 'network_ref': 'https://192.0.2.42/api/network/dvportgroup-53975-10.10.2.10'
- }],
- 'enabled': True,
- 'nw_ref': 'https://192.0.2.42/api/vimgrnwruntime/dvportgroup-53975-10.10.2.10',
- 'verify_network': False,
- 'static': False,
- 'resolve_server_by_dns': False,
- 'external_uuid': 'vm-4230615e-bc0b-3d33-3929-1c7328575993',
- 'vm_ref': 'https://192.0.2.42/api/vimgrvmruntime/vm-4230615e-bc0b-3d33-3929-1c7328575993'
- }, {
- 'hostname': 'grastogi-server6',
- 'ratio': 1,
- 'ip': {
- 'type': 'V4',
- 'addr': '198.51.100.61'
- },
- 'discovered_networks': [{
- 'subnet': [{
- 'mask': 24,
- 'ip_addr': {
- 'type': 'V4',
- 'addr': '198.51.100.0'
- }
- }],
- 'network_ref': 'https://192.0.2.42/api/network/dvportgroup-53975-10.10.2.10'
- }],
- 'enabled': True,
- 'nw_ref': 'https://192.0.2.42/api/vimgrnwruntime/dvportgroup-53975-10.10.2.10',
- 'verify_network': False,
- 'static': False,
- 'resolve_server_by_dns': False,
- 'external_uuid': 'vm-4230615e-bc0b-3d33-3929-1c7328575993',
- 'vm_ref': 'https://192.0.2.42/api/vimgrvmruntime/vm-4230615e-bc0b-3d33-3929-1c7328575993'
- }, {
- 'hostname': 'grastogi-server6',
- 'ratio': 1,
- 'ip': {
- 'type': 'V4',
- 'addr': '198.51.100.65'
- },
- 'discovered_networks': [{
- 'subnet': [{
- 'mask': 24,
- 'ip_addr': {
- 'type': 'V4',
- 'addr': '198.51.100.0'
- }
- }],
- 'network_ref': 'https://192.0.2.42/api/network/dvportgroup-53975-10.10.2.10'
- }],
- 'enabled': True,
- 'nw_ref': 'https://192.0.2.42/api/vimgrnwruntime/dvportgroup-53975-10.10.2.10',
- 'verify_network': False,
- 'static': False,
- 'resolve_server_by_dns': False,
- 'external_uuid': 'vm-4230615e-bc0b-3d33-3929-1c7328575993',
- 'vm_ref': 'https://192.0.2.42/api/vimgrvmruntime/vm-4230615e-bc0b-3d33-3929-1c7328575993'
- }],
- 'fewest_tasks_feedback_delay': 10,
- 'cloud_ref': 'https://192.0.2.42/api/cloud/cloud-e0696a58-8b72-4026-923c-9a87c38a2489',
- 'vrf_ref': 'https://192.0.2.42/api/vrfcontext/vrfcontext-33dfbcd7-867c-4e3e-acf7-96bf679d5a0d',
- 'inline_health_monitor': True,
- 'default_server_port': 8000,
- 'request_queue_depth': 128,
- 'graceful_disable_timeout': 1,
- 'sni_enabled': True,
- 'server_count': 3,
- 'uuid': 'pool-09201181-747e-41ea-872d-e9a7df71b726',
- 'request_queue_enabled': False,
- 'name': 'p1',
- 'max_concurrent_connections_per_server': 0,
- 'url': 'https://192.0.2.42/api/pool/pool-09201181-747e-41ea-872d-e9a7df71b726',
- 'enabled': True,
- 'connection_ramp_duration': 10
- }
-
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- def testAWSVs(self):
- existing_obj = {
- 'network_profile_ref': 'https://12.97.16.202/api/networkprofile/networkprofile-9a0a9896-6876-44c8-a3ee-512a968905f2#System-TCP-Proxy',
- 'port_uuid': 'eni-4144e73c',
- 'weight': 1,
- 'availability_zone': 'us-west-2a',
- 'enabled': True,
- 'flow_dist': 'LOAD_AWARE',
- 'subnet_uuid': 'subnet-91f0b6f4',
- 'delay_fairness': False,
- 'avi_allocated_vip': True,
- 'vrf_context_ref': 'https://12.97.16.202/api/vrfcontext/vrfcontext-722b280d-b555-4d82-9b35-af9442c0cb86#global',
- 'subnet': {
- 'ip_addr': {
- 'type': 'V4',
- 'addr': '198.51.100.0'
- },
- 'mask': 24
- },
- 'cloud_type': 'CLOUD_AWS', 'uuid': 'virtualservice-a5f49b99-22c8-42e6-aa65-3ca5f1e36b9e',
- 'network_ref': 'https://12.97.16.202/api/network/subnet-91f0b6f4',
- 'cloud_ref': 'https://12.97.16.202/api/cloud/cloud-49829414-c704-43ca-9dff-05b9e8474dcb#AWS Cloud',
- 'avi_allocated_fip': False,
- 'se_group_ref': 'https://12.97.16.202/api/serviceenginegroup/serviceenginegroup-3bef6320-5a2d-4801-85c4-ef4f9841f235#Default-Group',
- 'scaleout_ecmp': False,
- 'max_cps_per_client': 0,
- 'type': 'VS_TYPE_NORMAL',
- 'analytics_profile_ref': 'https://12.97.16.202/api/analyticsprofile/analyticsprofile-70f8b06f-7b6a-4500-b829-c869bbca2009#System-Analytics-Profile',
- 'use_bridge_ip_as_vip': False,
- 'application_profile_ref': 'https://12.97.16.202/api/applicationprofile/applicationprofile-103cbc31-cac5-46ab-8e66-bbbb2c8f551f#System-HTTP',
- 'auto_allocate_floating_ip': False,
- 'services': [{
- 'enable_ssl': False,
- 'port_range_end': 80,
- 'port': 80
- }],
- 'active_standby_se_tag': 'ACTIVE_STANDBY_SE_1',
- 'ip_address': {
- 'type': 'V4',
- 'addr': '198.51.100.33'
- },
- 'ign_pool_net_reach': False,
- 'east_west_placement': False,
- 'limit_doser': False,
- 'name': 'wwwawssit.ebiz.verizon.com',
- 'url': 'https://12.97.16.202/api/virtualservice/virtualservice-a5f49b99-22c8-42e6-aa65-3ca5f1e36b9e#wwwawssit.ebiz.verizon.com',
- 'ssl_sess_cache_avg_size': 1024,
- 'enable_autogw': True,
- 'auto_allocate_ip': True,
- 'tenant_ref': 'https://12.97.16.202/api/tenant/tenant-f52f7a3e-6876-4bb9-b8f7-3cab636dadf2#Sales',
- 'remove_listening_port_on_vs_down': False
- }
- obj = {'auto_allocate_ip': True, 'subnet_uuid': 'subnet-91f0b6f4', 'cloud_ref': '/api/cloud?name=AWS Cloud', 'services': [{'port': 80}],
- 'name': 'wwwawssit.ebiz.verizon.com'}
-
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- def testhttppolicy(self):
- existing_obj = {
- "http_request_policy": {
- "rules": [{
- "enable": True,
- "index": 0,
- "match": {
- "path": {
- "match_case": "INSENSITIVE",
- "match_criteria": "CONTAINS",
- "match_str": ["xvz", "rst"]
- }
- },
- "name": "blah",
- "switching_action": {
- "action": "HTTP_SWITCHING_SELECT_POOL",
- "pool_ref": "https://12.97.16.202/api/pool/pool-d7f6f5e7-bd26-49ad-aeed-965719eb140b#abc",
- "status_code": "HTTP_LOCAL_RESPONSE_STATUS_CODE_200"
- }
- }]
- },
- "is_internal_policy": False,
- "name": "blah",
- "tenant_ref": "https://12.97.16.202/api/tenant/tenant-f52f7a3e-6876-4bb9-b8f7-3cab636dadf2#Sales",
- "url": "https://12.97.16.202/api/httppolicyset/httppolicyset-ffd8354b-671b-48d5-92cc-69a9057aad0c#blah",
- "uuid": "httppolicyset-ffd8354b-671b-48d5-92cc-69a9057aad0c"
- }
-
- obj = {
- "http_request_policy": {
- "rules": [{
- "enable": True,
- "index": "0",
- "match": {
- "path": {
- "match_case": "INSENSITIVE",
- "match_criteria": "CONTAINS",
- "match_str": ["xvz", "rst"]
- }
- },
- "name": "blah",
- "switching_action": {
- "action": "HTTP_SWITCHING_SELECT_POOL",
- "pool_ref": "/api/pool?name=abc",
- "status_code": "HTTP_LOCAL_RESPONSE_STATUS_CODE_200"
- }
- }]
- },
- "is_internal_policy": False,
- "tenant": "Sales"
- }
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- def testCleanupFields(self):
- obj = {'name': 'testpool',
- 'scalar_field': {'state': 'absent'},
- 'list_fields': [{'x': '1'}, {'y': {'state': 'absent'}}]}
-
- cleanup_absent_fields(obj)
- assert 'scalar_field' not in obj
- for elem in obj['list_fields']:
- assert 'y' not in elem
-
- def testGSLB(self):
- obj = {
- 'domain_names': ['cloud5.avi.com', 'cloud6.avi.com'],
- 'health_monitor_scope': 'GSLB_SERVICE_HEALTH_MONITOR_ALL_MEMBERS',
- 'groups': [{
- 'priority': 20,
- 'members': [{
- 'ip': {
- 'type': 'V4',
- 'addr': '198.51.100.1'
- },
- 'enabled': True, 'ratio': 1
- }, {
- 'ip': {
- 'type': 'V4',
- 'addr': '198.51.100.10'
- },
- 'enabled': True,
- 'ratio': 1
- }],
- 'algorithm': 'GSLB_ALGORITHM_CONSISTENT_HASH',
- 'name': 'sc'
- }, {
- 'priority': 14,
- 'members': [{
- 'ip': {
- 'type': 'V4',
- 'addr': '198.51.100.2'
- },
- 'enabled': True,
- 'ratio': 1
- }],
- 'algorithm': 'GSLB_ALGORITHM_ROUND_ROBIN',
- 'name': 'cn'
- }, {
- 'priority': 15,
- 'members': [{
- 'ip': {
- 'type': 'V4',
- 'addr': '198.51.100.3'
- },
- 'enabled': True, 'ratio': 1
- }],
- 'algorithm': 'GSLB_ALGORITHM_ROUND_ROBIN',
- 'name': 'in'
- }],
- 'name': 'gs-3',
- 'num_dns_ip': 2
- }
- existing_obj = {
- u'controller_health_status_enabled': True,
- u'uuid': u'gslbservice-ab9b36bd-3e95-4c2e-80f8-92905c2eccb2',
- u'wildcard_match': False,
- u'url': u'https://192.0.2.42/api/gslbservice/gslbservice-ab9b36bd-3e95-4c2e-80f8-92905c2eccb2#gs-3',
- u'tenant_ref': u'https://192.0.2.42/api/tenant/admin#admin',
- u'enabled': True,
- u'domain_names': [u'cloud5.avi.com', u'cloud6.avi.com'],
- u'use_edns_client_subnet': True,
- u'groups': [{
- u'priority': 20,
- u'members': [{
- u'ip': {
- u'type': u'V4',
- u'addr': u'198.51.100.1'
- },
- u'ratio': 1,
- u'enabled': True
- }, {
- u'ip': {
- u'type': u'V4',
- u'addr': u'198.51.100.10'
- },
- u'ratio': 1,
- u'enabled': True
- }],
- u'name': u'sc',
- u'algorithm': u'GSLB_ALGORITHM_CONSISTENT_HASH'
- }, {
- u'priority': 14,
- u'members': [{
- u'ip': {
- u'type': u'V4',
- u'addr': u'198.51.100.2'
- },
- u'ratio': 1,
- u'enabled': True
- }],
- u'name': u'cn',
- u'algorithm': u'GSLB_ALGORITHM_ROUND_ROBIN'
- }, {
- u'priority': 15,
- u'members': [{
- u'ip': {
- u'type': u'V4',
- u'addr': u'198.51.100.3'
- },
- u'ratio': 1,
- u'enabled': True
- }],
- u'name': u'in',
- u'algorithm': u'GSLB_ALGORITHM_ROUND_ROBIN'
- }],
- u'num_dns_ip': 2,
- u'health_monitor_scope': u'GSLB_SERVICE_HEALTH_MONITOR_ALL_MEMBERS',
- u'name': u'gs-3'
- }
- diff = avi_obj_cmp(obj, existing_obj)
- assert diff
-
- def testNoneParams(self):
- objwnone = {
- 'name': 'testpool',
- 'scalar_field': None,
- 'list_fields': {
- 'y': None,
- 'z': 'zz'
- }
- }
- obj = {
- 'name': 'testpool',
- 'list_fields': {
- 'z': 'zz'
- }
- }
-
- result = avi_obj_cmp(objwnone, obj)
- assert result
diff --git a/test/units/module_utils/network/ftd/test_common.py b/test/units/module_utils/network/ftd/test_common.py
deleted file mode 100644
index 0f10a4cf66..0000000000
--- a/test/units/module_utils/network/ftd/test_common.py
+++ /dev/null
@@ -1,446 +0,0 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from ansible.module_utils.network.ftd.common import equal_objects, delete_ref_duplicates, construct_ansible_facts
-
-
-# simple objects
-
-def test_equal_objects_return_false_with_different_length():
- assert not equal_objects(
- {'foo': 1},
- {'foo': 1, 'bar': 2}
- )
-
-
-def test_equal_objects_return_false_with_different_fields():
- assert not equal_objects(
- {'foo': 1},
- {'bar': 1}
- )
-
-
-def test_equal_objects_return_false_with_different_value_types():
- assert not equal_objects(
- {'foo': 1},
- {'foo': '1'}
- )
-
-
-def test_equal_objects_return_false_with_different_values():
- assert not equal_objects(
- {'foo': 1},
- {'foo': 2}
- )
-
-
-def test_equal_objects_return_false_with_different_nested_values():
- assert not equal_objects(
- {'foo': {'bar': 1}},
- {'foo': {'bar': 2}}
- )
-
-
-def test_equal_objects_return_false_with_different_list_length():
- assert not equal_objects(
- {'foo': []},
- {'foo': ['bar']}
- )
-
-
-def test_equal_objects_return_true_with_equal_objects():
- assert equal_objects(
- {'foo': 1, 'bar': 2},
- {'bar': 2, 'foo': 1}
- )
-
-
-def test_equal_objects_return_true_with_equal_str_like_values():
- assert equal_objects(
- {'foo': b'bar'},
- {'foo': u'bar'}
- )
-
-
-def test_equal_objects_return_true_with_equal_nested_dicts():
- assert equal_objects(
- {'foo': {'bar': 1, 'buz': 2}},
- {'foo': {'buz': 2, 'bar': 1}}
- )
-
-
-def test_equal_objects_return_true_with_equal_lists():
- assert equal_objects(
- {'foo': ['bar']},
- {'foo': ['bar']}
- )
-
-
-def test_equal_objects_return_true_with_ignored_fields():
- assert equal_objects(
- {'foo': 1, 'version': '123', 'id': '123123'},
- {'foo': 1}
- )
-
-
-# objects with object references
-
-def test_equal_objects_return_true_with_different_ref_ids():
- assert not equal_objects(
- {'foo': {'id': '1', 'type': 'network', 'ignored_field': 'foo'}},
- {'foo': {'id': '2', 'type': 'network', 'ignored_field': 'bar'}}
- )
-
-
-def test_equal_objects_return_true_with_different_ref_types():
- assert not equal_objects(
- {'foo': {'id': '1', 'type': 'network', 'ignored_field': 'foo'}},
- {'foo': {'id': '1', 'type': 'accessRule', 'ignored_field': 'bar'}}
- )
-
-
-def test_equal_objects_return_true_with_same_object_refs():
- assert equal_objects(
- {'foo': {'id': '1', 'type': 'network', 'ignored_field': 'foo'}},
- {'foo': {'id': '1', 'type': 'network', 'ignored_field': 'bar'}}
- )
-
-
-# objects with array of object references
-
-def test_equal_objects_return_false_with_different_array_length():
- assert not equal_objects(
- {'foo': [
- {'id': '1', 'type': 'network', 'ignored_field': 'foo'}
- ]},
- {'foo': []}
- )
-
-
-def test_equal_objects_return_false_with_different_array_order():
- assert not equal_objects(
- {'foo': [
- {'id': '1', 'type': 'network', 'ignored_field': 'foo'},
- {'id': '2', 'type': 'network', 'ignored_field': 'bar'}
- ]},
- {'foo': [
- {'id': '2', 'type': 'network', 'ignored_field': 'foo'},
- {'id': '1', 'type': 'network', 'ignored_field': 'bar'}
- ]}
- )
-
-
-def test_equal_objects_return_true_with_equal_ref_arrays():
- assert equal_objects(
- {'foo': [
- {'id': '1', 'type': 'network', 'ignored_field': 'foo'}
- ]},
- {'foo': [
- {'id': '1', 'type': 'network', 'ignored_field': 'bar'}
- ]}
- )
-
-
-# objects with nested structures and object references
-
-def test_equal_objects_return_true_with_equal_nested_object_references():
- assert equal_objects(
- {
- 'name': 'foo',
- 'config': {
- 'version': '1',
- 'port': {
- 'name': 'oldPortName',
- 'type': 'port',
- 'id': '123'
- }
- }
- },
- {
- 'name': 'foo',
- 'config': {
- 'version': '1',
- 'port': {
- 'name': 'newPortName',
- 'type': 'port',
- 'id': '123'
- }
- }
- }
- )
-
-
-def test_equal_objects_return_false_with_different_nested_object_references():
- assert not equal_objects(
- {
- 'name': 'foo',
- 'config': {
- 'version': '1',
- 'port': {
- 'name': 'oldPortName',
- 'type': 'port',
- 'id': '123'
- }
- }
- },
- {
- 'name': 'foo',
- 'config': {
- 'version': '1',
- 'port': {
- 'name': 'oldPortName',
- 'type': 'port',
- 'id': '234'
- }
- }
- }
- )
-
-
-def test_equal_objects_return_true_with_equal_nested_list_of_object_references():
- assert equal_objects(
- {
- 'name': 'foo',
- 'config': {
- 'version': '1',
- 'ports': [{
- 'name': 'oldPortName',
- 'type': 'port',
- 'id': '123'
- }, {
- 'name': 'oldPortName2',
- 'type': 'port',
- 'id': '234'
- }]
- }
- },
- {
- 'name': 'foo',
- 'config': {
- 'version': '1',
- 'ports': [{
- 'name': 'newPortName',
- 'type': 'port',
- 'id': '123'
- }, {
- 'name': 'newPortName2',
- 'type': 'port',
- 'id': '234',
- 'extraField': 'foo'
- }]
- }
- }
- )
-
-
-def test_equal_objects_return_true_with_reference_list_containing_duplicates():
- assert equal_objects(
- {
- 'name': 'foo',
- 'config': {
- 'version': '1',
- 'ports': [{
- 'name': 'oldPortName',
- 'type': 'port',
- 'id': '123'
- }, {
- 'name': 'oldPortName',
- 'type': 'port',
- 'id': '123'
- }, {
- 'name': 'oldPortName2',
- 'type': 'port',
- 'id': '234'
- }]
- }
- },
- {
- 'name': 'foo',
- 'config': {
- 'version': '1',
- 'ports': [{
- 'name': 'newPortName',
- 'type': 'port',
- 'id': '123'
- }, {
- 'name': 'newPortName2',
- 'type': 'port',
- 'id': '234',
- 'extraField': 'foo'
- }]
- }
- }
- )
-
-
-def test_delete_ref_duplicates_with_none():
- assert delete_ref_duplicates(None) is None
-
-
-def test_delete_ref_duplicates_with_empty_dict():
- assert {} == delete_ref_duplicates({})
-
-
-def test_delete_ref_duplicates_with_simple_object():
- data = {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar',
- 'values': ['a', 'b']
- }
- assert data == delete_ref_duplicates(data)
-
-
-def test_delete_ref_duplicates_with_object_containing_refs():
- data = {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar',
- 'refs': [
- {'id': '123', 'type': 'baz'},
- {'id': '234', 'type': 'baz'},
- {'id': '234', 'type': 'foo'}
- ]
- }
- assert data == delete_ref_duplicates(data)
-
-
-def test_delete_ref_duplicates_with_object_containing_duplicate_refs():
- data = {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar',
- 'refs': [
- {'id': '123', 'type': 'baz'},
- {'id': '123', 'type': 'baz'},
- {'id': '234', 'type': 'baz'},
- {'id': '234', 'type': 'baz'},
- {'id': '234', 'type': 'foo'}
- ]
- }
- assert {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar',
- 'refs': [
- {'id': '123', 'type': 'baz'},
- {'id': '234', 'type': 'baz'},
- {'id': '234', 'type': 'foo'}
- ]
- } == delete_ref_duplicates(data)
-
-
-def test_delete_ref_duplicates_with_object_containing_duplicate_refs_in_nested_object():
- data = {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar',
- 'children': {
- 'refs': [
- {'id': '123', 'type': 'baz'},
- {'id': '123', 'type': 'baz'},
- {'id': '234', 'type': 'baz'},
- {'id': '234', 'type': 'baz'},
- {'id': '234', 'type': 'foo'}
- ]
- }
- }
- assert {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar',
- 'children': {
- 'refs': [
- {'id': '123', 'type': 'baz'},
- {'id': '234', 'type': 'baz'},
- {'id': '234', 'type': 'foo'}
- ]
- }
- } == delete_ref_duplicates(data)
-
-
-def test_construct_ansible_facts_should_make_default_fact_with_name_and_type():
- response = {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar'
- }
-
- assert {'bar_foo': response} == construct_ansible_facts(response, {})
-
-
-def test_construct_ansible_facts_should_not_make_default_fact_with_no_name():
- response = {
- 'id': '123',
- 'name': 'foo'
- }
-
- assert {} == construct_ansible_facts(response, {})
-
-
-def test_construct_ansible_facts_should_not_make_default_fact_with_no_type():
- response = {
- 'id': '123',
- 'type': 'bar'
- }
-
- assert {} == construct_ansible_facts(response, {})
-
-
-def test_construct_ansible_facts_should_use_register_as_when_given():
- response = {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar'
- }
- params = {'register_as': 'fact_name'}
-
- assert {'fact_name': response} == construct_ansible_facts(response, params)
-
-
-def test_construct_ansible_facts_should_extract_items():
- response = {'items': [
- {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar'
- }, {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar'
- }
- ]}
- params = {'register_as': 'fact_name'}
-
- assert {'fact_name': response['items']} == construct_ansible_facts(response, params)
-
-
-def test_construct_ansible_facts_should_ignore_items_with_no_register_as():
- response = {'items': [
- {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar'
- }, {
- 'id': '123',
- 'name': 'foo',
- 'type': 'bar'
- }
- ]}
-
- assert {} == construct_ansible_facts(response, {})
diff --git a/test/units/module_utils/network/ftd/test_configuration.py b/test/units/module_utils/network/ftd/test_configuration.py
deleted file mode 100644
index 2bc3de3ea2..0000000000
--- a/test/units/module_utils/network/ftd/test_configuration.py
+++ /dev/null
@@ -1,588 +0,0 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-import json
-import unittest
-
-import pytest
-from units.compat import mock
-from units.compat.mock import call, patch
-
-from ansible.module_utils.network.ftd.common import HTTPMethod, FtdUnexpectedResponse
-from ansible.module_utils.network.ftd.configuration import iterate_over_pageable_resource, BaseConfigurationResource, \
- OperationChecker, OperationNamePrefix, ParamName, QueryParams
-from ansible.module_utils.network.ftd.fdm_swagger_client import ValidationError, OperationField
-
-
-class TestBaseConfigurationResource(object):
- @pytest.fixture
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_configuration.Connection')
- connection_instance = connection_class_mock.return_value
- connection_instance.validate_data.return_value = True, None
- connection_instance.validate_query_params.return_value = True, None
- connection_instance.validate_path_params.return_value = True, None
-
- return connection_instance
-
- @patch.object(BaseConfigurationResource, '_fetch_system_info')
- @patch.object(BaseConfigurationResource, '_send_request')
- def test_get_objects_by_filter_with_multiple_filters(self, send_request_mock, fetch_system_info_mock,
- connection_mock):
- objects = [
- {'name': 'obj1', 'type': 1, 'foo': {'bar': 'buzz'}},
- {'name': 'obj2', 'type': 1, 'foo': {'bar': 'buz'}},
- {'name': 'obj3', 'type': 2, 'foo': {'bar': 'buzz'}}
- ]
-
- fetch_system_info_mock.return_value = {
- 'databaseInfo': {
- 'buildVersion': '6.3.0'
- }
- }
-
- connection_mock.get_operation_spec.return_value = {
- 'method': HTTPMethod.GET,
- 'url': '/object/'
- }
- resource = BaseConfigurationResource(connection_mock, False)
-
- send_request_mock.side_effect = [{'items': objects}, {'items': []}]
- # resource.get_objects_by_filter returns generator so to be able compare generated list with expected list
- # we need evaluate it.
- assert objects == list(resource.get_objects_by_filter('test', {}))
- send_request_mock.assert_has_calls(
- [
- mock.call('/object/', 'get', {}, {}, {'limit': 10, 'offset': 0})
- ]
- )
-
- send_request_mock.reset_mock()
- send_request_mock.side_effect = [{'items': objects}, {'items': []}]
- # resource.get_objects_by_filter returns generator so to be able compare generated list with expected list
- # we need evaluate it.
- assert [objects[0]] == list(resource.get_objects_by_filter('test', {ParamName.FILTERS: {'name': 'obj1'}}))
- send_request_mock.assert_has_calls(
- [
- mock.call('/object/', 'get', {}, {}, {QueryParams.FILTER: 'name:obj1', 'limit': 10, 'offset': 0})
- ]
- )
-
- send_request_mock.reset_mock()
- send_request_mock.side_effect = [{'items': objects}, {'items': []}]
- # resource.get_objects_by_filter returns generator so to be able compare generated list with expected list
- # we need evaluate it.
- assert [objects[1]] == list(resource.get_objects_by_filter(
- 'test',
- {ParamName.FILTERS: {'name': 'obj2', 'type': 1, 'foo': {'bar': 'buz'}}}))
-
- send_request_mock.assert_has_calls(
- [
- mock.call('/object/', 'get', {}, {}, {QueryParams.FILTER: 'name:obj2', 'limit': 10, 'offset': 0})
- ]
- )
-
- @patch.object(BaseConfigurationResource, '_fetch_system_info')
- @patch.object(BaseConfigurationResource, '_send_request')
- def test_get_objects_by_filter_with_multiple_responses(self, send_request_mock, fetch_system_info_mock,
- connection_mock):
- send_request_mock.side_effect = [
- {'items': [
- {'name': 'obj1', 'type': 'foo'},
- {'name': 'obj2', 'type': 'bar'}
- ]},
- {'items': [
- {'name': 'obj3', 'type': 'foo'}
- ]},
- {'items': []}
- ]
- fetch_system_info_mock.return_value = {
- 'databaseInfo': {
- 'buildVersion': '6.3.0'
- }
- }
- connection_mock.get_operation_spec.return_value = {
- 'method': HTTPMethod.GET,
- 'url': '/object/'
- }
- resource = BaseConfigurationResource(connection_mock, False)
- assert [{'name': 'obj1', 'type': 'foo'}] == list(resource.get_objects_by_filter(
- 'test',
- {ParamName.FILTERS: {'type': 'foo'}}))
- send_request_mock.assert_has_calls(
- [
- mock.call('/object/', 'get', {}, {}, {'limit': 10, 'offset': 0})
- ]
- )
-
- send_request_mock.reset_mock()
- send_request_mock.side_effect = [
- {'items': [
- {'name': 'obj1', 'type': 'foo'},
- {'name': 'obj2', 'type': 'bar'}
- ]},
- {'items': [
- {'name': 'obj3', 'type': 'foo'}
- ]},
- {'items': []}
- ]
- resp = list(resource.get_objects_by_filter(
- 'test',
- {
- ParamName.FILTERS: {'type': 'foo'},
- ParamName.QUERY_PARAMS: {'limit': 2}
- }))
- assert [{'name': 'obj1', 'type': 'foo'}, {'name': 'obj3', 'type': 'foo'}] == resp
- send_request_mock.assert_has_calls(
- [
- mock.call('/object/', 'get', {}, {}, {'limit': 2, 'offset': 0}),
- mock.call('/object/', 'get', {}, {}, {'limit': 2, 'offset': 2})
- ]
- )
-
- def test_module_should_fail_if_validation_error_in_data(self, connection_mock):
- connection_mock.get_operation_spec.return_value = {'method': HTTPMethod.POST, 'url': '/test'}
- report = {
- 'required': ['objects[0].type'],
- 'invalid_type': [
- {
- 'path': 'objects[3].id',
- 'expected_type': 'string',
- 'actually_value': 1
- }
- ]
- }
- connection_mock.validate_data.return_value = (False, json.dumps(report, sort_keys=True, indent=4))
-
- with pytest.raises(ValidationError) as e_info:
- resource = BaseConfigurationResource(connection_mock, False)
- resource.crud_operation('addTest', {'data': {}})
-
- result = e_info.value.args[0]
- key = 'Invalid data provided'
- assert result[key]
- result[key] = json.loads(result[key])
- assert result == {key: {
- 'invalid_type': [{'actually_value': 1, 'expected_type': 'string', 'path': 'objects[3].id'}],
- 'required': ['objects[0].type']
- }}
-
- def test_module_should_fail_if_validation_error_in_query_params(self, connection_mock):
- connection_mock.get_operation_spec.return_value = {'method': HTTPMethod.GET, 'url': '/test',
- 'returnMultipleItems': False}
- report = {
- 'required': ['objects[0].type'],
- 'invalid_type': [
- {
- 'path': 'objects[3].id',
- 'expected_type': 'string',
- 'actually_value': 1
- }
- ]
- }
- connection_mock.validate_query_params.return_value = (False, json.dumps(report, sort_keys=True, indent=4))
-
- with pytest.raises(ValidationError) as e_info:
- resource = BaseConfigurationResource(connection_mock, False)
- resource.crud_operation('getTestList', {'data': {}})
-
- result = e_info.value.args[0]
-
- key = 'Invalid query_params provided'
- assert result[key]
- result[key] = json.loads(result[key])
-
- assert result == {key: {
- 'invalid_type': [{'actually_value': 1, 'expected_type': 'string', 'path': 'objects[3].id'}],
- 'required': ['objects[0].type']}}
-
- def test_module_should_fail_if_validation_error_in_path_params(self, connection_mock):
- connection_mock.get_operation_spec.return_value = {'method': HTTPMethod.GET, 'url': '/test',
- 'returnMultipleItems': False}
- report = {
- 'path_params': {
- 'required': ['objects[0].type'],
- 'invalid_type': [
- {
- 'path': 'objects[3].id',
- 'expected_type': 'string',
- 'actually_value': 1
- }
- ]
- }
- }
- connection_mock.validate_path_params.return_value = (False, json.dumps(report, sort_keys=True, indent=4))
-
- with pytest.raises(ValidationError) as e_info:
- resource = BaseConfigurationResource(connection_mock, False)
- resource.crud_operation('putTest', {'data': {}})
-
- result = e_info.value.args[0]
-
- key = 'Invalid path_params provided'
- assert result[key]
- result[key] = json.loads(result[key])
-
- assert result == {key: {
- 'path_params': {
- 'invalid_type': [{'actually_value': 1, 'expected_type': 'string', 'path': 'objects[3].id'}],
- 'required': ['objects[0].type']}}}
-
- def test_module_should_fail_if_validation_error_in_all_params(self, connection_mock):
- connection_mock.get_operation_spec.return_value = {'method': HTTPMethod.POST, 'url': '/test'}
- report = {
- 'data': {
- 'required': ['objects[0].type'],
- 'invalid_type': [
- {
- 'path': 'objects[3].id',
- 'expected_type': 'string',
- 'actually_value': 1
- }
- ]
- },
- 'path_params': {
- 'required': ['some_param'],
- 'invalid_type': [
- {
- 'path': 'name',
- 'expected_type': 'string',
- 'actually_value': True
- }
- ]
- },
- 'query_params': {
- 'required': ['other_param'],
- 'invalid_type': [
- {
- 'path': 'f_integer',
- 'expected_type': 'integer',
- 'actually_value': "test"
- }
- ]
- }
- }
- connection_mock.validate_data.return_value = (False, json.dumps(report['data'], sort_keys=True, indent=4))
- connection_mock.validate_query_params.return_value = (False,
- json.dumps(report['query_params'], sort_keys=True,
- indent=4))
- connection_mock.validate_path_params.return_value = (False,
- json.dumps(report['path_params'], sort_keys=True,
- indent=4))
-
- with pytest.raises(ValidationError) as e_info:
- resource = BaseConfigurationResource(connection_mock, False)
- resource.crud_operation('putTest', {'data': {}})
-
- result = e_info.value.args[0]
-
- key_data = 'Invalid data provided'
- assert result[key_data]
- result[key_data] = json.loads(result[key_data])
-
- key_path_params = 'Invalid path_params provided'
- assert result[key_path_params]
- result[key_path_params] = json.loads(result[key_path_params])
-
- key_query_params = 'Invalid query_params provided'
- assert result[key_query_params]
- result[key_query_params] = json.loads(result[key_query_params])
-
- assert result == {
- key_data: {'invalid_type': [{'actually_value': 1, 'expected_type': 'string', 'path': 'objects[3].id'}],
- 'required': ['objects[0].type']},
- key_path_params: {'invalid_type': [{'actually_value': True, 'expected_type': 'string', 'path': 'name'}],
- 'required': ['some_param']},
- key_query_params: {
- 'invalid_type': [{'actually_value': 'test', 'expected_type': 'integer', 'path': 'f_integer'}],
- 'required': ['other_param']}}
-
- @pytest.mark.parametrize("test_api_version, expected_result",
- [
- ("6.2.3", "name:object_name"),
- ("6.3.0", "name:object_name"),
- ("6.4.0", "fts~object_name")
- ]
- )
- def test_stringify_name_filter(self, test_api_version, expected_result, connection_mock):
- filters = {"name": "object_name"}
-
- with patch.object(BaseConfigurationResource, '_fetch_system_info') as fetch_system_info_mock:
- fetch_system_info_mock.return_value = {
- 'databaseInfo': {
- 'buildVersion': test_api_version
- }
- }
- resource = BaseConfigurationResource(connection_mock, False)
-
- assert resource._stringify_name_filter(filters) == expected_result, "Unexpected result for version %s" % (
- test_api_version)
-
-
-class TestIterateOverPageableResource(object):
-
- def test_iterate_over_pageable_resource_with_no_items(self):
- resource_func = mock.Mock(return_value={'items': []})
-
- items = iterate_over_pageable_resource(resource_func, {'query_params': {}})
-
- assert [] == list(items)
-
- def test_iterate_over_pageable_resource_with_one_page(self):
- resource_func = mock.Mock(side_effect=[
- {'items': ['foo', 'bar']},
- {'items': []},
- ])
-
- items = iterate_over_pageable_resource(resource_func, {'query_params': {}})
-
- assert ['foo', 'bar'] == list(items)
- resource_func.assert_has_calls([
- call(params={'query_params': {'offset': 0, 'limit': 10}})
- ])
-
- def test_iterate_over_pageable_resource_with_multiple_pages(self):
- objects = [
- {'items': ['foo']},
- {'items': ['bar']},
- {'items': ['buzz']},
- {'items': []},
- ]
- resource_func = mock.Mock(side_effect=objects)
-
- items = iterate_over_pageable_resource(resource_func, {'query_params': {}})
- assert ['foo'] == list(items)
-
- resource_func.reset_mock()
- resource_func = mock.Mock(side_effect=objects)
- items = iterate_over_pageable_resource(resource_func, {'query_params': {'limit': 1}})
- assert ['foo', 'bar', 'buzz'] == list(items)
-
- def test_iterate_over_pageable_resource_should_preserve_query_params(self):
- resource_func = mock.Mock(return_value={'items': []})
-
- items = iterate_over_pageable_resource(resource_func, {'query_params': {'filter': 'name:123'}})
-
- assert [] == list(items)
- resource_func.assert_called_once_with(params={'query_params': {'filter': 'name:123', 'offset': 0, 'limit': 10}})
-
- def test_iterate_over_pageable_resource_should_preserve_limit(self):
- resource_func = mock.Mock(side_effect=[
- {'items': ['foo']},
- {'items': []},
- ])
-
- items = iterate_over_pageable_resource(resource_func, {'query_params': {'limit': 1}})
-
- assert ['foo'] == list(items)
- resource_func.assert_has_calls([
- call(params={'query_params': {'offset': 0, 'limit': 1}})
- ])
-
- def test_iterate_over_pageable_resource_should_preserve_offset(self):
- resource_func = mock.Mock(side_effect=[
- {'items': ['foo']},
- {'items': []},
- ])
-
- items = iterate_over_pageable_resource(resource_func, {'query_params': {'offset': 3}})
-
- assert ['foo'] == list(items)
- resource_func.assert_has_calls([
- call(params={'query_params': {'offset': 3, 'limit': 10}}),
- ])
-
- def test_iterate_over_pageable_resource_should_pass_with_string_offset_and_limit(self):
- resource_func = mock.Mock(side_effect=[
- {'items': ['foo']},
- {'items': []},
- ])
-
- items = iterate_over_pageable_resource(resource_func, {'query_params': {'offset': '1', 'limit': '1'}})
-
- assert ['foo'] == list(items)
- resource_func.assert_has_calls([
- call(params={'query_params': {'offset': '1', 'limit': '1'}}),
- call(params={'query_params': {'offset': 2, 'limit': '1'}})
- ])
-
- def test_iterate_over_pageable_resource_raises_exception_when_server_returned_more_items_than_requested(self):
- resource_func = mock.Mock(side_effect=[
- {'items': ['foo', 'redundant_bar']},
- {'items': []},
- ])
-
- with pytest.raises(FtdUnexpectedResponse):
- list(iterate_over_pageable_resource(resource_func, {'query_params': {'offset': '1', 'limit': '1'}}))
-
- resource_func.assert_has_calls([
- call(params={'query_params': {'offset': '1', 'limit': '1'}})
- ])
-
-
-class TestOperationCheckerClass(unittest.TestCase):
- def setUp(self):
- self._checker = OperationChecker
-
- def test_is_add_operation_positive(self):
- operation_name = OperationNamePrefix.ADD + "Object"
- operation_spec = {OperationField.METHOD: HTTPMethod.POST}
- assert self._checker.is_add_operation(operation_name, operation_spec)
-
- def test_is_add_operation_wrong_method_in_spec(self):
- operation_name = OperationNamePrefix.ADD + "Object"
- operation_spec = {OperationField.METHOD: HTTPMethod.GET}
- assert not self._checker.is_add_operation(operation_name, operation_spec)
-
- def test_is_add_operation_negative_wrong_operation_name(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {OperationField.METHOD: HTTPMethod.POST}
- assert not self._checker.is_add_operation(operation_name, operation_spec)
-
- def test_is_edit_operation_positive(self):
- operation_name = OperationNamePrefix.EDIT + "Object"
- operation_spec = {OperationField.METHOD: HTTPMethod.PUT}
- assert self._checker.is_edit_operation(operation_name, operation_spec)
-
- def test_is_edit_operation_wrong_method_in_spec(self):
- operation_name = OperationNamePrefix.EDIT + "Object"
- operation_spec = {OperationField.METHOD: HTTPMethod.GET}
- assert not self._checker.is_edit_operation(operation_name, operation_spec)
-
- def test_is_edit_operation_negative_wrong_operation_name(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {OperationField.METHOD: HTTPMethod.PUT}
- assert not self._checker.is_edit_operation(operation_name, operation_spec)
-
- def test_is_delete_operation_positive(self):
- operation_name = OperationNamePrefix.DELETE + "Object"
- operation_spec = {OperationField.METHOD: HTTPMethod.DELETE}
- self.assertTrue(
- self._checker.is_delete_operation(operation_name, operation_spec)
- )
-
- def test_is_delete_operation_wrong_method_in_spec(self):
- operation_name = OperationNamePrefix.DELETE + "Object"
- operation_spec = {OperationField.METHOD: HTTPMethod.GET}
- assert not self._checker.is_delete_operation(operation_name, operation_spec)
-
- def test_is_delete_operation_negative_wrong_operation_name(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {OperationField.METHOD: HTTPMethod.DELETE}
- assert not self._checker.is_delete_operation(operation_name, operation_spec)
-
- def test_is_get_list_operation_positive(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {
- OperationField.METHOD: HTTPMethod.GET,
- OperationField.RETURN_MULTIPLE_ITEMS: True
- }
- assert self._checker.is_get_list_operation(operation_name, operation_spec)
-
- def test_is_get_list_operation_wrong_method_in_spec(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {
- OperationField.METHOD: HTTPMethod.POST,
- OperationField.RETURN_MULTIPLE_ITEMS: True
- }
- assert not self._checker.is_get_list_operation(operation_name, operation_spec)
-
- def test_is_get_list_operation_does_not_return_list(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {
- OperationField.METHOD: HTTPMethod.GET,
- OperationField.RETURN_MULTIPLE_ITEMS: False
- }
- assert not self._checker.is_get_list_operation(operation_name, operation_spec)
-
- def test_is_get_operation_positive(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {
- OperationField.METHOD: HTTPMethod.GET,
- OperationField.RETURN_MULTIPLE_ITEMS: False
- }
- self.assertTrue(
- self._checker.is_get_operation(operation_name, operation_spec)
- )
-
- def test_is_get_operation_wrong_method_in_spec(self):
- operation_name = OperationNamePrefix.ADD + "Object"
- operation_spec = {
- OperationField.METHOD: HTTPMethod.POST,
- OperationField.RETURN_MULTIPLE_ITEMS: False
- }
- assert not self._checker.is_get_operation(operation_name, operation_spec)
-
- def test_is_get_operation_negative_when_returns_multiple(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {
- OperationField.METHOD: HTTPMethod.GET,
- OperationField.RETURN_MULTIPLE_ITEMS: True
- }
- assert not self._checker.is_get_operation(operation_name, operation_spec)
-
- def test_is_upsert_operation_positive(self):
- operation_name = OperationNamePrefix.UPSERT + "Object"
- assert self._checker.is_upsert_operation(operation_name)
-
- def test_is_upsert_operation_with_wrong_operation_name(self):
- for op_type in [OperationNamePrefix.ADD, OperationNamePrefix.GET, OperationNamePrefix.EDIT,
- OperationNamePrefix.DELETE]:
- operation_name = op_type + "Object"
- assert not self._checker.is_upsert_operation(operation_name)
-
- def test_is_find_by_filter_operation(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {
- OperationField.METHOD: HTTPMethod.GET,
- OperationField.RETURN_MULTIPLE_ITEMS: True
- }
- params = {ParamName.FILTERS: 1}
- self.assertTrue(
- self._checker.is_find_by_filter_operation(
- operation_name, params, operation_spec
- )
- )
-
- def test_is_find_by_filter_operation_negative_when_filters_empty(self):
- operation_name = OperationNamePrefix.GET + "Object"
- operation_spec = {
- OperationField.METHOD: HTTPMethod.GET,
- OperationField.RETURN_MULTIPLE_ITEMS: True
- }
- params = {ParamName.FILTERS: None}
- assert not self._checker.is_find_by_filter_operation(
- operation_name, params, operation_spec
- )
-
- params = {}
- assert not self._checker.is_find_by_filter_operation(
- operation_name, params, operation_spec
- )
-
- def test_is_upsert_operation_supported_operation(self):
- get_list_op_spec = {OperationField.METHOD: HTTPMethod.GET, OperationField.RETURN_MULTIPLE_ITEMS: True}
- add_op_spec = {OperationField.METHOD: HTTPMethod.POST}
- edit_op_spec = {OperationField.METHOD: HTTPMethod.PUT}
-
- assert self._checker.is_upsert_operation_supported({'getList': get_list_op_spec, 'edit': edit_op_spec})
- assert self._checker.is_upsert_operation_supported(
- {'add': add_op_spec, 'getList': get_list_op_spec, 'edit': edit_op_spec})
- assert not self._checker.is_upsert_operation_supported({'getList': get_list_op_spec})
- assert not self._checker.is_upsert_operation_supported({'edit': edit_op_spec})
- assert not self._checker.is_upsert_operation_supported({'getList': get_list_op_spec, 'add': add_op_spec})
diff --git a/test/units/module_utils/network/ftd/test_data/ngfw_with_ex.json b/test/units/module_utils/network/ftd/test_data/ngfw_with_ex.json
deleted file mode 100644
index 10259c519d..0000000000
--- a/test/units/module_utils/network/ftd/test_data/ngfw_with_ex.json
+++ /dev/null
@@ -1 +0,0 @@
-{"swagger":"2.0","schemes":["https","http"],"consumes":["application/json"],"produces":["application/json"],"info":{"title":"Firepower Threat Defense REST API","version":"2.0.0"},"basePath":"/api/fdm/v2","definitions":{"AAAIdentitySourceStatus":{"type":"string","enum":["ACTIVE","INACTIVE"]},"AAASetting":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"identitySourceGroup":{"type":"object","$ref":"#/definitions/ReferenceModel"},"description":{"type":"string"},"protocolType":{"type":"object","$ref":"#/definitions/IdentitySourceProtocolType"},"useLocal":{"type":"object","$ref":"#/definitions/UseLocal"},"id":{"type":"string"},"type":{"type":"string","default":"aaasetting"}},"required":["identitySourceGroup","useLocal","protocolType","type"],"example":{"id":"26a27672-4b9a-579f-a3ee-74a0b55f2742","version":"4479b721-10a2-5c04-a227-4c763c7ca43c","description":"Owofagfa co ji vo pegcil cubu oplikik jejjepju wepiuje celado ibunej tecbele li nakrut cub heej joonkac wamregvec.","protocolType":"SSH","identitySourceGroup":{"id":"1fc4ab36-2377-5bd1-ae93-af99820ed7f8","version":"23c0dd6d-7756-5417-9cd4-41cc24e3a28f","name":"RadiusIdentitySourceGroup15","description":"Ce ru kugecdak ja dirgus zo naidevi rifwa va fe dadovol zemkeriw ge al decnege ve cotwajub mimafgo.","radiusIdentitySources":[{"id":"98de28ef-9898-55c4-b6ce-bcee24ee6d57","version":"280b0f79-9611-5086-b9b8-f51ddcef906a","name":"RadiusIdentitySource1","description":"Saranmun tevvoiga debozbo kuz beregu irepoge novemad uviohze nanlev jepezweg coaf ehlumvun.","host":"109.170.119.220","timeout":192,"serverAuthenticationPort":15336,"serverSecretKey":"","capabilities":["AUTHENTICATION","PASSIVE_IDENTITY"],"type":"radiusidentitysource"},{"id":"6337c699-3dcf-5160-8222-135f13129125","version":"811fa9af-23a7-5074-88c4-dcae37336fcc","name":"RadiusIdentitySource5","description":"Logabaho ruppiful iva losifah dah guhejku hitotnos linolhut umgutul dud mu otzosu vigit tevodofi moksoezu livufauk.","host":"97.98.218.73","timeout":74,"serverAuthenticationPort":42065,"serverSecretKey":"","capabilities":["ACCOUNTING","AUTHENTICATION","AUTHORIZATION","DIRECTORY_SERVICES","PASSIVE_IDENTITY"],"type":"radiusidentitysource"}],"deadTime":69,"maxFailedAttempts":2,"type":"radiusidentitysourcegroup"},"useLocal":"AFTER","type":"aaasetting"}},"AAASettingWrapper":{"allOf":[{"$ref":"#/definitions/AAASetting"},{"$ref":"#/definitions/LinksWrapper"}]},"AccessControlRuleBase$EventLogAction":{"type":"string","enum":["LOG_FLOW_START","LOG_FLOW_END","LOG_BOTH","LOG_NONE"]},"AccessControlRuleBase$AcRuleAction":{"type":"string","enum":["PERMIT","TRUST","DENY"]},"AccessControlRuleDeployInfo":{"type":"object","properties":{"order":{"type":"integer"},"ruleId":{"type":"integer"},"eventLogAction":{"type":"object","$ref":"#/definitions/AccessControlRuleBase$EventLogAction"},"ruleUuid":{"type":"string"},"numRemarkLines":{"type":"integer"},"aclLineChecksums":{"type":"array","items":{"type":"string"}},"type":{"type":"string","default":"accesscontrolruledeployinfo"}},"required":["type"]},"AccessDefaultAction":{"type":"object","properties":{"action":{"type":"object","$ref":"#/definitions/AccessControlRuleBase$AcRuleAction"},"eventLogAction":{"type":"object","$ref":"#/definitions/AccessControlRuleBase$EventLogAction"},"intrusionPolicy":{"type":"object","$ref":"#/definitions/ReferenceModel"},"syslogServer":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"accessdefaultaction"}},"required":["type"],"example":{"action":"TRUST","eventLogAction":"LOG_BOTH","type":"accessdefaultaction"}},"AccessPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"defaultAction":{"type":"object","$ref":"#/definitions/AccessDefaultAction"},"sslPolicy":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"identityPolicySetting":{"type":"object","$ref":"#/definitions/ReferenceModel"},"securityIntelligence":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"accesspolicy"}},"required":["type"],"example":{"id":"default","rules":[{"id":"f7443881-d20e-5699-8f66-55481ef54196","version":"9171ae71-46df-514d-a690-9484e8950569","ruleId":1,"name":"err","protocol":"TCP","ruleAction":"TRUST","eventLogAction":"LOG_FLOW_END","syslogServer":{"id":"b7731ecd-011b-5f95-90b4-72b024a040d9","version":"8287a57f-56d1-51e9-83f1-361ad172f158","host":"28.235.174.9","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"340bf250-a4a5-5049-bddf-a6201a9b8e86","name":"SecurityZone7Name","description":"So gitejipo sotvotdab watu la ica fojum dorog odohog mil etuw ta daghavke dig.","version":"273d67ab-abb9-5af1-8574-3e9af6e98aed","interfaces":[{"mtu":2652,"enabled":false,"description":"Wa cep gi lankowtu ce uvujed tad wo vezke vib vezvufgev hun vob velumde.","name":"subinterface11name","id":"ffc74b4d-ad27-5459-9907-186a8c739189","hardwareName":"SubInterface0/11.12","macAddress":"1534.AB09.4146","monitorInterface":true,"standbyMacAddress":"CF72.BDFB.98A1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"fafb:559d:106d:67ac:52dd:e182:d306:4792/32","ipAddress":"a7bd:69ea:f24f:04ea:40c5:3f80:0416:0f09/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d544:6d26:411c:e460:9911:cb8b:ca9e:3a15","ipAddress":"f96f:858d:9ed1:fc9f:7b47:0fb4:246d:6cb6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"17.76.225.83","standbyIpAddress":"195.253.157.229"}},"version":"e22e21d2-9d64-51a4-adc2-a775a4572916","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"043ca75c-25c8-5d2f-9912-f174e3756077","name":"SecurityZone8Name","description":"Fo zihroc befjijwe vafel golwekjow hukohdi bo gitjap titsuabe cav fif mufdec unibit mubu idabehob ruthesusa.","version":"9f2207f2-63f0-5423-aa5c-6b7dc7d41cf3","interfaces":[{"mtu":2652,"enabled":true,"description":"Ta ikoure oznog tu hodul bizzo jimiite men cucif bewtujjof amurulev cuh igu fo siw dupziswul upahig roivipi.","name":"subinterface1name","id":"bdb62102-971e-5472-ab3b-22a7d408dc10","hardwareName":"SubInterface0/1.2","macAddress":"A57C.05DF.7FC0","monitorInterface":false,"standbyMacAddress":"4CE2.828C.AAB1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"86a0:974f:3bf1:cee2:71c8:e295:2c3e:8d76/32","ipAddress":"9cb8:4589:0220:bd63:4d62:42ac:bd26:e1ac/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"7f67:fa11:adca:bd10:8583:757e:7ebb:be87","ipAddress":"4298:ffb2:30f7:84b6:5106:69aa:343c:8362"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"43.30.66.103","standbyIpAddress":"138.99.49.192"}},"version":"e04406e6-ff09-57ac-9b38-fdd8b19cf6fb","managementInterface":true,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"sourceNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"destinationNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"sourcePorts":[{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false},{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false}],"destinationPorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false}],"users":[{"id":"963a9548-fb5f-57b2-b1d0-a0510cff6f64","name":"User Group 8","realmName":"hoivicinu","type":"trafficusergroup","realmId":2,"version":"aclowhiwid"},{"id":"5c815701-9753-5b9e-8b24-c5c5511aa1b6","name":"User 23","realmName":"gowitenci","type":"trafficuser","realmId":2,"version":"tufapitem"},{"id":"f7417bdc-8866-5397-8f4b-e1f2d7956bcc","name":"User 31","realmName":"guhecogguk","type":"trafficuser","realmId":0,"version":"asogtiodo"}],"embeddedAppFilter":{"conditions":[{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"},{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"71b15970-f3f3-5b1b-b7bb-f0613eba06e2","version":"a1f1ec4f-62c4-56f7-85ab-ffa7d87ea131","name":"ApplicationFilter7","description":"Vul ejube iwu bodjaaki neros atwiha pi tamgek mazce zilitufa volvaz mibgo tubzesuwi bunefon enuhoj.","applications":[{"id":"ce901dd3-4e85-5bf0-a273-2018d76527c8","version":"84a4f0c6-57b3-50f3-bf20-0cf68bbbb806","description":"Gipus bovawge vel ceoziwo nuim ehdifir nowe onoli atsewav irfer semowi ge turos mufo tahukca jaz.","deprecated":true,"appId":5,"productivity":0,"risk":2,"name":"Application2","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["1323d445-72c0-5d8b-9f58-c223feb51bac","328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"1323d445-72c0-5d8b-9f58-c223feb51bac","version":"f85374d2-b1c5-5e65-b746-77dc6a21decb","appId":7,"name":"ApplicationCategory14","description":"Ohoad agoteveto irewomi adizogo lurtoop tizesuca himewwak poftoj cow nunapivif cisge pe hi raam hatdunze.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"c51fa076-7516-5b1a-b689-87d5d4dd6656","version":"71b129f0-e504-5ee0-85b0-3d683c7fbc85","description":"Fishak luksa juw magaldi igo kaipojo vifpok jarado fefadkiw keogo mow kojepoha bonewke hobomag vo gi om tam.","deprecated":false,"appId":4,"productivity":1,"risk":3,"name":"Application4","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009","63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","33552c21-0930-5bb5-8459-9b7608cda68e"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"88645135-dab6-5408-ad33-728243b663c2","version":"wugurojwo","name":"UrlGroup6","description":"Du vit inawi ravci mogpaf lal fer jefkew ginac nih namhit dop.","objects":[{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"23f0e43b-0957-554b-b0a4-555d8a444cfa","name":"High risk","index":5,"startPercentage":1,"endPercentage":20,"version":"67559ce6-d60d-5a76-9eef-b4d30401c5c8","type":"urlreputation"},"urlCategory":{"id":"798bf64f-6bf2-5cf4-a895-74670e51cfb2","version":"08eadcce-2a79-5212-9907-e3e7b7e8ae0e","name":"UrlCategory-6","deprecated":false,"urlCategoryId":6,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"logFiles":false,"type":"accessrule"},{"id":"0f78c7ab-d9f6-5180-b3f0-77b29fd87066","version":"0f345b7f-32de-5c35-81d6-30c48ad440b4","ruleId":2,"name":"Access_Rule_2","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_FLOW_END","syslogServer":{"id":"2f33d844-7516-5f6e-87ed-8da737ce2a78","version":"d7f05fd4-062b-5c81-9a97-7de1c7591fda","host":"139.79.31.136","port":5897,"protocol":"TCP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"0453e827-ea9e-5279-b45d-49df10666f7f","name":"SecurityZone14Name","description":"Kojugbel ram kucdowaf dozabace bagi vizlujva ibeali humupici apefin sig wiwdocduw halsoz.","version":"aaaea33f-d703-5f8e-9fb0-8647d4f28f12","interfaces":[{"mtu":2652,"enabled":true,"description":"Dijiz mavajmak suhihi ja piobba vigsasu pulasa heka lus nuapoap gar weuluvaz faf duke sojpov pamdaba juhoflon ugosum.","name":"subinterface4name","id":"80110552-0168-5ca1-9539-159176e34426","hardwareName":"SubInterface0/4.5","macAddress":"1753.227B.5D9A","monitorInterface":false,"standbyMacAddress":"FF7B.C256.4778","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1bb9:5d4d:1200:c9eb:97ff:589e:edd4:16e4/32","ipAddress":"eaba:377e:f390:0e98:800f:a6a7:5709:6b52/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"5189:1c32:5064:5495:0ecf:92dd:9175:944a","ipAddress":"479b:2e4a:a86f:13c2:425b:1e14:b1a3:ddfd"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"213.34.152.190","standbyIpAddress":"91.47.228.196"}},"version":"8bcf839f-438a-5cd4-99a7-b6f07ab652a0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Povlulmi maev usma nizguv ve win coocila colo dunde karib wadu ku huhakla kikel gas.","name":"subinterface13name","id":"edd991bd-6b34-5057-9389-003a56e10179","hardwareName":"SubInterface0/13.14","macAddress":"CC55.5B72.5979","monitorInterface":true,"standbyMacAddress":"9F25.7162.695C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0d43:9009:33b7:805f:2a41:1ed1:0ea0:3cd6/32","ipAddress":"e093:0b7d:4775:c0dc:8433:a3b6:1071:8974/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bf79:78d0:19ad:cc70:9f5b:5882:e462:ba1d","ipAddress":"5ffa:92d3:6efd:ef6f:c194:ff49:7d28:7d56"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"237.58.152.175","standbyIpAddress":"233.37.45.228"}},"version":"f9997393-39da-5999-bef9-a0aa1c914d96","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"00826312-17b2-5b1e-968a-aabe114f0734","name":"Network6","description":"Je anah sankorir zaduv noscipan ron pi dubsanuf motnod ugufu zacew idu wafsembuc lo roge almoh lah.","version":"59e9909f-27d5-5e47-8d77-210909065352","type":"networkobject","subType":"NETWORK","value":"234.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"09d97c3e-0824-5e9d-bee8-28ea311458a5","name":"Geolocation4","description":"Detriwwot uwaan sa ta pohvab ako fi owe apefi ocde mok alcob.","version":"b599df3c-38d1-523e-9bc6-2d82e76d48ff","type":"geolocation","locations":[{"id":"18cbe485-d646-5aad-827e-13ec090dd450","name":"Europe","deprecated":false,"code":1005,"type":"continent","countries":[{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"90c38868-27c0-5de2-a580-630b08b64406","name":"Ukraine","deprecated":false,"iso3":"UKR","iso2":"UA","code":"804","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"cbe10064-72a0-5b1a-813f-0d684567cb07","name":"Slovakia","deprecated":true,"iso3":"SVK","iso2":"SK","code":"703","type":"country"},{"id":"ce221115-d595-50d6-bd2f-fe0429b27b04","name":"Svalbard and Jan Mayen","deprecated":false,"iso3":"SJM","iso2":"SJ","code":"744","type":"country"},{"id":"9401a437-ee7e-51a8-bcc0-7623f8193dac","name":"Slovenia","deprecated":true,"iso3":"SVN","iso2":"SI","code":"705","type":"country"},{"id":"d4901422-c6fd-5ef4-bf4e-09d2074b34dc","name":"Sweden","deprecated":true,"iso3":"SWE","iso2":"SE","code":"752","type":"country"},{"id":"5f22f339-f1a0-5a70-9254-5dd0dad4d243","name":"Russia","deprecated":false,"iso3":"RUS","iso2":"RU","code":"643","type":"country"},{"id":"3a771763-9c5d-580f-9fc5-df41e7355def","name":"Serbia","deprecated":false,"iso3":"SRB","iso2":"RS","code":"688","type":"country"},{"id":"74759e4d-8901-5302-89b7-384fa438a9d2","name":"Romania","deprecated":true,"iso3":"ROU","iso2":"RO","code":"642","type":"country"},{"id":"58579a6d-8542-5c18-8ecb-4d54f527c8e5","name":"Portugal","deprecated":false,"iso3":"PRT","iso2":"PT","code":"620","type":"country"},{"id":"c095aa5d-350d-5db8-9d01-0a106f93c3a5","name":"Poland","deprecated":true,"iso3":"POL","iso2":"PL","code":"616","type":"country"},{"id":"02fa0428-9885-58ba-9fc1-9cc2cb30f0cb","name":"Norway","deprecated":true,"iso3":"NOR","iso2":"NO","code":"578","type":"country"},{"id":"39923980-c4f7-5dda-890c-ab8c290a5be5","name":"Netherlands","deprecated":false,"iso3":"NLD","iso2":"NL","code":"528","type":"country"},{"id":"aaad1a9f-fd04-5427-aea9-6a2216f61efe","name":"Malta","deprecated":false,"iso3":"MLT","iso2":"MT","code":"470","type":"country"},{"id":"ef8d2943-7ddf-57a6-8543-563cc13ebf4e","name":"Macedonia","deprecated":true,"iso3":"MKD","iso2":"MK","code":"807","type":"country"},{"id":"779cdf72-27d4-5e41-b81c-8ea5ef53f01a","name":"Montenegro","deprecated":false,"iso3":"MNE","iso2":"ME","code":"499","type":"country"},{"id":"8ecb3dd6-0cc2-5bac-b21d-83f1e3fbc848","name":"Moldova","deprecated":true,"iso3":"MDA","iso2":"MD","code":"498","type":"country"},{"id":"e0400095-a311-5b38-92e1-d635e6a1f938","name":"Monaco","deprecated":false,"iso3":"MCO","iso2":"MC","code":"492","type":"country"},{"id":"4e696592-960a-51d9-9078-985330e3feb1","name":"Latvia","deprecated":true,"iso3":"LVA","iso2":"LV","code":"428","type":"country"},{"id":"bb1fe9b8-9f49-56fe-9278-4cc73152f780","name":"Luxembourg","deprecated":true,"iso3":"LUX","iso2":"LU","code":"442","type":"country"},{"id":"76d4e398-d6e2-5f4f-ba11-d01a828f883d","name":"Lithuania","deprecated":true,"iso3":"LTU","iso2":"LT","code":"440","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"73f3b217-148d-5d48-a652-495178f5a046","name":"Jersey","deprecated":true,"iso3":"JEY","iso2":"JE","code":"832","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"968a378c-2885-5a3b-a0dc-160560765c7e","name":"Isle of Man","deprecated":true,"iso3":"IMN","iso2":"IM","code":"833","type":"country"},{"id":"cae04dab-514c-559a-94d5-b3930bcf5800","name":"Ireland","deprecated":false,"iso3":"IRL","iso2":"IE","code":"372","type":"country"},{"id":"bc5d918e-a2c8-508d-9a87-c990eeec6215","name":"Hungary","deprecated":true,"iso3":"HUN","iso2":"HU","code":"348","type":"country"},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"03330265-fe01-5435-899a-08042bc643b5","name":"Greece","deprecated":false,"iso3":"GRC","iso2":"GR","code":"300","type":"country"},{"id":"a3120da5-8f6f-5fdc-af6d-8ccac4e802b7","name":"Gibraltar","deprecated":true,"iso3":"GIB","iso2":"GI","code":"292","type":"country"},{"id":"7a31d958-157e-509d-bc9f-f52b45c85c6d","name":"Guernsey","deprecated":true,"iso3":"GGY","iso2":"GG","code":"831","type":"country"},{"id":"2fbb8b4c-cc35-5550-acef-bc53b5c0f0f4","name":"United Kingdom","deprecated":false,"iso3":"GBR","iso2":"GB","code":"826","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"5ee6b8ad-2c86-58d1-ac57-8db405e7dda8","name":"Faroe Islands","deprecated":true,"iso3":"FRO","iso2":"FO","code":"234","type":"country"},{"id":"a7a8cee7-9bad-5786-a874-6be00056cecd","name":"Finland","deprecated":true,"iso3":"FIN","iso2":"FI","code":"246","type":"country"},{"id":"1e9c9635-11bb-5544-8fab-27b6da86a545","name":"Spain","deprecated":true,"iso3":"ESP","iso2":"ES","code":"724","type":"country"},{"id":"355204ae-8c3e-5a96-8f23-3670fde3d26a","name":"Estonia","deprecated":true,"iso3":"EST","iso2":"EE","code":"233","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"004e74d4-cffc-599e-bd12-f4ac69a8a700","name":"Germany","deprecated":true,"iso3":"DEU","iso2":"DE","code":"276","type":"country"},{"id":"fbdea1d9-5ac4-53d0-be10-3220747421b8","name":"Czech Republic","deprecated":true,"iso3":"CZE","iso2":"CZ","code":"203","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"089c406e-a4ff-52ae-9672-73a1bdf5a396","name":"Belarus","deprecated":true,"iso3":"BLR","iso2":"BY","code":"112","type":"country"},{"id":"3dfcd86f-2e29-59f7-9e44-27fe038c51a6","name":"Bulgaria","deprecated":false,"iso3":"BGR","iso2":"BG","code":"100","type":"country"},{"id":"8c299df7-5229-5596-963c-04cb2b46d34d","name":"Belgium","deprecated":true,"iso3":"BEL","iso2":"BE","code":"056","type":"country"},{"id":"fc99ebdb-5c82-5819-979d-d8f6310351af","name":"Bosnia and Herzegovina","deprecated":true,"iso3":"BIH","iso2":"BA","code":"070","type":"country"},{"id":"588e4f19-dfac-5134-98c1-c1cafee86399","name":"Åland","deprecated":false,"iso3":"ALA","iso2":"AX","code":"248","type":"country"},{"id":"67f08133-23b8-52ac-8436-41d77a2eebfb","name":"Austria","deprecated":false,"iso3":"AUT","iso2":"AT","code":"040","type":"country"},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"}],"countryCodes":["0","336","804","674","703","744","705","752","643","688","642","620","616","578","528","470","807","499","498","492","428","442","440","438","832","380","352","833","372","348","191","300","292","831","826","250","234","246","724","233","208","276","203","196","756","112","100","056","070","248","040","008"]},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"}]}],"destinationNetworks":[{"id":"00826312-17b2-5b1e-968a-aabe114f0734","name":"Network6","description":"Je anah sankorir zaduv noscipan ron pi dubsanuf motnod ugufu zacew idu wafsembuc lo roge almoh lah.","version":"59e9909f-27d5-5e47-8d77-210909065352","type":"networkobject","subType":"NETWORK","value":"234.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"09d97c3e-0824-5e9d-bee8-28ea311458a5","name":"Geolocation4","description":"Detriwwot uwaan sa ta pohvab ako fi owe apefi ocde mok alcob.","version":"b599df3c-38d1-523e-9bc6-2d82e76d48ff","type":"geolocation","locations":[{"id":"18cbe485-d646-5aad-827e-13ec090dd450","name":"Europe","deprecated":false,"code":1005,"type":"continent","countries":[{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"90c38868-27c0-5de2-a580-630b08b64406","name":"Ukraine","deprecated":false,"iso3":"UKR","iso2":"UA","code":"804","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"cbe10064-72a0-5b1a-813f-0d684567cb07","name":"Slovakia","deprecated":true,"iso3":"SVK","iso2":"SK","code":"703","type":"country"},{"id":"ce221115-d595-50d6-bd2f-fe0429b27b04","name":"Svalbard and Jan Mayen","deprecated":false,"iso3":"SJM","iso2":"SJ","code":"744","type":"country"},{"id":"9401a437-ee7e-51a8-bcc0-7623f8193dac","name":"Slovenia","deprecated":true,"iso3":"SVN","iso2":"SI","code":"705","type":"country"},{"id":"d4901422-c6fd-5ef4-bf4e-09d2074b34dc","name":"Sweden","deprecated":true,"iso3":"SWE","iso2":"SE","code":"752","type":"country"},{"id":"5f22f339-f1a0-5a70-9254-5dd0dad4d243","name":"Russia","deprecated":false,"iso3":"RUS","iso2":"RU","code":"643","type":"country"},{"id":"3a771763-9c5d-580f-9fc5-df41e7355def","name":"Serbia","deprecated":false,"iso3":"SRB","iso2":"RS","code":"688","type":"country"},{"id":"74759e4d-8901-5302-89b7-384fa438a9d2","name":"Romania","deprecated":true,"iso3":"ROU","iso2":"RO","code":"642","type":"country"},{"id":"58579a6d-8542-5c18-8ecb-4d54f527c8e5","name":"Portugal","deprecated":false,"iso3":"PRT","iso2":"PT","code":"620","type":"country"},{"id":"c095aa5d-350d-5db8-9d01-0a106f93c3a5","name":"Poland","deprecated":true,"iso3":"POL","iso2":"PL","code":"616","type":"country"},{"id":"02fa0428-9885-58ba-9fc1-9cc2cb30f0cb","name":"Norway","deprecated":true,"iso3":"NOR","iso2":"NO","code":"578","type":"country"},{"id":"39923980-c4f7-5dda-890c-ab8c290a5be5","name":"Netherlands","deprecated":false,"iso3":"NLD","iso2":"NL","code":"528","type":"country"},{"id":"aaad1a9f-fd04-5427-aea9-6a2216f61efe","name":"Malta","deprecated":false,"iso3":"MLT","iso2":"MT","code":"470","type":"country"},{"id":"ef8d2943-7ddf-57a6-8543-563cc13ebf4e","name":"Macedonia","deprecated":true,"iso3":"MKD","iso2":"MK","code":"807","type":"country"},{"id":"779cdf72-27d4-5e41-b81c-8ea5ef53f01a","name":"Montenegro","deprecated":false,"iso3":"MNE","iso2":"ME","code":"499","type":"country"},{"id":"8ecb3dd6-0cc2-5bac-b21d-83f1e3fbc848","name":"Moldova","deprecated":true,"iso3":"MDA","iso2":"MD","code":"498","type":"country"},{"id":"e0400095-a311-5b38-92e1-d635e6a1f938","name":"Monaco","deprecated":false,"iso3":"MCO","iso2":"MC","code":"492","type":"country"},{"id":"4e696592-960a-51d9-9078-985330e3feb1","name":"Latvia","deprecated":true,"iso3":"LVA","iso2":"LV","code":"428","type":"country"},{"id":"bb1fe9b8-9f49-56fe-9278-4cc73152f780","name":"Luxembourg","deprecated":true,"iso3":"LUX","iso2":"LU","code":"442","type":"country"},{"id":"76d4e398-d6e2-5f4f-ba11-d01a828f883d","name":"Lithuania","deprecated":true,"iso3":"LTU","iso2":"LT","code":"440","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"73f3b217-148d-5d48-a652-495178f5a046","name":"Jersey","deprecated":true,"iso3":"JEY","iso2":"JE","code":"832","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"968a378c-2885-5a3b-a0dc-160560765c7e","name":"Isle of Man","deprecated":true,"iso3":"IMN","iso2":"IM","code":"833","type":"country"},{"id":"cae04dab-514c-559a-94d5-b3930bcf5800","name":"Ireland","deprecated":false,"iso3":"IRL","iso2":"IE","code":"372","type":"country"},{"id":"bc5d918e-a2c8-508d-9a87-c990eeec6215","name":"Hungary","deprecated":true,"iso3":"HUN","iso2":"HU","code":"348","type":"country"},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"03330265-fe01-5435-899a-08042bc643b5","name":"Greece","deprecated":false,"iso3":"GRC","iso2":"GR","code":"300","type":"country"},{"id":"a3120da5-8f6f-5fdc-af6d-8ccac4e802b7","name":"Gibraltar","deprecated":true,"iso3":"GIB","iso2":"GI","code":"292","type":"country"},{"id":"7a31d958-157e-509d-bc9f-f52b45c85c6d","name":"Guernsey","deprecated":true,"iso3":"GGY","iso2":"GG","code":"831","type":"country"},{"id":"2fbb8b4c-cc35-5550-acef-bc53b5c0f0f4","name":"United Kingdom","deprecated":false,"iso3":"GBR","iso2":"GB","code":"826","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"5ee6b8ad-2c86-58d1-ac57-8db405e7dda8","name":"Faroe Islands","deprecated":true,"iso3":"FRO","iso2":"FO","code":"234","type":"country"},{"id":"a7a8cee7-9bad-5786-a874-6be00056cecd","name":"Finland","deprecated":true,"iso3":"FIN","iso2":"FI","code":"246","type":"country"},{"id":"1e9c9635-11bb-5544-8fab-27b6da86a545","name":"Spain","deprecated":true,"iso3":"ESP","iso2":"ES","code":"724","type":"country"},{"id":"355204ae-8c3e-5a96-8f23-3670fde3d26a","name":"Estonia","deprecated":true,"iso3":"EST","iso2":"EE","code":"233","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"004e74d4-cffc-599e-bd12-f4ac69a8a700","name":"Germany","deprecated":true,"iso3":"DEU","iso2":"DE","code":"276","type":"country"},{"id":"fbdea1d9-5ac4-53d0-be10-3220747421b8","name":"Czech Republic","deprecated":true,"iso3":"CZE","iso2":"CZ","code":"203","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"089c406e-a4ff-52ae-9672-73a1bdf5a396","name":"Belarus","deprecated":true,"iso3":"BLR","iso2":"BY","code":"112","type":"country"},{"id":"3dfcd86f-2e29-59f7-9e44-27fe038c51a6","name":"Bulgaria","deprecated":false,"iso3":"BGR","iso2":"BG","code":"100","type":"country"},{"id":"8c299df7-5229-5596-963c-04cb2b46d34d","name":"Belgium","deprecated":true,"iso3":"BEL","iso2":"BE","code":"056","type":"country"},{"id":"fc99ebdb-5c82-5819-979d-d8f6310351af","name":"Bosnia and Herzegovina","deprecated":true,"iso3":"BIH","iso2":"BA","code":"070","type":"country"},{"id":"588e4f19-dfac-5134-98c1-c1cafee86399","name":"Åland","deprecated":false,"iso3":"ALA","iso2":"AX","code":"248","type":"country"},{"id":"67f08133-23b8-52ac-8436-41d77a2eebfb","name":"Austria","deprecated":false,"iso3":"AUT","iso2":"AT","code":"040","type":"country"},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"}],"countryCodes":["0","336","804","674","703","744","705","752","643","688","642","620","616","578","528","470","807","499","498","492","428","442","440","438","832","380","352","833","372","348","191","300","292","831","826","250","234","246","724","233","208","276","203","196","756","112","100","056","070","248","040","008"]},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"}]}],"sourcePorts":[{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false},{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true}],"destinationPorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"users":[{"id":"b33b73c3-522a-5e45-93fa-9d0a05dc2444","name":"User 4","realmName":"guzafodoaka","type":"trafficuser","realmId":2,"version":"fiusonuik"},{"id":"272d38c1-b58d-5f2e-8988-abc1cd081efe","name":"User Group 7","realmName":"tivcibjizi","type":"trafficusergroup","realmId":2,"version":"ufajoabcel"},{"id":"d79daac5-6687-5ae3-a27e-83884d19e9b2","name":"User 17","realmName":"gikiirnur","type":"trafficuser","realmId":2,"version":"bewcazwowala"}],"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN40","name":"Maximum Detection","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40/rules/"}},"description":"Maximum Detection Layer","type":"intrusionpolicy","version":"124d1a7b-a1b4-5097-b6d4-5a399c5bdb68"},"filePolicy":{"id":"de5b742d-70db-535d-bb42-6e6ba949ef53","type":"filepolicy","policyType":"BLOCK_MALWARE_ALL","name":"File_Policy_1","description":"Wiakeno ja barfowole aredu wutra loc fe soc cakdo se la agokim gevsirrog cagome.","version":"e0e81a67-2608-53e2-a015-f53dc3a9de10"},"logFiles":false,"type":"accessrule"},{"id":"236e3d95-aec5-5ecf-945e-9568f2a44ebd","version":"b448862c-debb-5000-a776-3dbdf7de8b69","ruleId":3,"name":"Access_Rule_3","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"2fcc57a5-0673-5296-ab42-0537f89225ca","version":"ac94fb6a-ecb6-5b74-9305-aa01e94d60fe","host":"66.33.32.162","port":5897,"protocol":"UDP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"83e3721c-b23f-5eb1-b660-40655c216680","name":"SecurityZone9Name","description":"Iha kiuh ja iweacce tuh hajmipjuj fikufuv bofijwi esede tu gahak wenab belif lupilsif udo puzabke ferfa ofwon.","version":"17150a55-f982-526f-aa60-9e435d2c5455","interfaces":[{"mtu":5818,"enabled":true,"description":"Wabjenuv vuhtevguf zucce omiogu anitug cuho gaejma vesumob oduuro levhid uniozwej olkavcuv dawiim mehub wuka suj.","id":"3faf4981-2b04-5091-9c1f-fa0ab78379b4","hardwareName":"GigabitEthernet1/5","macAddress":"7472.5071.519E","monitorInterface":false,"standbyMacAddress":"5387.1EFE.E0E6","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"84c0:cd09:bceb:ce0c:5cfa:f535:d426:01db/32","ipAddress":"067a:e7f9:1bf0:6af4:b89b:4c11:ec0c:51b4/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"02eb:e82a:bb44:e0a0:d969:6055:6744:cfa2","ipAddress":"aa33:0271:1f23:9725:0d24:7767:0fd2:0cf8"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"6.124.202.116","standbyIpAddress":"40.108.171.23"}},"version":"472d2c22-e548-5cb1-983f-f81ee3e14422","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"f13918c2-287c-5026-b2d4-ae18cf69fd8c","name":"SecurityZone2Name","description":"Elaba havor do tifgovew di tobeep osiho gamalun ilokavo hosoc bavmep lo katzakcu we lekucazif jusifi baluhufa ivinu.","version":"f1cb8b72-77e1-524f-9ee0-07e3f6ffb563","interfaces":[{"mtu":5818,"enabled":true,"description":"Eh fiec wepauju fakigi fedep osgitewo wodrah ponkumido fis nozpuri ju geelo doh vipuopu vobuhalu piova bokadar.","id":"09d6217f-2741-5b6a-bd5c-91ca02f54e09","hardwareName":"GigabitEthernet1/6","macAddress":"3539.C649.1EF4","monitorInterface":false,"standbyMacAddress":"AAB5.9320.943C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e765:caaf:c971:52be:e7af:9357:6eab:2e59/32","ipAddress":"d168:a40a:b8df:9bc5:d38c:64df:a4fd:4110/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"76da:7d95:05ed:3ac9:4014:58d2:1e81:b4b2","ipAddress":"fdcf:ebe2:84c9:5892:94f3:b209:1cd6:d430"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"46.176.226.56","standbyIpAddress":"252.197.49.100"}},"version":"e18f92be-6c58-55a7-9dea-ccdefd79a44f","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":false,"description":"Wi repiro sisig se wuglo zuzrog wivsel iboabamu wug sew figinfo pada koorcu wun akawobit cuholso wizpeos belidgew.","id":"c95c223c-b583-5d80-88a6-b1ac1b528e5e","hardwareName":"GigabitEthernet1/8","macAddress":"AD75.0711.BDF3","monitorInterface":false,"standbyMacAddress":"C7BE.0512.EDE1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4d6e:8d99:e5e9:8e08:03ed:ac78:12d9:1abc/32","ipAddress":"5b5a:9ba8:4d53:74f4:b2b9:b36b:2930:3030/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"919d:d8d6:cac4:18ed:5582:4d98:5afa:7f30","ipAddress":"9bfa:b940:f6b8:cd45:9eb6:d07e:09a6:b747"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"206.102.168.38","standbyIpAddress":"47.171.86.122"}},"version":"88bd96c5-891e-5b48-ab25-5091e3dfe377","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"95a6c824-af98-562a-8be6-adc2446c4a09","name":"SecurityZone4Name","description":"Hu nevsuzwiz lezjab hidlurus la pak relte kew umigo zo kopi jetjata.","version":"73028d64-6d1e-5a0a-9f3c-db515f246240","interfaces":[{"mtu":2652,"enabled":false,"description":"Zojin ohdahe kulgune acme eriocopus wubvi hulwic buscub daugeiw ekdegwa jijekub ko gijenog lokrogri tolev tiassi pejliuda.","name":"subinterface6name","id":"bf6765a2-9e9f-506d-a381-329a46273a43","hardwareName":"SubInterface0/6.7","macAddress":"35AF.6E50.0377","monitorInterface":true,"standbyMacAddress":"D947.0A8F.425F","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"7206:d020:f8c8:c150:b059:d35c:3824:c1ae/32","ipAddress":"be49:09fb:26ce:f506:0899:43c5:ce17:4143/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"080b:aa66:ca0d:4375:d7c7:8cbb:8978:46f0","ipAddress":"a226:34cd:63b0:a860:aa22:3304:05a5:a64f"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.51.91.99","standbyIpAddress":"231.94.58.66"}},"version":"68043109-6c4e-5a0f-8df0-d01122d3c319","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"sourceNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"09d97c3e-0824-5e9d-bee8-28ea311458a5","name":"Geolocation4","description":"Detriwwot uwaan sa ta pohvab ako fi owe apefi ocde mok alcob.","version":"b599df3c-38d1-523e-9bc6-2d82e76d48ff","type":"geolocation","locations":[{"id":"18cbe485-d646-5aad-827e-13ec090dd450","name":"Europe","deprecated":false,"code":1005,"type":"continent","countries":[{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"90c38868-27c0-5de2-a580-630b08b64406","name":"Ukraine","deprecated":false,"iso3":"UKR","iso2":"UA","code":"804","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"cbe10064-72a0-5b1a-813f-0d684567cb07","name":"Slovakia","deprecated":true,"iso3":"SVK","iso2":"SK","code":"703","type":"country"},{"id":"ce221115-d595-50d6-bd2f-fe0429b27b04","name":"Svalbard and Jan Mayen","deprecated":false,"iso3":"SJM","iso2":"SJ","code":"744","type":"country"},{"id":"9401a437-ee7e-51a8-bcc0-7623f8193dac","name":"Slovenia","deprecated":true,"iso3":"SVN","iso2":"SI","code":"705","type":"country"},{"id":"d4901422-c6fd-5ef4-bf4e-09d2074b34dc","name":"Sweden","deprecated":true,"iso3":"SWE","iso2":"SE","code":"752","type":"country"},{"id":"5f22f339-f1a0-5a70-9254-5dd0dad4d243","name":"Russia","deprecated":false,"iso3":"RUS","iso2":"RU","code":"643","type":"country"},{"id":"3a771763-9c5d-580f-9fc5-df41e7355def","name":"Serbia","deprecated":false,"iso3":"SRB","iso2":"RS","code":"688","type":"country"},{"id":"74759e4d-8901-5302-89b7-384fa438a9d2","name":"Romania","deprecated":true,"iso3":"ROU","iso2":"RO","code":"642","type":"country"},{"id":"58579a6d-8542-5c18-8ecb-4d54f527c8e5","name":"Portugal","deprecated":false,"iso3":"PRT","iso2":"PT","code":"620","type":"country"},{"id":"c095aa5d-350d-5db8-9d01-0a106f93c3a5","name":"Poland","deprecated":true,"iso3":"POL","iso2":"PL","code":"616","type":"country"},{"id":"02fa0428-9885-58ba-9fc1-9cc2cb30f0cb","name":"Norway","deprecated":true,"iso3":"NOR","iso2":"NO","code":"578","type":"country"},{"id":"39923980-c4f7-5dda-890c-ab8c290a5be5","name":"Netherlands","deprecated":false,"iso3":"NLD","iso2":"NL","code":"528","type":"country"},{"id":"aaad1a9f-fd04-5427-aea9-6a2216f61efe","name":"Malta","deprecated":false,"iso3":"MLT","iso2":"MT","code":"470","type":"country"},{"id":"ef8d2943-7ddf-57a6-8543-563cc13ebf4e","name":"Macedonia","deprecated":true,"iso3":"MKD","iso2":"MK","code":"807","type":"country"},{"id":"779cdf72-27d4-5e41-b81c-8ea5ef53f01a","name":"Montenegro","deprecated":false,"iso3":"MNE","iso2":"ME","code":"499","type":"country"},{"id":"8ecb3dd6-0cc2-5bac-b21d-83f1e3fbc848","name":"Moldova","deprecated":true,"iso3":"MDA","iso2":"MD","code":"498","type":"country"},{"id":"e0400095-a311-5b38-92e1-d635e6a1f938","name":"Monaco","deprecated":false,"iso3":"MCO","iso2":"MC","code":"492","type":"country"},{"id":"4e696592-960a-51d9-9078-985330e3feb1","name":"Latvia","deprecated":true,"iso3":"LVA","iso2":"LV","code":"428","type":"country"},{"id":"bb1fe9b8-9f49-56fe-9278-4cc73152f780","name":"Luxembourg","deprecated":true,"iso3":"LUX","iso2":"LU","code":"442","type":"country"},{"id":"76d4e398-d6e2-5f4f-ba11-d01a828f883d","name":"Lithuania","deprecated":true,"iso3":"LTU","iso2":"LT","code":"440","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"73f3b217-148d-5d48-a652-495178f5a046","name":"Jersey","deprecated":true,"iso3":"JEY","iso2":"JE","code":"832","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"968a378c-2885-5a3b-a0dc-160560765c7e","name":"Isle of Man","deprecated":true,"iso3":"IMN","iso2":"IM","code":"833","type":"country"},{"id":"cae04dab-514c-559a-94d5-b3930bcf5800","name":"Ireland","deprecated":false,"iso3":"IRL","iso2":"IE","code":"372","type":"country"},{"id":"bc5d918e-a2c8-508d-9a87-c990eeec6215","name":"Hungary","deprecated":true,"iso3":"HUN","iso2":"HU","code":"348","type":"country"},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"03330265-fe01-5435-899a-08042bc643b5","name":"Greece","deprecated":false,"iso3":"GRC","iso2":"GR","code":"300","type":"country"},{"id":"a3120da5-8f6f-5fdc-af6d-8ccac4e802b7","name":"Gibraltar","deprecated":true,"iso3":"GIB","iso2":"GI","code":"292","type":"country"},{"id":"7a31d958-157e-509d-bc9f-f52b45c85c6d","name":"Guernsey","deprecated":true,"iso3":"GGY","iso2":"GG","code":"831","type":"country"},{"id":"2fbb8b4c-cc35-5550-acef-bc53b5c0f0f4","name":"United Kingdom","deprecated":false,"iso3":"GBR","iso2":"GB","code":"826","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"5ee6b8ad-2c86-58d1-ac57-8db405e7dda8","name":"Faroe Islands","deprecated":true,"iso3":"FRO","iso2":"FO","code":"234","type":"country"},{"id":"a7a8cee7-9bad-5786-a874-6be00056cecd","name":"Finland","deprecated":true,"iso3":"FIN","iso2":"FI","code":"246","type":"country"},{"id":"1e9c9635-11bb-5544-8fab-27b6da86a545","name":"Spain","deprecated":true,"iso3":"ESP","iso2":"ES","code":"724","type":"country"},{"id":"355204ae-8c3e-5a96-8f23-3670fde3d26a","name":"Estonia","deprecated":true,"iso3":"EST","iso2":"EE","code":"233","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"004e74d4-cffc-599e-bd12-f4ac69a8a700","name":"Germany","deprecated":true,"iso3":"DEU","iso2":"DE","code":"276","type":"country"},{"id":"fbdea1d9-5ac4-53d0-be10-3220747421b8","name":"Czech Republic","deprecated":true,"iso3":"CZE","iso2":"CZ","code":"203","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"089c406e-a4ff-52ae-9672-73a1bdf5a396","name":"Belarus","deprecated":true,"iso3":"BLR","iso2":"BY","code":"112","type":"country"},{"id":"3dfcd86f-2e29-59f7-9e44-27fe038c51a6","name":"Bulgaria","deprecated":false,"iso3":"BGR","iso2":"BG","code":"100","type":"country"},{"id":"8c299df7-5229-5596-963c-04cb2b46d34d","name":"Belgium","deprecated":true,"iso3":"BEL","iso2":"BE","code":"056","type":"country"},{"id":"fc99ebdb-5c82-5819-979d-d8f6310351af","name":"Bosnia and Herzegovina","deprecated":true,"iso3":"BIH","iso2":"BA","code":"070","type":"country"},{"id":"588e4f19-dfac-5134-98c1-c1cafee86399","name":"Åland","deprecated":false,"iso3":"ALA","iso2":"AX","code":"248","type":"country"},{"id":"67f08133-23b8-52ac-8436-41d77a2eebfb","name":"Austria","deprecated":false,"iso3":"AUT","iso2":"AT","code":"040","type":"country"},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"}],"countryCodes":["0","336","804","674","703","744","705","752","643","688","642","620","616","578","528","470","807","499","498","492","428","442","440","438","832","380","352","833","372","348","191","300","292","831","826","250","234","246","724","233","208","276","203","196","756","112","100","056","070","248","040","008"]},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"}]}],"destinationNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"09d97c3e-0824-5e9d-bee8-28ea311458a5","name":"Geolocation4","description":"Detriwwot uwaan sa ta pohvab ako fi owe apefi ocde mok alcob.","version":"b599df3c-38d1-523e-9bc6-2d82e76d48ff","type":"geolocation","locations":[{"id":"18cbe485-d646-5aad-827e-13ec090dd450","name":"Europe","deprecated":false,"code":1005,"type":"continent","countries":[{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"90c38868-27c0-5de2-a580-630b08b64406","name":"Ukraine","deprecated":false,"iso3":"UKR","iso2":"UA","code":"804","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"cbe10064-72a0-5b1a-813f-0d684567cb07","name":"Slovakia","deprecated":true,"iso3":"SVK","iso2":"SK","code":"703","type":"country"},{"id":"ce221115-d595-50d6-bd2f-fe0429b27b04","name":"Svalbard and Jan Mayen","deprecated":false,"iso3":"SJM","iso2":"SJ","code":"744","type":"country"},{"id":"9401a437-ee7e-51a8-bcc0-7623f8193dac","name":"Slovenia","deprecated":true,"iso3":"SVN","iso2":"SI","code":"705","type":"country"},{"id":"d4901422-c6fd-5ef4-bf4e-09d2074b34dc","name":"Sweden","deprecated":true,"iso3":"SWE","iso2":"SE","code":"752","type":"country"},{"id":"5f22f339-f1a0-5a70-9254-5dd0dad4d243","name":"Russia","deprecated":false,"iso3":"RUS","iso2":"RU","code":"643","type":"country"},{"id":"3a771763-9c5d-580f-9fc5-df41e7355def","name":"Serbia","deprecated":false,"iso3":"SRB","iso2":"RS","code":"688","type":"country"},{"id":"74759e4d-8901-5302-89b7-384fa438a9d2","name":"Romania","deprecated":true,"iso3":"ROU","iso2":"RO","code":"642","type":"country"},{"id":"58579a6d-8542-5c18-8ecb-4d54f527c8e5","name":"Portugal","deprecated":false,"iso3":"PRT","iso2":"PT","code":"620","type":"country"},{"id":"c095aa5d-350d-5db8-9d01-0a106f93c3a5","name":"Poland","deprecated":true,"iso3":"POL","iso2":"PL","code":"616","type":"country"},{"id":"02fa0428-9885-58ba-9fc1-9cc2cb30f0cb","name":"Norway","deprecated":true,"iso3":"NOR","iso2":"NO","code":"578","type":"country"},{"id":"39923980-c4f7-5dda-890c-ab8c290a5be5","name":"Netherlands","deprecated":false,"iso3":"NLD","iso2":"NL","code":"528","type":"country"},{"id":"aaad1a9f-fd04-5427-aea9-6a2216f61efe","name":"Malta","deprecated":false,"iso3":"MLT","iso2":"MT","code":"470","type":"country"},{"id":"ef8d2943-7ddf-57a6-8543-563cc13ebf4e","name":"Macedonia","deprecated":true,"iso3":"MKD","iso2":"MK","code":"807","type":"country"},{"id":"779cdf72-27d4-5e41-b81c-8ea5ef53f01a","name":"Montenegro","deprecated":false,"iso3":"MNE","iso2":"ME","code":"499","type":"country"},{"id":"8ecb3dd6-0cc2-5bac-b21d-83f1e3fbc848","name":"Moldova","deprecated":true,"iso3":"MDA","iso2":"MD","code":"498","type":"country"},{"id":"e0400095-a311-5b38-92e1-d635e6a1f938","name":"Monaco","deprecated":false,"iso3":"MCO","iso2":"MC","code":"492","type":"country"},{"id":"4e696592-960a-51d9-9078-985330e3feb1","name":"Latvia","deprecated":true,"iso3":"LVA","iso2":"LV","code":"428","type":"country"},{"id":"bb1fe9b8-9f49-56fe-9278-4cc73152f780","name":"Luxembourg","deprecated":true,"iso3":"LUX","iso2":"LU","code":"442","type":"country"},{"id":"76d4e398-d6e2-5f4f-ba11-d01a828f883d","name":"Lithuania","deprecated":true,"iso3":"LTU","iso2":"LT","code":"440","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"73f3b217-148d-5d48-a652-495178f5a046","name":"Jersey","deprecated":true,"iso3":"JEY","iso2":"JE","code":"832","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"968a378c-2885-5a3b-a0dc-160560765c7e","name":"Isle of Man","deprecated":true,"iso3":"IMN","iso2":"IM","code":"833","type":"country"},{"id":"cae04dab-514c-559a-94d5-b3930bcf5800","name":"Ireland","deprecated":false,"iso3":"IRL","iso2":"IE","code":"372","type":"country"},{"id":"bc5d918e-a2c8-508d-9a87-c990eeec6215","name":"Hungary","deprecated":true,"iso3":"HUN","iso2":"HU","code":"348","type":"country"},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"03330265-fe01-5435-899a-08042bc643b5","name":"Greece","deprecated":false,"iso3":"GRC","iso2":"GR","code":"300","type":"country"},{"id":"a3120da5-8f6f-5fdc-af6d-8ccac4e802b7","name":"Gibraltar","deprecated":true,"iso3":"GIB","iso2":"GI","code":"292","type":"country"},{"id":"7a31d958-157e-509d-bc9f-f52b45c85c6d","name":"Guernsey","deprecated":true,"iso3":"GGY","iso2":"GG","code":"831","type":"country"},{"id":"2fbb8b4c-cc35-5550-acef-bc53b5c0f0f4","name":"United Kingdom","deprecated":false,"iso3":"GBR","iso2":"GB","code":"826","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"5ee6b8ad-2c86-58d1-ac57-8db405e7dda8","name":"Faroe Islands","deprecated":true,"iso3":"FRO","iso2":"FO","code":"234","type":"country"},{"id":"a7a8cee7-9bad-5786-a874-6be00056cecd","name":"Finland","deprecated":true,"iso3":"FIN","iso2":"FI","code":"246","type":"country"},{"id":"1e9c9635-11bb-5544-8fab-27b6da86a545","name":"Spain","deprecated":true,"iso3":"ESP","iso2":"ES","code":"724","type":"country"},{"id":"355204ae-8c3e-5a96-8f23-3670fde3d26a","name":"Estonia","deprecated":true,"iso3":"EST","iso2":"EE","code":"233","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"004e74d4-cffc-599e-bd12-f4ac69a8a700","name":"Germany","deprecated":true,"iso3":"DEU","iso2":"DE","code":"276","type":"country"},{"id":"fbdea1d9-5ac4-53d0-be10-3220747421b8","name":"Czech Republic","deprecated":true,"iso3":"CZE","iso2":"CZ","code":"203","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"089c406e-a4ff-52ae-9672-73a1bdf5a396","name":"Belarus","deprecated":true,"iso3":"BLR","iso2":"BY","code":"112","type":"country"},{"id":"3dfcd86f-2e29-59f7-9e44-27fe038c51a6","name":"Bulgaria","deprecated":false,"iso3":"BGR","iso2":"BG","code":"100","type":"country"},{"id":"8c299df7-5229-5596-963c-04cb2b46d34d","name":"Belgium","deprecated":true,"iso3":"BEL","iso2":"BE","code":"056","type":"country"},{"id":"fc99ebdb-5c82-5819-979d-d8f6310351af","name":"Bosnia and Herzegovina","deprecated":true,"iso3":"BIH","iso2":"BA","code":"070","type":"country"},{"id":"588e4f19-dfac-5134-98c1-c1cafee86399","name":"Åland","deprecated":false,"iso3":"ALA","iso2":"AX","code":"248","type":"country"},{"id":"67f08133-23b8-52ac-8436-41d77a2eebfb","name":"Austria","deprecated":false,"iso3":"AUT","iso2":"AT","code":"040","type":"country"},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"}],"countryCodes":["0","336","804","674","703","744","705","752","643","688","642","620","616","578","528","470","807","499","498","492","428","442","440","438","832","380","352","833","372","348","191","300","292","831","826","250","234","246","724","233","208","276","203","196","756","112","100","056","070","248","040","008"]},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"}]}],"sourcePorts":[{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}],"destinationPorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false}],"users":[{"id":"7145e63c-b952-5595-a3e0-b95cfd817553","name":"User 3","realmName":"owesizfani","type":"trafficuser","realmId":2,"version":"rilijzomu"},{"id":"ea44ade4-c7ca-5155-ba70-7cfb60c3c1f1","name":"User 7","realmName":"soewurisah","type":"trafficuser","realmId":2,"version":"itoucoilero"},{"id":"851b41dd-7739-51e9-b487-7363b8d6f24e","name":"User Group 11","realmName":"tuzosvukro","type":"trafficusergroup","realmId":2,"version":"ecetatilmiv"}],"embeddedAppFilter":{"conditions":[{"filter":"baketfale","tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"},{"filter":"muechicpoh","tags":[{"id":"7269266f-8413-59ef-9085-0de4aa64660b","version":"6eb7235a-74ab-5701-8a37-2522e325519d","appId":2,"name":"ApplicationTag2","description":"Zu wep pag palu mazu irowil rag bore ev ica miljov iwoog besjezew fi regevi ap vo.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"4890f08c-7d08-5b84-93cc-7a4baa096ff1","version":"76998009-57e5-5be3-83ee-29ff93086a19","name":"ApplicationFilter2","description":"Uwudu elufur kikvusab gi zafur zerojtuc cefiz oti fonum wit pewivbu leuhi cen uri mibfozta jukmuw nafid.","applications":[{"id":"83c8e0e6-3707-5128-b7da-4659f67b76a0","version":"5072ae78-a326-5b92-8176-c0c8132922a8","description":"Bo dese su ja elumuf ane zusjo fiplois ewariju ihjup nunnihep kosaldic kuhfovu.","deprecated":false,"appId":4,"productivity":0,"risk":1,"name":"Application1","tagIds":["62bc5d56-7e60-5a71-a467-2c4f2a035a06"],"tags":[{"id":"62bc5d56-7e60-5a71-a467-2c4f2a035a06","version":"e7e0ebc9-3a9a-5342-91e9-ae0ce54b3444","appId":12,"name":"ApplicationTag12","description":"Bamiwaga bo kek wawinta ovepozgan tibutef je kezaluk zonwoz fovul aw ter nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","2ad8b880-5783-5919-bda2-46e8316f2d70"],"categories":[{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"2ad8b880-5783-5919-bda2-46e8316f2d70","version":"c19f7a96-7634-5d1b-972d-99caa3e34a64","appId":1,"name":"ApplicationCategory12","description":"Ev zalapi hiwuhi peror lupu iv obalem gicobem vi bafuh ponij co hur linsis fukurod dehpupme.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":false},"type":"application"},{"id":"6361bd7f-01c9-5714-baca-035d66f50a8c","version":"50dcdb47-5d21-537f-b3b0-81713bf31c06","description":"Leku luto lofuwec wuwguhot abmofdo cun vuunuvi lulsoteg kivsas mijmi ru kipumeja sacwuwhe gub magumera.","deprecated":false,"appId":5,"productivity":0,"risk":4,"name":"Application5","tagIds":["0b45de63-5252-5257-acf6-ce494cdb905a"],"tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"jignorebes","tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"368e2c4f-cce1-574d-b5ee-ab9d539cf248","version":"3ecf8402-8607-5fdc-a148-f5abddf84f0a","description":"Apeja libsul uweb osjoti ge uzu fal gob woletkew be tu hah ha wuvekohuz gacaw.","deprecated":true,"appId":4,"productivity":1,"risk":0,"name":"Application14","tagIds":["9b16dd72-476a-5ac0-8aeb-fbf6e1f45438"],"tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5f0662ef-3382-5357-bf35-b9b7361aae44"],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["WEBAPP","SERVER"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"4644bbc1-d476-565e-83ae-5a744000483c","version":"jaebrizdos","name":"UrlGroup8","description":"Mudacoc fapeus bimafi vectibep vib at bomecras moano ut wo vimkoc il lekeje os ekugiubi newtu.","objects":[{"id":"26cf0d0b-7575-594a-9c3b-9e17d5e24fbf","version":"sipugcocti","name":"Url6","description":"Etna gum cacu tin meehe hu cahfik kus supdeba irlohje hig rizhepzov vi togaofo los dujna her sipu.","url":"http://bejakuru.co.uk/ebkampaw","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"23f0e43b-0957-554b-b0a4-555d8a444cfa","name":"High risk","index":5,"startPercentage":1,"endPercentage":20,"version":"67559ce6-d60d-5a76-9eef-b4d30401c5c8","type":"urlreputation"},"urlCategory":{"id":"798bf64f-6bf2-5cf4-a895-74670e51cfb2","version":"08eadcce-2a79-5212-9907-e3e7b7e8ae0e","name":"UrlCategory-6","deprecated":false,"urlCategoryId":6,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN20","name":"Balanced Security and Connectivity","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN20"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN20/rules/"}},"description":"Balanced Security and Connectivity Layer","type":"intrusionpolicy","version":"d3d7a26f-ddb0-57fb-a9bf-772424bbdd0a"},"logFiles":false,"type":"accessrule"},{"id":"6ce54db3-425b-5d81-b2f3-43b2ef017f46","version":"67a177c0-0999-552f-aee1-80af64580654","ruleId":4,"name":"Access_Rule_4","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_NONE","sourceZones":[{"id":"ec43d6a8-fe32-5daa-a8bd-766b57a23892","name":"SecurityZone12Name","description":"Etzasus comdupo lu jeitlov zedoj no lidwa ka beni ujenapse lowon dil ami jir.","version":"3091782d-2bd2-57e7-8447-191d486665aa","interfaces":[{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"043ca75c-25c8-5d2f-9912-f174e3756077","name":"SecurityZone8Name","description":"Fo zihroc befjijwe vafel golwekjow hukohdi bo gitjap titsuabe cav fif mufdec unibit mubu idabehob ruthesusa.","version":"9f2207f2-63f0-5423-aa5c-6b7dc7d41cf3","interfaces":[{"mtu":2652,"enabled":true,"description":"Ta ikoure oznog tu hodul bizzo jimiite men cucif bewtujjof amurulev cuh igu fo siw dupziswul upahig roivipi.","name":"subinterface1name","id":"bdb62102-971e-5472-ab3b-22a7d408dc10","hardwareName":"SubInterface0/1.2","macAddress":"A57C.05DF.7FC0","monitorInterface":false,"standbyMacAddress":"4CE2.828C.AAB1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"86a0:974f:3bf1:cee2:71c8:e295:2c3e:8d76/32","ipAddress":"9cb8:4589:0220:bd63:4d62:42ac:bd26:e1ac/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"7f67:fa11:adca:bd10:8583:757e:7ebb:be87","ipAddress":"4298:ffb2:30f7:84b6:5106:69aa:343c:8362"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"43.30.66.103","standbyIpAddress":"138.99.49.192"}},"version":"e04406e6-ff09-57ac-9b38-fdd8b19cf6fb","managementInterface":true,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"eb6bb0a1-cecb-55ba-8f96-9656ef090bfd","name":"Geolocation10","description":"Ziwe tukina pubki ifro winwo fo piog roswuife to ugouj zer dula haip ju.","version":"06ed679a-dbbb-5eb6-a535-ecc514c1a364","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"}]}],"destinationNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"eb6bb0a1-cecb-55ba-8f96-9656ef090bfd","name":"Geolocation10","description":"Ziwe tukina pubki ifro winwo fo piog roswuife to ugouj zer dula haip ju.","version":"06ed679a-dbbb-5eb6-a535-ecc514c1a364","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"}]}],"sourcePorts":[{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false}],"destinationPorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false}],"users":[{"id":"dd95afe8-437e-51ab-985a-c48929c0e3ba","name":"User 14","realmName":"ugaopezuepi","type":"trafficuser","realmId":2,"version":"esdafroce"},{"id":"56333652-27c4-5f8b-a6b4-d6f92023c62f","name":"User Group 27","realmName":"ecfomeov","type":"trafficusergroup","realmId":2,"version":"nemawpopew"},{"id":"17d2b0ac-fadf-5313-92e5-42fb1968a45b","name":"User Group 9","realmName":"mislebvaccop","type":"trafficusergroup","realmId":2,"version":"tokinedapu"}],"embeddedAppFilter":{"conditions":[{"filter":"mutilaje","tags":[{"id":"df3a88b5-3e3b-5024-9d9f-25d3262ce374","version":"b689fe7b-2b28-59fb-93cf-3995fe189cf1","appId":3,"name":"ApplicationTag15","description":"Ofihzaj hesa do dawo mipegil bilel liviip mub zahtavso rut nu zaj weuki dep suspufun ac rap.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"415702f2-3bd8-5dba-adea-dd03452067a5","version":"1062501a-214c-51d1-9af3-d9c2ca87588f","appId":4,"name":"ApplicationCategory11","description":"Dubofmih taj cukij fes vizoc urzip lazigeha pot bak jackoaz ufi ebomujme ce.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"fapbalnezi","tags":[{"id":"6f8f8faa-179f-5da2-800c-387e6e2d142f","version":"2d72ebc6-6079-5398-8376-0abffab064ce","appId":7,"name":"ApplicationTag7","description":"Lu nil nubfaida lorig kacze rajlacve uboruzu zobjo opimawu zapaswo jed sihnob hecoj le neus gubwe pij lerwilkic.","metadata":{"referenced":true},"type":"applicationtag"},{"id":"9b266171-0bc7-5f71-aa6c-44b8cbafa329","version":"746ac683-b500-5781-b179-f61db662f8d3","appId":9,"name":"ApplicationTag9","description":"Ja lohivap wim saj zuw hinakug tiduze noemo azonimi ici kovaz ikuza wiihboz bubopmin la uge jeko.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"04564350-cd34-5336-b365-6eed136499fb","version":"5b3a3635-a45e-58a8-b08f-031c8b167c39","name":"ApplicationFilter5","description":"Dowvaj dudi lajzezwu huczoak migmeliw omu obcew ri mazaowo gawhal ba ek mamu.","applications":[{"id":"17b348f3-870c-5aa4-bcae-3bfe0f0d061d","version":"7b26e782-fe4b-5259-aa5f-744f5c3f1b22","description":"Tem ac li gagnefro folema no mo tafdis cew vudo wafop ru milis ubuedurur sufbot.","deprecated":true,"appId":2,"productivity":0,"risk":2,"name":"Application8","tagIds":["e9812b72-2a36-5146-bce0-b09f876df88d"],"tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","SERVER"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"uckupehot","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"7cd12f14-70e7-51d8-abf1-af76ca735eef","version":"544ddfb1-dbc2-5901-aeaf-e76f489ff422","description":"Mata he jijto miaked lirki fuus ediupu rarengu ke iri escut gusotpi fa so piltef ob ocaguzuc zi.","deprecated":true,"appId":7,"productivity":3,"risk":4,"name":"Application9","tagIds":["aad0af81-b4ad-5a4a-a395-d88fc2abb8c4"],"tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["fff4b47c-a653-5729-a31a-e6353d420768","24cd3c21-8c19-531f-81d5-08aca7b587b9"],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"a7bc6deb-1544-59dd-b3c9-f0ff4f94d9aa","version":"46f1e31b-7fee-54bc-a10f-54e97745d47f","name":"UrlCategory-15","deprecated":false,"urlCategoryId":15,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN30","name":"Security Over Connectivity","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30/rules/"}},"description":"Security Over Connectivity Layer","type":"intrusionpolicy","version":"fc826c33-84fb-5b14-96e5-0cdd4717c442"},"filePolicy":{"id":"9c84889f-8c5c-5643-a489-d01bb07639a5","type":"filepolicy","policyType":"BLOCK_OFFICE_DOCUMENTS_PDF_UPLOAD_BLOCK_MALWARE_OTHERS","name":"File_Policy_3","description":"Mi rul etusisti iphogu acrevdid cas bijcaz nul ceaf napi kegpo su dozpov zikpul lohi gurukdi ke.","version":"d5e7c6d4-1f13-5cd2-9442-bdccd7e4b804"},"logFiles":false,"type":"accessrule"},{"id":"8f0b43ad-3d0f-5b9c-8dbc-b762be9f825e","version":"02031ee7-28b4-5921-976e-cec08e30756b","ruleId":5,"name":"Access_Rule_5","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"b7731ecd-011b-5f95-90b4-72b024a040d9","version":"8287a57f-56d1-51e9-83f1-361ad172f158","host":"28.235.174.9","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"83e3721c-b23f-5eb1-b660-40655c216680","name":"SecurityZone9Name","description":"Iha kiuh ja iweacce tuh hajmipjuj fikufuv bofijwi esede tu gahak wenab belif lupilsif udo puzabke ferfa ofwon.","version":"17150a55-f982-526f-aa60-9e435d2c5455","interfaces":[{"mtu":5818,"enabled":true,"description":"Wabjenuv vuhtevguf zucce omiogu anitug cuho gaejma vesumob oduuro levhid uniozwej olkavcuv dawiim mehub wuka suj.","id":"3faf4981-2b04-5091-9c1f-fa0ab78379b4","hardwareName":"GigabitEthernet1/5","macAddress":"7472.5071.519E","monitorInterface":false,"standbyMacAddress":"5387.1EFE.E0E6","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"84c0:cd09:bceb:ce0c:5cfa:f535:d426:01db/32","ipAddress":"067a:e7f9:1bf0:6af4:b89b:4c11:ec0c:51b4/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"02eb:e82a:bb44:e0a0:d969:6055:6744:cfa2","ipAddress":"aa33:0271:1f23:9725:0d24:7767:0fd2:0cf8"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"6.124.202.116","standbyIpAddress":"40.108.171.23"}},"version":"472d2c22-e548-5cb1-983f-f81ee3e14422","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"e960df5e-1ab8-5a15-85e5-a7a47f0ebcb0","name":"SecurityZone5Name","description":"Kinen aziheeci teniow ucezaw idikaki rupbu tieb rawihzec ufkedok iwewun le zihpisze vuzip roetjim fokbuwu jemrumvu cigzet.","version":"0925128c-48f1-552e-8507-379551253d9c","interfaces":[{"mtu":2652,"enabled":true,"description":"Hi vihjuup vueji zufmab wib zel woz ligok wu hi iremouto wahoato.","name":"subinterface5name","id":"9f816351-560c-5e5b-ba0a-2051828301e6","hardwareName":"SubInterface0/5.6","macAddress":"84F0.8C6A.D6DF","monitorInterface":true,"standbyMacAddress":"0971.695D.7024","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e20a:2b14:aecc:7997:984d:9fcd:b3c4:2e66/32","ipAddress":"5753:596d:3c86:ab69:1e26:fa83:c032:8e71/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"44d8:5ccd:bbcd:60df:d35b:afb7:6211:375b","ipAddress":"7b7c:0b52:9938:5274:ef02:b8c5:577c:5028"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"119.148.92.111","standbyIpAddress":"106.21.74.31"}},"version":"7a7c4c69-3da2-5e43-a1f3-2f8026bfb0bd","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"aff2c9fc-0b0e-58f4-b418-5ccd970fd67f","name":"SecurityZone11Name","description":"Nued mos di majri nih ebhebe desalu ivif novrove razjihew kepfa okforec lajatet sifu fa.","version":"d334e386-a53c-5345-9181-d20421a28e34","interfaces":[{"mtu":5818,"enabled":true,"description":"Ke vuhdojos zudgopa seto bere refcengo he camohpik pir risvup pum omhos zalpe sukjo rufe.","id":"2cf6e4b9-0bf0-5d7d-9110-6ab397d400a4","hardwareName":"GigabitEthernet1/4","macAddress":"0ABE.1A2F.DC3A","monitorInterface":false,"standbyMacAddress":"6057.AC6B.C47F","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"6d9d:2a5c:831a:6482:0268:e3fe:244e:1c1c/32","ipAddress":"c4fb:ea12:d0f3:42e4:10ed:e3f4:8e5a:6c9a/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"77f1:3852:307c:1449:a914:b786:3831:5ed1","ipAddress":"9eee:0707:2706:edd3:22f1:30d5:52f1:39fb"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"51.99.206.42","standbyIpAddress":"138.81.67.160"}},"version":"365fb3c7-62eb-5a7d-a412-b1cb7a387375","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"00826312-17b2-5b1e-968a-aabe114f0734","name":"Network6","description":"Je anah sankorir zaduv noscipan ron pi dubsanuf motnod ugufu zacew idu wafsembuc lo roge almoh lah.","version":"59e9909f-27d5-5e47-8d77-210909065352","type":"networkobject","subType":"NETWORK","value":"234.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"4e22d897-4214-5a59-adc0-a40ee1363e10","name":"Network5","description":"Kug viuheci tiwihu iberaw rolo januke huwefi jik labam lurepi be nioc ikime.","version":"880073f6-ecc1-5e1e-a50e-625fb47bbcf9","type":"networkobject","subType":"HOST","value":"51ef:0dda:2b5c:2260:6fc7:e9c3:7507:80fe","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"6fd7b2ed-8cb5-5f6d-9484-1eb947d9d21d","name":"Geolocation2","description":"Hu ewecorek laknueto mene nacudule pa can bevuniv ajhidzug daw murpeuza nafkoz oga.","version":"12c26d86-219a-59fd-85fb-aaf5939a4e66","type":"geolocation","locations":[{"id":"8d0b6206-9550-54d8-9ec8-3ffa76cf5aa1","name":"South America","deprecated":true,"code":1003,"type":"continent","countries":[{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"a05f1e97-1b5e-5f45-b53a-373f28de0edc","name":"Uruguay","deprecated":false,"iso3":"URY","iso2":"UY","code":"858","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"28b8a9fc-2a6a-5fd0-ba10-e3607052f0d1","name":"Guyana","deprecated":false,"iso3":"GUY","iso2":"GY","code":"328","type":"country"},{"id":"f21ae5ba-5139-5bc5-9b7c-6607bf1064c0","name":"French Guiana","deprecated":false,"iso3":"GUF","iso2":"GF","code":"254","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"1bb5225e-e880-5bc6-b4b5-373e05ab4ebf","name":"Colombia","deprecated":false,"iso3":"COL","iso2":"CO","code":"170","type":"country"},{"id":"c73e21a5-7336-58ba-9d53-a3d2eb1e1fdd","name":"Chile","deprecated":true,"iso3":"CHL","iso2":"CL","code":"152","type":"country"},{"id":"df4f3356-7c77-5629-8a0c-7ed0e899c303","name":"Brazil","deprecated":false,"iso3":"BRA","iso2":"BR","code":"076","type":"country"},{"id":"8b0d595a-61a0-508f-bacd-264ee85755cf","name":"Bolivia","deprecated":false,"iso3":"BOL","iso2":"BO","code":"068","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"}],"countryCodes":["862","858","740","600","604","328","254","238","218","170","152","076","068","032"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"}]}],"destinationNetworks":[{"id":"00826312-17b2-5b1e-968a-aabe114f0734","name":"Network6","description":"Je anah sankorir zaduv noscipan ron pi dubsanuf motnod ugufu zacew idu wafsembuc lo roge almoh lah.","version":"59e9909f-27d5-5e47-8d77-210909065352","type":"networkobject","subType":"NETWORK","value":"234.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"4e22d897-4214-5a59-adc0-a40ee1363e10","name":"Network5","description":"Kug viuheci tiwihu iberaw rolo januke huwefi jik labam lurepi be nioc ikime.","version":"880073f6-ecc1-5e1e-a50e-625fb47bbcf9","type":"networkobject","subType":"HOST","value":"51ef:0dda:2b5c:2260:6fc7:e9c3:7507:80fe","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"6fd7b2ed-8cb5-5f6d-9484-1eb947d9d21d","name":"Geolocation2","description":"Hu ewecorek laknueto mene nacudule pa can bevuniv ajhidzug daw murpeuza nafkoz oga.","version":"12c26d86-219a-59fd-85fb-aaf5939a4e66","type":"geolocation","locations":[{"id":"8d0b6206-9550-54d8-9ec8-3ffa76cf5aa1","name":"South America","deprecated":true,"code":1003,"type":"continent","countries":[{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"a05f1e97-1b5e-5f45-b53a-373f28de0edc","name":"Uruguay","deprecated":false,"iso3":"URY","iso2":"UY","code":"858","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"28b8a9fc-2a6a-5fd0-ba10-e3607052f0d1","name":"Guyana","deprecated":false,"iso3":"GUY","iso2":"GY","code":"328","type":"country"},{"id":"f21ae5ba-5139-5bc5-9b7c-6607bf1064c0","name":"French Guiana","deprecated":false,"iso3":"GUF","iso2":"GF","code":"254","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"1bb5225e-e880-5bc6-b4b5-373e05ab4ebf","name":"Colombia","deprecated":false,"iso3":"COL","iso2":"CO","code":"170","type":"country"},{"id":"c73e21a5-7336-58ba-9d53-a3d2eb1e1fdd","name":"Chile","deprecated":true,"iso3":"CHL","iso2":"CL","code":"152","type":"country"},{"id":"df4f3356-7c77-5629-8a0c-7ed0e899c303","name":"Brazil","deprecated":false,"iso3":"BRA","iso2":"BR","code":"076","type":"country"},{"id":"8b0d595a-61a0-508f-bacd-264ee85755cf","name":"Bolivia","deprecated":false,"iso3":"BOL","iso2":"BO","code":"068","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"}],"countryCodes":["862","858","740","600","604","328","254","238","218","170","152","076","068","032"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"}]}],"sourcePorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"destinationPorts":[{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"users":[{"id":"592d1c85-3853-5f5e-9906-809b844eb360","name":"User 8","realmName":"holwifibej","type":"trafficuser","realmId":2,"version":"hasrekajmip"},{"id":"a2c00f6f-91fe-5ac0-95e8-20349cbb25c4","name":"User Group 14","realmName":"pusojegme","type":"trafficusergroup","realmId":2,"version":"hesakokela"},{"id":"c7bfb8cc-f499-514e-899b-1f640e4e0a7b","name":"User 5","realmName":"giussozom","type":"trafficuser","realmId":2,"version":"upirakuceere"}],"embeddedAppFilter":{"conditions":[{"filter":"loweteziwno","tags":[{"id":"11d43e11-683f-5ec2-89c6-6b4e9a8c756d","version":"13924388-a6d9-5f80-8b3b-825736afd2bc","appId":13,"name":"ApplicationTag13","description":"Fiwjag safe jujohmi lipa gucpi la tocgomkap fozensir jafuhi vutbinij jov lifo ciduwno fuzegvef consibe hope.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"},{"filter":"giasnovpe","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"7112acbb-aa34-52fb-bdf3-7b4d5cd2f3dc","version":"7bd54520-ef34-515e-bb4b-187f47dcf73a","name":"ApplicationFilter10","description":"Pif duh umocho lagu ucihawer omu vap vuh keihofe did al awalos uzecow hizridu iwtuw.","applications":[{"id":"6361bd7f-01c9-5714-baca-035d66f50a8c","version":"50dcdb47-5d21-537f-b3b0-81713bf31c06","description":"Leku luto lofuwec wuwguhot abmofdo cun vuunuvi lulsoteg kivsas mijmi ru kipumeja sacwuwhe gub magumera.","deprecated":false,"appId":5,"productivity":0,"risk":4,"name":"Application5","tagIds":["0b45de63-5252-5257-acf6-ce494cdb905a"],"tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"uckupehot","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"8f425fed-eadf-5687-8e75-9b4fe967fcc9","version":"91b94988-c56f-5a96-a552-c943995e0b82","description":"Aduuhi zinco zi larcacha pesu umetouki wet jikoh zu vi ot jelrevap.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application11","tagIds":["f7e90abe-ce71-56da-9f43-dd8685ec1a3a"],"tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5b6fae52-502e-50ff-921a-a7a474f7a857","33552c21-0930-5bb5-8459-9b7608cda68e"],"categories":[{"id":"5b6fae52-502e-50ff-921a-a7a474f7a857","version":"fb5f760a-3774-5c39-b306-9174ad3e3c0a","appId":7,"name":"ApplicationCategory6","description":"Wafekioke nozo tu fazif mef tuve rokpicfab maer cu vaz pibcub ifi so noho wazubta cewsinu hakoj.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"bba3c76d-8a74-5ec9-9bc5-df3008b85742","version":"uwofikigom","name":"UrlGroup2","description":"Eze zuj difruw namoha pu nijizkam owitema konho upi neppo fikcebzi hub zadouf sautiar.","objects":[{"id":"00abb7ee-65e7-5e3e-99f7-9800c0af349c","version":"bogoprobifi","name":"Url15","description":"Mok ujci zasidrob zo man urebanfir gim faseg hacabkuw gi jorabco bitle bek.","url":"http://nufiwow.net/mimce","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"a7bc6deb-1544-59dd-b3c9-f0ff4f94d9aa","version":"46f1e31b-7fee-54bc-a10f-54e97745d47f","name":"UrlCategory-15","deprecated":false,"urlCategoryId":15,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN40","name":"Maximum Detection","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40/rules/"}},"description":"Maximum Detection Layer","type":"intrusionpolicy","version":"124d1a7b-a1b4-5097-b6d4-5a399c5bdb68"},"filePolicy":{"id":"fdae5632-c7d6-5dce-b95f-40b7c96b2a3d","type":"filepolicy","policyType":"CLOUD_LOOKUP_ALL","name":"File_Policy_2","description":"Tifeluw gag hos javfow rubin migapmom zab murizu pi we suvos ar sic zujizut si nah lephaflef.","version":"8009f4f9-d3bd-5991-acc5-c2eb5550c013"},"logFiles":false,"type":"accessrule"},{"id":"fb91225e-bd8a-5602-ab9a-ab0d81a72202","version":"478a9660-85ea-52fa-a9ce-96d24b15e8be","ruleId":6,"name":"Access_Rule_6","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_NONE","sourceZones":[{"id":"a3e7f3ef-3d09-5365-9a73-229ded43ba48","name":"SecurityZone15Name","description":"Wofa mukko zugal efamosaj ape vurugepa memepi woutod lu ergifde ceini den pegvuni ja.","version":"e721fda0-83ce-51b6-a003-bedfe42bb5db","interfaces":[{"mtu":2652,"enabled":false,"description":"Bo afri kewbiezu atda okpibmim faelaja jip tu ena oc pek mu piwnehsab puspon nuuja ziwelnak ilwu teew.","name":"subinterface9name","id":"a54e4784-eafc-5bc4-bfa1-985dd51ea923","hardwareName":"SubInterface0/9.10","macAddress":"A82E.76DF.F146","monitorInterface":false,"standbyMacAddress":"11D9.182D.C518","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4f09:724e:c874:a60e:ff7c:0374:170f:cacf/32","ipAddress":"4313:8aa3:d274:f439:ea48:c8c7:c19b:22e2/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"0484:520a:88d4:9a88:6e95:64c9:65b9:f83b","ipAddress":"4ad5:881b:7ff6:552a:b882:7de7:21fc:972d"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"0.192.1.63","standbyIpAddress":"195.235.84.107"}},"version":"877f9f31-9402-5eaa-b18c-9333e068e73e","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"9c8667b7-4e34-56df-b092-1340af45b0d2","name":"SecurityZone10Name","description":"Joni gagko ugmucba ogparjad uvre hobneva wete epujein nelgidma kuollum wi gabvanaj sosso.","version":"bc2e044f-1753-51e2-aa7a-ea7362c6b23b","interfaces":[{"mtu":5818,"enabled":false,"description":"Rojsitepo fifgar sovaf ebabovvoj ivjinjig ite sadehtud upazeh dejsabfuv tipgo cosbe femigpi ac aztazta beduw.","id":"fa3dc115-5c3e-51ae-aa38-60ff9abd415a","hardwareName":"GigabitEthernet1/7","macAddress":"55F1.B70C.C1B7","monitorInterface":false,"standbyMacAddress":"B24B.66FA.3266","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"29df:8589:549c:1eef:cc3a:60bf:e04c:3627/32","ipAddress":"afd9:ec18:e2d8:02b5:d0fb:e88c:cea2:e443/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"1a98:7998:35a2:1767:f8b7:fea5:dc50:6a35","ipAddress":"2365:d545:9cd1:ab13:70c3:7177:cd7b:749e"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"135.29.245.249","standbyIpAddress":"74.247.146.212"}},"version":"143d2951-eca6-58fa-b11e-89d0e27b913c","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":2652,"enabled":false,"description":"Cacfi rijgebpuj hotow vu jisfesgub os biami baajo cimod totufo cajip epkaeg ezeugpek ucifulo huzdeal.","name":"subinterface8name","id":"90da9e2e-5eb1-5d7f-95cf-8759bf36f644","hardwareName":"SubInterface0/8.9","macAddress":"8C77.2E4D.7213","monitorInterface":false,"standbyMacAddress":"32AD.D756.5E62","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1ca8:b55c:d9ed:3be2:2955:da65:a52c:d0fc/32","ipAddress":"085b:3c0e:113f:ccef:6d12:cb57:ef1d:431d/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3025:32ff:78fb:37e2:42a3:8d40:64ee:e93e","ipAddress":"7aea:6aed:7d14:3ac6:df8b:0446:5b7d:f55f"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"225.196.76.214","standbyIpAddress":"62.250.115.23"}},"version":"4e59e028-4b81-5f28-9fbf-6033fd2394b8","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"ec43d6a8-fe32-5daa-a8bd-766b57a23892","name":"SecurityZone12Name","description":"Etzasus comdupo lu jeitlov zedoj no lidwa ka beni ujenapse lowon dil ami jir.","version":"3091782d-2bd2-57e7-8447-191d486665aa","interfaces":[{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"eb6bb0a1-cecb-55ba-8f96-9656ef090bfd","name":"Geolocation10","description":"Ziwe tukina pubki ifro winwo fo piog roswuife to ugouj zer dula haip ju.","version":"06ed679a-dbbb-5eb6-a535-ecc514c1a364","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"}]}],"destinationNetworks":[{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"eb6bb0a1-cecb-55ba-8f96-9656ef090bfd","name":"Geolocation10","description":"Ziwe tukina pubki ifro winwo fo piog roswuife to ugouj zer dula haip ju.","version":"06ed679a-dbbb-5eb6-a535-ecc514c1a364","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"}]}],"sourcePorts":[{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"destinationPorts":[{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}],"users":[{"id":"8d55f1a6-9864-59a6-a688-87f9e97cc2ee","name":"User 24","realmName":"ubejubijeg","type":"trafficuser","realmId":2,"version":"sahpowbudpiv"},{"id":"ee881dbe-33b7-559b-a776-101d11357429","name":"User 2","realmName":"enrinkimu","type":"trafficuser","realmId":2,"version":"nibnajomjo"},{"id":"fc7b882d-b7f5-53d4-a898-05e7c7e99da2","name":"User Group 3","realmName":"sumajiwne","type":"trafficusergroup","realmId":2,"version":"tucidwefga"}],"embeddedAppFilter":{"conditions":[{"filter":"huimezuben","tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"},{"filter":"baketfale","tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"f0c3a5d1-57d9-50ea-9035-0e27d2dd7447","version":"186b3aa2-9ffb-590a-a7f5-b799b6dd33ac","name":"ApplicationFilter11","description":"Bil katit molcehmo bir pi unor famokuiba oglu ec emmem gazwica dor ko.","applications":[{"id":"a035fce1-4959-5362-8472-253aa159b1ec","version":"616efbb8-6148-59e3-afd4-68d4d42164c1","description":"Fo cigejki leg umjunu ja da lefuh ib zatlose ganutag dilebi cejizgow.","deprecated":false,"appId":6,"productivity":0,"risk":1,"name":"Application15","tagIds":["f7e90abe-ce71-56da-9f43-dd8685ec1a3a","a558b06a-1e83-5caa-a903-3b6e291ddc2e"],"tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"a558b06a-1e83-5caa-a903-3b6e291ddc2e","version":"96c0750c-0f50-5872-869a-8b50dad24edc","appId":8,"name":"SSL protocol","description":"Ifgafu ma vopuatu ho jim zud hiodiben ango ji nusiwufu hig gatejsem povci.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["fff4b47c-a653-5729-a31a-e6353d420768","7f62abc6-7f08-5a69-acb6-65def01251d4"],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","SERVER"],"metadata":{"referenced":true},"type":"application"},{"id":"ce901dd3-4e85-5bf0-a273-2018d76527c8","version":"84a4f0c6-57b3-50f3-bf20-0cf68bbbb806","description":"Gipus bovawge vel ceoziwo nuim ehdifir nowe onoli atsewav irfer semowi ge turos mufo tahukca jaz.","deprecated":true,"appId":5,"productivity":0,"risk":2,"name":"Application2","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["1323d445-72c0-5d8b-9f58-c223feb51bac","328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"1323d445-72c0-5d8b-9f58-c223feb51bac","version":"f85374d2-b1c5-5e65-b746-77dc6a21decb","appId":7,"name":"ApplicationCategory14","description":"Ohoad agoteveto irewomi adizogo lurtoop tizesuca himewwak poftoj cow nunapivif cisge pe hi raam hatdunze.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"fapbalnezi","tags":[{"id":"6f8f8faa-179f-5da2-800c-387e6e2d142f","version":"2d72ebc6-6079-5398-8376-0abffab064ce","appId":7,"name":"ApplicationTag7","description":"Lu nil nubfaida lorig kacze rajlacve uboruzu zobjo opimawu zapaswo jed sihnob hecoj le neus gubwe pij lerwilkic.","metadata":{"referenced":true},"type":"applicationtag"},{"id":"9b266171-0bc7-5f71-aa6c-44b8cbafa329","version":"746ac683-b500-5781-b179-f61db662f8d3","appId":9,"name":"ApplicationTag9","description":"Ja lohivap wim saj zuw hinakug tiduze noemo azonimi ici kovaz ikuza wiihboz bubopmin la uge jeko.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"6361bd7f-01c9-5714-baca-035d66f50a8c","version":"50dcdb47-5d21-537f-b3b0-81713bf31c06","description":"Leku luto lofuwec wuwguhot abmofdo cun vuunuvi lulsoteg kivsas mijmi ru kipumeja sacwuwhe gub magumera.","deprecated":false,"appId":5,"productivity":0,"risk":4,"name":"Application5","tagIds":["0b45de63-5252-5257-acf6-ce494cdb905a"],"tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"00d12166-18a1-568d-8878-cbe92b44602c","name":"Risk unknown","index":0,"startPercentage":0,"endPercentage":0,"version":"b5c74a5a-ad53-5a53-91d1-505f3d64d5d5","type":"urlreputation"},"urlCategory":{"id":"5c03856a-3c13-5838-b397-19e4eb343d1d","version":"4399e700-e8df-5a73-a565-c19049383762","name":"Health and Medicine","deprecated":false,"urlCategoryId":1,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN40","name":"Maximum Detection","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40/rules/"}},"description":"Maximum Detection Layer","type":"intrusionpolicy","version":"124d1a7b-a1b4-5097-b6d4-5a399c5bdb68"},"filePolicy":{"id":"fdae5632-c7d6-5dce-b95f-40b7c96b2a3d","type":"filepolicy","policyType":"CLOUD_LOOKUP_ALL","name":"File_Policy_2","description":"Tifeluw gag hos javfow rubin migapmom zab murizu pi we suvos ar sic zujizut si nah lephaflef.","version":"8009f4f9-d3bd-5991-acc5-c2eb5550c013"},"logFiles":false,"type":"accessrule"},{"id":"3c66cf3d-cd87-520d-ac1d-2cf54aa55c89","version":"17edbbd1-c767-5a29-9d91-b6a595adaf3f","ruleId":7,"name":"Access_Rule_7","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_FLOW_END","syslogServer":{"id":"8b2497cb-1dee-5d91-88e3-cf2ba71d6d57","version":"35ab6c5c-b8e4-5e24-b013-4ffd6ed479b6","host":"83.58.8.189","port":5897,"protocol":"UDP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"a3e7f3ef-3d09-5365-9a73-229ded43ba48","name":"SecurityZone15Name","description":"Wofa mukko zugal efamosaj ape vurugepa memepi woutod lu ergifde ceini den pegvuni ja.","version":"e721fda0-83ce-51b6-a003-bedfe42bb5db","interfaces":[{"mtu":2652,"enabled":false,"description":"Bo afri kewbiezu atda okpibmim faelaja jip tu ena oc pek mu piwnehsab puspon nuuja ziwelnak ilwu teew.","name":"subinterface9name","id":"a54e4784-eafc-5bc4-bfa1-985dd51ea923","hardwareName":"SubInterface0/9.10","macAddress":"A82E.76DF.F146","monitorInterface":false,"standbyMacAddress":"11D9.182D.C518","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4f09:724e:c874:a60e:ff7c:0374:170f:cacf/32","ipAddress":"4313:8aa3:d274:f439:ea48:c8c7:c19b:22e2/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"0484:520a:88d4:9a88:6e95:64c9:65b9:f83b","ipAddress":"4ad5:881b:7ff6:552a:b882:7de7:21fc:972d"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"0.192.1.63","standbyIpAddress":"195.235.84.107"}},"version":"877f9f31-9402-5eaa-b18c-9333e068e73e","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"340bf250-a4a5-5049-bddf-a6201a9b8e86","name":"SecurityZone7Name","description":"So gitejipo sotvotdab watu la ica fojum dorog odohog mil etuw ta daghavke dig.","version":"273d67ab-abb9-5af1-8574-3e9af6e98aed","interfaces":[{"mtu":2652,"enabled":false,"description":"Wa cep gi lankowtu ce uvujed tad wo vezke vib vezvufgev hun vob velumde.","name":"subinterface11name","id":"ffc74b4d-ad27-5459-9907-186a8c739189","hardwareName":"SubInterface0/11.12","macAddress":"1534.AB09.4146","monitorInterface":true,"standbyMacAddress":"CF72.BDFB.98A1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"fafb:559d:106d:67ac:52dd:e182:d306:4792/32","ipAddress":"a7bd:69ea:f24f:04ea:40c5:3f80:0416:0f09/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d544:6d26:411c:e460:9911:cb8b:ca9e:3a15","ipAddress":"f96f:858d:9ed1:fc9f:7b47:0fb4:246d:6cb6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"17.76.225.83","standbyIpAddress":"195.253.157.229"}},"version":"e22e21d2-9d64-51a4-adc2-a775a4572916","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"sourceNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"461303fa-0a19-58a2-9c11-f34f2bf0dfbd","name":"Geolocation8","description":"To ininegto gek zaloj voal tu hudodwa asaatapim olanlej wagwip mu ufu zobpe.","version":"729c6712-e56d-58b3-84f4-e9047261348c","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"},{"id":"3589f9a6-a7c1-5332-a139-3f9595fdfd28","name":"Turks and Caicos Islands","deprecated":true,"iso3":"TCA","iso2":"TC","code":"796","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"}]}],"destinationNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"461303fa-0a19-58a2-9c11-f34f2bf0dfbd","name":"Geolocation8","description":"To ininegto gek zaloj voal tu hudodwa asaatapim olanlej wagwip mu ufu zobpe.","version":"729c6712-e56d-58b3-84f4-e9047261348c","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"},{"id":"3589f9a6-a7c1-5332-a139-3f9595fdfd28","name":"Turks and Caicos Islands","deprecated":true,"iso3":"TCA","iso2":"TC","code":"796","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"}]}],"sourcePorts":[{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false},{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true}],"destinationPorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false}],"users":[{"id":"56333652-27c4-5f8b-a6b4-d6f92023c62f","name":"User Group 27","realmName":"ecfomeov","type":"trafficusergroup","realmId":2,"version":"nemawpopew"},{"id":"19329003-b80c-51e0-9c5e-b210e6102c0a","name":"User 34","realmName":"uraapimozocu","type":"trafficuser","realmId":0,"version":"asdebjiat"},{"id":"b5063789-8609-522b-9468-8ab4b95df771","name":"User Group 19","realmName":"bulculewube","type":"trafficusergroup","realmId":2,"version":"cuwoziuf"}],"embeddedAppFilter":{"conditions":[{"filter":"jignorebes","tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"cc35245d-826d-5658-b4fe-95991a398ec6","version":"d479ec11-d1a3-5f15-b8dc-04f5ecbe8b48","name":"ApplicationFilter1","description":"Foan parot akitu nufidsu purfu biwowobi piahote noturtus otsido sa jihda pebip tuwi gocre.","applications":[{"id":"f8c5fef0-916a-541e-9113-de4951dde18b","version":"c07380b4-d91f-5a9b-aed7-efbe152c2f6b","description":"Aloul gouwtu riguse luzmokfof somi ehroz esecegwaf fafal heeg ohban fi ijga.","deprecated":true,"appId":6,"productivity":1,"risk":3,"name":"Application6","tagIds":["63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["33552c21-0930-5bb5-8459-9b7608cda68e","794d6605-f5d9-5f26-b11d-507eac471889"],"categories":[{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"baketfale","tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":true,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"83c8e0e6-3707-5128-b7da-4659f67b76a0","version":"5072ae78-a326-5b92-8176-c0c8132922a8","description":"Bo dese su ja elumuf ane zusjo fiplois ewariju ihjup nunnihep kosaldic kuhfovu.","deprecated":false,"appId":4,"productivity":0,"risk":1,"name":"Application1","tagIds":["62bc5d56-7e60-5a71-a467-2c4f2a035a06"],"tags":[{"id":"62bc5d56-7e60-5a71-a467-2c4f2a035a06","version":"e7e0ebc9-3a9a-5342-91e9-ae0ce54b3444","appId":12,"name":"ApplicationTag12","description":"Bamiwaga bo kek wawinta ovepozgan tibutef je kezaluk zonwoz fovul aw ter nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","2ad8b880-5783-5919-bda2-46e8316f2d70"],"categories":[{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"2ad8b880-5783-5919-bda2-46e8316f2d70","version":"c19f7a96-7634-5d1b-972d-99caa3e34a64","appId":1,"name":"ApplicationCategory12","description":"Ev zalapi hiwuhi peror lupu iv obalem gicobem vi bafuh ponij co hur linsis fukurod dehpupme.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"e1088b47-43c6-509a-a722-763318471791","version":"53a76ab0-006b-5dd4-abc4-c0f9a0d58f50","name":"UrlCategory-13","deprecated":false,"urlCategoryId":13,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN40","name":"Maximum Detection","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40/rules/"}},"description":"Maximum Detection Layer","type":"intrusionpolicy","version":"124d1a7b-a1b4-5097-b6d4-5a399c5bdb68"},"filePolicy":{"id":"9c84889f-8c5c-5643-a489-d01bb07639a5","type":"filepolicy","policyType":"BLOCK_OFFICE_DOCUMENTS_PDF_UPLOAD_BLOCK_MALWARE_OTHERS","name":"File_Policy_3","description":"Mi rul etusisti iphogu acrevdid cas bijcaz nul ceaf napi kegpo su dozpov zikpul lohi gurukdi ke.","version":"d5e7c6d4-1f13-5cd2-9442-bdccd7e4b804"},"logFiles":false,"type":"accessrule"},{"id":"015d706e-7db2-5e7b-8d3f-b2ffbb7410b9","version":"3e45de38-bc9b-5346-80cb-c42ff03a67a0","ruleId":8,"name":"Access_Rule_8","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"8b2497cb-1dee-5d91-88e3-cf2ba71d6d57","version":"35ab6c5c-b8e4-5e24-b013-4ffd6ed479b6","host":"83.58.8.189","port":5897,"protocol":"UDP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"d2cf6df0-e095-59f1-9afe-4e1f95b290e7","name":"SecurityZone6Name","description":"Kivmeat sepfeheh jekacaloh awe wap vajan utiweb daczo ji ji pew wioha bawmivim ri kaj gibvevsa.","version":"5751e8ac-10c9-5b44-a9fa-1ed8e07d2d40","interfaces":[{"mtu":5818,"enabled":false,"description":"Jigiz malko navsup bojga widbihi vatel vahuwuta ugi bopuru duzwar zopi juinoito sibkonac fozgojmi toopu nurhiru ce joeho.","name":"inside","id":"bddde0e1-1b1f-5f42-b9b7-7c72d9099ef4","hardwareName":"GigabitEthernet1/1","macAddress":"ECFB.7E12.09E1","monitorInterface":true,"standbyMacAddress":"A09D.B513.9683","version":"69f9f38e-0479-58d1-961c-e4040d439200","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},{"mtu":2652,"enabled":true,"description":"Pipakaz ramkudu ulido ce boh ugmepku izareszeh katakuz vosinde takwa piprazipo fostoftug egjolut.","name":"subinterface3name","id":"4258612a-c6ac-5407-8edc-04b207b2b473","hardwareName":"SubInterface0/3.4","macAddress":"4A8E.2AFE.5DE9","monitorInterface":true,"standbyMacAddress":"F917.A989.864E","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"5b49:5a29:3cd4:5c83:7b30:0115:7927:eaf3/32","ipAddress":"a3eb:3b72:2cfa:9901:b7c7:1581:fa72:4b49/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"42e6:34b8:f5eb:802f:626b:503c:781e:aacd","ipAddress":"dcc0:3abc:3933:8a47:25c6:d9a7:2e80:06dc"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"137.234.118.13","standbyIpAddress":"67.162.53.251"}},"version":"2a53f3c3-fc6d-557c-bdbb-e97bc156553c","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"e960df5e-1ab8-5a15-85e5-a7a47f0ebcb0","name":"SecurityZone5Name","description":"Kinen aziheeci teniow ucezaw idikaki rupbu tieb rawihzec ufkedok iwewun le zihpisze vuzip roetjim fokbuwu jemrumvu cigzet.","version":"0925128c-48f1-552e-8507-379551253d9c","interfaces":[{"mtu":2652,"enabled":true,"description":"Hi vihjuup vueji zufmab wib zel woz ligok wu hi iremouto wahoato.","name":"subinterface5name","id":"9f816351-560c-5e5b-ba0a-2051828301e6","hardwareName":"SubInterface0/5.6","macAddress":"84F0.8C6A.D6DF","monitorInterface":true,"standbyMacAddress":"0971.695D.7024","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e20a:2b14:aecc:7997:984d:9fcd:b3c4:2e66/32","ipAddress":"5753:596d:3c86:ab69:1e26:fa83:c032:8e71/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"44d8:5ccd:bbcd:60df:d35b:afb7:6211:375b","ipAddress":"7b7c:0b52:9938:5274:ef02:b8c5:577c:5028"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"119.148.92.111","standbyIpAddress":"106.21.74.31"}},"version":"7a7c4c69-3da2-5e43-a1f3-2f8026bfb0bd","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"09d97c3e-0824-5e9d-bee8-28ea311458a5","name":"Geolocation4","description":"Detriwwot uwaan sa ta pohvab ako fi owe apefi ocde mok alcob.","version":"b599df3c-38d1-523e-9bc6-2d82e76d48ff","type":"geolocation","locations":[{"id":"18cbe485-d646-5aad-827e-13ec090dd450","name":"Europe","deprecated":false,"code":1005,"type":"continent","countries":[{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"90c38868-27c0-5de2-a580-630b08b64406","name":"Ukraine","deprecated":false,"iso3":"UKR","iso2":"UA","code":"804","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"cbe10064-72a0-5b1a-813f-0d684567cb07","name":"Slovakia","deprecated":true,"iso3":"SVK","iso2":"SK","code":"703","type":"country"},{"id":"ce221115-d595-50d6-bd2f-fe0429b27b04","name":"Svalbard and Jan Mayen","deprecated":false,"iso3":"SJM","iso2":"SJ","code":"744","type":"country"},{"id":"9401a437-ee7e-51a8-bcc0-7623f8193dac","name":"Slovenia","deprecated":true,"iso3":"SVN","iso2":"SI","code":"705","type":"country"},{"id":"d4901422-c6fd-5ef4-bf4e-09d2074b34dc","name":"Sweden","deprecated":true,"iso3":"SWE","iso2":"SE","code":"752","type":"country"},{"id":"5f22f339-f1a0-5a70-9254-5dd0dad4d243","name":"Russia","deprecated":false,"iso3":"RUS","iso2":"RU","code":"643","type":"country"},{"id":"3a771763-9c5d-580f-9fc5-df41e7355def","name":"Serbia","deprecated":false,"iso3":"SRB","iso2":"RS","code":"688","type":"country"},{"id":"74759e4d-8901-5302-89b7-384fa438a9d2","name":"Romania","deprecated":true,"iso3":"ROU","iso2":"RO","code":"642","type":"country"},{"id":"58579a6d-8542-5c18-8ecb-4d54f527c8e5","name":"Portugal","deprecated":false,"iso3":"PRT","iso2":"PT","code":"620","type":"country"},{"id":"c095aa5d-350d-5db8-9d01-0a106f93c3a5","name":"Poland","deprecated":true,"iso3":"POL","iso2":"PL","code":"616","type":"country"},{"id":"02fa0428-9885-58ba-9fc1-9cc2cb30f0cb","name":"Norway","deprecated":true,"iso3":"NOR","iso2":"NO","code":"578","type":"country"},{"id":"39923980-c4f7-5dda-890c-ab8c290a5be5","name":"Netherlands","deprecated":false,"iso3":"NLD","iso2":"NL","code":"528","type":"country"},{"id":"aaad1a9f-fd04-5427-aea9-6a2216f61efe","name":"Malta","deprecated":false,"iso3":"MLT","iso2":"MT","code":"470","type":"country"},{"id":"ef8d2943-7ddf-57a6-8543-563cc13ebf4e","name":"Macedonia","deprecated":true,"iso3":"MKD","iso2":"MK","code":"807","type":"country"},{"id":"779cdf72-27d4-5e41-b81c-8ea5ef53f01a","name":"Montenegro","deprecated":false,"iso3":"MNE","iso2":"ME","code":"499","type":"country"},{"id":"8ecb3dd6-0cc2-5bac-b21d-83f1e3fbc848","name":"Moldova","deprecated":true,"iso3":"MDA","iso2":"MD","code":"498","type":"country"},{"id":"e0400095-a311-5b38-92e1-d635e6a1f938","name":"Monaco","deprecated":false,"iso3":"MCO","iso2":"MC","code":"492","type":"country"},{"id":"4e696592-960a-51d9-9078-985330e3feb1","name":"Latvia","deprecated":true,"iso3":"LVA","iso2":"LV","code":"428","type":"country"},{"id":"bb1fe9b8-9f49-56fe-9278-4cc73152f780","name":"Luxembourg","deprecated":true,"iso3":"LUX","iso2":"LU","code":"442","type":"country"},{"id":"76d4e398-d6e2-5f4f-ba11-d01a828f883d","name":"Lithuania","deprecated":true,"iso3":"LTU","iso2":"LT","code":"440","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"73f3b217-148d-5d48-a652-495178f5a046","name":"Jersey","deprecated":true,"iso3":"JEY","iso2":"JE","code":"832","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"968a378c-2885-5a3b-a0dc-160560765c7e","name":"Isle of Man","deprecated":true,"iso3":"IMN","iso2":"IM","code":"833","type":"country"},{"id":"cae04dab-514c-559a-94d5-b3930bcf5800","name":"Ireland","deprecated":false,"iso3":"IRL","iso2":"IE","code":"372","type":"country"},{"id":"bc5d918e-a2c8-508d-9a87-c990eeec6215","name":"Hungary","deprecated":true,"iso3":"HUN","iso2":"HU","code":"348","type":"country"},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"03330265-fe01-5435-899a-08042bc643b5","name":"Greece","deprecated":false,"iso3":"GRC","iso2":"GR","code":"300","type":"country"},{"id":"a3120da5-8f6f-5fdc-af6d-8ccac4e802b7","name":"Gibraltar","deprecated":true,"iso3":"GIB","iso2":"GI","code":"292","type":"country"},{"id":"7a31d958-157e-509d-bc9f-f52b45c85c6d","name":"Guernsey","deprecated":true,"iso3":"GGY","iso2":"GG","code":"831","type":"country"},{"id":"2fbb8b4c-cc35-5550-acef-bc53b5c0f0f4","name":"United Kingdom","deprecated":false,"iso3":"GBR","iso2":"GB","code":"826","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"5ee6b8ad-2c86-58d1-ac57-8db405e7dda8","name":"Faroe Islands","deprecated":true,"iso3":"FRO","iso2":"FO","code":"234","type":"country"},{"id":"a7a8cee7-9bad-5786-a874-6be00056cecd","name":"Finland","deprecated":true,"iso3":"FIN","iso2":"FI","code":"246","type":"country"},{"id":"1e9c9635-11bb-5544-8fab-27b6da86a545","name":"Spain","deprecated":true,"iso3":"ESP","iso2":"ES","code":"724","type":"country"},{"id":"355204ae-8c3e-5a96-8f23-3670fde3d26a","name":"Estonia","deprecated":true,"iso3":"EST","iso2":"EE","code":"233","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"004e74d4-cffc-599e-bd12-f4ac69a8a700","name":"Germany","deprecated":true,"iso3":"DEU","iso2":"DE","code":"276","type":"country"},{"id":"fbdea1d9-5ac4-53d0-be10-3220747421b8","name":"Czech Republic","deprecated":true,"iso3":"CZE","iso2":"CZ","code":"203","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"089c406e-a4ff-52ae-9672-73a1bdf5a396","name":"Belarus","deprecated":true,"iso3":"BLR","iso2":"BY","code":"112","type":"country"},{"id":"3dfcd86f-2e29-59f7-9e44-27fe038c51a6","name":"Bulgaria","deprecated":false,"iso3":"BGR","iso2":"BG","code":"100","type":"country"},{"id":"8c299df7-5229-5596-963c-04cb2b46d34d","name":"Belgium","deprecated":true,"iso3":"BEL","iso2":"BE","code":"056","type":"country"},{"id":"fc99ebdb-5c82-5819-979d-d8f6310351af","name":"Bosnia and Herzegovina","deprecated":true,"iso3":"BIH","iso2":"BA","code":"070","type":"country"},{"id":"588e4f19-dfac-5134-98c1-c1cafee86399","name":"Åland","deprecated":false,"iso3":"ALA","iso2":"AX","code":"248","type":"country"},{"id":"67f08133-23b8-52ac-8436-41d77a2eebfb","name":"Austria","deprecated":false,"iso3":"AUT","iso2":"AT","code":"040","type":"country"},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"}],"countryCodes":["0","336","804","674","703","744","705","752","643","688","642","620","616","578","528","470","807","499","498","492","428","442","440","438","832","380","352","833","372","348","191","300","292","831","826","250","234","246","724","233","208","276","203","196","756","112","100","056","070","248","040","008"]},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"}]}],"destinationNetworks":[{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"09d97c3e-0824-5e9d-bee8-28ea311458a5","name":"Geolocation4","description":"Detriwwot uwaan sa ta pohvab ako fi owe apefi ocde mok alcob.","version":"b599df3c-38d1-523e-9bc6-2d82e76d48ff","type":"geolocation","locations":[{"id":"18cbe485-d646-5aad-827e-13ec090dd450","name":"Europe","deprecated":false,"code":1005,"type":"continent","countries":[{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"90c38868-27c0-5de2-a580-630b08b64406","name":"Ukraine","deprecated":false,"iso3":"UKR","iso2":"UA","code":"804","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"cbe10064-72a0-5b1a-813f-0d684567cb07","name":"Slovakia","deprecated":true,"iso3":"SVK","iso2":"SK","code":"703","type":"country"},{"id":"ce221115-d595-50d6-bd2f-fe0429b27b04","name":"Svalbard and Jan Mayen","deprecated":false,"iso3":"SJM","iso2":"SJ","code":"744","type":"country"},{"id":"9401a437-ee7e-51a8-bcc0-7623f8193dac","name":"Slovenia","deprecated":true,"iso3":"SVN","iso2":"SI","code":"705","type":"country"},{"id":"d4901422-c6fd-5ef4-bf4e-09d2074b34dc","name":"Sweden","deprecated":true,"iso3":"SWE","iso2":"SE","code":"752","type":"country"},{"id":"5f22f339-f1a0-5a70-9254-5dd0dad4d243","name":"Russia","deprecated":false,"iso3":"RUS","iso2":"RU","code":"643","type":"country"},{"id":"3a771763-9c5d-580f-9fc5-df41e7355def","name":"Serbia","deprecated":false,"iso3":"SRB","iso2":"RS","code":"688","type":"country"},{"id":"74759e4d-8901-5302-89b7-384fa438a9d2","name":"Romania","deprecated":true,"iso3":"ROU","iso2":"RO","code":"642","type":"country"},{"id":"58579a6d-8542-5c18-8ecb-4d54f527c8e5","name":"Portugal","deprecated":false,"iso3":"PRT","iso2":"PT","code":"620","type":"country"},{"id":"c095aa5d-350d-5db8-9d01-0a106f93c3a5","name":"Poland","deprecated":true,"iso3":"POL","iso2":"PL","code":"616","type":"country"},{"id":"02fa0428-9885-58ba-9fc1-9cc2cb30f0cb","name":"Norway","deprecated":true,"iso3":"NOR","iso2":"NO","code":"578","type":"country"},{"id":"39923980-c4f7-5dda-890c-ab8c290a5be5","name":"Netherlands","deprecated":false,"iso3":"NLD","iso2":"NL","code":"528","type":"country"},{"id":"aaad1a9f-fd04-5427-aea9-6a2216f61efe","name":"Malta","deprecated":false,"iso3":"MLT","iso2":"MT","code":"470","type":"country"},{"id":"ef8d2943-7ddf-57a6-8543-563cc13ebf4e","name":"Macedonia","deprecated":true,"iso3":"MKD","iso2":"MK","code":"807","type":"country"},{"id":"779cdf72-27d4-5e41-b81c-8ea5ef53f01a","name":"Montenegro","deprecated":false,"iso3":"MNE","iso2":"ME","code":"499","type":"country"},{"id":"8ecb3dd6-0cc2-5bac-b21d-83f1e3fbc848","name":"Moldova","deprecated":true,"iso3":"MDA","iso2":"MD","code":"498","type":"country"},{"id":"e0400095-a311-5b38-92e1-d635e6a1f938","name":"Monaco","deprecated":false,"iso3":"MCO","iso2":"MC","code":"492","type":"country"},{"id":"4e696592-960a-51d9-9078-985330e3feb1","name":"Latvia","deprecated":true,"iso3":"LVA","iso2":"LV","code":"428","type":"country"},{"id":"bb1fe9b8-9f49-56fe-9278-4cc73152f780","name":"Luxembourg","deprecated":true,"iso3":"LUX","iso2":"LU","code":"442","type":"country"},{"id":"76d4e398-d6e2-5f4f-ba11-d01a828f883d","name":"Lithuania","deprecated":true,"iso3":"LTU","iso2":"LT","code":"440","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"73f3b217-148d-5d48-a652-495178f5a046","name":"Jersey","deprecated":true,"iso3":"JEY","iso2":"JE","code":"832","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"968a378c-2885-5a3b-a0dc-160560765c7e","name":"Isle of Man","deprecated":true,"iso3":"IMN","iso2":"IM","code":"833","type":"country"},{"id":"cae04dab-514c-559a-94d5-b3930bcf5800","name":"Ireland","deprecated":false,"iso3":"IRL","iso2":"IE","code":"372","type":"country"},{"id":"bc5d918e-a2c8-508d-9a87-c990eeec6215","name":"Hungary","deprecated":true,"iso3":"HUN","iso2":"HU","code":"348","type":"country"},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"03330265-fe01-5435-899a-08042bc643b5","name":"Greece","deprecated":false,"iso3":"GRC","iso2":"GR","code":"300","type":"country"},{"id":"a3120da5-8f6f-5fdc-af6d-8ccac4e802b7","name":"Gibraltar","deprecated":true,"iso3":"GIB","iso2":"GI","code":"292","type":"country"},{"id":"7a31d958-157e-509d-bc9f-f52b45c85c6d","name":"Guernsey","deprecated":true,"iso3":"GGY","iso2":"GG","code":"831","type":"country"},{"id":"2fbb8b4c-cc35-5550-acef-bc53b5c0f0f4","name":"United Kingdom","deprecated":false,"iso3":"GBR","iso2":"GB","code":"826","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"5ee6b8ad-2c86-58d1-ac57-8db405e7dda8","name":"Faroe Islands","deprecated":true,"iso3":"FRO","iso2":"FO","code":"234","type":"country"},{"id":"a7a8cee7-9bad-5786-a874-6be00056cecd","name":"Finland","deprecated":true,"iso3":"FIN","iso2":"FI","code":"246","type":"country"},{"id":"1e9c9635-11bb-5544-8fab-27b6da86a545","name":"Spain","deprecated":true,"iso3":"ESP","iso2":"ES","code":"724","type":"country"},{"id":"355204ae-8c3e-5a96-8f23-3670fde3d26a","name":"Estonia","deprecated":true,"iso3":"EST","iso2":"EE","code":"233","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"004e74d4-cffc-599e-bd12-f4ac69a8a700","name":"Germany","deprecated":true,"iso3":"DEU","iso2":"DE","code":"276","type":"country"},{"id":"fbdea1d9-5ac4-53d0-be10-3220747421b8","name":"Czech Republic","deprecated":true,"iso3":"CZE","iso2":"CZ","code":"203","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"089c406e-a4ff-52ae-9672-73a1bdf5a396","name":"Belarus","deprecated":true,"iso3":"BLR","iso2":"BY","code":"112","type":"country"},{"id":"3dfcd86f-2e29-59f7-9e44-27fe038c51a6","name":"Bulgaria","deprecated":false,"iso3":"BGR","iso2":"BG","code":"100","type":"country"},{"id":"8c299df7-5229-5596-963c-04cb2b46d34d","name":"Belgium","deprecated":true,"iso3":"BEL","iso2":"BE","code":"056","type":"country"},{"id":"fc99ebdb-5c82-5819-979d-d8f6310351af","name":"Bosnia and Herzegovina","deprecated":true,"iso3":"BIH","iso2":"BA","code":"070","type":"country"},{"id":"588e4f19-dfac-5134-98c1-c1cafee86399","name":"Åland","deprecated":false,"iso3":"ALA","iso2":"AX","code":"248","type":"country"},{"id":"67f08133-23b8-52ac-8436-41d77a2eebfb","name":"Austria","deprecated":false,"iso3":"AUT","iso2":"AT","code":"040","type":"country"},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"}],"countryCodes":["0","336","804","674","703","744","705","752","643","688","642","620","616","578","528","470","807","499","498","492","428","442","440","438","832","380","352","833","372","348","191","300","292","831","826","250","234","246","724","233","208","276","203","196","756","112","100","056","070","248","040","008"]},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"}]}],"sourcePorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false}],"destinationPorts":[{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false}],"users":[{"id":"30d27489-6e16-5db3-a8b5-6571cfaa1b67","name":"User 30","realmName":"guhemtaip","type":"trafficuser","realmId":2,"version":"zudurotha"},{"id":"448736fd-bb0b-58e5-8e0f-0d4fe1b1823a","name":"User 25","realmName":"bomubnefwa","type":"trafficuser","realmId":2,"version":"afeapelopel"},{"id":"7145e63c-b952-5595-a3e0-b95cfd817553","name":"User 3","realmName":"owesizfani","type":"trafficuser","realmId":2,"version":"rilijzomu"}],"embeddedAppFilter":{"conditions":[{"filter":"baketfale","tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"},{"filter":"keludmubluf","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"461cac69-03ff-5113-a215-4cdfaf8bd3f1","version":"c5c46d5e-163b-53e4-a12e-4ec6708cb4a7","name":"ApplicationFilter13","description":"Hi hug zad nolrepmum bil nuwbacora fa guhu ale ogve foksaruw cipzis zomdozun de is da uzifoma.","applications":[{"id":"368e2c4f-cce1-574d-b5ee-ab9d539cf248","version":"3ecf8402-8607-5fdc-a148-f5abddf84f0a","description":"Apeja libsul uweb osjoti ge uzu fal gob woletkew be tu hah ha wuvekohuz gacaw.","deprecated":true,"appId":4,"productivity":1,"risk":0,"name":"Application14","tagIds":["9b16dd72-476a-5ac0-8aeb-fbf6e1f45438"],"tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5f0662ef-3382-5357-bf35-b9b7361aae44"],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["WEBAPP","SERVER"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"giasnovpe","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"f8c5fef0-916a-541e-9113-de4951dde18b","version":"c07380b4-d91f-5a9b-aed7-efbe152c2f6b","description":"Aloul gouwtu riguse luzmokfof somi ehroz esecegwaf fafal heeg ohban fi ijga.","deprecated":true,"appId":6,"productivity":1,"risk":3,"name":"Application6","tagIds":["63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["33552c21-0930-5bb5-8459-9b7608cda68e","794d6605-f5d9-5f26-b11d-507eac471889"],"categories":[{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["WEBAPP"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"23704998-7a6e-5a13-9b62-897a0ed5815b","version":"bikwemafa","name":"UrlGroup4","description":"Gaf abme waves bojda asola kud te jig rag zansojer mez okuji ojpo bom ta.","objects":[{"id":"ab75ba7b-b6c8-57f8-b62b-85a6e1047423","version":"mulmevkavvof","name":"Url13","description":"Gowop ranuhnif awronso ajado ozfu sov digmec tu mafhutid sum ca gelo.","url":"http://gar.io/pahum","type":"urlobject"},{"id":"8c8ec923-9d7c-59f2-8d13-7db0e9d0fc55","version":"inkitfovat","name":"Url1","description":"Cukji verwe wafit hada sirivza uso awba mezjaje gi bavtiim satudu cevonlem nugocok ibnaar zasado.","url":"http://geta.org/ozmeg","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"d8b59166-b6ce-5232-a41d-e67269d63bc7","name":"Suspicious sites","index":4,"startPercentage":21,"endPercentage":40,"version":"cf849fee-4718-503d-bccb-a9e5c26d78b6","type":"urlreputation"},"urlCategory":{"id":"3a94fe91-baa1-5666-a509-a616e42f8f66","version":"d7d497cd-7431-59ca-be9a-bff06b1aec95","name":"UrlCategory-5","deprecated":false,"urlCategoryId":5,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN40","name":"Maximum Detection","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40/rules/"}},"description":"Maximum Detection Layer","type":"intrusionpolicy","version":"124d1a7b-a1b4-5097-b6d4-5a399c5bdb68"},"logFiles":false,"type":"accessrule"},{"id":"0c8e712c-ef86-54d2-be1a-304763da00f1","version":"3e4ea5b5-c286-5cb3-8a4a-0db0dcd39349","ruleId":9,"name":"Access_Rule_9","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"232c98bc-4d2b-5660-a387-becfdb0a182e","version":"a39bfe87-a20f-5ce8-87ba-ef6e3fb0d749","host":"150.96.13.71","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},"protocol":"TCP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"d2cf6df0-e095-59f1-9afe-4e1f95b290e7","name":"SecurityZone6Name","description":"Kivmeat sepfeheh jekacaloh awe wap vajan utiweb daczo ji ji pew wioha bawmivim ri kaj gibvevsa.","version":"5751e8ac-10c9-5b44-a9fa-1ed8e07d2d40","interfaces":[{"mtu":5818,"enabled":false,"description":"Jigiz malko navsup bojga widbihi vatel vahuwuta ugi bopuru duzwar zopi juinoito sibkonac fozgojmi toopu nurhiru ce joeho.","name":"inside","id":"bddde0e1-1b1f-5f42-b9b7-7c72d9099ef4","hardwareName":"GigabitEthernet1/1","macAddress":"ECFB.7E12.09E1","monitorInterface":true,"standbyMacAddress":"A09D.B513.9683","version":"69f9f38e-0479-58d1-961c-e4040d439200","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},{"mtu":2652,"enabled":true,"description":"Pipakaz ramkudu ulido ce boh ugmepku izareszeh katakuz vosinde takwa piprazipo fostoftug egjolut.","name":"subinterface3name","id":"4258612a-c6ac-5407-8edc-04b207b2b473","hardwareName":"SubInterface0/3.4","macAddress":"4A8E.2AFE.5DE9","monitorInterface":true,"standbyMacAddress":"F917.A989.864E","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"5b49:5a29:3cd4:5c83:7b30:0115:7927:eaf3/32","ipAddress":"a3eb:3b72:2cfa:9901:b7c7:1581:fa72:4b49/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"42e6:34b8:f5eb:802f:626b:503c:781e:aacd","ipAddress":"dcc0:3abc:3933:8a47:25c6:d9a7:2e80:06dc"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"137.234.118.13","standbyIpAddress":"67.162.53.251"}},"version":"2a53f3c3-fc6d-557c-bdbb-e97bc156553c","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"a3e7f3ef-3d09-5365-9a73-229ded43ba48","name":"SecurityZone15Name","description":"Wofa mukko zugal efamosaj ape vurugepa memepi woutod lu ergifde ceini den pegvuni ja.","version":"e721fda0-83ce-51b6-a003-bedfe42bb5db","interfaces":[{"mtu":2652,"enabled":false,"description":"Bo afri kewbiezu atda okpibmim faelaja jip tu ena oc pek mu piwnehsab puspon nuuja ziwelnak ilwu teew.","name":"subinterface9name","id":"a54e4784-eafc-5bc4-bfa1-985dd51ea923","hardwareName":"SubInterface0/9.10","macAddress":"A82E.76DF.F146","monitorInterface":false,"standbyMacAddress":"11D9.182D.C518","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4f09:724e:c874:a60e:ff7c:0374:170f:cacf/32","ipAddress":"4313:8aa3:d274:f439:ea48:c8c7:c19b:22e2/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"0484:520a:88d4:9a88:6e95:64c9:65b9:f83b","ipAddress":"4ad5:881b:7ff6:552a:b882:7de7:21fc:972d"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"0.192.1.63","standbyIpAddress":"195.235.84.107"}},"version":"877f9f31-9402-5eaa-b18c-9333e068e73e","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"e12d0a2e-afc7-53cb-85e7-38aa135de327","name":"SecurityZone13Name","description":"Do tewuznas ucait mad ziwgef iw unjup guzov dize guzut vibuk anpekpib nerviw ip ijpa koruf.","version":"09dc0dd3-4a94-5cf2-9efb-89a0f352e003","interfaces":[{"mtu":2652,"enabled":true,"description":"Agi pobjotu zukac rive putsi herima mepues ezijo wicimub utjamoj noskavup wupoje ra dujipale.","name":"subinterface2name","id":"353dee59-d2b6-5df6-9b8e-4f444b489176","hardwareName":"SubInterface0/2.3","macAddress":"EDB8.12E9.D2DB","monitorInterface":false,"standbyMacAddress":"5667.5103.F034","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"2647:2aea:3fdf:b4cc:6433:554a:6ab5:c594/32","ipAddress":"04f0:7320:ae63:ce9f:664b:c7e3:8867:daa9/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3d77:5e5d:78ec:d370:2293:4026:1bbb:aee3","ipAddress":"e6eb:6fef:da47:e1c1:1523:464b:1cab:92a1"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.88.118.226","standbyIpAddress":"17.135.120.105"}},"version":"82ce2f08-42bf-5b19-bbbb-0c4ef276caa0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"912f3e58-ef04-5c3d-bbb9-7e9f2dd84ba3","name":"Geolocation3","description":"Kig zesa kutne wiwurmo rulzu mowisuwo omoecce lenurac ukpe huh vehot zedohe.","version":"c89fbe8c-4751-5e39-9901-8630baec0e53","type":"geolocation","locations":[{"id":"58c1b14d-e032-5b9c-a581-a5c8857e2260","name":"North America","deprecated":true,"code":1002,"type":"continent","countries":[{"id":"2ba895c9-9f2b-5182-95b9-59306b13ebc4","name":"U.S. Virgin Islands","deprecated":true,"iso3":"VIR","iso2":"VI","code":"850","type":"country"},{"id":"e6bb9c77-a955-5f2b-ac2d-9082a5160f71","name":"British Virgin Islands","deprecated":true,"iso3":"VGB","iso2":"VG","code":"092","type":"country"},{"id":"b3735b95-7d83-5ed3-916e-3379993398f6","name":"Saint Vincent and the Grenadines","deprecated":false,"iso3":"VCT","iso2":"VC","code":"670","type":"country"},{"id":"816c5c8f-f624-561e-99f1-1a26d826a4f3","name":"United States","deprecated":true,"iso3":"USA","iso2":"US","code":"840","type":"country"},{"id":"3fefff2b-d89c-55b1-8cbc-3ef1a65be130","name":"Trinidad and Tobago","deprecated":true,"iso3":"TTO","iso2":"TT","code":"780","type":"country"},{"id":"3589f9a6-a7c1-5332-a139-3f9595fdfd28","name":"Turks and Caicos Islands","deprecated":true,"iso3":"TCA","iso2":"TC","code":"796","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"85d297a7-310d-59f0-a0ca-ebf303a096cc","name":"El Salvador","deprecated":true,"iso3":"SLV","iso2":"SV","code":"222","type":"country"},{"id":"fa707d6d-a72f-5469-985d-5173dbe32666","name":"Puerto Rico","deprecated":false,"iso3":"PRI","iso2":"PR","code":"630","type":"country"},{"id":"93eb0baf-8f56-5cb2-8282-ab1ad5e85c10","name":"Saint Pierre and Miquelon","deprecated":false,"iso3":"SPM","iso2":"PM","code":"666","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"f9fcc680-cfb6-5541-9a22-5d708e664cd7","name":"Nicaragua","deprecated":true,"iso3":"NIC","iso2":"NI","code":"558","type":"country"},{"id":"2acf54f9-dcef-583a-b011-1ade5b0c8337","name":"Mexico","deprecated":false,"iso3":"MEX","iso2":"MX","code":"484","type":"country"},{"id":"d8b849e3-61d8-5e6b-9616-e84333164d82","name":"Montserrat","deprecated":false,"iso3":"MSR","iso2":"MS","code":"500","type":"country"},{"id":"00bdfb06-2438-5d19-ab21-536be76831df","name":"Martinique","deprecated":false,"iso3":"MTQ","iso2":"MQ","code":"474","type":"country"},{"id":"e41f17d8-47ba-5889-a3f9-757a2d6dbf53","name":"Saint Martin","deprecated":true,"iso3":"MAF","iso2":"MF","code":"663","type":"country"},{"id":"d6056e12-c9d7-52e1-affd-5e54f743c415","name":"Saint Lucia","deprecated":false,"iso3":"LCA","iso2":"LC","code":"662","type":"country"},{"id":"5e6b0423-d9b1-5c70-b1fc-c35c581af83a","name":"Cayman Islands","deprecated":true,"iso3":"CYM","iso2":"KY","code":"136","type":"country"},{"id":"d86293d3-8d1d-59bd-8b48-16fb532231d9","name":"Saint Kitts and Nevis","deprecated":true,"iso3":"KNA","iso2":"KN","code":"659","type":"country"},{"id":"5ca89c40-c558-55ae-b606-c4a7c84900d0","name":"Jamaica","deprecated":true,"iso3":"JAM","iso2":"JM","code":"388","type":"country"},{"id":"d8fbf1b8-0581-5bf5-a03d-ca9382c3a25f","name":"Haiti","deprecated":true,"iso3":"HTI","iso2":"HT","code":"332","type":"country"},{"id":"d42e37aa-8ab2-5cee-be19-f8bc7123029e","name":"Honduras","deprecated":false,"iso3":"HND","iso2":"HN","code":"340","type":"country"},{"id":"deb2c3f7-7c6e-5fae-859a-d19da6b88bf7","name":"Guatemala","deprecated":false,"iso3":"GTM","iso2":"GT","code":"320","type":"country"},{"id":"1339e3d7-5dbf-59d5-9dc4-0c9928509839","name":"Guadeloupe","deprecated":true,"iso3":"GLP","iso2":"GP","code":"312","type":"country"},{"id":"f1ef7a41-03d9-5725-a34c-e7dce349dc68","name":"Greenland","deprecated":true,"iso3":"GRL","iso2":"GL","code":"304","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"2cef5772-f72d-5ca9-bd72-de4bda8da061","name":"Dominican Republic","deprecated":false,"iso3":"DOM","iso2":"DO","code":"214","type":"country"},{"id":"4ecd121e-af06-5def-a17d-5aeb58e5834b","name":"Dominica","deprecated":true,"iso3":"DMA","iso2":"DM","code":"212","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"473581e5-1b39-5d06-a56c-44a01298ba3d","name":"Cuba","deprecated":false,"iso3":"CUB","iso2":"CU","code":"192","type":"country"},{"id":"6b162de0-602e-5a7d-a241-50ccdb10c3ea","name":"Costa Rica","deprecated":true,"iso3":"CRI","iso2":"CR","code":"188","type":"country"},{"id":"338c3d83-e4bb-5c7e-854a-5370a23c9b06","name":"Canada","deprecated":true,"iso3":"CAN","iso2":"CA","code":"124","type":"country"},{"id":"32ee65e9-d6c1-5d5b-95a4-83dd798ab6fc","name":"Belize","deprecated":true,"iso3":"BLZ","iso2":"BZ","code":"084","type":"country"},{"id":"e37aa05a-1414-5366-abdd-eae7482267de","name":"Bahamas","deprecated":false,"iso3":"BHS","iso2":"BS","code":"044","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"830ae2eb-65f0-56f2-8823-e293c1b6f086","name":"Saint Barthélemy","deprecated":true,"iso3":"BLM","iso2":"BL","code":"652","type":"country"},{"id":"9cd8a90c-1915-51dc-978b-b35c591d11c0","name":"Barbados","deprecated":false,"iso3":"BRB","iso2":"BB","code":"052","type":"country"},{"id":"a91f1f86-8c52-569f-9244-f914a4438731","name":"Aruba","deprecated":true,"iso3":"ABW","iso2":"AW","code":"533","type":"country"},{"id":"50d84fbd-fb07-51a0-ad92-be08d1dd5471","name":"Anguilla","deprecated":true,"iso3":"AIA","iso2":"AI","code":"660","type":"country"},{"id":"2494c782-b35f-5a88-8313-4eda120aa623","name":"Antigua and Barbuda","deprecated":false,"iso3":"ATG","iso2":"AG","code":"028","type":"country"}],"countryCodes":["850","092","670","840","780","796","534","222","630","666","591","558","484","500","474","663","662","136","659","388","332","340","320","312","304","308","214","212","531","192","188","124","084","044","535","060","652","052","533","660","028"]},{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"1bb5225e-e880-5bc6-b4b5-373e05ab4ebf","name":"Colombia","deprecated":false,"iso3":"COL","iso2":"CO","code":"170","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"}]}],"destinationNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"912f3e58-ef04-5c3d-bbb9-7e9f2dd84ba3","name":"Geolocation3","description":"Kig zesa kutne wiwurmo rulzu mowisuwo omoecce lenurac ukpe huh vehot zedohe.","version":"c89fbe8c-4751-5e39-9901-8630baec0e53","type":"geolocation","locations":[{"id":"58c1b14d-e032-5b9c-a581-a5c8857e2260","name":"North America","deprecated":true,"code":1002,"type":"continent","countries":[{"id":"2ba895c9-9f2b-5182-95b9-59306b13ebc4","name":"U.S. Virgin Islands","deprecated":true,"iso3":"VIR","iso2":"VI","code":"850","type":"country"},{"id":"e6bb9c77-a955-5f2b-ac2d-9082a5160f71","name":"British Virgin Islands","deprecated":true,"iso3":"VGB","iso2":"VG","code":"092","type":"country"},{"id":"b3735b95-7d83-5ed3-916e-3379993398f6","name":"Saint Vincent and the Grenadines","deprecated":false,"iso3":"VCT","iso2":"VC","code":"670","type":"country"},{"id":"816c5c8f-f624-561e-99f1-1a26d826a4f3","name":"United States","deprecated":true,"iso3":"USA","iso2":"US","code":"840","type":"country"},{"id":"3fefff2b-d89c-55b1-8cbc-3ef1a65be130","name":"Trinidad and Tobago","deprecated":true,"iso3":"TTO","iso2":"TT","code":"780","type":"country"},{"id":"3589f9a6-a7c1-5332-a139-3f9595fdfd28","name":"Turks and Caicos Islands","deprecated":true,"iso3":"TCA","iso2":"TC","code":"796","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"85d297a7-310d-59f0-a0ca-ebf303a096cc","name":"El Salvador","deprecated":true,"iso3":"SLV","iso2":"SV","code":"222","type":"country"},{"id":"fa707d6d-a72f-5469-985d-5173dbe32666","name":"Puerto Rico","deprecated":false,"iso3":"PRI","iso2":"PR","code":"630","type":"country"},{"id":"93eb0baf-8f56-5cb2-8282-ab1ad5e85c10","name":"Saint Pierre and Miquelon","deprecated":false,"iso3":"SPM","iso2":"PM","code":"666","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"f9fcc680-cfb6-5541-9a22-5d708e664cd7","name":"Nicaragua","deprecated":true,"iso3":"NIC","iso2":"NI","code":"558","type":"country"},{"id":"2acf54f9-dcef-583a-b011-1ade5b0c8337","name":"Mexico","deprecated":false,"iso3":"MEX","iso2":"MX","code":"484","type":"country"},{"id":"d8b849e3-61d8-5e6b-9616-e84333164d82","name":"Montserrat","deprecated":false,"iso3":"MSR","iso2":"MS","code":"500","type":"country"},{"id":"00bdfb06-2438-5d19-ab21-536be76831df","name":"Martinique","deprecated":false,"iso3":"MTQ","iso2":"MQ","code":"474","type":"country"},{"id":"e41f17d8-47ba-5889-a3f9-757a2d6dbf53","name":"Saint Martin","deprecated":true,"iso3":"MAF","iso2":"MF","code":"663","type":"country"},{"id":"d6056e12-c9d7-52e1-affd-5e54f743c415","name":"Saint Lucia","deprecated":false,"iso3":"LCA","iso2":"LC","code":"662","type":"country"},{"id":"5e6b0423-d9b1-5c70-b1fc-c35c581af83a","name":"Cayman Islands","deprecated":true,"iso3":"CYM","iso2":"KY","code":"136","type":"country"},{"id":"d86293d3-8d1d-59bd-8b48-16fb532231d9","name":"Saint Kitts and Nevis","deprecated":true,"iso3":"KNA","iso2":"KN","code":"659","type":"country"},{"id":"5ca89c40-c558-55ae-b606-c4a7c84900d0","name":"Jamaica","deprecated":true,"iso3":"JAM","iso2":"JM","code":"388","type":"country"},{"id":"d8fbf1b8-0581-5bf5-a03d-ca9382c3a25f","name":"Haiti","deprecated":true,"iso3":"HTI","iso2":"HT","code":"332","type":"country"},{"id":"d42e37aa-8ab2-5cee-be19-f8bc7123029e","name":"Honduras","deprecated":false,"iso3":"HND","iso2":"HN","code":"340","type":"country"},{"id":"deb2c3f7-7c6e-5fae-859a-d19da6b88bf7","name":"Guatemala","deprecated":false,"iso3":"GTM","iso2":"GT","code":"320","type":"country"},{"id":"1339e3d7-5dbf-59d5-9dc4-0c9928509839","name":"Guadeloupe","deprecated":true,"iso3":"GLP","iso2":"GP","code":"312","type":"country"},{"id":"f1ef7a41-03d9-5725-a34c-e7dce349dc68","name":"Greenland","deprecated":true,"iso3":"GRL","iso2":"GL","code":"304","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"2cef5772-f72d-5ca9-bd72-de4bda8da061","name":"Dominican Republic","deprecated":false,"iso3":"DOM","iso2":"DO","code":"214","type":"country"},{"id":"4ecd121e-af06-5def-a17d-5aeb58e5834b","name":"Dominica","deprecated":true,"iso3":"DMA","iso2":"DM","code":"212","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"473581e5-1b39-5d06-a56c-44a01298ba3d","name":"Cuba","deprecated":false,"iso3":"CUB","iso2":"CU","code":"192","type":"country"},{"id":"6b162de0-602e-5a7d-a241-50ccdb10c3ea","name":"Costa Rica","deprecated":true,"iso3":"CRI","iso2":"CR","code":"188","type":"country"},{"id":"338c3d83-e4bb-5c7e-854a-5370a23c9b06","name":"Canada","deprecated":true,"iso3":"CAN","iso2":"CA","code":"124","type":"country"},{"id":"32ee65e9-d6c1-5d5b-95a4-83dd798ab6fc","name":"Belize","deprecated":true,"iso3":"BLZ","iso2":"BZ","code":"084","type":"country"},{"id":"e37aa05a-1414-5366-abdd-eae7482267de","name":"Bahamas","deprecated":false,"iso3":"BHS","iso2":"BS","code":"044","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"830ae2eb-65f0-56f2-8823-e293c1b6f086","name":"Saint Barthélemy","deprecated":true,"iso3":"BLM","iso2":"BL","code":"652","type":"country"},{"id":"9cd8a90c-1915-51dc-978b-b35c591d11c0","name":"Barbados","deprecated":false,"iso3":"BRB","iso2":"BB","code":"052","type":"country"},{"id":"a91f1f86-8c52-569f-9244-f914a4438731","name":"Aruba","deprecated":true,"iso3":"ABW","iso2":"AW","code":"533","type":"country"},{"id":"50d84fbd-fb07-51a0-ad92-be08d1dd5471","name":"Anguilla","deprecated":true,"iso3":"AIA","iso2":"AI","code":"660","type":"country"},{"id":"2494c782-b35f-5a88-8313-4eda120aa623","name":"Antigua and Barbuda","deprecated":false,"iso3":"ATG","iso2":"AG","code":"028","type":"country"}],"countryCodes":["850","092","670","840","780","796","534","222","630","666","591","558","484","500","474","663","662","136","659","388","332","340","320","312","304","308","214","212","531","192","188","124","084","044","535","060","652","052","533","660","028"]},{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"1bb5225e-e880-5bc6-b4b5-373e05ab4ebf","name":"Colombia","deprecated":false,"iso3":"COL","iso2":"CO","code":"170","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"}]}],"sourcePorts":[{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"destinationPorts":[{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false},{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false}],"users":[{"id":"dd95afe8-437e-51ab-985a-c48929c0e3ba","name":"User 14","realmName":"ugaopezuepi","type":"trafficuser","realmId":2,"version":"esdafroce"},{"id":"e4cf55a1-9e8b-5e8b-a91e-ed734a516447","name":"User Group 29","realmName":"wicocetifow","type":"trafficusergroup","realmId":2,"version":"ohkofalezi"},{"id":"4cfa5549-4e3c-518e-a754-cda57317bbd8","name":"User Group 6","realmName":"mokodozmov","type":"trafficusergroup","realmId":2,"version":"korgepezfa"}],"embeddedAppFilter":{"conditions":[{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"75251c34-4dfe-5cb2-a779-5c4cba9eb2ae","version":"66eab5b5-cd48-52d7-9797-8e846f22fbeb","name":"ApplicationFilter6","description":"Ve hijusla tazwomur cekzinso uho nahulni sifadu taf leare vezrovi su noruv bippupo dimuz gu ceuwa caki bi.","applications":[{"id":"44b7bb09-58d5-59ef-abd3-7341fa4d1c7b","version":"fe155cb3-e78d-5a5b-8713-5c056c0ea86f","description":"Dazgo jefeci dulhel lowez cotgo mu ewuufih indeh bo urjur vursosoc cetco eb.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application3","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","0928e8e9-25a4-53d0-b118-342a26b44100"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":false},"type":"application"},{"id":"c51fa076-7516-5b1a-b689-87d5d4dd6656","version":"71b129f0-e504-5ee0-85b0-3d683c7fbc85","description":"Fishak luksa juw magaldi igo kaipojo vifpok jarado fefadkiw keogo mow kojepoha bonewke hobomag vo gi om tam.","deprecated":false,"appId":4,"productivity":1,"risk":3,"name":"Application4","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009","63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","33552c21-0930-5bb5-8459-9b7608cda68e"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"c51fa076-7516-5b1a-b689-87d5d4dd6656","version":"71b129f0-e504-5ee0-85b0-3d683c7fbc85","description":"Fishak luksa juw magaldi igo kaipojo vifpok jarado fefadkiw keogo mow kojepoha bonewke hobomag vo gi om tam.","deprecated":false,"appId":4,"productivity":1,"risk":3,"name":"Application4","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009","63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","33552c21-0930-5bb5-8459-9b7608cda68e"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ffe7a902-b85c-5fd6-af84-62f80cd30c65","version":"weowagopwib","name":"UrlGroup7","description":"Doaniopa kojutwef va uzu ji riw hoap veruhro ge nej tozbuz uzbohi ma pok.","objects":[{"id":"4dcd5400-fbdc-5d2e-a182-437ae706284c","version":"erreupih","name":"Url11","description":"Mu wiod pa winhuta ukzup foveba conefda zecvi wit ciahujah bo lahfonhe adcogo mori.","url":"http://sodzup.io/pivkaod","type":"urlobject"},{"id":"1ec355c1-47fb-55b1-b8d1-6d6a465821ca","version":"hapevemoco","name":"Url10","description":"Cagsif ju ilawusne kal uw tewwuvmul cu suilu putuz fuwabe wi favig bibothep ti hire gucrak.","url":"http://ni.net/civ","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"293f3f8b-e996-5139-bee7-ff7e376ed4f0","version":"2b059a77-a530-5bd9-8694-f4754a6e7538","name":"UrlCategory-8","deprecated":false,"urlCategoryId":65534,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"filePolicy":{"id":"de5b742d-70db-535d-bb42-6e6ba949ef53","type":"filepolicy","policyType":"BLOCK_MALWARE_ALL","name":"File_Policy_1","description":"Wiakeno ja barfowole aredu wutra loc fe soc cakdo se la agokim gevsirrog cagome.","version":"e0e81a67-2608-53e2-a015-f53dc3a9de10"},"logFiles":false,"type":"accessrule"},{"id":"de9e9540-2f2d-5646-97cf-96d390d945c1","version":"7efccc26-095d-5607-a360-6f78623f186c","ruleId":10,"name":"Access_Rule_10","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_FLOW_END","syslogServer":{"id":"57bc6178-2f01-52b2-8d55-29366cb35285","version":"beeb6d44-207b-5a07-b708-0b4fba7c56c5","host":"171.25.188.89","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"83e3721c-b23f-5eb1-b660-40655c216680","name":"SecurityZone9Name","description":"Iha kiuh ja iweacce tuh hajmipjuj fikufuv bofijwi esede tu gahak wenab belif lupilsif udo puzabke ferfa ofwon.","version":"17150a55-f982-526f-aa60-9e435d2c5455","interfaces":[{"mtu":5818,"enabled":true,"description":"Wabjenuv vuhtevguf zucce omiogu anitug cuho gaejma vesumob oduuro levhid uniozwej olkavcuv dawiim mehub wuka suj.","id":"3faf4981-2b04-5091-9c1f-fa0ab78379b4","hardwareName":"GigabitEthernet1/5","macAddress":"7472.5071.519E","monitorInterface":false,"standbyMacAddress":"5387.1EFE.E0E6","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"84c0:cd09:bceb:ce0c:5cfa:f535:d426:01db/32","ipAddress":"067a:e7f9:1bf0:6af4:b89b:4c11:ec0c:51b4/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"02eb:e82a:bb44:e0a0:d969:6055:6744:cfa2","ipAddress":"aa33:0271:1f23:9725:0d24:7767:0fd2:0cf8"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"6.124.202.116","standbyIpAddress":"40.108.171.23"}},"version":"472d2c22-e548-5cb1-983f-f81ee3e14422","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"aff2c9fc-0b0e-58f4-b418-5ccd970fd67f","name":"SecurityZone11Name","description":"Nued mos di majri nih ebhebe desalu ivif novrove razjihew kepfa okforec lajatet sifu fa.","version":"d334e386-a53c-5345-9181-d20421a28e34","interfaces":[{"mtu":5818,"enabled":true,"description":"Ke vuhdojos zudgopa seto bere refcengo he camohpik pir risvup pum omhos zalpe sukjo rufe.","id":"2cf6e4b9-0bf0-5d7d-9110-6ab397d400a4","hardwareName":"GigabitEthernet1/4","macAddress":"0ABE.1A2F.DC3A","monitorInterface":false,"standbyMacAddress":"6057.AC6B.C47F","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"6d9d:2a5c:831a:6482:0268:e3fe:244e:1c1c/32","ipAddress":"c4fb:ea12:d0f3:42e4:10ed:e3f4:8e5a:6c9a/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"77f1:3852:307c:1449:a914:b786:3831:5ed1","ipAddress":"9eee:0707:2706:edd3:22f1:30d5:52f1:39fb"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"51.99.206.42","standbyIpAddress":"138.81.67.160"}},"version":"365fb3c7-62eb-5a7d-a412-b1cb7a387375","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"e12d0a2e-afc7-53cb-85e7-38aa135de327","name":"SecurityZone13Name","description":"Do tewuznas ucait mad ziwgef iw unjup guzov dize guzut vibuk anpekpib nerviw ip ijpa koruf.","version":"09dc0dd3-4a94-5cf2-9efb-89a0f352e003","interfaces":[{"mtu":2652,"enabled":true,"description":"Agi pobjotu zukac rive putsi herima mepues ezijo wicimub utjamoj noskavup wupoje ra dujipale.","name":"subinterface2name","id":"353dee59-d2b6-5df6-9b8e-4f444b489176","hardwareName":"SubInterface0/2.3","macAddress":"EDB8.12E9.D2DB","monitorInterface":false,"standbyMacAddress":"5667.5103.F034","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"2647:2aea:3fdf:b4cc:6433:554a:6ab5:c594/32","ipAddress":"04f0:7320:ae63:ce9f:664b:c7e3:8867:daa9/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3d77:5e5d:78ec:d370:2293:4026:1bbb:aee3","ipAddress":"e6eb:6fef:da47:e1c1:1523:464b:1cab:92a1"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.88.118.226","standbyIpAddress":"17.135.120.105"}},"version":"82ce2f08-42bf-5b19-bbbb-0c4ef276caa0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"8681f6d1-4c1b-58ca-bac5-c217895fbbcd","name":"Geolocation7","description":"Ciriro waavwef icmadate zuh lobba amroc mehufi huabwe mi gowukose dapedvip pa uz baoruaj mowka popbiola.","version":"f2554e00-8f4c-5f06-8e33-1e6ece1334ee","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"}]}],"destinationNetworks":[{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"8681f6d1-4c1b-58ca-bac5-c217895fbbcd","name":"Geolocation7","description":"Ciriro waavwef icmadate zuh lobba amroc mehufi huabwe mi gowukose dapedvip pa uz baoruaj mowka popbiola.","version":"f2554e00-8f4c-5f06-8e33-1e6ece1334ee","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"}]}],"sourcePorts":[{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}],"destinationPorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false}],"users":[{"id":"4cfa5549-4e3c-518e-a754-cda57317bbd8","name":"User Group 6","realmName":"mokodozmov","type":"trafficusergroup","realmId":2,"version":"korgepezfa"},{"id":"d23c586b-9046-57c8-b0d7-cd6200ca8e84","name":"User Group 15","realmName":"zutnotecasi","type":"trafficusergroup","realmId":2,"version":"gacvubereb"},{"id":"57ae914d-bedf-542a-8d66-6a07b01168da","name":"User Group 17","realmName":"kanologobiw","type":"trafficusergroup","realmId":2,"version":"pevisabeko"}],"embeddedAppFilter":{"conditions":[{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"huimezuben","tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"71b15970-f3f3-5b1b-b7bb-f0613eba06e2","version":"a1f1ec4f-62c4-56f7-85ab-ffa7d87ea131","name":"ApplicationFilter7","description":"Vul ejube iwu bodjaaki neros atwiha pi tamgek mazce zilitufa volvaz mibgo tubzesuwi bunefon enuhoj.","applications":[{"id":"ce901dd3-4e85-5bf0-a273-2018d76527c8","version":"84a4f0c6-57b3-50f3-bf20-0cf68bbbb806","description":"Gipus bovawge vel ceoziwo nuim ehdifir nowe onoli atsewav irfer semowi ge turos mufo tahukca jaz.","deprecated":true,"appId":5,"productivity":0,"risk":2,"name":"Application2","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["1323d445-72c0-5d8b-9f58-c223feb51bac","328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"1323d445-72c0-5d8b-9f58-c223feb51bac","version":"f85374d2-b1c5-5e65-b746-77dc6a21decb","appId":7,"name":"ApplicationCategory14","description":"Ohoad agoteveto irewomi adizogo lurtoop tizesuca himewwak poftoj cow nunapivif cisge pe hi raam hatdunze.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"7cd12f14-70e7-51d8-abf1-af76ca735eef","version":"544ddfb1-dbc2-5901-aeaf-e76f489ff422","description":"Mata he jijto miaked lirki fuus ediupu rarengu ke iri escut gusotpi fa so piltef ob ocaguzuc zi.","deprecated":true,"appId":7,"productivity":3,"risk":4,"name":"Application9","tagIds":["aad0af81-b4ad-5a4a-a395-d88fc2abb8c4"],"tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["fff4b47c-a653-5729-a31a-e6353d420768","24cd3c21-8c19-531f-81d5-08aca7b587b9"],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"e1088b47-43c6-509a-a722-763318471791","version":"53a76ab0-006b-5dd4-abc4-c0f9a0d58f50","name":"UrlCategory-13","deprecated":false,"urlCategoryId":13,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN40","name":"Maximum Detection","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40/rules/"}},"description":"Maximum Detection Layer","type":"intrusionpolicy","version":"124d1a7b-a1b4-5097-b6d4-5a399c5bdb68"},"logFiles":false,"type":"accessrule"},{"id":"49505f5e-1301-51dd-9c13-09524dbc0620","version":"8f824582-dad7-5e2a-bd95-927d4e79434f","ruleId":11,"name":"Access_Rule_11","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_NONE","sourceZones":[{"id":"0453e827-ea9e-5279-b45d-49df10666f7f","name":"SecurityZone14Name","description":"Kojugbel ram kucdowaf dozabace bagi vizlujva ibeali humupici apefin sig wiwdocduw halsoz.","version":"aaaea33f-d703-5f8e-9fb0-8647d4f28f12","interfaces":[{"mtu":2652,"enabled":true,"description":"Dijiz mavajmak suhihi ja piobba vigsasu pulasa heka lus nuapoap gar weuluvaz faf duke sojpov pamdaba juhoflon ugosum.","name":"subinterface4name","id":"80110552-0168-5ca1-9539-159176e34426","hardwareName":"SubInterface0/4.5","macAddress":"1753.227B.5D9A","monitorInterface":false,"standbyMacAddress":"FF7B.C256.4778","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1bb9:5d4d:1200:c9eb:97ff:589e:edd4:16e4/32","ipAddress":"eaba:377e:f390:0e98:800f:a6a7:5709:6b52/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"5189:1c32:5064:5495:0ecf:92dd:9175:944a","ipAddress":"479b:2e4a:a86f:13c2:425b:1e14:b1a3:ddfd"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"213.34.152.190","standbyIpAddress":"91.47.228.196"}},"version":"8bcf839f-438a-5cd4-99a7-b6f07ab652a0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Povlulmi maev usma nizguv ve win coocila colo dunde karib wadu ku huhakla kikel gas.","name":"subinterface13name","id":"edd991bd-6b34-5057-9389-003a56e10179","hardwareName":"SubInterface0/13.14","macAddress":"CC55.5B72.5979","monitorInterface":true,"standbyMacAddress":"9F25.7162.695C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0d43:9009:33b7:805f:2a41:1ed1:0ea0:3cd6/32","ipAddress":"e093:0b7d:4775:c0dc:8433:a3b6:1071:8974/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bf79:78d0:19ad:cc70:9f5b:5882:e462:ba1d","ipAddress":"5ffa:92d3:6efd:ef6f:c194:ff49:7d28:7d56"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"237.58.152.175","standbyIpAddress":"233.37.45.228"}},"version":"f9997393-39da-5999-bef9-a0aa1c914d96","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"d2cf6df0-e095-59f1-9afe-4e1f95b290e7","name":"SecurityZone6Name","description":"Kivmeat sepfeheh jekacaloh awe wap vajan utiweb daczo ji ji pew wioha bawmivim ri kaj gibvevsa.","version":"5751e8ac-10c9-5b44-a9fa-1ed8e07d2d40","interfaces":[{"mtu":5818,"enabled":false,"description":"Jigiz malko navsup bojga widbihi vatel vahuwuta ugi bopuru duzwar zopi juinoito sibkonac fozgojmi toopu nurhiru ce joeho.","name":"inside","id":"bddde0e1-1b1f-5f42-b9b7-7c72d9099ef4","hardwareName":"GigabitEthernet1/1","macAddress":"ECFB.7E12.09E1","monitorInterface":true,"standbyMacAddress":"A09D.B513.9683","version":"69f9f38e-0479-58d1-961c-e4040d439200","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},{"mtu":2652,"enabled":true,"description":"Pipakaz ramkudu ulido ce boh ugmepku izareszeh katakuz vosinde takwa piprazipo fostoftug egjolut.","name":"subinterface3name","id":"4258612a-c6ac-5407-8edc-04b207b2b473","hardwareName":"SubInterface0/3.4","macAddress":"4A8E.2AFE.5DE9","monitorInterface":true,"standbyMacAddress":"F917.A989.864E","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"5b49:5a29:3cd4:5c83:7b30:0115:7927:eaf3/32","ipAddress":"a3eb:3b72:2cfa:9901:b7c7:1581:fa72:4b49/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"42e6:34b8:f5eb:802f:626b:503c:781e:aacd","ipAddress":"dcc0:3abc:3933:8a47:25c6:d9a7:2e80:06dc"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"137.234.118.13","standbyIpAddress":"67.162.53.251"}},"version":"2a53f3c3-fc6d-557c-bdbb-e97bc156553c","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"340bf250-a4a5-5049-bddf-a6201a9b8e86","name":"SecurityZone7Name","description":"So gitejipo sotvotdab watu la ica fojum dorog odohog mil etuw ta daghavke dig.","version":"273d67ab-abb9-5af1-8574-3e9af6e98aed","interfaces":[{"mtu":2652,"enabled":false,"description":"Wa cep gi lankowtu ce uvujed tad wo vezke vib vezvufgev hun vob velumde.","name":"subinterface11name","id":"ffc74b4d-ad27-5459-9907-186a8c739189","hardwareName":"SubInterface0/11.12","macAddress":"1534.AB09.4146","monitorInterface":true,"standbyMacAddress":"CF72.BDFB.98A1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"fafb:559d:106d:67ac:52dd:e182:d306:4792/32","ipAddress":"a7bd:69ea:f24f:04ea:40c5:3f80:0416:0f09/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d544:6d26:411c:e460:9911:cb8b:ca9e:3a15","ipAddress":"f96f:858d:9ed1:fc9f:7b47:0fb4:246d:6cb6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"17.76.225.83","standbyIpAddress":"195.253.157.229"}},"version":"e22e21d2-9d64-51a4-adc2-a775a4572916","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"sourceNetworks":[{"id":"884f239a-2976-5e8e-9cb5-5aeb31fc1554","name":"Network15","description":"Rad ladfevhez vucvibbu omeheh hi rulsusva nut diw sikeznag ehazelu witam tocrah irca wavegezi na nidmimle.","version":"7c7865f0-2dcd-5833-a31b-7fe684b3c2ff","type":"networkobject","subType":"HOST","value":"80.87.24.187","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"461303fa-0a19-58a2-9c11-f34f2bf0dfbd","name":"Geolocation8","description":"To ininegto gek zaloj voal tu hudodwa asaatapim olanlej wagwip mu ufu zobpe.","version":"729c6712-e56d-58b3-84f4-e9047261348c","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"},{"id":"3589f9a6-a7c1-5332-a139-3f9595fdfd28","name":"Turks and Caicos Islands","deprecated":true,"iso3":"TCA","iso2":"TC","code":"796","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"}]}],"destinationNetworks":[{"id":"884f239a-2976-5e8e-9cb5-5aeb31fc1554","name":"Network15","description":"Rad ladfevhez vucvibbu omeheh hi rulsusva nut diw sikeznag ehazelu witam tocrah irca wavegezi na nidmimle.","version":"7c7865f0-2dcd-5833-a31b-7fe684b3c2ff","type":"networkobject","subType":"HOST","value":"80.87.24.187","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"461303fa-0a19-58a2-9c11-f34f2bf0dfbd","name":"Geolocation8","description":"To ininegto gek zaloj voal tu hudodwa asaatapim olanlej wagwip mu ufu zobpe.","version":"729c6712-e56d-58b3-84f4-e9047261348c","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"},{"id":"3589f9a6-a7c1-5332-a139-3f9595fdfd28","name":"Turks and Caicos Islands","deprecated":true,"iso3":"TCA","iso2":"TC","code":"796","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"}]}],"sourcePorts":[{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false},{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false}],"destinationPorts":[{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"users":[{"id":"448736fd-bb0b-58e5-8e0f-0d4fe1b1823a","name":"User 25","realmName":"bomubnefwa","type":"trafficuser","realmId":2,"version":"afeapelopel"},{"id":"d3638498-9eeb-5283-9a18-cd184ddbf6cd","name":"User 26","realmName":"oppogitceh","type":"trafficuser","realmId":2,"version":"gusedivkaw"},{"id":"0ed423f9-17f4-5e1d-93f2-f5a403a721f5","name":"User 20","realmName":"ecekulurapu","type":"trafficuser","realmId":2,"version":"aznukjiidu"}],"embeddedAppFilter":{"conditions":[{"filter":"muechicpoh","tags":[{"id":"7269266f-8413-59ef-9085-0de4aa64660b","version":"6eb7235a-74ab-5701-8a37-2522e325519d","appId":2,"name":"ApplicationTag2","description":"Zu wep pag palu mazu irowil rag bore ev ica miljov iwoog besjezew fi regevi ap vo.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"kazrutivni","tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"62bc5d56-7e60-5a71-a467-2c4f2a035a06","version":"e7e0ebc9-3a9a-5342-91e9-ae0ce54b3444","appId":12,"name":"ApplicationTag12","description":"Bamiwaga bo kek wawinta ovepozgan tibutef je kezaluk zonwoz fovul aw ter nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"0a6d59d9-86bf-5ca6-bcdc-8f9bbdfa8542","version":"55d07968-5435-5c3e-8840-2f0761cf28e1","name":"ApplicationFilter4","description":"Ro isuopwo azjuswu an dadwiwen kapoteno ifsi vef je omeanni riho lema berezas geci se.","applications":[{"id":"44b7bb09-58d5-59ef-abd3-7341fa4d1c7b","version":"fe155cb3-e78d-5a5b-8713-5c056c0ea86f","description":"Dazgo jefeci dulhel lowez cotgo mu ewuufih indeh bo urjur vursosoc cetco eb.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application3","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","0928e8e9-25a4-53d0-b118-342a26b44100"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"loweteziwno","tags":[{"id":"11d43e11-683f-5ec2-89c6-6b4e9a8c756d","version":"13924388-a6d9-5f80-8b3b-825736afd2bc","appId":13,"name":"ApplicationTag13","description":"Fiwjag safe jujohmi lipa gucpi la tocgomkap fozensir jafuhi vutbinij jov lifo ciduwno fuzegvef consibe hope.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"8f425fed-eadf-5687-8e75-9b4fe967fcc9","version":"91b94988-c56f-5a96-a552-c943995e0b82","description":"Aduuhi zinco zi larcacha pesu umetouki wet jikoh zu vi ot jelrevap.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application11","tagIds":["f7e90abe-ce71-56da-9f43-dd8685ec1a3a"],"tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5b6fae52-502e-50ff-921a-a7a474f7a857","33552c21-0930-5bb5-8459-9b7608cda68e"],"categories":[{"id":"5b6fae52-502e-50ff-921a-a7a474f7a857","version":"fb5f760a-3774-5c39-b306-9174ad3e3c0a","appId":7,"name":"ApplicationCategory6","description":"Wafekioke nozo tu fazif mef tuve rokpicfab maer cu vaz pibcub ifi so noho wazubta cewsinu hakoj.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"0d8fb7ba-1aee-5509-a833-5a64db795ba3","version":"nokkivamota","name":"UrlGroup10","description":"Umijidep raticce kainusev di gijo if os necullo dadjus jow zajoz ri pasiz kufdah uskikuw la.","objects":[{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"a346d600-32a4-535c-9887-eda79f629be1","version":"1e8d8d5d-ba06-5537-94e9-cda4faa3128e","name":"UrlCategory-12","deprecated":false,"urlCategoryId":12,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"filePolicy":{"id":"de5b742d-70db-535d-bb42-6e6ba949ef53","type":"filepolicy","policyType":"BLOCK_MALWARE_ALL","name":"File_Policy_1","description":"Wiakeno ja barfowole aredu wutra loc fe soc cakdo se la agokim gevsirrog cagome.","version":"e0e81a67-2608-53e2-a015-f53dc3a9de10"},"logFiles":false,"type":"accessrule"},{"id":"188d78f7-2f21-5ce5-acfb-9df6b7117599","version":"75366f7d-ce16-5542-bf0a-f9ec963323b6","ruleId":12,"name":"Access_Rule_12","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"b7731ecd-011b-5f95-90b4-72b024a040d9","version":"8287a57f-56d1-51e9-83f1-361ad172f158","host":"28.235.174.9","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"e960df5e-1ab8-5a15-85e5-a7a47f0ebcb0","name":"SecurityZone5Name","description":"Kinen aziheeci teniow ucezaw idikaki rupbu tieb rawihzec ufkedok iwewun le zihpisze vuzip roetjim fokbuwu jemrumvu cigzet.","version":"0925128c-48f1-552e-8507-379551253d9c","interfaces":[{"mtu":2652,"enabled":true,"description":"Hi vihjuup vueji zufmab wib zel woz ligok wu hi iremouto wahoato.","name":"subinterface5name","id":"9f816351-560c-5e5b-ba0a-2051828301e6","hardwareName":"SubInterface0/5.6","macAddress":"84F0.8C6A.D6DF","monitorInterface":true,"standbyMacAddress":"0971.695D.7024","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e20a:2b14:aecc:7997:984d:9fcd:b3c4:2e66/32","ipAddress":"5753:596d:3c86:ab69:1e26:fa83:c032:8e71/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"44d8:5ccd:bbcd:60df:d35b:afb7:6211:375b","ipAddress":"7b7c:0b52:9938:5274:ef02:b8c5:577c:5028"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"119.148.92.111","standbyIpAddress":"106.21.74.31"}},"version":"7a7c4c69-3da2-5e43-a1f3-2f8026bfb0bd","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"d2cf6df0-e095-59f1-9afe-4e1f95b290e7","name":"SecurityZone6Name","description":"Kivmeat sepfeheh jekacaloh awe wap vajan utiweb daczo ji ji pew wioha bawmivim ri kaj gibvevsa.","version":"5751e8ac-10c9-5b44-a9fa-1ed8e07d2d40","interfaces":[{"mtu":5818,"enabled":false,"description":"Jigiz malko navsup bojga widbihi vatel vahuwuta ugi bopuru duzwar zopi juinoito sibkonac fozgojmi toopu nurhiru ce joeho.","name":"inside","id":"bddde0e1-1b1f-5f42-b9b7-7c72d9099ef4","hardwareName":"GigabitEthernet1/1","macAddress":"ECFB.7E12.09E1","monitorInterface":true,"standbyMacAddress":"A09D.B513.9683","version":"69f9f38e-0479-58d1-961c-e4040d439200","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},{"mtu":2652,"enabled":true,"description":"Pipakaz ramkudu ulido ce boh ugmepku izareszeh katakuz vosinde takwa piprazipo fostoftug egjolut.","name":"subinterface3name","id":"4258612a-c6ac-5407-8edc-04b207b2b473","hardwareName":"SubInterface0/3.4","macAddress":"4A8E.2AFE.5DE9","monitorInterface":true,"standbyMacAddress":"F917.A989.864E","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"5b49:5a29:3cd4:5c83:7b30:0115:7927:eaf3/32","ipAddress":"a3eb:3b72:2cfa:9901:b7c7:1581:fa72:4b49/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"42e6:34b8:f5eb:802f:626b:503c:781e:aacd","ipAddress":"dcc0:3abc:3933:8a47:25c6:d9a7:2e80:06dc"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"137.234.118.13","standbyIpAddress":"67.162.53.251"}},"version":"2a53f3c3-fc6d-557c-bdbb-e97bc156553c","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"a820f102-7786-5e65-8b4e-66022cb061cd","name":"Network4","description":"Cutfuf ni ka viz vave cajto wouvirak rogzizde puk zogvintus jisaslit hos guvbujloc giivuzob fafanod.","version":"37093e3e-c4bb-5188-b023-e0f6a4d12463","type":"networkobject","subType":"HOST","value":"3eab:67af:0576:1163:4699:9d76:4a97:ca53","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"eb6bb0a1-cecb-55ba-8f96-9656ef090bfd","name":"Geolocation10","description":"Ziwe tukina pubki ifro winwo fo piog roswuife to ugouj zer dula haip ju.","version":"06ed679a-dbbb-5eb6-a535-ecc514c1a364","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"}]}],"destinationNetworks":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"a820f102-7786-5e65-8b4e-66022cb061cd","name":"Network4","description":"Cutfuf ni ka viz vave cajto wouvirak rogzizde puk zogvintus jisaslit hos guvbujloc giivuzob fafanod.","version":"37093e3e-c4bb-5188-b023-e0f6a4d12463","type":"networkobject","subType":"HOST","value":"3eab:67af:0576:1163:4699:9d76:4a97:ca53","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"eb6bb0a1-cecb-55ba-8f96-9656ef090bfd","name":"Geolocation10","description":"Ziwe tukina pubki ifro winwo fo piog roswuife to ugouj zer dula haip ju.","version":"06ed679a-dbbb-5eb6-a535-ecc514c1a364","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"}]}],"sourcePorts":[{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"destinationPorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false}],"users":[{"id":"89cbd128-8343-5d9d-ba2e-95fec21748eb","name":"User Group 25","realmName":"taawebet","type":"trafficusergroup","realmId":2,"version":"filwupguzgur"},{"id":"08ccb2fe-b3b5-524a-8857-8df8d2b8cd4c","name":"User 6","realmName":"mazivezgez","type":"trafficuser","realmId":2,"version":"vibnilkiza"},{"id":"dfb1b17e-f313-5fb7-ae2a-62c207e63b66","name":"User 35","realmName":"jovusisenunu","type":"trafficuser","realmId":0,"version":"simohdaviz"}],"embeddedAppFilter":{"conditions":[{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"huimezuben","tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"0a6d59d9-86bf-5ca6-bcdc-8f9bbdfa8542","version":"55d07968-5435-5c3e-8840-2f0761cf28e1","name":"ApplicationFilter4","description":"Ro isuopwo azjuswu an dadwiwen kapoteno ifsi vef je omeanni riho lema berezas geci se.","applications":[{"id":"44b7bb09-58d5-59ef-abd3-7341fa4d1c7b","version":"fe155cb3-e78d-5a5b-8713-5c056c0ea86f","description":"Dazgo jefeci dulhel lowez cotgo mu ewuufih indeh bo urjur vursosoc cetco eb.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application3","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","0928e8e9-25a4-53d0-b118-342a26b44100"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"loweteziwno","tags":[{"id":"11d43e11-683f-5ec2-89c6-6b4e9a8c756d","version":"13924388-a6d9-5f80-8b3b-825736afd2bc","appId":13,"name":"ApplicationTag13","description":"Fiwjag safe jujohmi lipa gucpi la tocgomkap fozensir jafuhi vutbinij jov lifo ciduwno fuzegvef consibe hope.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"d2f1b4a3-4704-59c8-9beb-dffb7ed07518","version":"b0a0aecb-aa27-5c7e-af44-3696768ae771","description":"Ruzik dat pimpe kinri teroh so ruwekat kikan fakajoz juk deb vusma iji madbizzoc carpecre moajiwa vojpi.","deprecated":true,"appId":2,"productivity":1,"risk":2,"name":"Application13","tagIds":["9b266171-0bc7-5f71-aa6c-44b8cbafa329"],"tags":[{"id":"9b266171-0bc7-5f71-aa6c-44b8cbafa329","version":"746ac683-b500-5781-b179-f61db662f8d3","appId":9,"name":"ApplicationTag9","description":"Ja lohivap wim saj zuw hinakug tiduze noemo azonimi ici kovaz ikuza wiihboz bubopmin la uge jeko.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["24cd3c21-8c19-531f-81d5-08aca7b587b9"],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"293f3f8b-e996-5139-bee7-ff7e376ed4f0","version":"2b059a77-a530-5bd9-8694-f4754a6e7538","name":"UrlCategory-8","deprecated":false,"urlCategoryId":65534,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN20","name":"Balanced Security and Connectivity","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN20"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN20/rules/"}},"description":"Balanced Security and Connectivity Layer","type":"intrusionpolicy","version":"d3d7a26f-ddb0-57fb-a9bf-772424bbdd0a"},"filePolicy":{"id":"9c84889f-8c5c-5643-a489-d01bb07639a5","type":"filepolicy","policyType":"BLOCK_OFFICE_DOCUMENTS_PDF_UPLOAD_BLOCK_MALWARE_OTHERS","name":"File_Policy_3","description":"Mi rul etusisti iphogu acrevdid cas bijcaz nul ceaf napi kegpo su dozpov zikpul lohi gurukdi ke.","version":"d5e7c6d4-1f13-5cd2-9442-bdccd7e4b804"},"logFiles":false,"type":"accessrule"},{"id":"0ee93ff6-a56a-52b1-a83f-8b54dafe3154","version":"f010475d-4cda-582b-9249-754759f34394","ruleId":13,"name":"Access_Rule_13","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_FLOW_END","syslogServer":{"id":"232c98bc-4d2b-5660-a387-becfdb0a182e","version":"a39bfe87-a20f-5ce8-87ba-ef6e3fb0d749","host":"150.96.13.71","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},"protocol":"TCP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"ec43d6a8-fe32-5daa-a8bd-766b57a23892","name":"SecurityZone12Name","description":"Etzasus comdupo lu jeitlov zedoj no lidwa ka beni ujenapse lowon dil ami jir.","version":"3091782d-2bd2-57e7-8447-191d486665aa","interfaces":[{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"e12d0a2e-afc7-53cb-85e7-38aa135de327","name":"SecurityZone13Name","description":"Do tewuznas ucait mad ziwgef iw unjup guzov dize guzut vibuk anpekpib nerviw ip ijpa koruf.","version":"09dc0dd3-4a94-5cf2-9efb-89a0f352e003","interfaces":[{"mtu":2652,"enabled":true,"description":"Agi pobjotu zukac rive putsi herima mepues ezijo wicimub utjamoj noskavup wupoje ra dujipale.","name":"subinterface2name","id":"353dee59-d2b6-5df6-9b8e-4f444b489176","hardwareName":"SubInterface0/2.3","macAddress":"EDB8.12E9.D2DB","monitorInterface":false,"standbyMacAddress":"5667.5103.F034","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"2647:2aea:3fdf:b4cc:6433:554a:6ab5:c594/32","ipAddress":"04f0:7320:ae63:ce9f:664b:c7e3:8867:daa9/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3d77:5e5d:78ec:d370:2293:4026:1bbb:aee3","ipAddress":"e6eb:6fef:da47:e1c1:1523:464b:1cab:92a1"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.88.118.226","standbyIpAddress":"17.135.120.105"}},"version":"82ce2f08-42bf-5b19-bbbb-0c4ef276caa0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"91eec2e0-40a0-5a21-8e47-895180936601","name":"Network3","description":"Sipato cebda bujno ajnona kata sacigi kirkoc adicazin wewomu hiferkuz wekog ja domkag ovnejegu bihod.","version":"4bd8c9f6-0f14-5c4f-9946-58217f033d54","type":"networkobject","subType":"NETWORK","value":"233.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"6fd7b2ed-8cb5-5f6d-9484-1eb947d9d21d","name":"Geolocation2","description":"Hu ewecorek laknueto mene nacudule pa can bevuniv ajhidzug daw murpeuza nafkoz oga.","version":"12c26d86-219a-59fd-85fb-aaf5939a4e66","type":"geolocation","locations":[{"id":"8d0b6206-9550-54d8-9ec8-3ffa76cf5aa1","name":"South America","deprecated":true,"code":1003,"type":"continent","countries":[{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"a05f1e97-1b5e-5f45-b53a-373f28de0edc","name":"Uruguay","deprecated":false,"iso3":"URY","iso2":"UY","code":"858","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"28b8a9fc-2a6a-5fd0-ba10-e3607052f0d1","name":"Guyana","deprecated":false,"iso3":"GUY","iso2":"GY","code":"328","type":"country"},{"id":"f21ae5ba-5139-5bc5-9b7c-6607bf1064c0","name":"French Guiana","deprecated":false,"iso3":"GUF","iso2":"GF","code":"254","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"1bb5225e-e880-5bc6-b4b5-373e05ab4ebf","name":"Colombia","deprecated":false,"iso3":"COL","iso2":"CO","code":"170","type":"country"},{"id":"c73e21a5-7336-58ba-9d53-a3d2eb1e1fdd","name":"Chile","deprecated":true,"iso3":"CHL","iso2":"CL","code":"152","type":"country"},{"id":"df4f3356-7c77-5629-8a0c-7ed0e899c303","name":"Brazil","deprecated":false,"iso3":"BRA","iso2":"BR","code":"076","type":"country"},{"id":"8b0d595a-61a0-508f-bacd-264ee85755cf","name":"Bolivia","deprecated":false,"iso3":"BOL","iso2":"BO","code":"068","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"}],"countryCodes":["862","858","740","600","604","328","254","238","218","170","152","076","068","032"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"}]}],"destinationNetworks":[{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"91eec2e0-40a0-5a21-8e47-895180936601","name":"Network3","description":"Sipato cebda bujno ajnona kata sacigi kirkoc adicazin wewomu hiferkuz wekog ja domkag ovnejegu bihod.","version":"4bd8c9f6-0f14-5c4f-9946-58217f033d54","type":"networkobject","subType":"NETWORK","value":"233.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"6fd7b2ed-8cb5-5f6d-9484-1eb947d9d21d","name":"Geolocation2","description":"Hu ewecorek laknueto mene nacudule pa can bevuniv ajhidzug daw murpeuza nafkoz oga.","version":"12c26d86-219a-59fd-85fb-aaf5939a4e66","type":"geolocation","locations":[{"id":"8d0b6206-9550-54d8-9ec8-3ffa76cf5aa1","name":"South America","deprecated":true,"code":1003,"type":"continent","countries":[{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"a05f1e97-1b5e-5f45-b53a-373f28de0edc","name":"Uruguay","deprecated":false,"iso3":"URY","iso2":"UY","code":"858","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"28b8a9fc-2a6a-5fd0-ba10-e3607052f0d1","name":"Guyana","deprecated":false,"iso3":"GUY","iso2":"GY","code":"328","type":"country"},{"id":"f21ae5ba-5139-5bc5-9b7c-6607bf1064c0","name":"French Guiana","deprecated":false,"iso3":"GUF","iso2":"GF","code":"254","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"1bb5225e-e880-5bc6-b4b5-373e05ab4ebf","name":"Colombia","deprecated":false,"iso3":"COL","iso2":"CO","code":"170","type":"country"},{"id":"c73e21a5-7336-58ba-9d53-a3d2eb1e1fdd","name":"Chile","deprecated":true,"iso3":"CHL","iso2":"CL","code":"152","type":"country"},{"id":"df4f3356-7c77-5629-8a0c-7ed0e899c303","name":"Brazil","deprecated":false,"iso3":"BRA","iso2":"BR","code":"076","type":"country"},{"id":"8b0d595a-61a0-508f-bacd-264ee85755cf","name":"Bolivia","deprecated":false,"iso3":"BOL","iso2":"BO","code":"068","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"}],"countryCodes":["862","858","740","600","604","328","254","238","218","170","152","076","068","032"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"}]}],"sourcePorts":[{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"destinationPorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false}],"users":[{"id":"f7417bdc-8866-5397-8f4b-e1f2d7956bcc","name":"User 31","realmName":"guhecogguk","type":"trafficuser","realmId":0,"version":"asogtiodo"},{"id":"0b6aa54b-ec2c-5a0f-b1b0-7b520a57881e","name":"User Group 26","realmName":"poptawkihes","type":"trafficusergroup","realmId":2,"version":"sumewwaruf"},{"id":"64635a18-7a26-5286-be43-8b2d4c3ed63d","name":"User 33","realmName":"nekonije","type":"trafficuser","realmId":0,"version":"cozewidev"}],"embeddedAppFilter":{"conditions":[{"filter":"mutilaje","tags":[{"id":"df3a88b5-3e3b-5024-9d9f-25d3262ce374","version":"b689fe7b-2b28-59fb-93cf-3995fe189cf1","appId":3,"name":"ApplicationTag15","description":"Ofihzaj hesa do dawo mipegil bilel liviip mub zahtavso rut nu zaj weuki dep suspufun ac rap.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"415702f2-3bd8-5dba-adea-dd03452067a5","version":"1062501a-214c-51d1-9af3-d9c2ca87588f","appId":4,"name":"ApplicationCategory11","description":"Dubofmih taj cukij fes vizoc urzip lazigeha pot bak jackoaz ufi ebomujme ce.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"huimezuben","tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"cc35245d-826d-5658-b4fe-95991a398ec6","version":"d479ec11-d1a3-5f15-b8dc-04f5ecbe8b48","name":"ApplicationFilter1","description":"Foan parot akitu nufidsu purfu biwowobi piahote noturtus otsido sa jihda pebip tuwi gocre.","applications":[{"id":"f8c5fef0-916a-541e-9113-de4951dde18b","version":"c07380b4-d91f-5a9b-aed7-efbe152c2f6b","description":"Aloul gouwtu riguse luzmokfof somi ehroz esecegwaf fafal heeg ohban fi ijga.","deprecated":true,"appId":6,"productivity":1,"risk":3,"name":"Application6","tagIds":["63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["33552c21-0930-5bb5-8459-9b7608cda68e","794d6605-f5d9-5f26-b11d-507eac471889"],"categories":[{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"baketfale","tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":true,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"7cd12f14-70e7-51d8-abf1-af76ca735eef","version":"544ddfb1-dbc2-5901-aeaf-e76f489ff422","description":"Mata he jijto miaked lirki fuus ediupu rarengu ke iri escut gusotpi fa so piltef ob ocaguzuc zi.","deprecated":true,"appId":7,"productivity":3,"risk":4,"name":"Application9","tagIds":["aad0af81-b4ad-5a4a-a395-d88fc2abb8c4"],"tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["fff4b47c-a653-5729-a31a-e6353d420768","24cd3c21-8c19-531f-81d5-08aca7b587b9"],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ef71cd89-a0fc-5994-aaff-0f427dff92fa","version":"pugvagpugmi","name":"UrlGroup5","description":"Muhzipil korezoki kuwelas fojulcud jum ineteig ob zeluc mekpufes api ajnovawa ro tadi.","objects":[{"id":"0776578c-c6ee-58a3-91de-7d50b64343b8","version":"bimupair","name":"Url7","description":"Mer komad cozmersul el gaze fupfod gij pikukkop kavimgen befowez guwojo bikpogezu ice niruvpo ganal ovo taun.","url":"http://difepfel.io/ovcekwe","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"e1088b47-43c6-509a-a722-763318471791","version":"53a76ab0-006b-5dd4-abc4-c0f9a0d58f50","name":"UrlCategory-13","deprecated":false,"urlCategoryId":13,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f6-fe55-11e4-8e99-ipsN10","name":"Connectivity Over Security","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10/rules/"}},"description":"Connectivity Over Security Layer","type":"intrusionpolicy","version":"f17dd031-7eba-5f6f-8734-300a871471fe"},"logFiles":false,"type":"accessrule"},{"id":"c41e7ab2-e3bc-5bba-a476-b4f4774a0076","version":"5745feb2-fdcf-5da9-8339-c25a1bad3bc4","ruleId":14,"name":"Access_Rule_14","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"2f33d844-7516-5f6e-87ed-8da737ce2a78","version":"d7f05fd4-062b-5c81-9a97-7de1c7591fda","host":"139.79.31.136","port":5897,"protocol":"TCP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"ec43d6a8-fe32-5daa-a8bd-766b57a23892","name":"SecurityZone12Name","description":"Etzasus comdupo lu jeitlov zedoj no lidwa ka beni ujenapse lowon dil ami jir.","version":"3091782d-2bd2-57e7-8447-191d486665aa","interfaces":[{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"9c8667b7-4e34-56df-b092-1340af45b0d2","name":"SecurityZone10Name","description":"Joni gagko ugmucba ogparjad uvre hobneva wete epujein nelgidma kuollum wi gabvanaj sosso.","version":"bc2e044f-1753-51e2-aa7a-ea7362c6b23b","interfaces":[{"mtu":5818,"enabled":false,"description":"Rojsitepo fifgar sovaf ebabovvoj ivjinjig ite sadehtud upazeh dejsabfuv tipgo cosbe femigpi ac aztazta beduw.","id":"fa3dc115-5c3e-51ae-aa38-60ff9abd415a","hardwareName":"GigabitEthernet1/7","macAddress":"55F1.B70C.C1B7","monitorInterface":false,"standbyMacAddress":"B24B.66FA.3266","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"29df:8589:549c:1eef:cc3a:60bf:e04c:3627/32","ipAddress":"afd9:ec18:e2d8:02b5:d0fb:e88c:cea2:e443/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"1a98:7998:35a2:1767:f8b7:fea5:dc50:6a35","ipAddress":"2365:d545:9cd1:ab13:70c3:7177:cd7b:749e"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"135.29.245.249","standbyIpAddress":"74.247.146.212"}},"version":"143d2951-eca6-58fa-b11e-89d0e27b913c","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":2652,"enabled":false,"description":"Cacfi rijgebpuj hotow vu jisfesgub os biami baajo cimod totufo cajip epkaeg ezeugpek ucifulo huzdeal.","name":"subinterface8name","id":"90da9e2e-5eb1-5d7f-95cf-8759bf36f644","hardwareName":"SubInterface0/8.9","macAddress":"8C77.2E4D.7213","monitorInterface":false,"standbyMacAddress":"32AD.D756.5E62","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1ca8:b55c:d9ed:3be2:2955:da65:a52c:d0fc/32","ipAddress":"085b:3c0e:113f:ccef:6d12:cb57:ef1d:431d/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3025:32ff:78fb:37e2:42a3:8d40:64ee:e93e","ipAddress":"7aea:6aed:7d14:3ac6:df8b:0446:5b7d:f55f"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"225.196.76.214","standbyIpAddress":"62.250.115.23"}},"version":"4e59e028-4b81-5f28-9fbf-6033fd2394b8","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"destinationNetworks":[{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"sourcePorts":[{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false}],"destinationPorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false}],"users":[{"id":"bcbb5aa1-c0f1-5a30-9a42-e9985b8edb6a","name":"User Group 4","realmName":"hucacdipzet","type":"trafficusergroup","realmId":2,"version":"hadojmica"},{"id":"e4cf55a1-9e8b-5e8b-a91e-ed734a516447","name":"User Group 29","realmName":"wicocetifow","type":"trafficusergroup","realmId":2,"version":"ohkofalezi"},{"id":"a4f6665c-e273-5ca6-84e8-f2535614eff2","name":"User 9","realmName":"egumutreawi","type":"trafficuser","realmId":2,"version":"gozojvubur"}],"embeddedAppFilter":{"conditions":[{"filter":"loweteziwno","tags":[{"id":"11d43e11-683f-5ec2-89c6-6b4e9a8c756d","version":"13924388-a6d9-5f80-8b3b-825736afd2bc","appId":13,"name":"ApplicationTag13","description":"Fiwjag safe jujohmi lipa gucpi la tocgomkap fozensir jafuhi vutbinij jov lifo ciduwno fuzegvef consibe hope.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"},{"filter":"uckupehot","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"d34fc0ae-3694-55ab-9ffc-19c66d834cb7","version":"4743a5f3-7dcb-5b78-afd0-0058ca39da4f","name":"ApplicationFilter8","description":"Putzo vowev ec namhilteg kedo jejes tudidan aju er ke deetopo peug ahi bagnuse bacivvep vosev to.","applications":[{"id":"d2f1b4a3-4704-59c8-9beb-dffb7ed07518","version":"b0a0aecb-aa27-5c7e-af44-3696768ae771","description":"Ruzik dat pimpe kinri teroh so ruwekat kikan fakajoz juk deb vusma iji madbizzoc carpecre moajiwa vojpi.","deprecated":true,"appId":2,"productivity":1,"risk":2,"name":"Application13","tagIds":["9b266171-0bc7-5f71-aa6c-44b8cbafa329"],"tags":[{"id":"9b266171-0bc7-5f71-aa6c-44b8cbafa329","version":"746ac683-b500-5781-b179-f61db662f8d3","appId":9,"name":"ApplicationTag9","description":"Ja lohivap wim saj zuw hinakug tiduze noemo azonimi ici kovaz ikuza wiihboz bubopmin la uge jeko.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["24cd3c21-8c19-531f-81d5-08aca7b587b9"],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"kaibaagiaze","tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"368e2c4f-cce1-574d-b5ee-ab9d539cf248","version":"3ecf8402-8607-5fdc-a148-f5abddf84f0a","description":"Apeja libsul uweb osjoti ge uzu fal gob woletkew be tu hah ha wuvekohuz gacaw.","deprecated":true,"appId":4,"productivity":1,"risk":0,"name":"Application14","tagIds":["9b16dd72-476a-5ac0-8aeb-fbf6e1f45438"],"tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5f0662ef-3382-5357-bf35-b9b7361aae44"],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["WEBAPP","SERVER"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ffe7a902-b85c-5fd6-af84-62f80cd30c65","version":"weowagopwib","name":"UrlGroup7","description":"Doaniopa kojutwef va uzu ji riw hoap veruhro ge nej tozbuz uzbohi ma pok.","objects":[{"id":"4dcd5400-fbdc-5d2e-a182-437ae706284c","version":"erreupih","name":"Url11","description":"Mu wiod pa winhuta ukzup foveba conefda zecvi wit ciahujah bo lahfonhe adcogo mori.","url":"http://sodzup.io/pivkaod","type":"urlobject"},{"id":"1ec355c1-47fb-55b1-b8d1-6d6a465821ca","version":"hapevemoco","name":"Url10","description":"Cagsif ju ilawusne kal uw tewwuvmul cu suilu putuz fuwabe wi favig bibothep ti hire gucrak.","url":"http://ni.net/civ","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"d8b59166-b6ce-5232-a41d-e67269d63bc7","name":"Suspicious sites","index":4,"startPercentage":21,"endPercentage":40,"version":"cf849fee-4718-503d-bccb-a9e5c26d78b6","type":"urlreputation"},"urlCategory":{"id":"3a94fe91-baa1-5666-a509-a616e42f8f66","version":"d7d497cd-7431-59ca-be9a-bff06b1aec95","name":"UrlCategory-5","deprecated":false,"urlCategoryId":5,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f6-fe55-11e4-8e99-ipsN10","name":"Connectivity Over Security","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10/rules/"}},"description":"Connectivity Over Security Layer","type":"intrusionpolicy","version":"f17dd031-7eba-5f6f-8734-300a871471fe"},"logFiles":false,"type":"accessrule"},{"id":"f59c7fc1-9662-5c46-ba02-2221f038a859","version":"f4463d3c-c99f-5a40-bf7e-3b0954c88c9d","ruleId":15,"name":"Access_Rule_15","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"8b2497cb-1dee-5d91-88e3-cf2ba71d6d57","version":"35ab6c5c-b8e4-5e24-b013-4ffd6ed479b6","host":"83.58.8.189","port":5897,"protocol":"UDP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"f13918c2-287c-5026-b2d4-ae18cf69fd8c","name":"SecurityZone2Name","description":"Elaba havor do tifgovew di tobeep osiho gamalun ilokavo hosoc bavmep lo katzakcu we lekucazif jusifi baluhufa ivinu.","version":"f1cb8b72-77e1-524f-9ee0-07e3f6ffb563","interfaces":[{"mtu":5818,"enabled":true,"description":"Eh fiec wepauju fakigi fedep osgitewo wodrah ponkumido fis nozpuri ju geelo doh vipuopu vobuhalu piova bokadar.","id":"09d6217f-2741-5b6a-bd5c-91ca02f54e09","hardwareName":"GigabitEthernet1/6","macAddress":"3539.C649.1EF4","monitorInterface":false,"standbyMacAddress":"AAB5.9320.943C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e765:caaf:c971:52be:e7af:9357:6eab:2e59/32","ipAddress":"d168:a40a:b8df:9bc5:d38c:64df:a4fd:4110/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"76da:7d95:05ed:3ac9:4014:58d2:1e81:b4b2","ipAddress":"fdcf:ebe2:84c9:5892:94f3:b209:1cd6:d430"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"46.176.226.56","standbyIpAddress":"252.197.49.100"}},"version":"e18f92be-6c58-55a7-9dea-ccdefd79a44f","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":false,"description":"Wi repiro sisig se wuglo zuzrog wivsel iboabamu wug sew figinfo pada koorcu wun akawobit cuholso wizpeos belidgew.","id":"c95c223c-b583-5d80-88a6-b1ac1b528e5e","hardwareName":"GigabitEthernet1/8","macAddress":"AD75.0711.BDF3","monitorInterface":false,"standbyMacAddress":"C7BE.0512.EDE1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4d6e:8d99:e5e9:8e08:03ed:ac78:12d9:1abc/32","ipAddress":"5b5a:9ba8:4d53:74f4:b2b9:b36b:2930:3030/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"919d:d8d6:cac4:18ed:5582:4d98:5afa:7f30","ipAddress":"9bfa:b940:f6b8:cd45:9eb6:d07e:09a6:b747"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"206.102.168.38","standbyIpAddress":"47.171.86.122"}},"version":"88bd96c5-891e-5b48-ab25-5091e3dfe377","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"aff2c9fc-0b0e-58f4-b418-5ccd970fd67f","name":"SecurityZone11Name","description":"Nued mos di majri nih ebhebe desalu ivif novrove razjihew kepfa okforec lajatet sifu fa.","version":"d334e386-a53c-5345-9181-d20421a28e34","interfaces":[{"mtu":5818,"enabled":true,"description":"Ke vuhdojos zudgopa seto bere refcengo he camohpik pir risvup pum omhos zalpe sukjo rufe.","id":"2cf6e4b9-0bf0-5d7d-9110-6ab397d400a4","hardwareName":"GigabitEthernet1/4","macAddress":"0ABE.1A2F.DC3A","monitorInterface":false,"standbyMacAddress":"6057.AC6B.C47F","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"6d9d:2a5c:831a:6482:0268:e3fe:244e:1c1c/32","ipAddress":"c4fb:ea12:d0f3:42e4:10ed:e3f4:8e5a:6c9a/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"77f1:3852:307c:1449:a914:b786:3831:5ed1","ipAddress":"9eee:0707:2706:edd3:22f1:30d5:52f1:39fb"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"51.99.206.42","standbyIpAddress":"138.81.67.160"}},"version":"365fb3c7-62eb-5a7d-a412-b1cb7a387375","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"a820f102-7786-5e65-8b4e-66022cb061cd","name":"Network4","description":"Cutfuf ni ka viz vave cajto wouvirak rogzizde puk zogvintus jisaslit hos guvbujloc giivuzob fafanod.","version":"37093e3e-c4bb-5188-b023-e0f6a4d12463","type":"networkobject","subType":"HOST","value":"3eab:67af:0576:1163:4699:9d76:4a97:ca53","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"bf967c1b-7ed5-5830-bf5a-21f5eca01525","name":"Geolocation12","description":"Sualejon viga zibeh toawbo nim edubesob hufoleku cejiccan rurvud ig tec fahujre momnu adafa ranlug neupkoj.","version":"2a56c76a-857f-5026-b94a-1a0bf72e0920","type":"geolocation","locations":[{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"df4f3356-7c77-5629-8a0c-7ed0e899c303","name":"Brazil","deprecated":false,"iso3":"BRA","iso2":"BR","code":"076","type":"country"},{"id":"f9fcc680-cfb6-5541-9a22-5d708e664cd7","name":"Nicaragua","deprecated":true,"iso3":"NIC","iso2":"NI","code":"558","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"}]}],"destinationNetworks":[{"id":"a820f102-7786-5e65-8b4e-66022cb061cd","name":"Network4","description":"Cutfuf ni ka viz vave cajto wouvirak rogzizde puk zogvintus jisaslit hos guvbujloc giivuzob fafanod.","version":"37093e3e-c4bb-5188-b023-e0f6a4d12463","type":"networkobject","subType":"HOST","value":"3eab:67af:0576:1163:4699:9d76:4a97:ca53","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"bf967c1b-7ed5-5830-bf5a-21f5eca01525","name":"Geolocation12","description":"Sualejon viga zibeh toawbo nim edubesob hufoleku cejiccan rurvud ig tec fahujre momnu adafa ranlug neupkoj.","version":"2a56c76a-857f-5026-b94a-1a0bf72e0920","type":"geolocation","locations":[{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"df4f3356-7c77-5629-8a0c-7ed0e899c303","name":"Brazil","deprecated":false,"iso3":"BRA","iso2":"BR","code":"076","type":"country"},{"id":"f9fcc680-cfb6-5541-9a22-5d708e664cd7","name":"Nicaragua","deprecated":true,"iso3":"NIC","iso2":"NI","code":"558","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"}]}],"sourcePorts":[{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}],"destinationPorts":[{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false},{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false}],"users":[{"id":"dfe8be9f-f2fb-541e-ba1c-8a51b58462c1","name":"User Group 22","realmName":"dibumolub","type":"trafficusergroup","realmId":2,"version":"ukogomzatkaj"},{"id":"6fc80f39-f5ca-52da-baac-a4008a22fdbd","name":"User 29","realmName":"hoomewudavu","type":"trafficuser","realmId":2,"version":"maakuojusal"},{"id":"7145e63c-b952-5595-a3e0-b95cfd817553","name":"User 3","realmName":"owesizfani","type":"trafficuser","realmId":2,"version":"rilijzomu"}],"embeddedAppFilter":{"conditions":[{"filter":"uckupehot","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"},{"filter":"kaibaagiaze","tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"f0c3a5d1-57d9-50ea-9035-0e27d2dd7447","version":"186b3aa2-9ffb-590a-a7f5-b799b6dd33ac","name":"ApplicationFilter11","description":"Bil katit molcehmo bir pi unor famokuiba oglu ec emmem gazwica dor ko.","applications":[{"id":"a035fce1-4959-5362-8472-253aa159b1ec","version":"616efbb8-6148-59e3-afd4-68d4d42164c1","description":"Fo cigejki leg umjunu ja da lefuh ib zatlose ganutag dilebi cejizgow.","deprecated":false,"appId":6,"productivity":0,"risk":1,"name":"Application15","tagIds":["f7e90abe-ce71-56da-9f43-dd8685ec1a3a","a558b06a-1e83-5caa-a903-3b6e291ddc2e"],"tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"a558b06a-1e83-5caa-a903-3b6e291ddc2e","version":"96c0750c-0f50-5872-869a-8b50dad24edc","appId":8,"name":"SSL protocol","description":"Ifgafu ma vopuatu ho jim zud hiodiben ango ji nusiwufu hig gatejsem povci.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["fff4b47c-a653-5729-a31a-e6353d420768","7f62abc6-7f08-5a69-acb6-65def01251d4"],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","SERVER"],"metadata":{"referenced":true},"type":"application"},{"id":"ce901dd3-4e85-5bf0-a273-2018d76527c8","version":"84a4f0c6-57b3-50f3-bf20-0cf68bbbb806","description":"Gipus bovawge vel ceoziwo nuim ehdifir nowe onoli atsewav irfer semowi ge turos mufo tahukca jaz.","deprecated":true,"appId":5,"productivity":0,"risk":2,"name":"Application2","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["1323d445-72c0-5d8b-9f58-c223feb51bac","328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"1323d445-72c0-5d8b-9f58-c223feb51bac","version":"f85374d2-b1c5-5e65-b746-77dc6a21decb","appId":7,"name":"ApplicationCategory14","description":"Ohoad agoteveto irewomi adizogo lurtoop tizesuca himewwak poftoj cow nunapivif cisge pe hi raam hatdunze.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"fapbalnezi","tags":[{"id":"6f8f8faa-179f-5da2-800c-387e6e2d142f","version":"2d72ebc6-6079-5398-8376-0abffab064ce","appId":7,"name":"ApplicationTag7","description":"Lu nil nubfaida lorig kacze rajlacve uboruzu zobjo opimawu zapaswo jed sihnob hecoj le neus gubwe pij lerwilkic.","metadata":{"referenced":true},"type":"applicationtag"},{"id":"9b266171-0bc7-5f71-aa6c-44b8cbafa329","version":"746ac683-b500-5781-b179-f61db662f8d3","appId":9,"name":"ApplicationTag9","description":"Ja lohivap wim saj zuw hinakug tiduze noemo azonimi ici kovaz ikuza wiihboz bubopmin la uge jeko.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"ce901dd3-4e85-5bf0-a273-2018d76527c8","version":"84a4f0c6-57b3-50f3-bf20-0cf68bbbb806","description":"Gipus bovawge vel ceoziwo nuim ehdifir nowe onoli atsewav irfer semowi ge turos mufo tahukca jaz.","deprecated":true,"appId":5,"productivity":0,"risk":2,"name":"Application2","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["1323d445-72c0-5d8b-9f58-c223feb51bac","328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"1323d445-72c0-5d8b-9f58-c223feb51bac","version":"f85374d2-b1c5-5e65-b746-77dc6a21decb","appId":7,"name":"ApplicationCategory14","description":"Ohoad agoteveto irewomi adizogo lurtoop tizesuca himewwak poftoj cow nunapivif cisge pe hi raam hatdunze.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"c8bde3f4-9a21-5a44-80db-baae419148f8","version":"bosavmojgeb","name":"UrlGroup9","description":"Zikaw kozicet agwihul jav eja acniiko hobi mogod ukkem ku irpec zen cijguh dabwuovu je sub.","objects":[{"id":"26cf0d0b-7575-594a-9c3b-9e17d5e24fbf","version":"sipugcocti","name":"Url6","description":"Etna gum cacu tin meehe hu cahfik kus supdeba irlohje hig rizhepzov vi togaofo los dujna her sipu.","url":"http://bejakuru.co.uk/ebkampaw","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"00d12166-18a1-568d-8878-cbe92b44602c","name":"Risk unknown","index":0,"startPercentage":0,"endPercentage":0,"version":"b5c74a5a-ad53-5a53-91d1-505f3d64d5d5","type":"urlreputation"},"urlCategory":{"id":"5c03856a-3c13-5838-b397-19e4eb343d1d","version":"4399e700-e8df-5a73-a565-c19049383762","name":"Health and Medicine","deprecated":false,"urlCategoryId":1,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN40","name":"Maximum Detection","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40/rules/"}},"description":"Maximum Detection Layer","type":"intrusionpolicy","version":"124d1a7b-a1b4-5097-b6d4-5a399c5bdb68"},"filePolicy":{"id":"de5b742d-70db-535d-bb42-6e6ba949ef53","type":"filepolicy","policyType":"BLOCK_MALWARE_ALL","name":"File_Policy_1","description":"Wiakeno ja barfowole aredu wutra loc fe soc cakdo se la agokim gevsirrog cagome.","version":"e0e81a67-2608-53e2-a015-f53dc3a9de10"},"logFiles":false,"type":"accessrule"},{"id":"8909fb10-62a4-5f1c-9b82-5effdd661183","version":"02dfa897-7e2e-5485-897d-35a955a7c968","ruleId":16,"name":"Access_Rule_16","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"57bc6178-2f01-52b2-8d55-29366cb35285","version":"beeb6d44-207b-5a07-b708-0b4fba7c56c5","host":"171.25.188.89","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"f13918c2-287c-5026-b2d4-ae18cf69fd8c","name":"SecurityZone2Name","description":"Elaba havor do tifgovew di tobeep osiho gamalun ilokavo hosoc bavmep lo katzakcu we lekucazif jusifi baluhufa ivinu.","version":"f1cb8b72-77e1-524f-9ee0-07e3f6ffb563","interfaces":[{"mtu":5818,"enabled":true,"description":"Eh fiec wepauju fakigi fedep osgitewo wodrah ponkumido fis nozpuri ju geelo doh vipuopu vobuhalu piova bokadar.","id":"09d6217f-2741-5b6a-bd5c-91ca02f54e09","hardwareName":"GigabitEthernet1/6","macAddress":"3539.C649.1EF4","monitorInterface":false,"standbyMacAddress":"AAB5.9320.943C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e765:caaf:c971:52be:e7af:9357:6eab:2e59/32","ipAddress":"d168:a40a:b8df:9bc5:d38c:64df:a4fd:4110/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"76da:7d95:05ed:3ac9:4014:58d2:1e81:b4b2","ipAddress":"fdcf:ebe2:84c9:5892:94f3:b209:1cd6:d430"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"46.176.226.56","standbyIpAddress":"252.197.49.100"}},"version":"e18f92be-6c58-55a7-9dea-ccdefd79a44f","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":false,"description":"Wi repiro sisig se wuglo zuzrog wivsel iboabamu wug sew figinfo pada koorcu wun akawobit cuholso wizpeos belidgew.","id":"c95c223c-b583-5d80-88a6-b1ac1b528e5e","hardwareName":"GigabitEthernet1/8","macAddress":"AD75.0711.BDF3","monitorInterface":false,"standbyMacAddress":"C7BE.0512.EDE1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4d6e:8d99:e5e9:8e08:03ed:ac78:12d9:1abc/32","ipAddress":"5b5a:9ba8:4d53:74f4:b2b9:b36b:2930:3030/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"919d:d8d6:cac4:18ed:5582:4d98:5afa:7f30","ipAddress":"9bfa:b940:f6b8:cd45:9eb6:d07e:09a6:b747"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"206.102.168.38","standbyIpAddress":"47.171.86.122"}},"version":"88bd96c5-891e-5b48-ab25-5091e3dfe377","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"destinationNetworks":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"sourcePorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false}],"destinationPorts":[{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false},{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false}],"users":[{"id":"fd09c815-2ddb-5604-bc51-051489a7eda6","name":"User 11","realmName":"cuucbisken","type":"trafficuser","realmId":2,"version":"julanzovne"},{"id":"89cbd128-8343-5d9d-ba2e-95fec21748eb","name":"User Group 25","realmName":"taawebet","type":"trafficusergroup","realmId":2,"version":"filwupguzgur"},{"id":"365494a9-f598-500d-8145-a3cc6f53c6bc","name":"User Group 18","realmName":"ziidovegaz","type":"trafficusergroup","realmId":2,"version":"cutupezeim"}],"embeddedAppFilter":{"conditions":[{"filter":"kaibaagiaze","tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"keludmubluf","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"4890f08c-7d08-5b84-93cc-7a4baa096ff1","version":"76998009-57e5-5be3-83ee-29ff93086a19","name":"ApplicationFilter2","description":"Uwudu elufur kikvusab gi zafur zerojtuc cefiz oti fonum wit pewivbu leuhi cen uri mibfozta jukmuw nafid.","applications":[{"id":"83c8e0e6-3707-5128-b7da-4659f67b76a0","version":"5072ae78-a326-5b92-8176-c0c8132922a8","description":"Bo dese su ja elumuf ane zusjo fiplois ewariju ihjup nunnihep kosaldic kuhfovu.","deprecated":false,"appId":4,"productivity":0,"risk":1,"name":"Application1","tagIds":["62bc5d56-7e60-5a71-a467-2c4f2a035a06"],"tags":[{"id":"62bc5d56-7e60-5a71-a467-2c4f2a035a06","version":"e7e0ebc9-3a9a-5342-91e9-ae0ce54b3444","appId":12,"name":"ApplicationTag12","description":"Bamiwaga bo kek wawinta ovepozgan tibutef je kezaluk zonwoz fovul aw ter nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","2ad8b880-5783-5919-bda2-46e8316f2d70"],"categories":[{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"2ad8b880-5783-5919-bda2-46e8316f2d70","version":"c19f7a96-7634-5d1b-972d-99caa3e34a64","appId":1,"name":"ApplicationCategory12","description":"Ev zalapi hiwuhi peror lupu iv obalem gicobem vi bafuh ponij co hur linsis fukurod dehpupme.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":false},"type":"application"},{"id":"6361bd7f-01c9-5714-baca-035d66f50a8c","version":"50dcdb47-5d21-537f-b3b0-81713bf31c06","description":"Leku luto lofuwec wuwguhot abmofdo cun vuunuvi lulsoteg kivsas mijmi ru kipumeja sacwuwhe gub magumera.","deprecated":false,"appId":5,"productivity":0,"risk":4,"name":"Application5","tagIds":["0b45de63-5252-5257-acf6-ce494cdb905a"],"tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"jignorebes","tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"83c8e0e6-3707-5128-b7da-4659f67b76a0","version":"5072ae78-a326-5b92-8176-c0c8132922a8","description":"Bo dese su ja elumuf ane zusjo fiplois ewariju ihjup nunnihep kosaldic kuhfovu.","deprecated":false,"appId":4,"productivity":0,"risk":1,"name":"Application1","tagIds":["62bc5d56-7e60-5a71-a467-2c4f2a035a06"],"tags":[{"id":"62bc5d56-7e60-5a71-a467-2c4f2a035a06","version":"e7e0ebc9-3a9a-5342-91e9-ae0ce54b3444","appId":12,"name":"ApplicationTag12","description":"Bamiwaga bo kek wawinta ovepozgan tibutef je kezaluk zonwoz fovul aw ter nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","2ad8b880-5783-5919-bda2-46e8316f2d70"],"categories":[{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"2ad8b880-5783-5919-bda2-46e8316f2d70","version":"c19f7a96-7634-5d1b-972d-99caa3e34a64","appId":1,"name":"ApplicationCategory12","description":"Ev zalapi hiwuhi peror lupu iv obalem gicobem vi bafuh ponij co hur linsis fukurod dehpupme.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"23704998-7a6e-5a13-9b62-897a0ed5815b","version":"bikwemafa","name":"UrlGroup4","description":"Gaf abme waves bojda asola kud te jig rag zansojer mez okuji ojpo bom ta.","objects":[{"id":"ab75ba7b-b6c8-57f8-b62b-85a6e1047423","version":"mulmevkavvof","name":"Url13","description":"Gowop ranuhnif awronso ajado ozfu sov digmec tu mafhutid sum ca gelo.","url":"http://gar.io/pahum","type":"urlobject"},{"id":"8c8ec923-9d7c-59f2-8d13-7db0e9d0fc55","version":"inkitfovat","name":"Url1","description":"Cukji verwe wafit hada sirivza uso awba mezjaje gi bavtiim satudu cevonlem nugocok ibnaar zasado.","url":"http://geta.org/ozmeg","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"8ea4a5c6-b989-585d-9f10-a3f90296f644","version":"7cfafd89-9584-5041-b723-0699cf1e69ea","name":"UrlCategory-10","deprecated":false,"urlCategoryId":10,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN40","name":"Maximum Detection","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN40/rules/"}},"description":"Maximum Detection Layer","type":"intrusionpolicy","version":"124d1a7b-a1b4-5097-b6d4-5a399c5bdb68"},"logFiles":false,"type":"accessrule"},{"id":"5bb1b029-baae-5eee-8b69-2fbe108cdd50","version":"6e43ab02-ef72-51de-ad91-3fd12da882ae","ruleId":17,"name":"Access_Rule_17","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_FLOW_END","syslogServer":{"id":"c51edbd5-448a-5d9d-a03d-38bcfa0e3a6a","version":"c10f4b41-a037-5654-bdeb-bf811acf2ee8","host":"117.20.174.221","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"TCP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"95a6c824-af98-562a-8be6-adc2446c4a09","name":"SecurityZone4Name","description":"Hu nevsuzwiz lezjab hidlurus la pak relte kew umigo zo kopi jetjata.","version":"73028d64-6d1e-5a0a-9f3c-db515f246240","interfaces":[{"mtu":2652,"enabled":false,"description":"Zojin ohdahe kulgune acme eriocopus wubvi hulwic buscub daugeiw ekdegwa jijekub ko gijenog lokrogri tolev tiassi pejliuda.","name":"subinterface6name","id":"bf6765a2-9e9f-506d-a381-329a46273a43","hardwareName":"SubInterface0/6.7","macAddress":"35AF.6E50.0377","monitorInterface":true,"standbyMacAddress":"D947.0A8F.425F","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"7206:d020:f8c8:c150:b059:d35c:3824:c1ae/32","ipAddress":"be49:09fb:26ce:f506:0899:43c5:ce17:4143/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"080b:aa66:ca0d:4375:d7c7:8cbb:8978:46f0","ipAddress":"a226:34cd:63b0:a860:aa22:3304:05a5:a64f"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.51.91.99","standbyIpAddress":"231.94.58.66"}},"version":"68043109-6c4e-5a0f-8df0-d01122d3c319","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"340bf250-a4a5-5049-bddf-a6201a9b8e86","name":"SecurityZone7Name","description":"So gitejipo sotvotdab watu la ica fojum dorog odohog mil etuw ta daghavke dig.","version":"273d67ab-abb9-5af1-8574-3e9af6e98aed","interfaces":[{"mtu":2652,"enabled":false,"description":"Wa cep gi lankowtu ce uvujed tad wo vezke vib vezvufgev hun vob velumde.","name":"subinterface11name","id":"ffc74b4d-ad27-5459-9907-186a8c739189","hardwareName":"SubInterface0/11.12","macAddress":"1534.AB09.4146","monitorInterface":true,"standbyMacAddress":"CF72.BDFB.98A1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"fafb:559d:106d:67ac:52dd:e182:d306:4792/32","ipAddress":"a7bd:69ea:f24f:04ea:40c5:3f80:0416:0f09/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d544:6d26:411c:e460:9911:cb8b:ca9e:3a15","ipAddress":"f96f:858d:9ed1:fc9f:7b47:0fb4:246d:6cb6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"17.76.225.83","standbyIpAddress":"195.253.157.229"}},"version":"e22e21d2-9d64-51a4-adc2-a775a4572916","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"e960df5e-1ab8-5a15-85e5-a7a47f0ebcb0","name":"SecurityZone5Name","description":"Kinen aziheeci teniow ucezaw idikaki rupbu tieb rawihzec ufkedok iwewun le zihpisze vuzip roetjim fokbuwu jemrumvu cigzet.","version":"0925128c-48f1-552e-8507-379551253d9c","interfaces":[{"mtu":2652,"enabled":true,"description":"Hi vihjuup vueji zufmab wib zel woz ligok wu hi iremouto wahoato.","name":"subinterface5name","id":"9f816351-560c-5e5b-ba0a-2051828301e6","hardwareName":"SubInterface0/5.6","macAddress":"84F0.8C6A.D6DF","monitorInterface":true,"standbyMacAddress":"0971.695D.7024","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e20a:2b14:aecc:7997:984d:9fcd:b3c4:2e66/32","ipAddress":"5753:596d:3c86:ab69:1e26:fa83:c032:8e71/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"44d8:5ccd:bbcd:60df:d35b:afb7:6211:375b","ipAddress":"7b7c:0b52:9938:5274:ef02:b8c5:577c:5028"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"119.148.92.111","standbyIpAddress":"106.21.74.31"}},"version":"7a7c4c69-3da2-5e43-a1f3-2f8026bfb0bd","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"e402b5e4-c4c3-572b-9199-f219787e4e5b","name":"Geolocation9","description":"Mukav asi zipleto udi tiva soc isuop ijuka le beomo zedre fevga kogto cara.","version":"df453cf6-f288-57eb-8849-f55827597fa8","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"}]}],"destinationNetworks":[{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"e402b5e4-c4c3-572b-9199-f219787e4e5b","name":"Geolocation9","description":"Mukav asi zipleto udi tiva soc isuop ijuka le beomo zedre fevga kogto cara.","version":"df453cf6-f288-57eb-8849-f55827597fa8","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"}]}],"sourcePorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"destinationPorts":[{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}],"users":[{"id":"fd09c815-2ddb-5604-bc51-051489a7eda6","name":"User 11","realmName":"cuucbisken","type":"trafficuser","realmId":2,"version":"julanzovne"},{"id":"272d38c1-b58d-5f2e-8988-abc1cd081efe","name":"User Group 7","realmName":"tivcibjizi","type":"trafficusergroup","realmId":2,"version":"ufajoabcel"},{"id":"82e234e2-f6fe-5d98-bbc0-0d6c7e26482d","name":"User Group 1","realmName":"batziloij","type":"trafficusergroup","realmId":2,"version":"golzegnile"}],"embeddedAppFilter":{"conditions":[{"filter":"huimezuben","tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"},{"filter":"muechicpoh","tags":[{"id":"7269266f-8413-59ef-9085-0de4aa64660b","version":"6eb7235a-74ab-5701-8a37-2522e325519d","appId":2,"name":"ApplicationTag2","description":"Zu wep pag palu mazu irowil rag bore ev ica miljov iwoog besjezew fi regevi ap vo.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"d34fc0ae-3694-55ab-9ffc-19c66d834cb7","version":"4743a5f3-7dcb-5b78-afd0-0058ca39da4f","name":"ApplicationFilter8","description":"Putzo vowev ec namhilteg kedo jejes tudidan aju er ke deetopo peug ahi bagnuse bacivvep vosev to.","applications":[{"id":"d2f1b4a3-4704-59c8-9beb-dffb7ed07518","version":"b0a0aecb-aa27-5c7e-af44-3696768ae771","description":"Ruzik dat pimpe kinri teroh so ruwekat kikan fakajoz juk deb vusma iji madbizzoc carpecre moajiwa vojpi.","deprecated":true,"appId":2,"productivity":1,"risk":2,"name":"Application13","tagIds":["9b266171-0bc7-5f71-aa6c-44b8cbafa329"],"tags":[{"id":"9b266171-0bc7-5f71-aa6c-44b8cbafa329","version":"746ac683-b500-5781-b179-f61db662f8d3","appId":9,"name":"ApplicationTag9","description":"Ja lohivap wim saj zuw hinakug tiduze noemo azonimi ici kovaz ikuza wiihboz bubopmin la uge jeko.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["24cd3c21-8c19-531f-81d5-08aca7b587b9"],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"kaibaagiaze","tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"368e2c4f-cce1-574d-b5ee-ab9d539cf248","version":"3ecf8402-8607-5fdc-a148-f5abddf84f0a","description":"Apeja libsul uweb osjoti ge uzu fal gob woletkew be tu hah ha wuvekohuz gacaw.","deprecated":true,"appId":4,"productivity":1,"risk":0,"name":"Application14","tagIds":["9b16dd72-476a-5ac0-8aeb-fbf6e1f45438"],"tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5f0662ef-3382-5357-bf35-b9b7361aae44"],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["WEBAPP","SERVER"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"88645135-dab6-5408-ad33-728243b663c2","version":"wugurojwo","name":"UrlGroup6","description":"Du vit inawi ravci mogpaf lal fer jefkew ginac nih namhit dop.","objects":[{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"e1088b47-43c6-509a-a722-763318471791","version":"53a76ab0-006b-5dd4-abc4-c0f9a0d58f50","name":"UrlCategory-13","deprecated":false,"urlCategoryId":13,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN20","name":"Balanced Security and Connectivity","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN20"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN20/rules/"}},"description":"Balanced Security and Connectivity Layer","type":"intrusionpolicy","version":"d3d7a26f-ddb0-57fb-a9bf-772424bbdd0a"},"filePolicy":{"id":"de5b742d-70db-535d-bb42-6e6ba949ef53","type":"filepolicy","policyType":"BLOCK_MALWARE_ALL","name":"File_Policy_1","description":"Wiakeno ja barfowole aredu wutra loc fe soc cakdo se la agokim gevsirrog cagome.","version":"e0e81a67-2608-53e2-a015-f53dc3a9de10"},"logFiles":false,"type":"accessrule"},{"id":"71f6804f-8b74-5927-a996-03df9f86a2bf","version":"dcc6e2ef-e010-5241-b6a7-db5b2c8a5b95","ruleId":18,"name":"Access_Rule_18","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"bcbdd44e-84fb-5185-975d-6d2ed2d936dc","version":"4043cae8-664c-57eb-b27c-4918d63af452","host":"127.5.127.238","port":5897,"protocol":"UDP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"043ca75c-25c8-5d2f-9912-f174e3756077","name":"SecurityZone8Name","description":"Fo zihroc befjijwe vafel golwekjow hukohdi bo gitjap titsuabe cav fif mufdec unibit mubu idabehob ruthesusa.","version":"9f2207f2-63f0-5423-aa5c-6b7dc7d41cf3","interfaces":[{"mtu":2652,"enabled":true,"description":"Ta ikoure oznog tu hodul bizzo jimiite men cucif bewtujjof amurulev cuh igu fo siw dupziswul upahig roivipi.","name":"subinterface1name","id":"bdb62102-971e-5472-ab3b-22a7d408dc10","hardwareName":"SubInterface0/1.2","macAddress":"A57C.05DF.7FC0","monitorInterface":false,"standbyMacAddress":"4CE2.828C.AAB1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"86a0:974f:3bf1:cee2:71c8:e295:2c3e:8d76/32","ipAddress":"9cb8:4589:0220:bd63:4d62:42ac:bd26:e1ac/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"7f67:fa11:adca:bd10:8583:757e:7ebb:be87","ipAddress":"4298:ffb2:30f7:84b6:5106:69aa:343c:8362"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"43.30.66.103","standbyIpAddress":"138.99.49.192"}},"version":"e04406e6-ff09-57ac-9b38-fdd8b19cf6fb","managementInterface":true,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"95a6c824-af98-562a-8be6-adc2446c4a09","name":"SecurityZone4Name","description":"Hu nevsuzwiz lezjab hidlurus la pak relte kew umigo zo kopi jetjata.","version":"73028d64-6d1e-5a0a-9f3c-db515f246240","interfaces":[{"mtu":2652,"enabled":false,"description":"Zojin ohdahe kulgune acme eriocopus wubvi hulwic buscub daugeiw ekdegwa jijekub ko gijenog lokrogri tolev tiassi pejliuda.","name":"subinterface6name","id":"bf6765a2-9e9f-506d-a381-329a46273a43","hardwareName":"SubInterface0/6.7","macAddress":"35AF.6E50.0377","monitorInterface":true,"standbyMacAddress":"D947.0A8F.425F","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"7206:d020:f8c8:c150:b059:d35c:3824:c1ae/32","ipAddress":"be49:09fb:26ce:f506:0899:43c5:ce17:4143/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"080b:aa66:ca0d:4375:d7c7:8cbb:8978:46f0","ipAddress":"a226:34cd:63b0:a860:aa22:3304:05a5:a64f"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.51.91.99","standbyIpAddress":"231.94.58.66"}},"version":"68043109-6c4e-5a0f-8df0-d01122d3c319","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"e402b5e4-c4c3-572b-9199-f219787e4e5b","name":"Geolocation9","description":"Mukav asi zipleto udi tiva soc isuop ijuka le beomo zedre fevga kogto cara.","version":"df453cf6-f288-57eb-8849-f55827597fa8","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"}]}],"destinationNetworks":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"e402b5e4-c4c3-572b-9199-f219787e4e5b","name":"Geolocation9","description":"Mukav asi zipleto udi tiva soc isuop ijuka le beomo zedre fevga kogto cara.","version":"df453cf6-f288-57eb-8849-f55827597fa8","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"}]}],"sourcePorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false}],"destinationPorts":[{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"users":[{"id":"a4f6665c-e273-5ca6-84e8-f2535614eff2","name":"User 9","realmName":"egumutreawi","type":"trafficuser","realmId":2,"version":"gozojvubur"},{"id":"cdaaabcc-950f-5c26-82dc-407ab8ef9fc6","name":"User Group 30","realmName":"borluclumaga","type":"trafficusergroup","realmId":2,"version":"heznapijma"},{"id":"70337f8a-e858-57a9-82dd-e224c2e62971","name":"User Group 2","realmName":"nunekjizzi","type":"trafficusergroup","realmId":2,"version":"lewujutij"}],"embeddedAppFilter":{"conditions":[{"filter":"giasnovpe","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"},{"filter":"baketfale","tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"a0d6d0e6-95f9-528f-99cd-ade97f3318ba","version":"e719a0ce-c1e2-56c8-a9be-2f90e8351624","name":"ApplicationFilter15","description":"Lirec zejjezop folidetat dinwe zetavi izdoak hi tion eg iwdorha ik ah abpi.","applications":[{"id":"a035fce1-4959-5362-8472-253aa159b1ec","version":"616efbb8-6148-59e3-afd4-68d4d42164c1","description":"Fo cigejki leg umjunu ja da lefuh ib zatlose ganutag dilebi cejizgow.","deprecated":false,"appId":6,"productivity":0,"risk":1,"name":"Application15","tagIds":["f7e90abe-ce71-56da-9f43-dd8685ec1a3a","a558b06a-1e83-5caa-a903-3b6e291ddc2e"],"tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"a558b06a-1e83-5caa-a903-3b6e291ddc2e","version":"96c0750c-0f50-5872-869a-8b50dad24edc","appId":8,"name":"SSL protocol","description":"Ifgafu ma vopuatu ho jim zud hiodiben ango ji nusiwufu hig gatejsem povci.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["fff4b47c-a653-5729-a31a-e6353d420768","7f62abc6-7f08-5a69-acb6-65def01251d4"],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","SERVER"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"jignorebes","tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"d2f1b4a3-4704-59c8-9beb-dffb7ed07518","version":"b0a0aecb-aa27-5c7e-af44-3696768ae771","description":"Ruzik dat pimpe kinri teroh so ruwekat kikan fakajoz juk deb vusma iji madbizzoc carpecre moajiwa vojpi.","deprecated":true,"appId":2,"productivity":1,"risk":2,"name":"Application13","tagIds":["9b266171-0bc7-5f71-aa6c-44b8cbafa329"],"tags":[{"id":"9b266171-0bc7-5f71-aa6c-44b8cbafa329","version":"746ac683-b500-5781-b179-f61db662f8d3","appId":9,"name":"ApplicationTag9","description":"Ja lohivap wim saj zuw hinakug tiduze noemo azonimi ici kovaz ikuza wiihboz bubopmin la uge jeko.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["24cd3c21-8c19-531f-81d5-08aca7b587b9"],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"c8bde3f4-9a21-5a44-80db-baae419148f8","version":"bosavmojgeb","name":"UrlGroup9","description":"Zikaw kozicet agwihul jav eja acniiko hobi mogod ukkem ku irpec zen cijguh dabwuovu je sub.","objects":[{"id":"26cf0d0b-7575-594a-9c3b-9e17d5e24fbf","version":"sipugcocti","name":"Url6","description":"Etna gum cacu tin meehe hu cahfik kus supdeba irlohje hig rizhepzov vi togaofo los dujna her sipu.","url":"http://bejakuru.co.uk/ebkampaw","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"e486bdfa-148b-5bc2-8d36-a9ff520e6100","name":"Benign sites with security risks","index":3,"startPercentage":41,"endPercentage":60,"version":"b9f77c01-ede9-55d2-b674-61ac711565ec","type":"urlreputation"},"urlCategory":{"id":"fef571b3-8633-5be7-9cef-47c0dc5a43a7","version":"2b4b99aa-307f-5ed5-b7f3-5c9e0fa8846e","name":"UrlCategory-4","deprecated":false,"urlCategoryId":4,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN30","name":"Security Over Connectivity","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30/rules/"}},"description":"Security Over Connectivity Layer","type":"intrusionpolicy","version":"fc826c33-84fb-5b14-96e5-0cdd4717c442"},"filePolicy":{"id":"e5f42e5a-0e3d-5492-ad97-1db09ef14605","type":"filepolicy","policyType":"BLOCK_OFFICE_DOCUMENTS_UPLOAD_BLOCK_MALWARE_OTHERS","name":"File_Policy_4","description":"Ju ihgufnaj ve gargeoz unatub asiuj ra dag pino jecob ane luno mubud emapod.","version":"55282093-0a9c-5a43-89ed-3d9b9c708952"},"logFiles":false,"type":"accessrule"},{"id":"0cb902a0-a89c-5606-bac5-00177a819def","version":"21398c51-3946-5a6c-8d6c-cd89d526a693","ruleId":19,"name":"Access_Rule_19","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"57bc6178-2f01-52b2-8d55-29366cb35285","version":"beeb6d44-207b-5a07-b708-0b4fba7c56c5","host":"171.25.188.89","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"d2cf6df0-e095-59f1-9afe-4e1f95b290e7","name":"SecurityZone6Name","description":"Kivmeat sepfeheh jekacaloh awe wap vajan utiweb daczo ji ji pew wioha bawmivim ri kaj gibvevsa.","version":"5751e8ac-10c9-5b44-a9fa-1ed8e07d2d40","interfaces":[{"mtu":5818,"enabled":false,"description":"Jigiz malko navsup bojga widbihi vatel vahuwuta ugi bopuru duzwar zopi juinoito sibkonac fozgojmi toopu nurhiru ce joeho.","name":"inside","id":"bddde0e1-1b1f-5f42-b9b7-7c72d9099ef4","hardwareName":"GigabitEthernet1/1","macAddress":"ECFB.7E12.09E1","monitorInterface":true,"standbyMacAddress":"A09D.B513.9683","version":"69f9f38e-0479-58d1-961c-e4040d439200","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},{"mtu":2652,"enabled":true,"description":"Pipakaz ramkudu ulido ce boh ugmepku izareszeh katakuz vosinde takwa piprazipo fostoftug egjolut.","name":"subinterface3name","id":"4258612a-c6ac-5407-8edc-04b207b2b473","hardwareName":"SubInterface0/3.4","macAddress":"4A8E.2AFE.5DE9","monitorInterface":true,"standbyMacAddress":"F917.A989.864E","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"5b49:5a29:3cd4:5c83:7b30:0115:7927:eaf3/32","ipAddress":"a3eb:3b72:2cfa:9901:b7c7:1581:fa72:4b49/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"42e6:34b8:f5eb:802f:626b:503c:781e:aacd","ipAddress":"dcc0:3abc:3933:8a47:25c6:d9a7:2e80:06dc"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"137.234.118.13","standbyIpAddress":"67.162.53.251"}},"version":"2a53f3c3-fc6d-557c-bdbb-e97bc156553c","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"340bf250-a4a5-5049-bddf-a6201a9b8e86","name":"SecurityZone7Name","description":"So gitejipo sotvotdab watu la ica fojum dorog odohog mil etuw ta daghavke dig.","version":"273d67ab-abb9-5af1-8574-3e9af6e98aed","interfaces":[{"mtu":2652,"enabled":false,"description":"Wa cep gi lankowtu ce uvujed tad wo vezke vib vezvufgev hun vob velumde.","name":"subinterface11name","id":"ffc74b4d-ad27-5459-9907-186a8c739189","hardwareName":"SubInterface0/11.12","macAddress":"1534.AB09.4146","monitorInterface":true,"standbyMacAddress":"CF72.BDFB.98A1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"fafb:559d:106d:67ac:52dd:e182:d306:4792/32","ipAddress":"a7bd:69ea:f24f:04ea:40c5:3f80:0416:0f09/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d544:6d26:411c:e460:9911:cb8b:ca9e:3a15","ipAddress":"f96f:858d:9ed1:fc9f:7b47:0fb4:246d:6cb6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"17.76.225.83","standbyIpAddress":"195.253.157.229"}},"version":"e22e21d2-9d64-51a4-adc2-a775a4572916","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"00826312-17b2-5b1e-968a-aabe114f0734","name":"Network6","description":"Je anah sankorir zaduv noscipan ron pi dubsanuf motnod ugufu zacew idu wafsembuc lo roge almoh lah.","version":"59e9909f-27d5-5e47-8d77-210909065352","type":"networkobject","subType":"NETWORK","value":"234.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"destinationNetworks":[{"id":"00826312-17b2-5b1e-968a-aabe114f0734","name":"Network6","description":"Je anah sankorir zaduv noscipan ron pi dubsanuf motnod ugufu zacew idu wafsembuc lo roge almoh lah.","version":"59e9909f-27d5-5e47-8d77-210909065352","type":"networkobject","subType":"NETWORK","value":"234.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"sourcePorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"destinationPorts":[{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"users":[{"id":"35a62df5-7fcc-5388-b945-2d9e91aad74d","name":"User Group 10","realmName":"liravopza","type":"trafficusergroup","realmId":2,"version":"cahiruohalik"},{"id":"6fc80f39-f5ca-52da-baac-a4008a22fdbd","name":"User 29","realmName":"hoomewudavu","type":"trafficuser","realmId":2,"version":"maakuojusal"},{"id":"dd95afe8-437e-51ab-985a-c48929c0e3ba","name":"User 14","realmName":"ugaopezuepi","type":"trafficuser","realmId":2,"version":"esdafroce"}],"embeddedAppFilter":{"conditions":[{"filter":"rapfosapi","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"415702f2-3bd8-5dba-adea-dd03452067a5","version":"1062501a-214c-51d1-9af3-d9c2ca87588f","appId":4,"name":"ApplicationCategory11","description":"Dubofmih taj cukij fes vizoc urzip lazigeha pot bak jackoaz ufi ebomujme ce.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"},{"filter":"giasnovpe","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"75251c34-4dfe-5cb2-a779-5c4cba9eb2ae","version":"66eab5b5-cd48-52d7-9797-8e846f22fbeb","name":"ApplicationFilter6","description":"Ve hijusla tazwomur cekzinso uho nahulni sifadu taf leare vezrovi su noruv bippupo dimuz gu ceuwa caki bi.","applications":[{"id":"44b7bb09-58d5-59ef-abd3-7341fa4d1c7b","version":"fe155cb3-e78d-5a5b-8713-5c056c0ea86f","description":"Dazgo jefeci dulhel lowez cotgo mu ewuufih indeh bo urjur vursosoc cetco eb.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application3","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","0928e8e9-25a4-53d0-b118-342a26b44100"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":false},"type":"application"},{"id":"c51fa076-7516-5b1a-b689-87d5d4dd6656","version":"71b129f0-e504-5ee0-85b0-3d683c7fbc85","description":"Fishak luksa juw magaldi igo kaipojo vifpok jarado fefadkiw keogo mow kojepoha bonewke hobomag vo gi om tam.","deprecated":false,"appId":4,"productivity":1,"risk":3,"name":"Application4","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009","63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","33552c21-0930-5bb5-8459-9b7608cda68e"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"368e2c4f-cce1-574d-b5ee-ab9d539cf248","version":"3ecf8402-8607-5fdc-a148-f5abddf84f0a","description":"Apeja libsul uweb osjoti ge uzu fal gob woletkew be tu hah ha wuvekohuz gacaw.","deprecated":true,"appId":4,"productivity":1,"risk":0,"name":"Application14","tagIds":["9b16dd72-476a-5ac0-8aeb-fbf6e1f45438"],"tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5f0662ef-3382-5357-bf35-b9b7361aae44"],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["WEBAPP","SERVER"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"23f0e43b-0957-554b-b0a4-555d8a444cfa","name":"High risk","index":5,"startPercentage":1,"endPercentage":20,"version":"67559ce6-d60d-5a76-9eef-b4d30401c5c8","type":"urlreputation"},"urlCategory":{"id":"798bf64f-6bf2-5cf4-a895-74670e51cfb2","version":"08eadcce-2a79-5212-9907-e3e7b7e8ae0e","name":"UrlCategory-6","deprecated":false,"urlCategoryId":6,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f6-fe55-11e4-8e99-ipsN10","name":"Connectivity Over Security","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10/rules/"}},"description":"Connectivity Over Security Layer","type":"intrusionpolicy","version":"f17dd031-7eba-5f6f-8734-300a871471fe"},"filePolicy":{"id":"e5f42e5a-0e3d-5492-ad97-1db09ef14605","type":"filepolicy","policyType":"BLOCK_OFFICE_DOCUMENTS_UPLOAD_BLOCK_MALWARE_OTHERS","name":"File_Policy_4","description":"Ju ihgufnaj ve gargeoz unatub asiuj ra dag pino jecob ane luno mubud emapod.","version":"55282093-0a9c-5a43-89ed-3d9b9c708952"},"logFiles":false,"type":"accessrule"},{"id":"90c3f2d9-7444-59db-9db8-313a404934e2","version":"3cf75724-ee2e-5683-8921-c4d493135c35","ruleId":20,"name":"Access_Rule_20","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"f2c4e7eb-7291-5517-9517-856dc94ff74d","version":"a0453a75-4ee6-5add-9577-adc5172a2d03","host":"57.182.210.210","port":5897,"protocol":"TCP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"e960df5e-1ab8-5a15-85e5-a7a47f0ebcb0","name":"SecurityZone5Name","description":"Kinen aziheeci teniow ucezaw idikaki rupbu tieb rawihzec ufkedok iwewun le zihpisze vuzip roetjim fokbuwu jemrumvu cigzet.","version":"0925128c-48f1-552e-8507-379551253d9c","interfaces":[{"mtu":2652,"enabled":true,"description":"Hi vihjuup vueji zufmab wib zel woz ligok wu hi iremouto wahoato.","name":"subinterface5name","id":"9f816351-560c-5e5b-ba0a-2051828301e6","hardwareName":"SubInterface0/5.6","macAddress":"84F0.8C6A.D6DF","monitorInterface":true,"standbyMacAddress":"0971.695D.7024","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e20a:2b14:aecc:7997:984d:9fcd:b3c4:2e66/32","ipAddress":"5753:596d:3c86:ab69:1e26:fa83:c032:8e71/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"44d8:5ccd:bbcd:60df:d35b:afb7:6211:375b","ipAddress":"7b7c:0b52:9938:5274:ef02:b8c5:577c:5028"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"119.148.92.111","standbyIpAddress":"106.21.74.31"}},"version":"7a7c4c69-3da2-5e43-a1f3-2f8026bfb0bd","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"83e3721c-b23f-5eb1-b660-40655c216680","name":"SecurityZone9Name","description":"Iha kiuh ja iweacce tuh hajmipjuj fikufuv bofijwi esede tu gahak wenab belif lupilsif udo puzabke ferfa ofwon.","version":"17150a55-f982-526f-aa60-9e435d2c5455","interfaces":[{"mtu":5818,"enabled":true,"description":"Wabjenuv vuhtevguf zucce omiogu anitug cuho gaejma vesumob oduuro levhid uniozwej olkavcuv dawiim mehub wuka suj.","id":"3faf4981-2b04-5091-9c1f-fa0ab78379b4","hardwareName":"GigabitEthernet1/5","macAddress":"7472.5071.519E","monitorInterface":false,"standbyMacAddress":"5387.1EFE.E0E6","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"84c0:cd09:bceb:ce0c:5cfa:f535:d426:01db/32","ipAddress":"067a:e7f9:1bf0:6af4:b89b:4c11:ec0c:51b4/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"02eb:e82a:bb44:e0a0:d969:6055:6744:cfa2","ipAddress":"aa33:0271:1f23:9725:0d24:7767:0fd2:0cf8"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"6.124.202.116","standbyIpAddress":"40.108.171.23"}},"version":"472d2c22-e548-5cb1-983f-f81ee3e14422","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"302b9321-60fd-55ac-8111-7b228ba8a7bc","name":"Geolocation1","description":"Eretalta mov naw dibravwe vimu bek ose wipa ecgule kesep pewaco we taruhra awsen kef poin tu fazu.","version":"b9a8a2e0-c5ff-5705-8d0f-b488b9275e46","type":"geolocation","locations":[{"id":"56ea454f-c3b7-5928-88b1-fc3c7937519a","name":"Africa","deprecated":true,"code":1001,"type":"continent","countries":[{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"},{"id":"7cd6bf9c-8b69-57c2-abf6-6eeb0741de15","name":"Zambia","deprecated":true,"iso3":"ZMB","iso2":"ZM","code":"894","type":"country"},{"id":"f2d94483-8127-5b5c-9f56-26897f391615","name":"South Africa","deprecated":false,"iso3":"ZAF","iso2":"ZA","code":"710","type":"country"},{"id":"67312148-f472-5f74-af7e-da0dfe6c5483","name":"Mayotte","deprecated":true,"iso3":"MYT","iso2":"YT","code":"175","type":"country"},{"id":"16d66ae1-8a56-5b81-8a83-6f7123be2e2c","name":"Uganda","deprecated":false,"iso3":"UGA","iso2":"UG","code":"800","type":"country"},{"id":"b1825e78-1df2-5592-a76e-7442de702238","name":"Tanzania","deprecated":false,"iso3":"TZA","iso2":"TZ","code":"834","type":"country"},{"id":"34105ec6-4fd5-5617-8a55-a033b433501b","name":"Tunisia","deprecated":false,"iso3":"TUN","iso2":"TN","code":"788","type":"country"},{"id":"00827e94-7231-522b-a92c-c43381c394b0","name":"Togo","deprecated":true,"iso3":"TGO","iso2":"TG","code":"768","type":"country"},{"id":"5b1f4a78-73fb-5d81-b087-a43e6a56210e","name":"Chad","deprecated":true,"iso3":"TCD","iso2":"TD","code":"148","type":"country"},{"id":"4390d558-ea24-5aab-92ed-7ea167512925","name":"Swaziland","deprecated":false,"iso3":"SWZ","iso2":"SZ","code":"748","type":"country"},{"id":"22e9a10d-c048-5bce-92b3-d35ba32a2380","name":"São Tomé and Príncipe","deprecated":false,"iso3":"STP","iso2":"ST","code":"678","type":"country"},{"id":"175e350b-3e7b-5988-92a5-b8592f89a5d0","name":"South Sudan","deprecated":true,"iso3":"SSD","iso2":"SS","code":"728","type":"country"},{"id":"408c17e6-3750-56ba-b74d-14cece756b69","name":"Somalia","deprecated":false,"iso3":"SOM","iso2":"SO","code":"706","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"},{"id":"81415c05-a391-5182-8902-0f48ee21358a","name":"Sierra Leone","deprecated":true,"iso3":"SLE","iso2":"SL","code":"694","type":"country"},{"id":"50c46fa0-0451-5e15-9bbc-846a527de114","name":"Saint Helena","deprecated":true,"iso3":"SHN","iso2":"SH","code":"654","type":"country"},{"id":"c2a050bc-b370-5bcd-945c-cd0d88d814ee","name":"Sudan","deprecated":false,"iso3":"SDN","iso2":"SD","code":"729","type":"country"},{"id":"2792902e-5e01-5294-bd39-4a9b86443f69","name":"Seychelles","deprecated":false,"iso3":"SYC","iso2":"SC","code":"690","type":"country"},{"id":"e6e6e19f-26b3-53cc-ae5c-ad6af73ffa23","name":"Rwanda","deprecated":false,"iso3":"RWA","iso2":"RW","code":"646","type":"country"},{"id":"1657adab-03a4-556a-b779-d62bf356497f","name":"Réunion","deprecated":true,"iso3":"REU","iso2":"RE","code":"638","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"271aded5-deef-50b9-9e02-ec55543da25b","name":"Niger","deprecated":true,"iso3":"NER","iso2":"NE","code":"562","type":"country"},{"id":"a8f12931-d0a3-5ead-b8f7-26c9d8e29684","name":"Namibia","deprecated":false,"iso3":"NAM","iso2":"NA","code":"516","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"26316b70-a4e5-5ee7-9176-d8f88977ac81","name":"Malawi","deprecated":false,"iso3":"MWI","iso2":"MW","code":"454","type":"country"},{"id":"8ac5e628-88fe-5a8f-a8e8-5e9823bed8c9","name":"Mauritius","deprecated":true,"iso3":"MUS","iso2":"MU","code":"480","type":"country"},{"id":"6286246a-cb95-57c8-bf4d-85524e069dc9","name":"Mauritania","deprecated":false,"iso3":"MRT","iso2":"MR","code":"478","type":"country"},{"id":"9eaf4ef5-fcd1-55b8-b344-7b60f9acbb2a","name":"Mali","deprecated":true,"iso3":"MLI","iso2":"ML","code":"466","type":"country"},{"id":"3158c9ea-2e08-5057-923c-a252e9bbceb5","name":"Madagascar","deprecated":true,"iso3":"MDG","iso2":"MG","code":"450","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"},{"id":"b82c039e-20c2-50f0-9176-307e154d19cd","name":"Lesotho","deprecated":true,"iso3":"LSO","iso2":"LS","code":"426","type":"country"},{"id":"936e5855-cede-5036-b530-4a8dc3ded9f1","name":"Liberia","deprecated":true,"iso3":"LBR","iso2":"LR","code":"430","type":"country"},{"id":"781554f5-83af-5829-a0b1-f679ccadcbc8","name":"Comoros","deprecated":true,"iso3":"COM","iso2":"KM","code":"174","type":"country"},{"id":"ef9608a5-3398-5610-9770-361e8f4d5018","name":"Kenya","deprecated":false,"iso3":"KEN","iso2":"KE","code":"404","type":"country"},{"id":"7ff14832-3c58-5e8d-b6fa-7d211d0eddea","name":"Guinea-Bissau","deprecated":true,"iso3":"GNB","iso2":"GW","code":"624","type":"country"},{"id":"24ef0507-02b5-58d8-a403-8087853d0d0e","name":"Equatorial Guinea","deprecated":false,"iso3":"GNQ","iso2":"GQ","code":"226","type":"country"},{"id":"8b2e1fe0-df59-514f-8cad-46e618371f10","name":"Guinea","deprecated":false,"iso3":"GIN","iso2":"GN","code":"324","type":"country"},{"id":"2311d16e-f8c8-5db8-9446-ddc015dee026","name":"Gambia","deprecated":true,"iso3":"GMB","iso2":"GM","code":"270","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"},{"id":"1a6265f3-08ce-57c4-9d8d-8807bc7c3f96","name":"Gabon","deprecated":true,"iso3":"GAB","iso2":"GA","code":"266","type":"country"},{"id":"7466e390-4ac7-5c6e-8ae7-cffbf4d26761","name":"Ethiopia","deprecated":false,"iso3":"ETH","iso2":"ET","code":"231","type":"country"},{"id":"1b6630d5-2650-5baf-b9a5-fa59fbbd36be","name":"Eritrea","deprecated":false,"iso3":"ERI","iso2":"ER","code":"232","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"bd6f190e-df1a-568c-94cc-8fbb7394522f","name":"Algeria","deprecated":false,"iso3":"DZA","iso2":"DZ","code":"012","type":"country"},{"id":"9c992f6e-72f5-5d6b-8fb9-b23909129b08","name":"Djibouti","deprecated":true,"iso3":"DJI","iso2":"DJ","code":"262","type":"country"},{"id":"63696b95-bded-58f4-8b4e-402397cfcd8a","name":"Cape Verde","deprecated":true,"iso3":"CPV","iso2":"CV","code":"132","type":"country"},{"id":"6d854d95-e91f-53cb-a1f2-1e07d51eb137","name":"Cameroon","deprecated":false,"iso3":"CMR","iso2":"CM","code":"120","type":"country"},{"id":"e8286886-6019-50d6-b0b4-315f7b9f2cef","name":"Ivory Coast","deprecated":false,"iso3":"CIV","iso2":"CI","code":"384","type":"country"},{"id":"97916595-e2d1-5214-87e2-e242bf4ad893","name":"Republic of the Congo","deprecated":false,"iso3":"COG","iso2":"CG","code":"178","type":"country"},{"id":"b1b8664b-d80d-5480-9b9a-a1ac997bd533","name":"Central African Republic","deprecated":false,"iso3":"CAF","iso2":"CF","code":"140","type":"country"},{"id":"8789e5fc-90ef-5dc5-942f-1f0f6bef20e2","name":"Democratic Republic of the Congo","deprecated":false,"iso3":"COD","iso2":"CD","code":"180","type":"country"},{"id":"e8bab11d-42db-5ff0-a68d-81d7fdae7000","name":"Botswana","deprecated":false,"iso3":"BWA","iso2":"BW","code":"072","type":"country"},{"id":"74442316-edea-5c33-9f4e-de1677f848a1","name":"Benin","deprecated":true,"iso3":"BEN","iso2":"BJ","code":"204","type":"country"},{"id":"a666ef14-444e-5605-add7-3a1a1bf028d6","name":"Burundi","deprecated":true,"iso3":"BDI","iso2":"BI","code":"108","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"}],"countryCodes":["716","894","710","175","800","834","788","768","148","748","678","728","706","686","694","654","729","690","646","638","566","562","516","508","454","480","478","466","450","504","434","426","430","174","404","624","226","324","270","288","266","231","232","732","818","012","262","132","120","384","178","140","180","072","204","108","854","024"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"}]}],"destinationNetworks":[{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"302b9321-60fd-55ac-8111-7b228ba8a7bc","name":"Geolocation1","description":"Eretalta mov naw dibravwe vimu bek ose wipa ecgule kesep pewaco we taruhra awsen kef poin tu fazu.","version":"b9a8a2e0-c5ff-5705-8d0f-b488b9275e46","type":"geolocation","locations":[{"id":"56ea454f-c3b7-5928-88b1-fc3c7937519a","name":"Africa","deprecated":true,"code":1001,"type":"continent","countries":[{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"},{"id":"7cd6bf9c-8b69-57c2-abf6-6eeb0741de15","name":"Zambia","deprecated":true,"iso3":"ZMB","iso2":"ZM","code":"894","type":"country"},{"id":"f2d94483-8127-5b5c-9f56-26897f391615","name":"South Africa","deprecated":false,"iso3":"ZAF","iso2":"ZA","code":"710","type":"country"},{"id":"67312148-f472-5f74-af7e-da0dfe6c5483","name":"Mayotte","deprecated":true,"iso3":"MYT","iso2":"YT","code":"175","type":"country"},{"id":"16d66ae1-8a56-5b81-8a83-6f7123be2e2c","name":"Uganda","deprecated":false,"iso3":"UGA","iso2":"UG","code":"800","type":"country"},{"id":"b1825e78-1df2-5592-a76e-7442de702238","name":"Tanzania","deprecated":false,"iso3":"TZA","iso2":"TZ","code":"834","type":"country"},{"id":"34105ec6-4fd5-5617-8a55-a033b433501b","name":"Tunisia","deprecated":false,"iso3":"TUN","iso2":"TN","code":"788","type":"country"},{"id":"00827e94-7231-522b-a92c-c43381c394b0","name":"Togo","deprecated":true,"iso3":"TGO","iso2":"TG","code":"768","type":"country"},{"id":"5b1f4a78-73fb-5d81-b087-a43e6a56210e","name":"Chad","deprecated":true,"iso3":"TCD","iso2":"TD","code":"148","type":"country"},{"id":"4390d558-ea24-5aab-92ed-7ea167512925","name":"Swaziland","deprecated":false,"iso3":"SWZ","iso2":"SZ","code":"748","type":"country"},{"id":"22e9a10d-c048-5bce-92b3-d35ba32a2380","name":"São Tomé and Príncipe","deprecated":false,"iso3":"STP","iso2":"ST","code":"678","type":"country"},{"id":"175e350b-3e7b-5988-92a5-b8592f89a5d0","name":"South Sudan","deprecated":true,"iso3":"SSD","iso2":"SS","code":"728","type":"country"},{"id":"408c17e6-3750-56ba-b74d-14cece756b69","name":"Somalia","deprecated":false,"iso3":"SOM","iso2":"SO","code":"706","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"},{"id":"81415c05-a391-5182-8902-0f48ee21358a","name":"Sierra Leone","deprecated":true,"iso3":"SLE","iso2":"SL","code":"694","type":"country"},{"id":"50c46fa0-0451-5e15-9bbc-846a527de114","name":"Saint Helena","deprecated":true,"iso3":"SHN","iso2":"SH","code":"654","type":"country"},{"id":"c2a050bc-b370-5bcd-945c-cd0d88d814ee","name":"Sudan","deprecated":false,"iso3":"SDN","iso2":"SD","code":"729","type":"country"},{"id":"2792902e-5e01-5294-bd39-4a9b86443f69","name":"Seychelles","deprecated":false,"iso3":"SYC","iso2":"SC","code":"690","type":"country"},{"id":"e6e6e19f-26b3-53cc-ae5c-ad6af73ffa23","name":"Rwanda","deprecated":false,"iso3":"RWA","iso2":"RW","code":"646","type":"country"},{"id":"1657adab-03a4-556a-b779-d62bf356497f","name":"Réunion","deprecated":true,"iso3":"REU","iso2":"RE","code":"638","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"271aded5-deef-50b9-9e02-ec55543da25b","name":"Niger","deprecated":true,"iso3":"NER","iso2":"NE","code":"562","type":"country"},{"id":"a8f12931-d0a3-5ead-b8f7-26c9d8e29684","name":"Namibia","deprecated":false,"iso3":"NAM","iso2":"NA","code":"516","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"26316b70-a4e5-5ee7-9176-d8f88977ac81","name":"Malawi","deprecated":false,"iso3":"MWI","iso2":"MW","code":"454","type":"country"},{"id":"8ac5e628-88fe-5a8f-a8e8-5e9823bed8c9","name":"Mauritius","deprecated":true,"iso3":"MUS","iso2":"MU","code":"480","type":"country"},{"id":"6286246a-cb95-57c8-bf4d-85524e069dc9","name":"Mauritania","deprecated":false,"iso3":"MRT","iso2":"MR","code":"478","type":"country"},{"id":"9eaf4ef5-fcd1-55b8-b344-7b60f9acbb2a","name":"Mali","deprecated":true,"iso3":"MLI","iso2":"ML","code":"466","type":"country"},{"id":"3158c9ea-2e08-5057-923c-a252e9bbceb5","name":"Madagascar","deprecated":true,"iso3":"MDG","iso2":"MG","code":"450","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"},{"id":"b82c039e-20c2-50f0-9176-307e154d19cd","name":"Lesotho","deprecated":true,"iso3":"LSO","iso2":"LS","code":"426","type":"country"},{"id":"936e5855-cede-5036-b530-4a8dc3ded9f1","name":"Liberia","deprecated":true,"iso3":"LBR","iso2":"LR","code":"430","type":"country"},{"id":"781554f5-83af-5829-a0b1-f679ccadcbc8","name":"Comoros","deprecated":true,"iso3":"COM","iso2":"KM","code":"174","type":"country"},{"id":"ef9608a5-3398-5610-9770-361e8f4d5018","name":"Kenya","deprecated":false,"iso3":"KEN","iso2":"KE","code":"404","type":"country"},{"id":"7ff14832-3c58-5e8d-b6fa-7d211d0eddea","name":"Guinea-Bissau","deprecated":true,"iso3":"GNB","iso2":"GW","code":"624","type":"country"},{"id":"24ef0507-02b5-58d8-a403-8087853d0d0e","name":"Equatorial Guinea","deprecated":false,"iso3":"GNQ","iso2":"GQ","code":"226","type":"country"},{"id":"8b2e1fe0-df59-514f-8cad-46e618371f10","name":"Guinea","deprecated":false,"iso3":"GIN","iso2":"GN","code":"324","type":"country"},{"id":"2311d16e-f8c8-5db8-9446-ddc015dee026","name":"Gambia","deprecated":true,"iso3":"GMB","iso2":"GM","code":"270","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"},{"id":"1a6265f3-08ce-57c4-9d8d-8807bc7c3f96","name":"Gabon","deprecated":true,"iso3":"GAB","iso2":"GA","code":"266","type":"country"},{"id":"7466e390-4ac7-5c6e-8ae7-cffbf4d26761","name":"Ethiopia","deprecated":false,"iso3":"ETH","iso2":"ET","code":"231","type":"country"},{"id":"1b6630d5-2650-5baf-b9a5-fa59fbbd36be","name":"Eritrea","deprecated":false,"iso3":"ERI","iso2":"ER","code":"232","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"bd6f190e-df1a-568c-94cc-8fbb7394522f","name":"Algeria","deprecated":false,"iso3":"DZA","iso2":"DZ","code":"012","type":"country"},{"id":"9c992f6e-72f5-5d6b-8fb9-b23909129b08","name":"Djibouti","deprecated":true,"iso3":"DJI","iso2":"DJ","code":"262","type":"country"},{"id":"63696b95-bded-58f4-8b4e-402397cfcd8a","name":"Cape Verde","deprecated":true,"iso3":"CPV","iso2":"CV","code":"132","type":"country"},{"id":"6d854d95-e91f-53cb-a1f2-1e07d51eb137","name":"Cameroon","deprecated":false,"iso3":"CMR","iso2":"CM","code":"120","type":"country"},{"id":"e8286886-6019-50d6-b0b4-315f7b9f2cef","name":"Ivory Coast","deprecated":false,"iso3":"CIV","iso2":"CI","code":"384","type":"country"},{"id":"97916595-e2d1-5214-87e2-e242bf4ad893","name":"Republic of the Congo","deprecated":false,"iso3":"COG","iso2":"CG","code":"178","type":"country"},{"id":"b1b8664b-d80d-5480-9b9a-a1ac997bd533","name":"Central African Republic","deprecated":false,"iso3":"CAF","iso2":"CF","code":"140","type":"country"},{"id":"8789e5fc-90ef-5dc5-942f-1f0f6bef20e2","name":"Democratic Republic of the Congo","deprecated":false,"iso3":"COD","iso2":"CD","code":"180","type":"country"},{"id":"e8bab11d-42db-5ff0-a68d-81d7fdae7000","name":"Botswana","deprecated":false,"iso3":"BWA","iso2":"BW","code":"072","type":"country"},{"id":"74442316-edea-5c33-9f4e-de1677f848a1","name":"Benin","deprecated":true,"iso3":"BEN","iso2":"BJ","code":"204","type":"country"},{"id":"a666ef14-444e-5605-add7-3a1a1bf028d6","name":"Burundi","deprecated":true,"iso3":"BDI","iso2":"BI","code":"108","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"}],"countryCodes":["716","894","710","175","800","834","788","768","148","748","678","728","706","686","694","654","729","690","646","638","566","562","516","508","454","480","478","466","450","504","434","426","430","174","404","624","226","324","270","288","266","231","232","732","818","012","262","132","120","384","178","140","180","072","204","108","854","024"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"}]}],"sourcePorts":[{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"destinationPorts":[{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false},{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false}],"users":[{"id":"96103545-4b36-5860-939d-3f46c3bee3c9","name":"User 10","realmName":"jumulcopteb","type":"trafficuser","realmId":2,"version":"jidaferco"},{"id":"fc7b882d-b7f5-53d4-a898-05e7c7e99da2","name":"User Group 3","realmName":"sumajiwne","type":"trafficusergroup","realmId":2,"version":"tucidwefga"},{"id":"ce75440f-a481-5a0b-b630-ff9c24a2a3ea","name":"User 15","realmName":"difubuve","type":"trafficuser","realmId":2,"version":"beikbihfij"}],"embeddedAppFilter":{"conditions":[{"filter":"uckupehot","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"},{"filter":"keludmubluf","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"461cac69-03ff-5113-a215-4cdfaf8bd3f1","version":"c5c46d5e-163b-53e4-a12e-4ec6708cb4a7","name":"ApplicationFilter13","description":"Hi hug zad nolrepmum bil nuwbacora fa guhu ale ogve foksaruw cipzis zomdozun de is da uzifoma.","applications":[{"id":"368e2c4f-cce1-574d-b5ee-ab9d539cf248","version":"3ecf8402-8607-5fdc-a148-f5abddf84f0a","description":"Apeja libsul uweb osjoti ge uzu fal gob woletkew be tu hah ha wuvekohuz gacaw.","deprecated":true,"appId":4,"productivity":1,"risk":0,"name":"Application14","tagIds":["9b16dd72-476a-5ac0-8aeb-fbf6e1f45438"],"tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5f0662ef-3382-5357-bf35-b9b7361aae44"],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["WEBAPP","SERVER"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"giasnovpe","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"17b348f3-870c-5aa4-bcae-3bfe0f0d061d","version":"7b26e782-fe4b-5259-aa5f-744f5c3f1b22","description":"Tem ac li gagnefro folema no mo tafdis cew vudo wafop ru milis ubuedurur sufbot.","deprecated":true,"appId":2,"productivity":0,"risk":2,"name":"Application8","tagIds":["e9812b72-2a36-5146-bce0-b09f876df88d"],"tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","SERVER"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"4644bbc1-d476-565e-83ae-5a744000483c","version":"jaebrizdos","name":"UrlGroup8","description":"Mudacoc fapeus bimafi vectibep vib at bomecras moano ut wo vimkoc il lekeje os ekugiubi newtu.","objects":[{"id":"26cf0d0b-7575-594a-9c3b-9e17d5e24fbf","version":"sipugcocti","name":"Url6","description":"Etna gum cacu tin meehe hu cahfik kus supdeba irlohje hig rizhepzov vi togaofo los dujna her sipu.","url":"http://bejakuru.co.uk/ebkampaw","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"e1088b47-43c6-509a-a722-763318471791","version":"53a76ab0-006b-5dd4-abc4-c0f9a0d58f50","name":"UrlCategory-13","deprecated":false,"urlCategoryId":13,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"filePolicy":{"id":"9c84889f-8c5c-5643-a489-d01bb07639a5","type":"filepolicy","policyType":"BLOCK_OFFICE_DOCUMENTS_PDF_UPLOAD_BLOCK_MALWARE_OTHERS","name":"File_Policy_3","description":"Mi rul etusisti iphogu acrevdid cas bijcaz nul ceaf napi kegpo su dozpov zikpul lohi gurukdi ke.","version":"d5e7c6d4-1f13-5cd2-9442-bdccd7e4b804"},"logFiles":false,"type":"accessrule"},{"id":"c809d27a-4c7b-5b4b-915a-5495177aa3ee","version":"87bc5fb3-fb77-5c7f-a4cd-740a52e3f670","ruleId":21,"name":"Access_Rule_21","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_NONE","sourceZones":[{"id":"043ca75c-25c8-5d2f-9912-f174e3756077","name":"SecurityZone8Name","description":"Fo zihroc befjijwe vafel golwekjow hukohdi bo gitjap titsuabe cav fif mufdec unibit mubu idabehob ruthesusa.","version":"9f2207f2-63f0-5423-aa5c-6b7dc7d41cf3","interfaces":[{"mtu":2652,"enabled":true,"description":"Ta ikoure oznog tu hodul bizzo jimiite men cucif bewtujjof amurulev cuh igu fo siw dupziswul upahig roivipi.","name":"subinterface1name","id":"bdb62102-971e-5472-ab3b-22a7d408dc10","hardwareName":"SubInterface0/1.2","macAddress":"A57C.05DF.7FC0","monitorInterface":false,"standbyMacAddress":"4CE2.828C.AAB1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"86a0:974f:3bf1:cee2:71c8:e295:2c3e:8d76/32","ipAddress":"9cb8:4589:0220:bd63:4d62:42ac:bd26:e1ac/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"7f67:fa11:adca:bd10:8583:757e:7ebb:be87","ipAddress":"4298:ffb2:30f7:84b6:5106:69aa:343c:8362"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"43.30.66.103","standbyIpAddress":"138.99.49.192"}},"version":"e04406e6-ff09-57ac-9b38-fdd8b19cf6fb","managementInterface":true,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"d2cf6df0-e095-59f1-9afe-4e1f95b290e7","name":"SecurityZone6Name","description":"Kivmeat sepfeheh jekacaloh awe wap vajan utiweb daczo ji ji pew wioha bawmivim ri kaj gibvevsa.","version":"5751e8ac-10c9-5b44-a9fa-1ed8e07d2d40","interfaces":[{"mtu":5818,"enabled":false,"description":"Jigiz malko navsup bojga widbihi vatel vahuwuta ugi bopuru duzwar zopi juinoito sibkonac fozgojmi toopu nurhiru ce joeho.","name":"inside","id":"bddde0e1-1b1f-5f42-b9b7-7c72d9099ef4","hardwareName":"GigabitEthernet1/1","macAddress":"ECFB.7E12.09E1","monitorInterface":true,"standbyMacAddress":"A09D.B513.9683","version":"69f9f38e-0479-58d1-961c-e4040d439200","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},{"mtu":2652,"enabled":true,"description":"Pipakaz ramkudu ulido ce boh ugmepku izareszeh katakuz vosinde takwa piprazipo fostoftug egjolut.","name":"subinterface3name","id":"4258612a-c6ac-5407-8edc-04b207b2b473","hardwareName":"SubInterface0/3.4","macAddress":"4A8E.2AFE.5DE9","monitorInterface":true,"standbyMacAddress":"F917.A989.864E","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"5b49:5a29:3cd4:5c83:7b30:0115:7927:eaf3/32","ipAddress":"a3eb:3b72:2cfa:9901:b7c7:1581:fa72:4b49/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"42e6:34b8:f5eb:802f:626b:503c:781e:aacd","ipAddress":"dcc0:3abc:3933:8a47:25c6:d9a7:2e80:06dc"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"137.234.118.13","standbyIpAddress":"67.162.53.251"}},"version":"2a53f3c3-fc6d-557c-bdbb-e97bc156553c","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"f13918c2-287c-5026-b2d4-ae18cf69fd8c","name":"SecurityZone2Name","description":"Elaba havor do tifgovew di tobeep osiho gamalun ilokavo hosoc bavmep lo katzakcu we lekucazif jusifi baluhufa ivinu.","version":"f1cb8b72-77e1-524f-9ee0-07e3f6ffb563","interfaces":[{"mtu":5818,"enabled":true,"description":"Eh fiec wepauju fakigi fedep osgitewo wodrah ponkumido fis nozpuri ju geelo doh vipuopu vobuhalu piova bokadar.","id":"09d6217f-2741-5b6a-bd5c-91ca02f54e09","hardwareName":"GigabitEthernet1/6","macAddress":"3539.C649.1EF4","monitorInterface":false,"standbyMacAddress":"AAB5.9320.943C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e765:caaf:c971:52be:e7af:9357:6eab:2e59/32","ipAddress":"d168:a40a:b8df:9bc5:d38c:64df:a4fd:4110/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"76da:7d95:05ed:3ac9:4014:58d2:1e81:b4b2","ipAddress":"fdcf:ebe2:84c9:5892:94f3:b209:1cd6:d430"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"46.176.226.56","standbyIpAddress":"252.197.49.100"}},"version":"e18f92be-6c58-55a7-9dea-ccdefd79a44f","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":false,"description":"Wi repiro sisig se wuglo zuzrog wivsel iboabamu wug sew figinfo pada koorcu wun akawobit cuholso wizpeos belidgew.","id":"c95c223c-b583-5d80-88a6-b1ac1b528e5e","hardwareName":"GigabitEthernet1/8","macAddress":"AD75.0711.BDF3","monitorInterface":false,"standbyMacAddress":"C7BE.0512.EDE1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4d6e:8d99:e5e9:8e08:03ed:ac78:12d9:1abc/32","ipAddress":"5b5a:9ba8:4d53:74f4:b2b9:b36b:2930:3030/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"919d:d8d6:cac4:18ed:5582:4d98:5afa:7f30","ipAddress":"9bfa:b940:f6b8:cd45:9eb6:d07e:09a6:b747"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"206.102.168.38","standbyIpAddress":"47.171.86.122"}},"version":"88bd96c5-891e-5b48-ab25-5091e3dfe377","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"302b9321-60fd-55ac-8111-7b228ba8a7bc","name":"Geolocation1","description":"Eretalta mov naw dibravwe vimu bek ose wipa ecgule kesep pewaco we taruhra awsen kef poin tu fazu.","version":"b9a8a2e0-c5ff-5705-8d0f-b488b9275e46","type":"geolocation","locations":[{"id":"56ea454f-c3b7-5928-88b1-fc3c7937519a","name":"Africa","deprecated":true,"code":1001,"type":"continent","countries":[{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"},{"id":"7cd6bf9c-8b69-57c2-abf6-6eeb0741de15","name":"Zambia","deprecated":true,"iso3":"ZMB","iso2":"ZM","code":"894","type":"country"},{"id":"f2d94483-8127-5b5c-9f56-26897f391615","name":"South Africa","deprecated":false,"iso3":"ZAF","iso2":"ZA","code":"710","type":"country"},{"id":"67312148-f472-5f74-af7e-da0dfe6c5483","name":"Mayotte","deprecated":true,"iso3":"MYT","iso2":"YT","code":"175","type":"country"},{"id":"16d66ae1-8a56-5b81-8a83-6f7123be2e2c","name":"Uganda","deprecated":false,"iso3":"UGA","iso2":"UG","code":"800","type":"country"},{"id":"b1825e78-1df2-5592-a76e-7442de702238","name":"Tanzania","deprecated":false,"iso3":"TZA","iso2":"TZ","code":"834","type":"country"},{"id":"34105ec6-4fd5-5617-8a55-a033b433501b","name":"Tunisia","deprecated":false,"iso3":"TUN","iso2":"TN","code":"788","type":"country"},{"id":"00827e94-7231-522b-a92c-c43381c394b0","name":"Togo","deprecated":true,"iso3":"TGO","iso2":"TG","code":"768","type":"country"},{"id":"5b1f4a78-73fb-5d81-b087-a43e6a56210e","name":"Chad","deprecated":true,"iso3":"TCD","iso2":"TD","code":"148","type":"country"},{"id":"4390d558-ea24-5aab-92ed-7ea167512925","name":"Swaziland","deprecated":false,"iso3":"SWZ","iso2":"SZ","code":"748","type":"country"},{"id":"22e9a10d-c048-5bce-92b3-d35ba32a2380","name":"São Tomé and Príncipe","deprecated":false,"iso3":"STP","iso2":"ST","code":"678","type":"country"},{"id":"175e350b-3e7b-5988-92a5-b8592f89a5d0","name":"South Sudan","deprecated":true,"iso3":"SSD","iso2":"SS","code":"728","type":"country"},{"id":"408c17e6-3750-56ba-b74d-14cece756b69","name":"Somalia","deprecated":false,"iso3":"SOM","iso2":"SO","code":"706","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"},{"id":"81415c05-a391-5182-8902-0f48ee21358a","name":"Sierra Leone","deprecated":true,"iso3":"SLE","iso2":"SL","code":"694","type":"country"},{"id":"50c46fa0-0451-5e15-9bbc-846a527de114","name":"Saint Helena","deprecated":true,"iso3":"SHN","iso2":"SH","code":"654","type":"country"},{"id":"c2a050bc-b370-5bcd-945c-cd0d88d814ee","name":"Sudan","deprecated":false,"iso3":"SDN","iso2":"SD","code":"729","type":"country"},{"id":"2792902e-5e01-5294-bd39-4a9b86443f69","name":"Seychelles","deprecated":false,"iso3":"SYC","iso2":"SC","code":"690","type":"country"},{"id":"e6e6e19f-26b3-53cc-ae5c-ad6af73ffa23","name":"Rwanda","deprecated":false,"iso3":"RWA","iso2":"RW","code":"646","type":"country"},{"id":"1657adab-03a4-556a-b779-d62bf356497f","name":"Réunion","deprecated":true,"iso3":"REU","iso2":"RE","code":"638","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"271aded5-deef-50b9-9e02-ec55543da25b","name":"Niger","deprecated":true,"iso3":"NER","iso2":"NE","code":"562","type":"country"},{"id":"a8f12931-d0a3-5ead-b8f7-26c9d8e29684","name":"Namibia","deprecated":false,"iso3":"NAM","iso2":"NA","code":"516","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"26316b70-a4e5-5ee7-9176-d8f88977ac81","name":"Malawi","deprecated":false,"iso3":"MWI","iso2":"MW","code":"454","type":"country"},{"id":"8ac5e628-88fe-5a8f-a8e8-5e9823bed8c9","name":"Mauritius","deprecated":true,"iso3":"MUS","iso2":"MU","code":"480","type":"country"},{"id":"6286246a-cb95-57c8-bf4d-85524e069dc9","name":"Mauritania","deprecated":false,"iso3":"MRT","iso2":"MR","code":"478","type":"country"},{"id":"9eaf4ef5-fcd1-55b8-b344-7b60f9acbb2a","name":"Mali","deprecated":true,"iso3":"MLI","iso2":"ML","code":"466","type":"country"},{"id":"3158c9ea-2e08-5057-923c-a252e9bbceb5","name":"Madagascar","deprecated":true,"iso3":"MDG","iso2":"MG","code":"450","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"},{"id":"b82c039e-20c2-50f0-9176-307e154d19cd","name":"Lesotho","deprecated":true,"iso3":"LSO","iso2":"LS","code":"426","type":"country"},{"id":"936e5855-cede-5036-b530-4a8dc3ded9f1","name":"Liberia","deprecated":true,"iso3":"LBR","iso2":"LR","code":"430","type":"country"},{"id":"781554f5-83af-5829-a0b1-f679ccadcbc8","name":"Comoros","deprecated":true,"iso3":"COM","iso2":"KM","code":"174","type":"country"},{"id":"ef9608a5-3398-5610-9770-361e8f4d5018","name":"Kenya","deprecated":false,"iso3":"KEN","iso2":"KE","code":"404","type":"country"},{"id":"7ff14832-3c58-5e8d-b6fa-7d211d0eddea","name":"Guinea-Bissau","deprecated":true,"iso3":"GNB","iso2":"GW","code":"624","type":"country"},{"id":"24ef0507-02b5-58d8-a403-8087853d0d0e","name":"Equatorial Guinea","deprecated":false,"iso3":"GNQ","iso2":"GQ","code":"226","type":"country"},{"id":"8b2e1fe0-df59-514f-8cad-46e618371f10","name":"Guinea","deprecated":false,"iso3":"GIN","iso2":"GN","code":"324","type":"country"},{"id":"2311d16e-f8c8-5db8-9446-ddc015dee026","name":"Gambia","deprecated":true,"iso3":"GMB","iso2":"GM","code":"270","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"},{"id":"1a6265f3-08ce-57c4-9d8d-8807bc7c3f96","name":"Gabon","deprecated":true,"iso3":"GAB","iso2":"GA","code":"266","type":"country"},{"id":"7466e390-4ac7-5c6e-8ae7-cffbf4d26761","name":"Ethiopia","deprecated":false,"iso3":"ETH","iso2":"ET","code":"231","type":"country"},{"id":"1b6630d5-2650-5baf-b9a5-fa59fbbd36be","name":"Eritrea","deprecated":false,"iso3":"ERI","iso2":"ER","code":"232","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"bd6f190e-df1a-568c-94cc-8fbb7394522f","name":"Algeria","deprecated":false,"iso3":"DZA","iso2":"DZ","code":"012","type":"country"},{"id":"9c992f6e-72f5-5d6b-8fb9-b23909129b08","name":"Djibouti","deprecated":true,"iso3":"DJI","iso2":"DJ","code":"262","type":"country"},{"id":"63696b95-bded-58f4-8b4e-402397cfcd8a","name":"Cape Verde","deprecated":true,"iso3":"CPV","iso2":"CV","code":"132","type":"country"},{"id":"6d854d95-e91f-53cb-a1f2-1e07d51eb137","name":"Cameroon","deprecated":false,"iso3":"CMR","iso2":"CM","code":"120","type":"country"},{"id":"e8286886-6019-50d6-b0b4-315f7b9f2cef","name":"Ivory Coast","deprecated":false,"iso3":"CIV","iso2":"CI","code":"384","type":"country"},{"id":"97916595-e2d1-5214-87e2-e242bf4ad893","name":"Republic of the Congo","deprecated":false,"iso3":"COG","iso2":"CG","code":"178","type":"country"},{"id":"b1b8664b-d80d-5480-9b9a-a1ac997bd533","name":"Central African Republic","deprecated":false,"iso3":"CAF","iso2":"CF","code":"140","type":"country"},{"id":"8789e5fc-90ef-5dc5-942f-1f0f6bef20e2","name":"Democratic Republic of the Congo","deprecated":false,"iso3":"COD","iso2":"CD","code":"180","type":"country"},{"id":"e8bab11d-42db-5ff0-a68d-81d7fdae7000","name":"Botswana","deprecated":false,"iso3":"BWA","iso2":"BW","code":"072","type":"country"},{"id":"74442316-edea-5c33-9f4e-de1677f848a1","name":"Benin","deprecated":true,"iso3":"BEN","iso2":"BJ","code":"204","type":"country"},{"id":"a666ef14-444e-5605-add7-3a1a1bf028d6","name":"Burundi","deprecated":true,"iso3":"BDI","iso2":"BI","code":"108","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"}],"countryCodes":["716","894","710","175","800","834","788","768","148","748","678","728","706","686","694","654","729","690","646","638","566","562","516","508","454","480","478","466","450","504","434","426","430","174","404","624","226","324","270","288","266","231","232","732","818","012","262","132","120","384","178","140","180","072","204","108","854","024"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"}]}],"destinationNetworks":[{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"302b9321-60fd-55ac-8111-7b228ba8a7bc","name":"Geolocation1","description":"Eretalta mov naw dibravwe vimu bek ose wipa ecgule kesep pewaco we taruhra awsen kef poin tu fazu.","version":"b9a8a2e0-c5ff-5705-8d0f-b488b9275e46","type":"geolocation","locations":[{"id":"56ea454f-c3b7-5928-88b1-fc3c7937519a","name":"Africa","deprecated":true,"code":1001,"type":"continent","countries":[{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"},{"id":"7cd6bf9c-8b69-57c2-abf6-6eeb0741de15","name":"Zambia","deprecated":true,"iso3":"ZMB","iso2":"ZM","code":"894","type":"country"},{"id":"f2d94483-8127-5b5c-9f56-26897f391615","name":"South Africa","deprecated":false,"iso3":"ZAF","iso2":"ZA","code":"710","type":"country"},{"id":"67312148-f472-5f74-af7e-da0dfe6c5483","name":"Mayotte","deprecated":true,"iso3":"MYT","iso2":"YT","code":"175","type":"country"},{"id":"16d66ae1-8a56-5b81-8a83-6f7123be2e2c","name":"Uganda","deprecated":false,"iso3":"UGA","iso2":"UG","code":"800","type":"country"},{"id":"b1825e78-1df2-5592-a76e-7442de702238","name":"Tanzania","deprecated":false,"iso3":"TZA","iso2":"TZ","code":"834","type":"country"},{"id":"34105ec6-4fd5-5617-8a55-a033b433501b","name":"Tunisia","deprecated":false,"iso3":"TUN","iso2":"TN","code":"788","type":"country"},{"id":"00827e94-7231-522b-a92c-c43381c394b0","name":"Togo","deprecated":true,"iso3":"TGO","iso2":"TG","code":"768","type":"country"},{"id":"5b1f4a78-73fb-5d81-b087-a43e6a56210e","name":"Chad","deprecated":true,"iso3":"TCD","iso2":"TD","code":"148","type":"country"},{"id":"4390d558-ea24-5aab-92ed-7ea167512925","name":"Swaziland","deprecated":false,"iso3":"SWZ","iso2":"SZ","code":"748","type":"country"},{"id":"22e9a10d-c048-5bce-92b3-d35ba32a2380","name":"São Tomé and Príncipe","deprecated":false,"iso3":"STP","iso2":"ST","code":"678","type":"country"},{"id":"175e350b-3e7b-5988-92a5-b8592f89a5d0","name":"South Sudan","deprecated":true,"iso3":"SSD","iso2":"SS","code":"728","type":"country"},{"id":"408c17e6-3750-56ba-b74d-14cece756b69","name":"Somalia","deprecated":false,"iso3":"SOM","iso2":"SO","code":"706","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"},{"id":"81415c05-a391-5182-8902-0f48ee21358a","name":"Sierra Leone","deprecated":true,"iso3":"SLE","iso2":"SL","code":"694","type":"country"},{"id":"50c46fa0-0451-5e15-9bbc-846a527de114","name":"Saint Helena","deprecated":true,"iso3":"SHN","iso2":"SH","code":"654","type":"country"},{"id":"c2a050bc-b370-5bcd-945c-cd0d88d814ee","name":"Sudan","deprecated":false,"iso3":"SDN","iso2":"SD","code":"729","type":"country"},{"id":"2792902e-5e01-5294-bd39-4a9b86443f69","name":"Seychelles","deprecated":false,"iso3":"SYC","iso2":"SC","code":"690","type":"country"},{"id":"e6e6e19f-26b3-53cc-ae5c-ad6af73ffa23","name":"Rwanda","deprecated":false,"iso3":"RWA","iso2":"RW","code":"646","type":"country"},{"id":"1657adab-03a4-556a-b779-d62bf356497f","name":"Réunion","deprecated":true,"iso3":"REU","iso2":"RE","code":"638","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"271aded5-deef-50b9-9e02-ec55543da25b","name":"Niger","deprecated":true,"iso3":"NER","iso2":"NE","code":"562","type":"country"},{"id":"a8f12931-d0a3-5ead-b8f7-26c9d8e29684","name":"Namibia","deprecated":false,"iso3":"NAM","iso2":"NA","code":"516","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"26316b70-a4e5-5ee7-9176-d8f88977ac81","name":"Malawi","deprecated":false,"iso3":"MWI","iso2":"MW","code":"454","type":"country"},{"id":"8ac5e628-88fe-5a8f-a8e8-5e9823bed8c9","name":"Mauritius","deprecated":true,"iso3":"MUS","iso2":"MU","code":"480","type":"country"},{"id":"6286246a-cb95-57c8-bf4d-85524e069dc9","name":"Mauritania","deprecated":false,"iso3":"MRT","iso2":"MR","code":"478","type":"country"},{"id":"9eaf4ef5-fcd1-55b8-b344-7b60f9acbb2a","name":"Mali","deprecated":true,"iso3":"MLI","iso2":"ML","code":"466","type":"country"},{"id":"3158c9ea-2e08-5057-923c-a252e9bbceb5","name":"Madagascar","deprecated":true,"iso3":"MDG","iso2":"MG","code":"450","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"},{"id":"b82c039e-20c2-50f0-9176-307e154d19cd","name":"Lesotho","deprecated":true,"iso3":"LSO","iso2":"LS","code":"426","type":"country"},{"id":"936e5855-cede-5036-b530-4a8dc3ded9f1","name":"Liberia","deprecated":true,"iso3":"LBR","iso2":"LR","code":"430","type":"country"},{"id":"781554f5-83af-5829-a0b1-f679ccadcbc8","name":"Comoros","deprecated":true,"iso3":"COM","iso2":"KM","code":"174","type":"country"},{"id":"ef9608a5-3398-5610-9770-361e8f4d5018","name":"Kenya","deprecated":false,"iso3":"KEN","iso2":"KE","code":"404","type":"country"},{"id":"7ff14832-3c58-5e8d-b6fa-7d211d0eddea","name":"Guinea-Bissau","deprecated":true,"iso3":"GNB","iso2":"GW","code":"624","type":"country"},{"id":"24ef0507-02b5-58d8-a403-8087853d0d0e","name":"Equatorial Guinea","deprecated":false,"iso3":"GNQ","iso2":"GQ","code":"226","type":"country"},{"id":"8b2e1fe0-df59-514f-8cad-46e618371f10","name":"Guinea","deprecated":false,"iso3":"GIN","iso2":"GN","code":"324","type":"country"},{"id":"2311d16e-f8c8-5db8-9446-ddc015dee026","name":"Gambia","deprecated":true,"iso3":"GMB","iso2":"GM","code":"270","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"},{"id":"1a6265f3-08ce-57c4-9d8d-8807bc7c3f96","name":"Gabon","deprecated":true,"iso3":"GAB","iso2":"GA","code":"266","type":"country"},{"id":"7466e390-4ac7-5c6e-8ae7-cffbf4d26761","name":"Ethiopia","deprecated":false,"iso3":"ETH","iso2":"ET","code":"231","type":"country"},{"id":"1b6630d5-2650-5baf-b9a5-fa59fbbd36be","name":"Eritrea","deprecated":false,"iso3":"ERI","iso2":"ER","code":"232","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"bd6f190e-df1a-568c-94cc-8fbb7394522f","name":"Algeria","deprecated":false,"iso3":"DZA","iso2":"DZ","code":"012","type":"country"},{"id":"9c992f6e-72f5-5d6b-8fb9-b23909129b08","name":"Djibouti","deprecated":true,"iso3":"DJI","iso2":"DJ","code":"262","type":"country"},{"id":"63696b95-bded-58f4-8b4e-402397cfcd8a","name":"Cape Verde","deprecated":true,"iso3":"CPV","iso2":"CV","code":"132","type":"country"},{"id":"6d854d95-e91f-53cb-a1f2-1e07d51eb137","name":"Cameroon","deprecated":false,"iso3":"CMR","iso2":"CM","code":"120","type":"country"},{"id":"e8286886-6019-50d6-b0b4-315f7b9f2cef","name":"Ivory Coast","deprecated":false,"iso3":"CIV","iso2":"CI","code":"384","type":"country"},{"id":"97916595-e2d1-5214-87e2-e242bf4ad893","name":"Republic of the Congo","deprecated":false,"iso3":"COG","iso2":"CG","code":"178","type":"country"},{"id":"b1b8664b-d80d-5480-9b9a-a1ac997bd533","name":"Central African Republic","deprecated":false,"iso3":"CAF","iso2":"CF","code":"140","type":"country"},{"id":"8789e5fc-90ef-5dc5-942f-1f0f6bef20e2","name":"Democratic Republic of the Congo","deprecated":false,"iso3":"COD","iso2":"CD","code":"180","type":"country"},{"id":"e8bab11d-42db-5ff0-a68d-81d7fdae7000","name":"Botswana","deprecated":false,"iso3":"BWA","iso2":"BW","code":"072","type":"country"},{"id":"74442316-edea-5c33-9f4e-de1677f848a1","name":"Benin","deprecated":true,"iso3":"BEN","iso2":"BJ","code":"204","type":"country"},{"id":"a666ef14-444e-5605-add7-3a1a1bf028d6","name":"Burundi","deprecated":true,"iso3":"BDI","iso2":"BI","code":"108","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"}],"countryCodes":["716","894","710","175","800","834","788","768","148","748","678","728","706","686","694","654","729","690","646","638","566","562","516","508","454","480","478","466","450","504","434","426","430","174","404","624","226","324","270","288","266","231","232","732","818","012","262","132","120","384","178","140","180","072","204","108","854","024"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"}]}],"sourcePorts":[{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}],"destinationPorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true}],"users":[{"id":"d23c586b-9046-57c8-b0d7-cd6200ca8e84","name":"User Group 15","realmName":"zutnotecasi","type":"trafficusergroup","realmId":2,"version":"gacvubereb"},{"id":"4a0d7157-0427-534d-94a6-c552397d9002","name":"User Group 13","realmName":"behludivci","type":"trafficusergroup","realmId":2,"version":"hifawtaddil"},{"id":"a2c00f6f-91fe-5ac0-95e8-20349cbb25c4","name":"User Group 14","realmName":"pusojegme","type":"trafficusergroup","realmId":2,"version":"hesakokela"}],"embeddedAppFilter":{"conditions":[{"filter":"muechicpoh","tags":[{"id":"7269266f-8413-59ef-9085-0de4aa64660b","version":"6eb7235a-74ab-5701-8a37-2522e325519d","appId":2,"name":"ApplicationTag2","description":"Zu wep pag palu mazu irowil rag bore ev ica miljov iwoog besjezew fi regevi ap vo.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"kazrutivni","tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"62bc5d56-7e60-5a71-a467-2c4f2a035a06","version":"e7e0ebc9-3a9a-5342-91e9-ae0ce54b3444","appId":12,"name":"ApplicationTag12","description":"Bamiwaga bo kek wawinta ovepozgan tibutef je kezaluk zonwoz fovul aw ter nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"15c62b65-ccdb-5e38-8f4b-ab7f619e80cd","version":"21e94979-b95d-5fc2-9e47-de8ba07e5e60","name":"ApplicationFilter12","description":"Bocaz mu tes ci jimvoc nahwo fiwbunum kuv tad ta jinwus zuahva mavdiida zuut ta ughopzef pucma duj.","applications":[{"id":"dca39a3c-23f6-54aa-81d7-ccef34a0cff6","version":"bfc4825b-27f5-57dc-8fef-49ca1e817fa0","description":"Kunew malu alipizdu efezuzo ogulana obir uplimo vikbuw boaf ganehi paetatug cevtal pedlise ig ritkan eva.","deprecated":true,"appId":2,"productivity":2,"risk":2,"name":"Application7","tagIds":["cf4efe76-660c-5a1c-8f49-ad97479def67","f7e90abe-ce71-56da-9f43-dd8685ec1a3a"],"tags":[{"id":"cf4efe76-660c-5a1c-8f49-ad97479def67","version":"4a68850e-91de-55b2-8e73-f94f8260d5f3","appId":14,"name":"ApplicationTag14","description":"Kurjugciv wir dod homa emaro tuzuzab avser lin ginus viskebag mohedoel iznolju dub acenogic kihvot awa.","metadata":{"referenced":true},"type":"applicationtag"},{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["6acda68e-7ae9-5a42-b1ac-b440dcb550dd"],"categories":[{"id":"6acda68e-7ae9-5a42-b1ac-b440dcb550dd","version":"4babca93-368e-5fbf-8029-b65063e54bb9","appId":8,"name":"ApplicationCategory4","description":"Ub vu lujus luputuja mucmoezo didiz forrene buguer ug iwusa tesit mi vusrad welavo zogme vumha.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"giasnovpe","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"d2f1b4a3-4704-59c8-9beb-dffb7ed07518","version":"b0a0aecb-aa27-5c7e-af44-3696768ae771","description":"Ruzik dat pimpe kinri teroh so ruwekat kikan fakajoz juk deb vusma iji madbizzoc carpecre moajiwa vojpi.","deprecated":true,"appId":2,"productivity":1,"risk":2,"name":"Application13","tagIds":["9b266171-0bc7-5f71-aa6c-44b8cbafa329"],"tags":[{"id":"9b266171-0bc7-5f71-aa6c-44b8cbafa329","version":"746ac683-b500-5781-b179-f61db662f8d3","appId":9,"name":"ApplicationTag9","description":"Ja lohivap wim saj zuw hinakug tiduze noemo azonimi ici kovaz ikuza wiihboz bubopmin la uge jeko.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["24cd3c21-8c19-531f-81d5-08aca7b587b9"],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ef71cd89-a0fc-5994-aaff-0f427dff92fa","version":"pugvagpugmi","name":"UrlGroup5","description":"Muhzipil korezoki kuwelas fojulcud jum ineteig ob zeluc mekpufes api ajnovawa ro tadi.","objects":[{"id":"0776578c-c6ee-58a3-91de-7d50b64343b8","version":"bimupair","name":"Url7","description":"Mer komad cozmersul el gaze fupfod gij pikukkop kavimgen befowez guwojo bikpogezu ice niruvpo ganal ovo taun.","url":"http://difepfel.io/ovcekwe","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"a346d600-32a4-535c-9887-eda79f629be1","version":"1e8d8d5d-ba06-5537-94e9-cda4faa3128e","name":"UrlCategory-12","deprecated":false,"urlCategoryId":12,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN20","name":"Balanced Security and Connectivity","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN20"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN20/rules/"}},"description":"Balanced Security and Connectivity Layer","type":"intrusionpolicy","version":"d3d7a26f-ddb0-57fb-a9bf-772424bbdd0a"},"logFiles":false,"type":"accessrule"},{"id":"fcba17c2-86c1-5225-b3d0-d266a9cde1b3","version":"218c22a9-0bb8-52f4-a968-8a85139cf523","ruleId":22,"name":"Access_Rule_22","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"2fcc57a5-0673-5296-ab42-0537f89225ca","version":"ac94fb6a-ecb6-5b74-9305-aa01e94d60fe","host":"66.33.32.162","port":5897,"protocol":"UDP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"e12d0a2e-afc7-53cb-85e7-38aa135de327","name":"SecurityZone13Name","description":"Do tewuznas ucait mad ziwgef iw unjup guzov dize guzut vibuk anpekpib nerviw ip ijpa koruf.","version":"09dc0dd3-4a94-5cf2-9efb-89a0f352e003","interfaces":[{"mtu":2652,"enabled":true,"description":"Agi pobjotu zukac rive putsi herima mepues ezijo wicimub utjamoj noskavup wupoje ra dujipale.","name":"subinterface2name","id":"353dee59-d2b6-5df6-9b8e-4f444b489176","hardwareName":"SubInterface0/2.3","macAddress":"EDB8.12E9.D2DB","monitorInterface":false,"standbyMacAddress":"5667.5103.F034","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"2647:2aea:3fdf:b4cc:6433:554a:6ab5:c594/32","ipAddress":"04f0:7320:ae63:ce9f:664b:c7e3:8867:daa9/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3d77:5e5d:78ec:d370:2293:4026:1bbb:aee3","ipAddress":"e6eb:6fef:da47:e1c1:1523:464b:1cab:92a1"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.88.118.226","standbyIpAddress":"17.135.120.105"}},"version":"82ce2f08-42bf-5b19-bbbb-0c4ef276caa0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"340bf250-a4a5-5049-bddf-a6201a9b8e86","name":"SecurityZone7Name","description":"So gitejipo sotvotdab watu la ica fojum dorog odohog mil etuw ta daghavke dig.","version":"273d67ab-abb9-5af1-8574-3e9af6e98aed","interfaces":[{"mtu":2652,"enabled":false,"description":"Wa cep gi lankowtu ce uvujed tad wo vezke vib vezvufgev hun vob velumde.","name":"subinterface11name","id":"ffc74b4d-ad27-5459-9907-186a8c739189","hardwareName":"SubInterface0/11.12","macAddress":"1534.AB09.4146","monitorInterface":true,"standbyMacAddress":"CF72.BDFB.98A1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"fafb:559d:106d:67ac:52dd:e182:d306:4792/32","ipAddress":"a7bd:69ea:f24f:04ea:40c5:3f80:0416:0f09/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d544:6d26:411c:e460:9911:cb8b:ca9e:3a15","ipAddress":"f96f:858d:9ed1:fc9f:7b47:0fb4:246d:6cb6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"17.76.225.83","standbyIpAddress":"195.253.157.229"}},"version":"e22e21d2-9d64-51a4-adc2-a775a4572916","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"sourceNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"09d97c3e-0824-5e9d-bee8-28ea311458a5","name":"Geolocation4","description":"Detriwwot uwaan sa ta pohvab ako fi owe apefi ocde mok alcob.","version":"b599df3c-38d1-523e-9bc6-2d82e76d48ff","type":"geolocation","locations":[{"id":"18cbe485-d646-5aad-827e-13ec090dd450","name":"Europe","deprecated":false,"code":1005,"type":"continent","countries":[{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"90c38868-27c0-5de2-a580-630b08b64406","name":"Ukraine","deprecated":false,"iso3":"UKR","iso2":"UA","code":"804","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"cbe10064-72a0-5b1a-813f-0d684567cb07","name":"Slovakia","deprecated":true,"iso3":"SVK","iso2":"SK","code":"703","type":"country"},{"id":"ce221115-d595-50d6-bd2f-fe0429b27b04","name":"Svalbard and Jan Mayen","deprecated":false,"iso3":"SJM","iso2":"SJ","code":"744","type":"country"},{"id":"9401a437-ee7e-51a8-bcc0-7623f8193dac","name":"Slovenia","deprecated":true,"iso3":"SVN","iso2":"SI","code":"705","type":"country"},{"id":"d4901422-c6fd-5ef4-bf4e-09d2074b34dc","name":"Sweden","deprecated":true,"iso3":"SWE","iso2":"SE","code":"752","type":"country"},{"id":"5f22f339-f1a0-5a70-9254-5dd0dad4d243","name":"Russia","deprecated":false,"iso3":"RUS","iso2":"RU","code":"643","type":"country"},{"id":"3a771763-9c5d-580f-9fc5-df41e7355def","name":"Serbia","deprecated":false,"iso3":"SRB","iso2":"RS","code":"688","type":"country"},{"id":"74759e4d-8901-5302-89b7-384fa438a9d2","name":"Romania","deprecated":true,"iso3":"ROU","iso2":"RO","code":"642","type":"country"},{"id":"58579a6d-8542-5c18-8ecb-4d54f527c8e5","name":"Portugal","deprecated":false,"iso3":"PRT","iso2":"PT","code":"620","type":"country"},{"id":"c095aa5d-350d-5db8-9d01-0a106f93c3a5","name":"Poland","deprecated":true,"iso3":"POL","iso2":"PL","code":"616","type":"country"},{"id":"02fa0428-9885-58ba-9fc1-9cc2cb30f0cb","name":"Norway","deprecated":true,"iso3":"NOR","iso2":"NO","code":"578","type":"country"},{"id":"39923980-c4f7-5dda-890c-ab8c290a5be5","name":"Netherlands","deprecated":false,"iso3":"NLD","iso2":"NL","code":"528","type":"country"},{"id":"aaad1a9f-fd04-5427-aea9-6a2216f61efe","name":"Malta","deprecated":false,"iso3":"MLT","iso2":"MT","code":"470","type":"country"},{"id":"ef8d2943-7ddf-57a6-8543-563cc13ebf4e","name":"Macedonia","deprecated":true,"iso3":"MKD","iso2":"MK","code":"807","type":"country"},{"id":"779cdf72-27d4-5e41-b81c-8ea5ef53f01a","name":"Montenegro","deprecated":false,"iso3":"MNE","iso2":"ME","code":"499","type":"country"},{"id":"8ecb3dd6-0cc2-5bac-b21d-83f1e3fbc848","name":"Moldova","deprecated":true,"iso3":"MDA","iso2":"MD","code":"498","type":"country"},{"id":"e0400095-a311-5b38-92e1-d635e6a1f938","name":"Monaco","deprecated":false,"iso3":"MCO","iso2":"MC","code":"492","type":"country"},{"id":"4e696592-960a-51d9-9078-985330e3feb1","name":"Latvia","deprecated":true,"iso3":"LVA","iso2":"LV","code":"428","type":"country"},{"id":"bb1fe9b8-9f49-56fe-9278-4cc73152f780","name":"Luxembourg","deprecated":true,"iso3":"LUX","iso2":"LU","code":"442","type":"country"},{"id":"76d4e398-d6e2-5f4f-ba11-d01a828f883d","name":"Lithuania","deprecated":true,"iso3":"LTU","iso2":"LT","code":"440","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"73f3b217-148d-5d48-a652-495178f5a046","name":"Jersey","deprecated":true,"iso3":"JEY","iso2":"JE","code":"832","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"968a378c-2885-5a3b-a0dc-160560765c7e","name":"Isle of Man","deprecated":true,"iso3":"IMN","iso2":"IM","code":"833","type":"country"},{"id":"cae04dab-514c-559a-94d5-b3930bcf5800","name":"Ireland","deprecated":false,"iso3":"IRL","iso2":"IE","code":"372","type":"country"},{"id":"bc5d918e-a2c8-508d-9a87-c990eeec6215","name":"Hungary","deprecated":true,"iso3":"HUN","iso2":"HU","code":"348","type":"country"},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"03330265-fe01-5435-899a-08042bc643b5","name":"Greece","deprecated":false,"iso3":"GRC","iso2":"GR","code":"300","type":"country"},{"id":"a3120da5-8f6f-5fdc-af6d-8ccac4e802b7","name":"Gibraltar","deprecated":true,"iso3":"GIB","iso2":"GI","code":"292","type":"country"},{"id":"7a31d958-157e-509d-bc9f-f52b45c85c6d","name":"Guernsey","deprecated":true,"iso3":"GGY","iso2":"GG","code":"831","type":"country"},{"id":"2fbb8b4c-cc35-5550-acef-bc53b5c0f0f4","name":"United Kingdom","deprecated":false,"iso3":"GBR","iso2":"GB","code":"826","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"5ee6b8ad-2c86-58d1-ac57-8db405e7dda8","name":"Faroe Islands","deprecated":true,"iso3":"FRO","iso2":"FO","code":"234","type":"country"},{"id":"a7a8cee7-9bad-5786-a874-6be00056cecd","name":"Finland","deprecated":true,"iso3":"FIN","iso2":"FI","code":"246","type":"country"},{"id":"1e9c9635-11bb-5544-8fab-27b6da86a545","name":"Spain","deprecated":true,"iso3":"ESP","iso2":"ES","code":"724","type":"country"},{"id":"355204ae-8c3e-5a96-8f23-3670fde3d26a","name":"Estonia","deprecated":true,"iso3":"EST","iso2":"EE","code":"233","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"004e74d4-cffc-599e-bd12-f4ac69a8a700","name":"Germany","deprecated":true,"iso3":"DEU","iso2":"DE","code":"276","type":"country"},{"id":"fbdea1d9-5ac4-53d0-be10-3220747421b8","name":"Czech Republic","deprecated":true,"iso3":"CZE","iso2":"CZ","code":"203","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"089c406e-a4ff-52ae-9672-73a1bdf5a396","name":"Belarus","deprecated":true,"iso3":"BLR","iso2":"BY","code":"112","type":"country"},{"id":"3dfcd86f-2e29-59f7-9e44-27fe038c51a6","name":"Bulgaria","deprecated":false,"iso3":"BGR","iso2":"BG","code":"100","type":"country"},{"id":"8c299df7-5229-5596-963c-04cb2b46d34d","name":"Belgium","deprecated":true,"iso3":"BEL","iso2":"BE","code":"056","type":"country"},{"id":"fc99ebdb-5c82-5819-979d-d8f6310351af","name":"Bosnia and Herzegovina","deprecated":true,"iso3":"BIH","iso2":"BA","code":"070","type":"country"},{"id":"588e4f19-dfac-5134-98c1-c1cafee86399","name":"Åland","deprecated":false,"iso3":"ALA","iso2":"AX","code":"248","type":"country"},{"id":"67f08133-23b8-52ac-8436-41d77a2eebfb","name":"Austria","deprecated":false,"iso3":"AUT","iso2":"AT","code":"040","type":"country"},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"}],"countryCodes":["0","336","804","674","703","744","705","752","643","688","642","620","616","578","528","470","807","499","498","492","428","442","440","438","832","380","352","833","372","348","191","300","292","831","826","250","234","246","724","233","208","276","203","196","756","112","100","056","070","248","040","008"]},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"}]}],"destinationNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"09d97c3e-0824-5e9d-bee8-28ea311458a5","name":"Geolocation4","description":"Detriwwot uwaan sa ta pohvab ako fi owe apefi ocde mok alcob.","version":"b599df3c-38d1-523e-9bc6-2d82e76d48ff","type":"geolocation","locations":[{"id":"18cbe485-d646-5aad-827e-13ec090dd450","name":"Europe","deprecated":false,"code":1005,"type":"continent","countries":[{"id":"a0d47a89-de9b-5f06-b5f2-b903320ecf26","name":"Kosovo","deprecated":true,"iso3":"XKX","iso2":"XK","code":"0","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"90c38868-27c0-5de2-a580-630b08b64406","name":"Ukraine","deprecated":false,"iso3":"UKR","iso2":"UA","code":"804","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"cbe10064-72a0-5b1a-813f-0d684567cb07","name":"Slovakia","deprecated":true,"iso3":"SVK","iso2":"SK","code":"703","type":"country"},{"id":"ce221115-d595-50d6-bd2f-fe0429b27b04","name":"Svalbard and Jan Mayen","deprecated":false,"iso3":"SJM","iso2":"SJ","code":"744","type":"country"},{"id":"9401a437-ee7e-51a8-bcc0-7623f8193dac","name":"Slovenia","deprecated":true,"iso3":"SVN","iso2":"SI","code":"705","type":"country"},{"id":"d4901422-c6fd-5ef4-bf4e-09d2074b34dc","name":"Sweden","deprecated":true,"iso3":"SWE","iso2":"SE","code":"752","type":"country"},{"id":"5f22f339-f1a0-5a70-9254-5dd0dad4d243","name":"Russia","deprecated":false,"iso3":"RUS","iso2":"RU","code":"643","type":"country"},{"id":"3a771763-9c5d-580f-9fc5-df41e7355def","name":"Serbia","deprecated":false,"iso3":"SRB","iso2":"RS","code":"688","type":"country"},{"id":"74759e4d-8901-5302-89b7-384fa438a9d2","name":"Romania","deprecated":true,"iso3":"ROU","iso2":"RO","code":"642","type":"country"},{"id":"58579a6d-8542-5c18-8ecb-4d54f527c8e5","name":"Portugal","deprecated":false,"iso3":"PRT","iso2":"PT","code":"620","type":"country"},{"id":"c095aa5d-350d-5db8-9d01-0a106f93c3a5","name":"Poland","deprecated":true,"iso3":"POL","iso2":"PL","code":"616","type":"country"},{"id":"02fa0428-9885-58ba-9fc1-9cc2cb30f0cb","name":"Norway","deprecated":true,"iso3":"NOR","iso2":"NO","code":"578","type":"country"},{"id":"39923980-c4f7-5dda-890c-ab8c290a5be5","name":"Netherlands","deprecated":false,"iso3":"NLD","iso2":"NL","code":"528","type":"country"},{"id":"aaad1a9f-fd04-5427-aea9-6a2216f61efe","name":"Malta","deprecated":false,"iso3":"MLT","iso2":"MT","code":"470","type":"country"},{"id":"ef8d2943-7ddf-57a6-8543-563cc13ebf4e","name":"Macedonia","deprecated":true,"iso3":"MKD","iso2":"MK","code":"807","type":"country"},{"id":"779cdf72-27d4-5e41-b81c-8ea5ef53f01a","name":"Montenegro","deprecated":false,"iso3":"MNE","iso2":"ME","code":"499","type":"country"},{"id":"8ecb3dd6-0cc2-5bac-b21d-83f1e3fbc848","name":"Moldova","deprecated":true,"iso3":"MDA","iso2":"MD","code":"498","type":"country"},{"id":"e0400095-a311-5b38-92e1-d635e6a1f938","name":"Monaco","deprecated":false,"iso3":"MCO","iso2":"MC","code":"492","type":"country"},{"id":"4e696592-960a-51d9-9078-985330e3feb1","name":"Latvia","deprecated":true,"iso3":"LVA","iso2":"LV","code":"428","type":"country"},{"id":"bb1fe9b8-9f49-56fe-9278-4cc73152f780","name":"Luxembourg","deprecated":true,"iso3":"LUX","iso2":"LU","code":"442","type":"country"},{"id":"76d4e398-d6e2-5f4f-ba11-d01a828f883d","name":"Lithuania","deprecated":true,"iso3":"LTU","iso2":"LT","code":"440","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"73f3b217-148d-5d48-a652-495178f5a046","name":"Jersey","deprecated":true,"iso3":"JEY","iso2":"JE","code":"832","type":"country"},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"968a378c-2885-5a3b-a0dc-160560765c7e","name":"Isle of Man","deprecated":true,"iso3":"IMN","iso2":"IM","code":"833","type":"country"},{"id":"cae04dab-514c-559a-94d5-b3930bcf5800","name":"Ireland","deprecated":false,"iso3":"IRL","iso2":"IE","code":"372","type":"country"},{"id":"bc5d918e-a2c8-508d-9a87-c990eeec6215","name":"Hungary","deprecated":true,"iso3":"HUN","iso2":"HU","code":"348","type":"country"},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"03330265-fe01-5435-899a-08042bc643b5","name":"Greece","deprecated":false,"iso3":"GRC","iso2":"GR","code":"300","type":"country"},{"id":"a3120da5-8f6f-5fdc-af6d-8ccac4e802b7","name":"Gibraltar","deprecated":true,"iso3":"GIB","iso2":"GI","code":"292","type":"country"},{"id":"7a31d958-157e-509d-bc9f-f52b45c85c6d","name":"Guernsey","deprecated":true,"iso3":"GGY","iso2":"GG","code":"831","type":"country"},{"id":"2fbb8b4c-cc35-5550-acef-bc53b5c0f0f4","name":"United Kingdom","deprecated":false,"iso3":"GBR","iso2":"GB","code":"826","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"5ee6b8ad-2c86-58d1-ac57-8db405e7dda8","name":"Faroe Islands","deprecated":true,"iso3":"FRO","iso2":"FO","code":"234","type":"country"},{"id":"a7a8cee7-9bad-5786-a874-6be00056cecd","name":"Finland","deprecated":true,"iso3":"FIN","iso2":"FI","code":"246","type":"country"},{"id":"1e9c9635-11bb-5544-8fab-27b6da86a545","name":"Spain","deprecated":true,"iso3":"ESP","iso2":"ES","code":"724","type":"country"},{"id":"355204ae-8c3e-5a96-8f23-3670fde3d26a","name":"Estonia","deprecated":true,"iso3":"EST","iso2":"EE","code":"233","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"004e74d4-cffc-599e-bd12-f4ac69a8a700","name":"Germany","deprecated":true,"iso3":"DEU","iso2":"DE","code":"276","type":"country"},{"id":"fbdea1d9-5ac4-53d0-be10-3220747421b8","name":"Czech Republic","deprecated":true,"iso3":"CZE","iso2":"CZ","code":"203","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"eb716c3b-89e2-529c-a558-ca340a332486","name":"Switzerland","deprecated":true,"iso3":"CHE","iso2":"CH","code":"756","type":"country"},{"id":"089c406e-a4ff-52ae-9672-73a1bdf5a396","name":"Belarus","deprecated":true,"iso3":"BLR","iso2":"BY","code":"112","type":"country"},{"id":"3dfcd86f-2e29-59f7-9e44-27fe038c51a6","name":"Bulgaria","deprecated":false,"iso3":"BGR","iso2":"BG","code":"100","type":"country"},{"id":"8c299df7-5229-5596-963c-04cb2b46d34d","name":"Belgium","deprecated":true,"iso3":"BEL","iso2":"BE","code":"056","type":"country"},{"id":"fc99ebdb-5c82-5819-979d-d8f6310351af","name":"Bosnia and Herzegovina","deprecated":true,"iso3":"BIH","iso2":"BA","code":"070","type":"country"},{"id":"588e4f19-dfac-5134-98c1-c1cafee86399","name":"Åland","deprecated":false,"iso3":"ALA","iso2":"AX","code":"248","type":"country"},{"id":"67f08133-23b8-52ac-8436-41d77a2eebfb","name":"Austria","deprecated":false,"iso3":"AUT","iso2":"AT","code":"040","type":"country"},{"id":"28e90dfc-6bc0-556c-a014-d0dc49366442","name":"Albania","deprecated":true,"iso3":"ALB","iso2":"AL","code":"008","type":"country"}],"countryCodes":["0","336","804","674","703","744","705","752","643","688","642","620","616","578","528","470","807","499","498","492","428","442","440","438","832","380","352","833","372","348","191","300","292","831","826","250","234","246","724","233","208","276","203","196","756","112","100","056","070","248","040","008"]},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"}]}],"sourcePorts":[{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false},{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false}],"destinationPorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"users":[{"id":"17d2b0ac-fadf-5313-92e5-42fb1968a45b","name":"User Group 9","realmName":"mislebvaccop","type":"trafficusergroup","realmId":2,"version":"tokinedapu"},{"id":"56333652-27c4-5f8b-a6b4-d6f92023c62f","name":"User Group 27","realmName":"ecfomeov","type":"trafficusergroup","realmId":2,"version":"nemawpopew"},{"id":"ee881dbe-33b7-559b-a776-101d11357429","name":"User 2","realmName":"enrinkimu","type":"trafficuser","realmId":2,"version":"nibnajomjo"}],"embeddedAppFilter":{"conditions":[{"filter":"mutilaje","tags":[{"id":"df3a88b5-3e3b-5024-9d9f-25d3262ce374","version":"b689fe7b-2b28-59fb-93cf-3995fe189cf1","appId":3,"name":"ApplicationTag15","description":"Ofihzaj hesa do dawo mipegil bilel liviip mub zahtavso rut nu zaj weuki dep suspufun ac rap.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"415702f2-3bd8-5dba-adea-dd03452067a5","version":"1062501a-214c-51d1-9af3-d9c2ca87588f","appId":4,"name":"ApplicationCategory11","description":"Dubofmih taj cukij fes vizoc urzip lazigeha pot bak jackoaz ufi ebomujme ce.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"loweteziwno","tags":[{"id":"11d43e11-683f-5ec2-89c6-6b4e9a8c756d","version":"13924388-a6d9-5f80-8b3b-825736afd2bc","appId":13,"name":"ApplicationTag13","description":"Fiwjag safe jujohmi lipa gucpi la tocgomkap fozensir jafuhi vutbinij jov lifo ciduwno fuzegvef consibe hope.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"ce7e9199-db5d-5032-a961-448184ab75ae","version":"1e2955c1-3f40-5f65-a370-5019e41f9ecb","name":"ApplicationFilter14","description":"Acadewlot tol nake cabe ra ecvimza dafouvo wiko mipuzol igozat egara vuj hic cugcono juvi ujmid bonlor.","applications":[{"id":"6361bd7f-01c9-5714-baca-035d66f50a8c","version":"50dcdb47-5d21-537f-b3b0-81713bf31c06","description":"Leku luto lofuwec wuwguhot abmofdo cun vuunuvi lulsoteg kivsas mijmi ru kipumeja sacwuwhe gub magumera.","deprecated":false,"appId":5,"productivity":0,"risk":4,"name":"Application5","tagIds":["0b45de63-5252-5257-acf6-ce494cdb905a"],"tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"},{"id":"ce901dd3-4e85-5bf0-a273-2018d76527c8","version":"84a4f0c6-57b3-50f3-bf20-0cf68bbbb806","description":"Gipus bovawge vel ceoziwo nuim ehdifir nowe onoli atsewav irfer semowi ge turos mufo tahukca jaz.","deprecated":true,"appId":5,"productivity":0,"risk":2,"name":"Application2","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["1323d445-72c0-5d8b-9f58-c223feb51bac","328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"1323d445-72c0-5d8b-9f58-c223feb51bac","version":"f85374d2-b1c5-5e65-b746-77dc6a21decb","appId":7,"name":"ApplicationCategory14","description":"Ohoad agoteveto irewomi adizogo lurtoop tizesuca himewwak poftoj cow nunapivif cisge pe hi raam hatdunze.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"44b7bb09-58d5-59ef-abd3-7341fa4d1c7b","version":"fe155cb3-e78d-5a5b-8713-5c056c0ea86f","description":"Dazgo jefeci dulhel lowez cotgo mu ewuufih indeh bo urjur vursosoc cetco eb.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application3","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","0928e8e9-25a4-53d0-b118-342a26b44100"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"bba3c76d-8a74-5ec9-9bc5-df3008b85742","version":"uwofikigom","name":"UrlGroup2","description":"Eze zuj difruw namoha pu nijizkam owitema konho upi neppo fikcebzi hub zadouf sautiar.","objects":[{"id":"00abb7ee-65e7-5e3e-99f7-9800c0af349c","version":"bogoprobifi","name":"Url15","description":"Mok ujci zasidrob zo man urebanfir gim faseg hacabkuw gi jorabco bitle bek.","url":"http://nufiwow.net/mimce","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"ef32d255-d7f2-55c3-ac8a-25c27380c78e","version":"62783416-3b76-5da2-a832-2ea8ba99f299","name":"UrlCategory-14","deprecated":false,"urlCategoryId":14,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN30","name":"Security Over Connectivity","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30/rules/"}},"description":"Security Over Connectivity Layer","type":"intrusionpolicy","version":"fc826c33-84fb-5b14-96e5-0cdd4717c442"},"filePolicy":{"id":"fdae5632-c7d6-5dce-b95f-40b7c96b2a3d","type":"filepolicy","policyType":"CLOUD_LOOKUP_ALL","name":"File_Policy_2","description":"Tifeluw gag hos javfow rubin migapmom zab murizu pi we suvos ar sic zujizut si nah lephaflef.","version":"8009f4f9-d3bd-5991-acc5-c2eb5550c013"},"logFiles":false,"type":"accessrule"},{"id":"f55ec17e-8a16-54f8-a6f2-eb512582e348","version":"9399d9ac-92ff-5808-98cb-105aae7c9ac6","ruleId":23,"name":"Access_Rule_23","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"09f3a905-0006-55c6-b976-75ae33bc447c","version":"e2c4d03e-07e8-5b55-9078-0ad7e2389d42","host":"166.248.195.69","port":5897,"protocol":"TCP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"9c8667b7-4e34-56df-b092-1340af45b0d2","name":"SecurityZone10Name","description":"Joni gagko ugmucba ogparjad uvre hobneva wete epujein nelgidma kuollum wi gabvanaj sosso.","version":"bc2e044f-1753-51e2-aa7a-ea7362c6b23b","interfaces":[{"mtu":5818,"enabled":false,"description":"Rojsitepo fifgar sovaf ebabovvoj ivjinjig ite sadehtud upazeh dejsabfuv tipgo cosbe femigpi ac aztazta beduw.","id":"fa3dc115-5c3e-51ae-aa38-60ff9abd415a","hardwareName":"GigabitEthernet1/7","macAddress":"55F1.B70C.C1B7","monitorInterface":false,"standbyMacAddress":"B24B.66FA.3266","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"29df:8589:549c:1eef:cc3a:60bf:e04c:3627/32","ipAddress":"afd9:ec18:e2d8:02b5:d0fb:e88c:cea2:e443/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"1a98:7998:35a2:1767:f8b7:fea5:dc50:6a35","ipAddress":"2365:d545:9cd1:ab13:70c3:7177:cd7b:749e"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"135.29.245.249","standbyIpAddress":"74.247.146.212"}},"version":"143d2951-eca6-58fa-b11e-89d0e27b913c","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":2652,"enabled":false,"description":"Cacfi rijgebpuj hotow vu jisfesgub os biami baajo cimod totufo cajip epkaeg ezeugpek ucifulo huzdeal.","name":"subinterface8name","id":"90da9e2e-5eb1-5d7f-95cf-8759bf36f644","hardwareName":"SubInterface0/8.9","macAddress":"8C77.2E4D.7213","monitorInterface":false,"standbyMacAddress":"32AD.D756.5E62","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1ca8:b55c:d9ed:3be2:2955:da65:a52c:d0fc/32","ipAddress":"085b:3c0e:113f:ccef:6d12:cb57:ef1d:431d/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3025:32ff:78fb:37e2:42a3:8d40:64ee:e93e","ipAddress":"7aea:6aed:7d14:3ac6:df8b:0446:5b7d:f55f"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"225.196.76.214","standbyIpAddress":"62.250.115.23"}},"version":"4e59e028-4b81-5f28-9fbf-6033fd2394b8","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"83e3721c-b23f-5eb1-b660-40655c216680","name":"SecurityZone9Name","description":"Iha kiuh ja iweacce tuh hajmipjuj fikufuv bofijwi esede tu gahak wenab belif lupilsif udo puzabke ferfa ofwon.","version":"17150a55-f982-526f-aa60-9e435d2c5455","interfaces":[{"mtu":5818,"enabled":true,"description":"Wabjenuv vuhtevguf zucce omiogu anitug cuho gaejma vesumob oduuro levhid uniozwej olkavcuv dawiim mehub wuka suj.","id":"3faf4981-2b04-5091-9c1f-fa0ab78379b4","hardwareName":"GigabitEthernet1/5","macAddress":"7472.5071.519E","monitorInterface":false,"standbyMacAddress":"5387.1EFE.E0E6","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"84c0:cd09:bceb:ce0c:5cfa:f535:d426:01db/32","ipAddress":"067a:e7f9:1bf0:6af4:b89b:4c11:ec0c:51b4/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"02eb:e82a:bb44:e0a0:d969:6055:6744:cfa2","ipAddress":"aa33:0271:1f23:9725:0d24:7767:0fd2:0cf8"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"6.124.202.116","standbyIpAddress":"40.108.171.23"}},"version":"472d2c22-e548-5cb1-983f-f81ee3e14422","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"e960df5e-1ab8-5a15-85e5-a7a47f0ebcb0","name":"SecurityZone5Name","description":"Kinen aziheeci teniow ucezaw idikaki rupbu tieb rawihzec ufkedok iwewun le zihpisze vuzip roetjim fokbuwu jemrumvu cigzet.","version":"0925128c-48f1-552e-8507-379551253d9c","interfaces":[{"mtu":2652,"enabled":true,"description":"Hi vihjuup vueji zufmab wib zel woz ligok wu hi iremouto wahoato.","name":"subinterface5name","id":"9f816351-560c-5e5b-ba0a-2051828301e6","hardwareName":"SubInterface0/5.6","macAddress":"84F0.8C6A.D6DF","monitorInterface":true,"standbyMacAddress":"0971.695D.7024","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e20a:2b14:aecc:7997:984d:9fcd:b3c4:2e66/32","ipAddress":"5753:596d:3c86:ab69:1e26:fa83:c032:8e71/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"44d8:5ccd:bbcd:60df:d35b:afb7:6211:375b","ipAddress":"7b7c:0b52:9938:5274:ef02:b8c5:577c:5028"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"119.148.92.111","standbyIpAddress":"106.21.74.31"}},"version":"7a7c4c69-3da2-5e43-a1f3-2f8026bfb0bd","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"3874f4b6-8aea-56e2-8943-0d7804be6180","name":"Geolocation13","description":"Ufijaduj kodzoc epejeh dutab cuibaem jinboge kagnohip pihmarzi hotibsi uluuz sobgeke ric pe pepekjuk eksis voc mehrufoje gobogvug.","version":"d637b478-9ec9-5fba-bc9a-efe4cc2c5bd1","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"c73e21a5-7336-58ba-9d53-a3d2eb1e1fdd","name":"Chile","deprecated":true,"iso3":"CHL","iso2":"CL","code":"152","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"}]}],"destinationNetworks":[{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"3874f4b6-8aea-56e2-8943-0d7804be6180","name":"Geolocation13","description":"Ufijaduj kodzoc epejeh dutab cuibaem jinboge kagnohip pihmarzi hotibsi uluuz sobgeke ric pe pepekjuk eksis voc mehrufoje gobogvug.","version":"d637b478-9ec9-5fba-bc9a-efe4cc2c5bd1","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"3e0ee5a1-a07b-52c0-b62c-a470c4269802","name":"Italy","deprecated":false,"iso3":"ITA","iso2":"IT","code":"380","type":"country"},{"id":"c73e21a5-7336-58ba-9d53-a3d2eb1e1fdd","name":"Chile","deprecated":true,"iso3":"CHL","iso2":"CL","code":"152","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"}]}],"sourcePorts":[{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}],"destinationPorts":[{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false},{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true}],"users":[{"id":"cdaaabcc-950f-5c26-82dc-407ab8ef9fc6","name":"User Group 30","realmName":"borluclumaga","type":"trafficusergroup","realmId":2,"version":"heznapijma"},{"id":"4cfa5549-4e3c-518e-a754-cda57317bbd8","name":"User Group 6","realmName":"mokodozmov","type":"trafficusergroup","realmId":2,"version":"korgepezfa"},{"id":"19329003-b80c-51e0-9c5e-b210e6102c0a","name":"User 34","realmName":"uraapimozocu","type":"trafficuser","realmId":0,"version":"asdebjiat"}],"embeddedAppFilter":{"conditions":[{"filter":"huimezuben","tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"},{"filter":"rapfosapi","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"415702f2-3bd8-5dba-adea-dd03452067a5","version":"1062501a-214c-51d1-9af3-d9c2ca87588f","appId":4,"name":"ApplicationCategory11","description":"Dubofmih taj cukij fes vizoc urzip lazigeha pot bak jackoaz ufi ebomujme ce.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"ce7e9199-db5d-5032-a961-448184ab75ae","version":"1e2955c1-3f40-5f65-a370-5019e41f9ecb","name":"ApplicationFilter14","description":"Acadewlot tol nake cabe ra ecvimza dafouvo wiko mipuzol igozat egara vuj hic cugcono juvi ujmid bonlor.","applications":[{"id":"6361bd7f-01c9-5714-baca-035d66f50a8c","version":"50dcdb47-5d21-537f-b3b0-81713bf31c06","description":"Leku luto lofuwec wuwguhot abmofdo cun vuunuvi lulsoteg kivsas mijmi ru kipumeja sacwuwhe gub magumera.","deprecated":false,"appId":5,"productivity":0,"risk":4,"name":"Application5","tagIds":["0b45de63-5252-5257-acf6-ce494cdb905a"],"tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"},{"id":"ce901dd3-4e85-5bf0-a273-2018d76527c8","version":"84a4f0c6-57b3-50f3-bf20-0cf68bbbb806","description":"Gipus bovawge vel ceoziwo nuim ehdifir nowe onoli atsewav irfer semowi ge turos mufo tahukca jaz.","deprecated":true,"appId":5,"productivity":0,"risk":2,"name":"Application2","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["1323d445-72c0-5d8b-9f58-c223feb51bac","328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"1323d445-72c0-5d8b-9f58-c223feb51bac","version":"f85374d2-b1c5-5e65-b746-77dc6a21decb","appId":7,"name":"ApplicationCategory14","description":"Ohoad agoteveto irewomi adizogo lurtoop tizesuca himewwak poftoj cow nunapivif cisge pe hi raam hatdunze.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"c51fa076-7516-5b1a-b689-87d5d4dd6656","version":"71b129f0-e504-5ee0-85b0-3d683c7fbc85","description":"Fishak luksa juw magaldi igo kaipojo vifpok jarado fefadkiw keogo mow kojepoha bonewke hobomag vo gi om tam.","deprecated":false,"appId":4,"productivity":1,"risk":3,"name":"Application4","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009","63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","33552c21-0930-5bb5-8459-9b7608cda68e"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ef71cd89-a0fc-5994-aaff-0f427dff92fa","version":"pugvagpugmi","name":"UrlGroup5","description":"Muhzipil korezoki kuwelas fojulcud jum ineteig ob zeluc mekpufes api ajnovawa ro tadi.","objects":[{"id":"0776578c-c6ee-58a3-91de-7d50b64343b8","version":"bimupair","name":"Url7","description":"Mer komad cozmersul el gaze fupfod gij pikukkop kavimgen befowez guwojo bikpogezu ice niruvpo ganal ovo taun.","url":"http://difepfel.io/ovcekwe","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"a7bc6deb-1544-59dd-b3c9-f0ff4f94d9aa","version":"46f1e31b-7fee-54bc-a10f-54e97745d47f","name":"UrlCategory-15","deprecated":false,"urlCategoryId":15,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN30","name":"Security Over Connectivity","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30/rules/"}},"description":"Security Over Connectivity Layer","type":"intrusionpolicy","version":"fc826c33-84fb-5b14-96e5-0cdd4717c442"},"filePolicy":{"id":"e5f42e5a-0e3d-5492-ad97-1db09ef14605","type":"filepolicy","policyType":"BLOCK_OFFICE_DOCUMENTS_UPLOAD_BLOCK_MALWARE_OTHERS","name":"File_Policy_4","description":"Ju ihgufnaj ve gargeoz unatub asiuj ra dag pino jecob ane luno mubud emapod.","version":"55282093-0a9c-5a43-89ed-3d9b9c708952"},"logFiles":false,"type":"accessrule"},{"id":"cf9d5435-2c8c-57cb-9459-4f9207cdaaad","version":"bc5446cb-dad0-5898-9f01-6366253039f7","ruleId":24,"name":"Access_Rule_24","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_NONE","sourceZones":[{"id":"340bf250-a4a5-5049-bddf-a6201a9b8e86","name":"SecurityZone7Name","description":"So gitejipo sotvotdab watu la ica fojum dorog odohog mil etuw ta daghavke dig.","version":"273d67ab-abb9-5af1-8574-3e9af6e98aed","interfaces":[{"mtu":2652,"enabled":false,"description":"Wa cep gi lankowtu ce uvujed tad wo vezke vib vezvufgev hun vob velumde.","name":"subinterface11name","id":"ffc74b4d-ad27-5459-9907-186a8c739189","hardwareName":"SubInterface0/11.12","macAddress":"1534.AB09.4146","monitorInterface":true,"standbyMacAddress":"CF72.BDFB.98A1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"fafb:559d:106d:67ac:52dd:e182:d306:4792/32","ipAddress":"a7bd:69ea:f24f:04ea:40c5:3f80:0416:0f09/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d544:6d26:411c:e460:9911:cb8b:ca9e:3a15","ipAddress":"f96f:858d:9ed1:fc9f:7b47:0fb4:246d:6cb6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"17.76.225.83","standbyIpAddress":"195.253.157.229"}},"version":"e22e21d2-9d64-51a4-adc2-a775a4572916","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"aff2c9fc-0b0e-58f4-b418-5ccd970fd67f","name":"SecurityZone11Name","description":"Nued mos di majri nih ebhebe desalu ivif novrove razjihew kepfa okforec lajatet sifu fa.","version":"d334e386-a53c-5345-9181-d20421a28e34","interfaces":[{"mtu":5818,"enabled":true,"description":"Ke vuhdojos zudgopa seto bere refcengo he camohpik pir risvup pum omhos zalpe sukjo rufe.","id":"2cf6e4b9-0bf0-5d7d-9110-6ab397d400a4","hardwareName":"GigabitEthernet1/4","macAddress":"0ABE.1A2F.DC3A","monitorInterface":false,"standbyMacAddress":"6057.AC6B.C47F","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"6d9d:2a5c:831a:6482:0268:e3fe:244e:1c1c/32","ipAddress":"c4fb:ea12:d0f3:42e4:10ed:e3f4:8e5a:6c9a/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"77f1:3852:307c:1449:a914:b786:3831:5ed1","ipAddress":"9eee:0707:2706:edd3:22f1:30d5:52f1:39fb"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"51.99.206.42","standbyIpAddress":"138.81.67.160"}},"version":"365fb3c7-62eb-5a7d-a412-b1cb7a387375","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"e12d0a2e-afc7-53cb-85e7-38aa135de327","name":"SecurityZone13Name","description":"Do tewuznas ucait mad ziwgef iw unjup guzov dize guzut vibuk anpekpib nerviw ip ijpa koruf.","version":"09dc0dd3-4a94-5cf2-9efb-89a0f352e003","interfaces":[{"mtu":2652,"enabled":true,"description":"Agi pobjotu zukac rive putsi herima mepues ezijo wicimub utjamoj noskavup wupoje ra dujipale.","name":"subinterface2name","id":"353dee59-d2b6-5df6-9b8e-4f444b489176","hardwareName":"SubInterface0/2.3","macAddress":"EDB8.12E9.D2DB","monitorInterface":false,"standbyMacAddress":"5667.5103.F034","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"2647:2aea:3fdf:b4cc:6433:554a:6ab5:c594/32","ipAddress":"04f0:7320:ae63:ce9f:664b:c7e3:8867:daa9/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3d77:5e5d:78ec:d370:2293:4026:1bbb:aee3","ipAddress":"e6eb:6fef:da47:e1c1:1523:464b:1cab:92a1"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.88.118.226","standbyIpAddress":"17.135.120.105"}},"version":"82ce2f08-42bf-5b19-bbbb-0c4ef276caa0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"884f239a-2976-5e8e-9cb5-5aeb31fc1554","name":"Network15","description":"Rad ladfevhez vucvibbu omeheh hi rulsusva nut diw sikeznag ehazelu witam tocrah irca wavegezi na nidmimle.","version":"7c7865f0-2dcd-5833-a31b-7fe684b3c2ff","type":"networkobject","subType":"HOST","value":"80.87.24.187","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"5a766770-58da-53fa-b75a-e192251ed737","name":"Geolocation15","description":"Gu titlu ginpokiv li tetzu cihet bov ir of ka gap osu zujoibi wilkub gaw vinaci luho.","version":"c930d743-98fa-5671-98d8-f0d9a90962a6","type":"geolocation","locations":[{"id":"56ea454f-c3b7-5928-88b1-fc3c7937519a","name":"Africa","deprecated":true,"code":1001,"type":"continent","countries":[{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"},{"id":"7cd6bf9c-8b69-57c2-abf6-6eeb0741de15","name":"Zambia","deprecated":true,"iso3":"ZMB","iso2":"ZM","code":"894","type":"country"},{"id":"f2d94483-8127-5b5c-9f56-26897f391615","name":"South Africa","deprecated":false,"iso3":"ZAF","iso2":"ZA","code":"710","type":"country"},{"id":"67312148-f472-5f74-af7e-da0dfe6c5483","name":"Mayotte","deprecated":true,"iso3":"MYT","iso2":"YT","code":"175","type":"country"},{"id":"16d66ae1-8a56-5b81-8a83-6f7123be2e2c","name":"Uganda","deprecated":false,"iso3":"UGA","iso2":"UG","code":"800","type":"country"},{"id":"b1825e78-1df2-5592-a76e-7442de702238","name":"Tanzania","deprecated":false,"iso3":"TZA","iso2":"TZ","code":"834","type":"country"},{"id":"34105ec6-4fd5-5617-8a55-a033b433501b","name":"Tunisia","deprecated":false,"iso3":"TUN","iso2":"TN","code":"788","type":"country"},{"id":"00827e94-7231-522b-a92c-c43381c394b0","name":"Togo","deprecated":true,"iso3":"TGO","iso2":"TG","code":"768","type":"country"},{"id":"5b1f4a78-73fb-5d81-b087-a43e6a56210e","name":"Chad","deprecated":true,"iso3":"TCD","iso2":"TD","code":"148","type":"country"},{"id":"4390d558-ea24-5aab-92ed-7ea167512925","name":"Swaziland","deprecated":false,"iso3":"SWZ","iso2":"SZ","code":"748","type":"country"},{"id":"22e9a10d-c048-5bce-92b3-d35ba32a2380","name":"São Tomé and Príncipe","deprecated":false,"iso3":"STP","iso2":"ST","code":"678","type":"country"},{"id":"175e350b-3e7b-5988-92a5-b8592f89a5d0","name":"South Sudan","deprecated":true,"iso3":"SSD","iso2":"SS","code":"728","type":"country"},{"id":"408c17e6-3750-56ba-b74d-14cece756b69","name":"Somalia","deprecated":false,"iso3":"SOM","iso2":"SO","code":"706","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"},{"id":"81415c05-a391-5182-8902-0f48ee21358a","name":"Sierra Leone","deprecated":true,"iso3":"SLE","iso2":"SL","code":"694","type":"country"},{"id":"50c46fa0-0451-5e15-9bbc-846a527de114","name":"Saint Helena","deprecated":true,"iso3":"SHN","iso2":"SH","code":"654","type":"country"},{"id":"c2a050bc-b370-5bcd-945c-cd0d88d814ee","name":"Sudan","deprecated":false,"iso3":"SDN","iso2":"SD","code":"729","type":"country"},{"id":"2792902e-5e01-5294-bd39-4a9b86443f69","name":"Seychelles","deprecated":false,"iso3":"SYC","iso2":"SC","code":"690","type":"country"},{"id":"e6e6e19f-26b3-53cc-ae5c-ad6af73ffa23","name":"Rwanda","deprecated":false,"iso3":"RWA","iso2":"RW","code":"646","type":"country"},{"id":"1657adab-03a4-556a-b779-d62bf356497f","name":"Réunion","deprecated":true,"iso3":"REU","iso2":"RE","code":"638","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"271aded5-deef-50b9-9e02-ec55543da25b","name":"Niger","deprecated":true,"iso3":"NER","iso2":"NE","code":"562","type":"country"},{"id":"a8f12931-d0a3-5ead-b8f7-26c9d8e29684","name":"Namibia","deprecated":false,"iso3":"NAM","iso2":"NA","code":"516","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"26316b70-a4e5-5ee7-9176-d8f88977ac81","name":"Malawi","deprecated":false,"iso3":"MWI","iso2":"MW","code":"454","type":"country"},{"id":"8ac5e628-88fe-5a8f-a8e8-5e9823bed8c9","name":"Mauritius","deprecated":true,"iso3":"MUS","iso2":"MU","code":"480","type":"country"},{"id":"6286246a-cb95-57c8-bf4d-85524e069dc9","name":"Mauritania","deprecated":false,"iso3":"MRT","iso2":"MR","code":"478","type":"country"},{"id":"9eaf4ef5-fcd1-55b8-b344-7b60f9acbb2a","name":"Mali","deprecated":true,"iso3":"MLI","iso2":"ML","code":"466","type":"country"},{"id":"3158c9ea-2e08-5057-923c-a252e9bbceb5","name":"Madagascar","deprecated":true,"iso3":"MDG","iso2":"MG","code":"450","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"},{"id":"b82c039e-20c2-50f0-9176-307e154d19cd","name":"Lesotho","deprecated":true,"iso3":"LSO","iso2":"LS","code":"426","type":"country"},{"id":"936e5855-cede-5036-b530-4a8dc3ded9f1","name":"Liberia","deprecated":true,"iso3":"LBR","iso2":"LR","code":"430","type":"country"},{"id":"781554f5-83af-5829-a0b1-f679ccadcbc8","name":"Comoros","deprecated":true,"iso3":"COM","iso2":"KM","code":"174","type":"country"},{"id":"ef9608a5-3398-5610-9770-361e8f4d5018","name":"Kenya","deprecated":false,"iso3":"KEN","iso2":"KE","code":"404","type":"country"},{"id":"7ff14832-3c58-5e8d-b6fa-7d211d0eddea","name":"Guinea-Bissau","deprecated":true,"iso3":"GNB","iso2":"GW","code":"624","type":"country"},{"id":"24ef0507-02b5-58d8-a403-8087853d0d0e","name":"Equatorial Guinea","deprecated":false,"iso3":"GNQ","iso2":"GQ","code":"226","type":"country"},{"id":"8b2e1fe0-df59-514f-8cad-46e618371f10","name":"Guinea","deprecated":false,"iso3":"GIN","iso2":"GN","code":"324","type":"country"},{"id":"2311d16e-f8c8-5db8-9446-ddc015dee026","name":"Gambia","deprecated":true,"iso3":"GMB","iso2":"GM","code":"270","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"},{"id":"1a6265f3-08ce-57c4-9d8d-8807bc7c3f96","name":"Gabon","deprecated":true,"iso3":"GAB","iso2":"GA","code":"266","type":"country"},{"id":"7466e390-4ac7-5c6e-8ae7-cffbf4d26761","name":"Ethiopia","deprecated":false,"iso3":"ETH","iso2":"ET","code":"231","type":"country"},{"id":"1b6630d5-2650-5baf-b9a5-fa59fbbd36be","name":"Eritrea","deprecated":false,"iso3":"ERI","iso2":"ER","code":"232","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"bd6f190e-df1a-568c-94cc-8fbb7394522f","name":"Algeria","deprecated":false,"iso3":"DZA","iso2":"DZ","code":"012","type":"country"},{"id":"9c992f6e-72f5-5d6b-8fb9-b23909129b08","name":"Djibouti","deprecated":true,"iso3":"DJI","iso2":"DJ","code":"262","type":"country"},{"id":"63696b95-bded-58f4-8b4e-402397cfcd8a","name":"Cape Verde","deprecated":true,"iso3":"CPV","iso2":"CV","code":"132","type":"country"},{"id":"6d854d95-e91f-53cb-a1f2-1e07d51eb137","name":"Cameroon","deprecated":false,"iso3":"CMR","iso2":"CM","code":"120","type":"country"},{"id":"e8286886-6019-50d6-b0b4-315f7b9f2cef","name":"Ivory Coast","deprecated":false,"iso3":"CIV","iso2":"CI","code":"384","type":"country"},{"id":"97916595-e2d1-5214-87e2-e242bf4ad893","name":"Republic of the Congo","deprecated":false,"iso3":"COG","iso2":"CG","code":"178","type":"country"},{"id":"b1b8664b-d80d-5480-9b9a-a1ac997bd533","name":"Central African Republic","deprecated":false,"iso3":"CAF","iso2":"CF","code":"140","type":"country"},{"id":"8789e5fc-90ef-5dc5-942f-1f0f6bef20e2","name":"Democratic Republic of the Congo","deprecated":false,"iso3":"COD","iso2":"CD","code":"180","type":"country"},{"id":"e8bab11d-42db-5ff0-a68d-81d7fdae7000","name":"Botswana","deprecated":false,"iso3":"BWA","iso2":"BW","code":"072","type":"country"},{"id":"74442316-edea-5c33-9f4e-de1677f848a1","name":"Benin","deprecated":true,"iso3":"BEN","iso2":"BJ","code":"204","type":"country"},{"id":"a666ef14-444e-5605-add7-3a1a1bf028d6","name":"Burundi","deprecated":true,"iso3":"BDI","iso2":"BI","code":"108","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"}],"countryCodes":["716","894","710","175","800","834","788","768","148","748","678","728","706","686","694","654","729","690","646","638","566","562","516","508","454","480","478","466","450","504","434","426","430","174","404","624","226","324","270","288","266","231","232","732","818","012","262","132","120","384","178","140","180","072","204","108","854","024"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"9cd8a90c-1915-51dc-978b-b35c591d11c0","name":"Barbados","deprecated":false,"iso3":"BRB","iso2":"BB","code":"052","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"}]}],"destinationNetworks":[{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"884f239a-2976-5e8e-9cb5-5aeb31fc1554","name":"Network15","description":"Rad ladfevhez vucvibbu omeheh hi rulsusva nut diw sikeznag ehazelu witam tocrah irca wavegezi na nidmimle.","version":"7c7865f0-2dcd-5833-a31b-7fe684b3c2ff","type":"networkobject","subType":"HOST","value":"80.87.24.187","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"5a766770-58da-53fa-b75a-e192251ed737","name":"Geolocation15","description":"Gu titlu ginpokiv li tetzu cihet bov ir of ka gap osu zujoibi wilkub gaw vinaci luho.","version":"c930d743-98fa-5671-98d8-f0d9a90962a6","type":"geolocation","locations":[{"id":"56ea454f-c3b7-5928-88b1-fc3c7937519a","name":"Africa","deprecated":true,"code":1001,"type":"continent","countries":[{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"},{"id":"7cd6bf9c-8b69-57c2-abf6-6eeb0741de15","name":"Zambia","deprecated":true,"iso3":"ZMB","iso2":"ZM","code":"894","type":"country"},{"id":"f2d94483-8127-5b5c-9f56-26897f391615","name":"South Africa","deprecated":false,"iso3":"ZAF","iso2":"ZA","code":"710","type":"country"},{"id":"67312148-f472-5f74-af7e-da0dfe6c5483","name":"Mayotte","deprecated":true,"iso3":"MYT","iso2":"YT","code":"175","type":"country"},{"id":"16d66ae1-8a56-5b81-8a83-6f7123be2e2c","name":"Uganda","deprecated":false,"iso3":"UGA","iso2":"UG","code":"800","type":"country"},{"id":"b1825e78-1df2-5592-a76e-7442de702238","name":"Tanzania","deprecated":false,"iso3":"TZA","iso2":"TZ","code":"834","type":"country"},{"id":"34105ec6-4fd5-5617-8a55-a033b433501b","name":"Tunisia","deprecated":false,"iso3":"TUN","iso2":"TN","code":"788","type":"country"},{"id":"00827e94-7231-522b-a92c-c43381c394b0","name":"Togo","deprecated":true,"iso3":"TGO","iso2":"TG","code":"768","type":"country"},{"id":"5b1f4a78-73fb-5d81-b087-a43e6a56210e","name":"Chad","deprecated":true,"iso3":"TCD","iso2":"TD","code":"148","type":"country"},{"id":"4390d558-ea24-5aab-92ed-7ea167512925","name":"Swaziland","deprecated":false,"iso3":"SWZ","iso2":"SZ","code":"748","type":"country"},{"id":"22e9a10d-c048-5bce-92b3-d35ba32a2380","name":"São Tomé and Príncipe","deprecated":false,"iso3":"STP","iso2":"ST","code":"678","type":"country"},{"id":"175e350b-3e7b-5988-92a5-b8592f89a5d0","name":"South Sudan","deprecated":true,"iso3":"SSD","iso2":"SS","code":"728","type":"country"},{"id":"408c17e6-3750-56ba-b74d-14cece756b69","name":"Somalia","deprecated":false,"iso3":"SOM","iso2":"SO","code":"706","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"},{"id":"81415c05-a391-5182-8902-0f48ee21358a","name":"Sierra Leone","deprecated":true,"iso3":"SLE","iso2":"SL","code":"694","type":"country"},{"id":"50c46fa0-0451-5e15-9bbc-846a527de114","name":"Saint Helena","deprecated":true,"iso3":"SHN","iso2":"SH","code":"654","type":"country"},{"id":"c2a050bc-b370-5bcd-945c-cd0d88d814ee","name":"Sudan","deprecated":false,"iso3":"SDN","iso2":"SD","code":"729","type":"country"},{"id":"2792902e-5e01-5294-bd39-4a9b86443f69","name":"Seychelles","deprecated":false,"iso3":"SYC","iso2":"SC","code":"690","type":"country"},{"id":"e6e6e19f-26b3-53cc-ae5c-ad6af73ffa23","name":"Rwanda","deprecated":false,"iso3":"RWA","iso2":"RW","code":"646","type":"country"},{"id":"1657adab-03a4-556a-b779-d62bf356497f","name":"Réunion","deprecated":true,"iso3":"REU","iso2":"RE","code":"638","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"271aded5-deef-50b9-9e02-ec55543da25b","name":"Niger","deprecated":true,"iso3":"NER","iso2":"NE","code":"562","type":"country"},{"id":"a8f12931-d0a3-5ead-b8f7-26c9d8e29684","name":"Namibia","deprecated":false,"iso3":"NAM","iso2":"NA","code":"516","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"26316b70-a4e5-5ee7-9176-d8f88977ac81","name":"Malawi","deprecated":false,"iso3":"MWI","iso2":"MW","code":"454","type":"country"},{"id":"8ac5e628-88fe-5a8f-a8e8-5e9823bed8c9","name":"Mauritius","deprecated":true,"iso3":"MUS","iso2":"MU","code":"480","type":"country"},{"id":"6286246a-cb95-57c8-bf4d-85524e069dc9","name":"Mauritania","deprecated":false,"iso3":"MRT","iso2":"MR","code":"478","type":"country"},{"id":"9eaf4ef5-fcd1-55b8-b344-7b60f9acbb2a","name":"Mali","deprecated":true,"iso3":"MLI","iso2":"ML","code":"466","type":"country"},{"id":"3158c9ea-2e08-5057-923c-a252e9bbceb5","name":"Madagascar","deprecated":true,"iso3":"MDG","iso2":"MG","code":"450","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"},{"id":"b82c039e-20c2-50f0-9176-307e154d19cd","name":"Lesotho","deprecated":true,"iso3":"LSO","iso2":"LS","code":"426","type":"country"},{"id":"936e5855-cede-5036-b530-4a8dc3ded9f1","name":"Liberia","deprecated":true,"iso3":"LBR","iso2":"LR","code":"430","type":"country"},{"id":"781554f5-83af-5829-a0b1-f679ccadcbc8","name":"Comoros","deprecated":true,"iso3":"COM","iso2":"KM","code":"174","type":"country"},{"id":"ef9608a5-3398-5610-9770-361e8f4d5018","name":"Kenya","deprecated":false,"iso3":"KEN","iso2":"KE","code":"404","type":"country"},{"id":"7ff14832-3c58-5e8d-b6fa-7d211d0eddea","name":"Guinea-Bissau","deprecated":true,"iso3":"GNB","iso2":"GW","code":"624","type":"country"},{"id":"24ef0507-02b5-58d8-a403-8087853d0d0e","name":"Equatorial Guinea","deprecated":false,"iso3":"GNQ","iso2":"GQ","code":"226","type":"country"},{"id":"8b2e1fe0-df59-514f-8cad-46e618371f10","name":"Guinea","deprecated":false,"iso3":"GIN","iso2":"GN","code":"324","type":"country"},{"id":"2311d16e-f8c8-5db8-9446-ddc015dee026","name":"Gambia","deprecated":true,"iso3":"GMB","iso2":"GM","code":"270","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"},{"id":"1a6265f3-08ce-57c4-9d8d-8807bc7c3f96","name":"Gabon","deprecated":true,"iso3":"GAB","iso2":"GA","code":"266","type":"country"},{"id":"7466e390-4ac7-5c6e-8ae7-cffbf4d26761","name":"Ethiopia","deprecated":false,"iso3":"ETH","iso2":"ET","code":"231","type":"country"},{"id":"1b6630d5-2650-5baf-b9a5-fa59fbbd36be","name":"Eritrea","deprecated":false,"iso3":"ERI","iso2":"ER","code":"232","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"bd6f190e-df1a-568c-94cc-8fbb7394522f","name":"Algeria","deprecated":false,"iso3":"DZA","iso2":"DZ","code":"012","type":"country"},{"id":"9c992f6e-72f5-5d6b-8fb9-b23909129b08","name":"Djibouti","deprecated":true,"iso3":"DJI","iso2":"DJ","code":"262","type":"country"},{"id":"63696b95-bded-58f4-8b4e-402397cfcd8a","name":"Cape Verde","deprecated":true,"iso3":"CPV","iso2":"CV","code":"132","type":"country"},{"id":"6d854d95-e91f-53cb-a1f2-1e07d51eb137","name":"Cameroon","deprecated":false,"iso3":"CMR","iso2":"CM","code":"120","type":"country"},{"id":"e8286886-6019-50d6-b0b4-315f7b9f2cef","name":"Ivory Coast","deprecated":false,"iso3":"CIV","iso2":"CI","code":"384","type":"country"},{"id":"97916595-e2d1-5214-87e2-e242bf4ad893","name":"Republic of the Congo","deprecated":false,"iso3":"COG","iso2":"CG","code":"178","type":"country"},{"id":"b1b8664b-d80d-5480-9b9a-a1ac997bd533","name":"Central African Republic","deprecated":false,"iso3":"CAF","iso2":"CF","code":"140","type":"country"},{"id":"8789e5fc-90ef-5dc5-942f-1f0f6bef20e2","name":"Democratic Republic of the Congo","deprecated":false,"iso3":"COD","iso2":"CD","code":"180","type":"country"},{"id":"e8bab11d-42db-5ff0-a68d-81d7fdae7000","name":"Botswana","deprecated":false,"iso3":"BWA","iso2":"BW","code":"072","type":"country"},{"id":"74442316-edea-5c33-9f4e-de1677f848a1","name":"Benin","deprecated":true,"iso3":"BEN","iso2":"BJ","code":"204","type":"country"},{"id":"a666ef14-444e-5605-add7-3a1a1bf028d6","name":"Burundi","deprecated":true,"iso3":"BDI","iso2":"BI","code":"108","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"}],"countryCodes":["716","894","710","175","800","834","788","768","148","748","678","728","706","686","694","654","729","690","646","638","566","562","516","508","454","480","478","466","450","504","434","426","430","174","404","624","226","324","270","288","266","231","232","732","818","012","262","132","120","384","178","140","180","072","204","108","854","024"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"0613c448-b6b0-55f9-9ab0-81470a794905","name":"Vatican City","deprecated":false,"iso3":"VAT","iso2":"VA","code":"336","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"9cd8a90c-1915-51dc-978b-b35c591d11c0","name":"Barbados","deprecated":false,"iso3":"BRB","iso2":"BB","code":"052","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"}]}],"sourcePorts":[{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false},{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true}],"destinationPorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false}],"users":[{"id":"a132a804-ac81-53e7-ab7a-44da58c589e7","name":"User 1","realmName":"bunhatsopmi","type":"trafficuser","realmId":2,"version":"jibinumamu"},{"id":"4cfa5549-4e3c-518e-a754-cda57317bbd8","name":"User Group 6","realmName":"mokodozmov","type":"trafficusergroup","realmId":2,"version":"korgepezfa"},{"id":"5f80ddfc-d664-5a52-96d0-f26819061660","name":"User Group 28","realmName":"vewumnepim","type":"trafficusergroup","realmId":2,"version":"koccuhkasu"}],"embeddedAppFilter":{"conditions":[{"filter":"kazrutivni","tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"62bc5d56-7e60-5a71-a467-2c4f2a035a06","version":"e7e0ebc9-3a9a-5342-91e9-ae0ce54b3444","appId":12,"name":"ApplicationTag12","description":"Bamiwaga bo kek wawinta ovepozgan tibutef je kezaluk zonwoz fovul aw ter nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"d34fc0ae-3694-55ab-9ffc-19c66d834cb7","version":"4743a5f3-7dcb-5b78-afd0-0058ca39da4f","name":"ApplicationFilter8","description":"Putzo vowev ec namhilteg kedo jejes tudidan aju er ke deetopo peug ahi bagnuse bacivvep vosev to.","applications":[{"id":"d2f1b4a3-4704-59c8-9beb-dffb7ed07518","version":"b0a0aecb-aa27-5c7e-af44-3696768ae771","description":"Ruzik dat pimpe kinri teroh so ruwekat kikan fakajoz juk deb vusma iji madbizzoc carpecre moajiwa vojpi.","deprecated":true,"appId":2,"productivity":1,"risk":2,"name":"Application13","tagIds":["9b266171-0bc7-5f71-aa6c-44b8cbafa329"],"tags":[{"id":"9b266171-0bc7-5f71-aa6c-44b8cbafa329","version":"746ac683-b500-5781-b179-f61db662f8d3","appId":9,"name":"ApplicationTag9","description":"Ja lohivap wim saj zuw hinakug tiduze noemo azonimi ici kovaz ikuza wiihboz bubopmin la uge jeko.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["24cd3c21-8c19-531f-81d5-08aca7b587b9"],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"kaibaagiaze","tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"8f425fed-eadf-5687-8e75-9b4fe967fcc9","version":"91b94988-c56f-5a96-a552-c943995e0b82","description":"Aduuhi zinco zi larcacha pesu umetouki wet jikoh zu vi ot jelrevap.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application11","tagIds":["f7e90abe-ce71-56da-9f43-dd8685ec1a3a"],"tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5b6fae52-502e-50ff-921a-a7a474f7a857","33552c21-0930-5bb5-8459-9b7608cda68e"],"categories":[{"id":"5b6fae52-502e-50ff-921a-a7a474f7a857","version":"fb5f760a-3774-5c39-b306-9174ad3e3c0a","appId":7,"name":"ApplicationCategory6","description":"Wafekioke nozo tu fazif mef tuve rokpicfab maer cu vaz pibcub ifi so noho wazubta cewsinu hakoj.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"c8bde3f4-9a21-5a44-80db-baae419148f8","version":"bosavmojgeb","name":"UrlGroup9","description":"Zikaw kozicet agwihul jav eja acniiko hobi mogod ukkem ku irpec zen cijguh dabwuovu je sub.","objects":[{"id":"26cf0d0b-7575-594a-9c3b-9e17d5e24fbf","version":"sipugcocti","name":"Url6","description":"Etna gum cacu tin meehe hu cahfik kus supdeba irlohje hig rizhepzov vi togaofo los dujna her sipu.","url":"http://bejakuru.co.uk/ebkampaw","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"d8b59166-b6ce-5232-a41d-e67269d63bc7","name":"Suspicious sites","index":4,"startPercentage":21,"endPercentage":40,"version":"cf849fee-4718-503d-bccb-a9e5c26d78b6","type":"urlreputation"},"urlCategory":{"id":"3a94fe91-baa1-5666-a509-a616e42f8f66","version":"d7d497cd-7431-59ca-be9a-bff06b1aec95","name":"UrlCategory-5","deprecated":false,"urlCategoryId":5,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f6-fe55-11e4-8e99-ipsN10","name":"Connectivity Over Security","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10/rules/"}},"description":"Connectivity Over Security Layer","type":"intrusionpolicy","version":"f17dd031-7eba-5f6f-8734-300a871471fe"},"filePolicy":{"id":"fdae5632-c7d6-5dce-b95f-40b7c96b2a3d","type":"filepolicy","policyType":"CLOUD_LOOKUP_ALL","name":"File_Policy_2","description":"Tifeluw gag hos javfow rubin migapmom zab murizu pi we suvos ar sic zujizut si nah lephaflef.","version":"8009f4f9-d3bd-5991-acc5-c2eb5550c013"},"logFiles":false,"type":"accessrule"},{"id":"2618b259-e22c-57e2-a755-d2521adc5ebd","version":"9bc80c91-ff6c-5f9b-9f07-6ac3b152b6e0","ruleId":25,"name":"Access_Rule_25","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_NONE","sourceZones":[{"id":"0453e827-ea9e-5279-b45d-49df10666f7f","name":"SecurityZone14Name","description":"Kojugbel ram kucdowaf dozabace bagi vizlujva ibeali humupici apefin sig wiwdocduw halsoz.","version":"aaaea33f-d703-5f8e-9fb0-8647d4f28f12","interfaces":[{"mtu":2652,"enabled":true,"description":"Dijiz mavajmak suhihi ja piobba vigsasu pulasa heka lus nuapoap gar weuluvaz faf duke sojpov pamdaba juhoflon ugosum.","name":"subinterface4name","id":"80110552-0168-5ca1-9539-159176e34426","hardwareName":"SubInterface0/4.5","macAddress":"1753.227B.5D9A","monitorInterface":false,"standbyMacAddress":"FF7B.C256.4778","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1bb9:5d4d:1200:c9eb:97ff:589e:edd4:16e4/32","ipAddress":"eaba:377e:f390:0e98:800f:a6a7:5709:6b52/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"5189:1c32:5064:5495:0ecf:92dd:9175:944a","ipAddress":"479b:2e4a:a86f:13c2:425b:1e14:b1a3:ddfd"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"213.34.152.190","standbyIpAddress":"91.47.228.196"}},"version":"8bcf839f-438a-5cd4-99a7-b6f07ab652a0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Povlulmi maev usma nizguv ve win coocila colo dunde karib wadu ku huhakla kikel gas.","name":"subinterface13name","id":"edd991bd-6b34-5057-9389-003a56e10179","hardwareName":"SubInterface0/13.14","macAddress":"CC55.5B72.5979","monitorInterface":true,"standbyMacAddress":"9F25.7162.695C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0d43:9009:33b7:805f:2a41:1ed1:0ea0:3cd6/32","ipAddress":"e093:0b7d:4775:c0dc:8433:a3b6:1071:8974/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bf79:78d0:19ad:cc70:9f5b:5882:e462:ba1d","ipAddress":"5ffa:92d3:6efd:ef6f:c194:ff49:7d28:7d56"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"237.58.152.175","standbyIpAddress":"233.37.45.228"}},"version":"f9997393-39da-5999-bef9-a0aa1c914d96","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"e12d0a2e-afc7-53cb-85e7-38aa135de327","name":"SecurityZone13Name","description":"Do tewuznas ucait mad ziwgef iw unjup guzov dize guzut vibuk anpekpib nerviw ip ijpa koruf.","version":"09dc0dd3-4a94-5cf2-9efb-89a0f352e003","interfaces":[{"mtu":2652,"enabled":true,"description":"Agi pobjotu zukac rive putsi herima mepues ezijo wicimub utjamoj noskavup wupoje ra dujipale.","name":"subinterface2name","id":"353dee59-d2b6-5df6-9b8e-4f444b489176","hardwareName":"SubInterface0/2.3","macAddress":"EDB8.12E9.D2DB","monitorInterface":false,"standbyMacAddress":"5667.5103.F034","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"2647:2aea:3fdf:b4cc:6433:554a:6ab5:c594/32","ipAddress":"04f0:7320:ae63:ce9f:664b:c7e3:8867:daa9/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3d77:5e5d:78ec:d370:2293:4026:1bbb:aee3","ipAddress":"e6eb:6fef:da47:e1c1:1523:464b:1cab:92a1"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.88.118.226","standbyIpAddress":"17.135.120.105"}},"version":"82ce2f08-42bf-5b19-bbbb-0c4ef276caa0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"4e22d897-4214-5a59-adc0-a40ee1363e10","name":"Network5","description":"Kug viuheci tiwihu iberaw rolo januke huwefi jik labam lurepi be nioc ikime.","version":"880073f6-ecc1-5e1e-a50e-625fb47bbcf9","type":"networkobject","subType":"HOST","value":"51ef:0dda:2b5c:2260:6fc7:e9c3:7507:80fe","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"eb6bb0a1-cecb-55ba-8f96-9656ef090bfd","name":"Geolocation10","description":"Ziwe tukina pubki ifro winwo fo piog roswuife to ugouj zer dula haip ju.","version":"06ed679a-dbbb-5eb6-a535-ecc514c1a364","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"}]}],"destinationNetworks":[{"id":"4e22d897-4214-5a59-adc0-a40ee1363e10","name":"Network5","description":"Kug viuheci tiwihu iberaw rolo januke huwefi jik labam lurepi be nioc ikime.","version":"880073f6-ecc1-5e1e-a50e-625fb47bbcf9","type":"networkobject","subType":"HOST","value":"51ef:0dda:2b5c:2260:6fc7:e9c3:7507:80fe","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"eb6bb0a1-cecb-55ba-8f96-9656ef090bfd","name":"Geolocation10","description":"Ziwe tukina pubki ifro winwo fo piog roswuife to ugouj zer dula haip ju.","version":"06ed679a-dbbb-5eb6-a535-ecc514c1a364","type":"geolocation","locations":[{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]},{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"4adcb40c-5d55-5860-97b6-ebac58830a04","name":"Croatia","deprecated":true,"iso3":"HRV","iso2":"HR","code":"191","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"}]}],"sourcePorts":[{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"destinationPorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"users":[{"id":"7c18c328-ff55-51f7-b16b-63f577f00be0","name":"User 27","realmName":"benidweku","type":"trafficuser","realmId":2,"version":"fifbutuhtog"},{"id":"2a2e9055-9f74-576e-adfa-5e1d41558621","name":"User 12","realmName":"acewojurbe","type":"trafficuser","realmId":2,"version":"wigebifar"},{"id":"56333652-27c4-5f8b-a6b4-d6f92023c62f","name":"User Group 27","realmName":"ecfomeov","type":"trafficusergroup","realmId":2,"version":"nemawpopew"}],"embeddedAppFilter":{"conditions":[{"filter":"keludmubluf","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"}],"type":"applicationfiltercondition"},{"filter":"jignorebes","tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"04564350-cd34-5336-b365-6eed136499fb","version":"5b3a3635-a45e-58a8-b08f-031c8b167c39","name":"ApplicationFilter5","description":"Dowvaj dudi lajzezwu huczoak migmeliw omu obcew ri mazaowo gawhal ba ek mamu.","applications":[{"id":"17b348f3-870c-5aa4-bcae-3bfe0f0d061d","version":"7b26e782-fe4b-5259-aa5f-744f5c3f1b22","description":"Tem ac li gagnefro folema no mo tafdis cew vudo wafop ru milis ubuedurur sufbot.","deprecated":true,"appId":2,"productivity":0,"risk":2,"name":"Application8","tagIds":["e9812b72-2a36-5146-bce0-b09f876df88d"],"tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","SERVER"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"uckupehot","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"dca39a3c-23f6-54aa-81d7-ccef34a0cff6","version":"bfc4825b-27f5-57dc-8fef-49ca1e817fa0","description":"Kunew malu alipizdu efezuzo ogulana obir uplimo vikbuw boaf ganehi paetatug cevtal pedlise ig ritkan eva.","deprecated":true,"appId":2,"productivity":2,"risk":2,"name":"Application7","tagIds":["cf4efe76-660c-5a1c-8f49-ad97479def67","f7e90abe-ce71-56da-9f43-dd8685ec1a3a"],"tags":[{"id":"cf4efe76-660c-5a1c-8f49-ad97479def67","version":"4a68850e-91de-55b2-8e73-f94f8260d5f3","appId":14,"name":"ApplicationTag14","description":"Kurjugciv wir dod homa emaro tuzuzab avser lin ginus viskebag mohedoel iznolju dub acenogic kihvot awa.","metadata":{"referenced":true},"type":"applicationtag"},{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["6acda68e-7ae9-5a42-b1ac-b440dcb550dd"],"categories":[{"id":"6acda68e-7ae9-5a42-b1ac-b440dcb550dd","version":"4babca93-368e-5fbf-8029-b65063e54bb9","appId":8,"name":"ApplicationCategory4","description":"Ub vu lujus luputuja mucmoezo didiz forrene buguer ug iwusa tesit mi vusrad welavo zogme vumha.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ef71cd89-a0fc-5994-aaff-0f427dff92fa","version":"pugvagpugmi","name":"UrlGroup5","description":"Muhzipil korezoki kuwelas fojulcud jum ineteig ob zeluc mekpufes api ajnovawa ro tadi.","objects":[{"id":"0776578c-c6ee-58a3-91de-7d50b64343b8","version":"bimupair","name":"Url7","description":"Mer komad cozmersul el gaze fupfod gij pikukkop kavimgen befowez guwojo bikpogezu ice niruvpo ganal ovo taun.","url":"http://difepfel.io/ovcekwe","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"cce2faef-905f-518f-b19b-4fafff3c46dc","name":"Benign sites","index":2,"startPercentage":61,"endPercentage":80,"version":"e5912377-b4bf-5c67-86e9-c6a87919444c","type":"urlreputation"},"urlCategory":{"id":"3054fd1f-4d7b-5714-8aa0-b6d1594307f6","version":"352eca96-1735-58d7-98b9-dc6135611e4a","name":"UrlCategory-3","deprecated":false,"urlCategoryId":3,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"filePolicy":{"id":"fdae5632-c7d6-5dce-b95f-40b7c96b2a3d","type":"filepolicy","policyType":"CLOUD_LOOKUP_ALL","name":"File_Policy_2","description":"Tifeluw gag hos javfow rubin migapmom zab murizu pi we suvos ar sic zujizut si nah lephaflef.","version":"8009f4f9-d3bd-5991-acc5-c2eb5550c013"},"logFiles":false,"type":"accessrule"},{"id":"18238e59-f024-5fdc-b267-4f85d0fa5fc3","version":"a676c256-5e28-54ae-b8f5-c56ab189a1d4","ruleId":26,"name":"Access_Rule_26","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"a58f7f88-bc09-5b27-bdc9-8ad228a931c3","version":"c4030d21-d2ea-5c98-b922-5f81bbfdd10f","host":"228.117.138.170","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"e960df5e-1ab8-5a15-85e5-a7a47f0ebcb0","name":"SecurityZone5Name","description":"Kinen aziheeci teniow ucezaw idikaki rupbu tieb rawihzec ufkedok iwewun le zihpisze vuzip roetjim fokbuwu jemrumvu cigzet.","version":"0925128c-48f1-552e-8507-379551253d9c","interfaces":[{"mtu":2652,"enabled":true,"description":"Hi vihjuup vueji zufmab wib zel woz ligok wu hi iremouto wahoato.","name":"subinterface5name","id":"9f816351-560c-5e5b-ba0a-2051828301e6","hardwareName":"SubInterface0/5.6","macAddress":"84F0.8C6A.D6DF","monitorInterface":true,"standbyMacAddress":"0971.695D.7024","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e20a:2b14:aecc:7997:984d:9fcd:b3c4:2e66/32","ipAddress":"5753:596d:3c86:ab69:1e26:fa83:c032:8e71/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"44d8:5ccd:bbcd:60df:d35b:afb7:6211:375b","ipAddress":"7b7c:0b52:9938:5274:ef02:b8c5:577c:5028"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"119.148.92.111","standbyIpAddress":"106.21.74.31"}},"version":"7a7c4c69-3da2-5e43-a1f3-2f8026bfb0bd","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"83e3721c-b23f-5eb1-b660-40655c216680","name":"SecurityZone9Name","description":"Iha kiuh ja iweacce tuh hajmipjuj fikufuv bofijwi esede tu gahak wenab belif lupilsif udo puzabke ferfa ofwon.","version":"17150a55-f982-526f-aa60-9e435d2c5455","interfaces":[{"mtu":5818,"enabled":true,"description":"Wabjenuv vuhtevguf zucce omiogu anitug cuho gaejma vesumob oduuro levhid uniozwej olkavcuv dawiim mehub wuka suj.","id":"3faf4981-2b04-5091-9c1f-fa0ab78379b4","hardwareName":"GigabitEthernet1/5","macAddress":"7472.5071.519E","monitorInterface":false,"standbyMacAddress":"5387.1EFE.E0E6","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"84c0:cd09:bceb:ce0c:5cfa:f535:d426:01db/32","ipAddress":"067a:e7f9:1bf0:6af4:b89b:4c11:ec0c:51b4/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"02eb:e82a:bb44:e0a0:d969:6055:6744:cfa2","ipAddress":"aa33:0271:1f23:9725:0d24:7767:0fd2:0cf8"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"6.124.202.116","standbyIpAddress":"40.108.171.23"}},"version":"472d2c22-e548-5cb1-983f-f81ee3e14422","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"d2cf6df0-e095-59f1-9afe-4e1f95b290e7","name":"SecurityZone6Name","description":"Kivmeat sepfeheh jekacaloh awe wap vajan utiweb daczo ji ji pew wioha bawmivim ri kaj gibvevsa.","version":"5751e8ac-10c9-5b44-a9fa-1ed8e07d2d40","interfaces":[{"mtu":5818,"enabled":false,"description":"Jigiz malko navsup bojga widbihi vatel vahuwuta ugi bopuru duzwar zopi juinoito sibkonac fozgojmi toopu nurhiru ce joeho.","name":"inside","id":"bddde0e1-1b1f-5f42-b9b7-7c72d9099ef4","hardwareName":"GigabitEthernet1/1","macAddress":"ECFB.7E12.09E1","monitorInterface":true,"standbyMacAddress":"A09D.B513.9683","version":"69f9f38e-0479-58d1-961c-e4040d439200","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},{"mtu":2652,"enabled":true,"description":"Pipakaz ramkudu ulido ce boh ugmepku izareszeh katakuz vosinde takwa piprazipo fostoftug egjolut.","name":"subinterface3name","id":"4258612a-c6ac-5407-8edc-04b207b2b473","hardwareName":"SubInterface0/3.4","macAddress":"4A8E.2AFE.5DE9","monitorInterface":true,"standbyMacAddress":"F917.A989.864E","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"5b49:5a29:3cd4:5c83:7b30:0115:7927:eaf3/32","ipAddress":"a3eb:3b72:2cfa:9901:b7c7:1581:fa72:4b49/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"42e6:34b8:f5eb:802f:626b:503c:781e:aacd","ipAddress":"dcc0:3abc:3933:8a47:25c6:d9a7:2e80:06dc"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"137.234.118.13","standbyIpAddress":"67.162.53.251"}},"version":"2a53f3c3-fc6d-557c-bdbb-e97bc156553c","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"6fd7b2ed-8cb5-5f6d-9484-1eb947d9d21d","name":"Geolocation2","description":"Hu ewecorek laknueto mene nacudule pa can bevuniv ajhidzug daw murpeuza nafkoz oga.","version":"12c26d86-219a-59fd-85fb-aaf5939a4e66","type":"geolocation","locations":[{"id":"8d0b6206-9550-54d8-9ec8-3ffa76cf5aa1","name":"South America","deprecated":true,"code":1003,"type":"continent","countries":[{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"a05f1e97-1b5e-5f45-b53a-373f28de0edc","name":"Uruguay","deprecated":false,"iso3":"URY","iso2":"UY","code":"858","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"28b8a9fc-2a6a-5fd0-ba10-e3607052f0d1","name":"Guyana","deprecated":false,"iso3":"GUY","iso2":"GY","code":"328","type":"country"},{"id":"f21ae5ba-5139-5bc5-9b7c-6607bf1064c0","name":"French Guiana","deprecated":false,"iso3":"GUF","iso2":"GF","code":"254","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"1bb5225e-e880-5bc6-b4b5-373e05ab4ebf","name":"Colombia","deprecated":false,"iso3":"COL","iso2":"CO","code":"170","type":"country"},{"id":"c73e21a5-7336-58ba-9d53-a3d2eb1e1fdd","name":"Chile","deprecated":true,"iso3":"CHL","iso2":"CL","code":"152","type":"country"},{"id":"df4f3356-7c77-5629-8a0c-7ed0e899c303","name":"Brazil","deprecated":false,"iso3":"BRA","iso2":"BR","code":"076","type":"country"},{"id":"8b0d595a-61a0-508f-bacd-264ee85755cf","name":"Bolivia","deprecated":false,"iso3":"BOL","iso2":"BO","code":"068","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"}],"countryCodes":["862","858","740","600","604","328","254","238","218","170","152","076","068","032"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"}]}],"destinationNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"6fd7b2ed-8cb5-5f6d-9484-1eb947d9d21d","name":"Geolocation2","description":"Hu ewecorek laknueto mene nacudule pa can bevuniv ajhidzug daw murpeuza nafkoz oga.","version":"12c26d86-219a-59fd-85fb-aaf5939a4e66","type":"geolocation","locations":[{"id":"8d0b6206-9550-54d8-9ec8-3ffa76cf5aa1","name":"South America","deprecated":true,"code":1003,"type":"continent","countries":[{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"a05f1e97-1b5e-5f45-b53a-373f28de0edc","name":"Uruguay","deprecated":false,"iso3":"URY","iso2":"UY","code":"858","type":"country"},{"id":"c16f6991-a7d7-51dc-85d3-43752e0c5d10","name":"Suriname","deprecated":true,"iso3":"SUR","iso2":"SR","code":"740","type":"country"},{"id":"e92d8edd-80b3-56dd-bf35-7423b7740c84","name":"Paraguay","deprecated":false,"iso3":"PRY","iso2":"PY","code":"600","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"28b8a9fc-2a6a-5fd0-ba10-e3607052f0d1","name":"Guyana","deprecated":false,"iso3":"GUY","iso2":"GY","code":"328","type":"country"},{"id":"f21ae5ba-5139-5bc5-9b7c-6607bf1064c0","name":"French Guiana","deprecated":false,"iso3":"GUF","iso2":"GF","code":"254","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"90518b4d-6bb9-52e6-abd1-d2f35624ff20","name":"Ecuador","deprecated":true,"iso3":"ECU","iso2":"EC","code":"218","type":"country"},{"id":"1bb5225e-e880-5bc6-b4b5-373e05ab4ebf","name":"Colombia","deprecated":false,"iso3":"COL","iso2":"CO","code":"170","type":"country"},{"id":"c73e21a5-7336-58ba-9d53-a3d2eb1e1fdd","name":"Chile","deprecated":true,"iso3":"CHL","iso2":"CL","code":"152","type":"country"},{"id":"df4f3356-7c77-5629-8a0c-7ed0e899c303","name":"Brazil","deprecated":false,"iso3":"BRA","iso2":"BR","code":"076","type":"country"},{"id":"8b0d595a-61a0-508f-bacd-264ee85755cf","name":"Bolivia","deprecated":false,"iso3":"BOL","iso2":"BO","code":"068","type":"country"},{"id":"1adcc1e8-564f-5b54-a236-fc72bae227b9","name":"Argentina","deprecated":false,"iso3":"ARG","iso2":"AR","code":"032","type":"country"}],"countryCodes":["862","858","740","600","604","328","254","238","218","170","152","076","068","032"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"a7b4cd03-9dc0-572f-82ff-fef0153b4c8c","name":"Denmark","deprecated":true,"iso3":"DNK","iso2":"DK","code":"208","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"}]}],"sourcePorts":[{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false},{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false}],"destinationPorts":[{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false},{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true}],"users":[{"id":"cdaaabcc-950f-5c26-82dc-407ab8ef9fc6","name":"User Group 30","realmName":"borluclumaga","type":"trafficusergroup","realmId":2,"version":"heznapijma"},{"id":"448736fd-bb0b-58e5-8e0f-0d4fe1b1823a","name":"User 25","realmName":"bomubnefwa","type":"trafficuser","realmId":2,"version":"afeapelopel"},{"id":"2a2e9055-9f74-576e-adfa-5e1d41558621","name":"User 12","realmName":"acewojurbe","type":"trafficuser","realmId":2,"version":"wigebifar"}],"embeddedAppFilter":{"conditions":[{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"rapfosapi","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"415702f2-3bd8-5dba-adea-dd03452067a5","version":"1062501a-214c-51d1-9af3-d9c2ca87588f","appId":4,"name":"ApplicationCategory11","description":"Dubofmih taj cukij fes vizoc urzip lazigeha pot bak jackoaz ufi ebomujme ce.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"ce7e9199-db5d-5032-a961-448184ab75ae","version":"1e2955c1-3f40-5f65-a370-5019e41f9ecb","name":"ApplicationFilter14","description":"Acadewlot tol nake cabe ra ecvimza dafouvo wiko mipuzol igozat egara vuj hic cugcono juvi ujmid bonlor.","applications":[{"id":"6361bd7f-01c9-5714-baca-035d66f50a8c","version":"50dcdb47-5d21-537f-b3b0-81713bf31c06","description":"Leku luto lofuwec wuwguhot abmofdo cun vuunuvi lulsoteg kivsas mijmi ru kipumeja sacwuwhe gub magumera.","deprecated":false,"appId":5,"productivity":0,"risk":4,"name":"Application5","tagIds":["0b45de63-5252-5257-acf6-ce494cdb905a"],"tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"},{"id":"ce901dd3-4e85-5bf0-a273-2018d76527c8","version":"84a4f0c6-57b3-50f3-bf20-0cf68bbbb806","description":"Gipus bovawge vel ceoziwo nuim ehdifir nowe onoli atsewav irfer semowi ge turos mufo tahukca jaz.","deprecated":true,"appId":5,"productivity":0,"risk":2,"name":"Application2","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["1323d445-72c0-5d8b-9f58-c223feb51bac","328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"1323d445-72c0-5d8b-9f58-c223feb51bac","version":"f85374d2-b1c5-5e65-b746-77dc6a21decb","appId":7,"name":"ApplicationCategory14","description":"Ohoad agoteveto irewomi adizogo lurtoop tizesuca himewwak poftoj cow nunapivif cisge pe hi raam hatdunze.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"44b7bb09-58d5-59ef-abd3-7341fa4d1c7b","version":"fe155cb3-e78d-5a5b-8713-5c056c0ea86f","description":"Dazgo jefeci dulhel lowez cotgo mu ewuufih indeh bo urjur vursosoc cetco eb.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application3","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","0928e8e9-25a4-53d0-b118-342a26b44100"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"4644bbc1-d476-565e-83ae-5a744000483c","version":"jaebrizdos","name":"UrlGroup8","description":"Mudacoc fapeus bimafi vectibep vib at bomecras moano ut wo vimkoc il lekeje os ekugiubi newtu.","objects":[{"id":"26cf0d0b-7575-594a-9c3b-9e17d5e24fbf","version":"sipugcocti","name":"Url6","description":"Etna gum cacu tin meehe hu cahfik kus supdeba irlohje hig rizhepzov vi togaofo los dujna her sipu.","url":"http://bejakuru.co.uk/ebkampaw","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"4aaaf075-67f8-5584-85db-439de34a0f04","version":"922f3981-fd98-5b5a-8467-f9e8bcfe9ee4","name":"UrlCategory-9","deprecated":false,"urlCategoryId":9,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"filePolicy":{"id":"9c84889f-8c5c-5643-a489-d01bb07639a5","type":"filepolicy","policyType":"BLOCK_OFFICE_DOCUMENTS_PDF_UPLOAD_BLOCK_MALWARE_OTHERS","name":"File_Policy_3","description":"Mi rul etusisti iphogu acrevdid cas bijcaz nul ceaf napi kegpo su dozpov zikpul lohi gurukdi ke.","version":"d5e7c6d4-1f13-5cd2-9442-bdccd7e4b804"},"logFiles":false,"type":"accessrule"},{"id":"72ed216e-8cf8-530c-b095-296c73a300d7","version":"6f0a0570-6fa4-5559-889d-3336fa74598d","ruleId":27,"name":"Access_Rule_27","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_NONE","sourceZones":[{"id":"0453e827-ea9e-5279-b45d-49df10666f7f","name":"SecurityZone14Name","description":"Kojugbel ram kucdowaf dozabace bagi vizlujva ibeali humupici apefin sig wiwdocduw halsoz.","version":"aaaea33f-d703-5f8e-9fb0-8647d4f28f12","interfaces":[{"mtu":2652,"enabled":true,"description":"Dijiz mavajmak suhihi ja piobba vigsasu pulasa heka lus nuapoap gar weuluvaz faf duke sojpov pamdaba juhoflon ugosum.","name":"subinterface4name","id":"80110552-0168-5ca1-9539-159176e34426","hardwareName":"SubInterface0/4.5","macAddress":"1753.227B.5D9A","monitorInterface":false,"standbyMacAddress":"FF7B.C256.4778","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1bb9:5d4d:1200:c9eb:97ff:589e:edd4:16e4/32","ipAddress":"eaba:377e:f390:0e98:800f:a6a7:5709:6b52/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"5189:1c32:5064:5495:0ecf:92dd:9175:944a","ipAddress":"479b:2e4a:a86f:13c2:425b:1e14:b1a3:ddfd"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"213.34.152.190","standbyIpAddress":"91.47.228.196"}},"version":"8bcf839f-438a-5cd4-99a7-b6f07ab652a0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Povlulmi maev usma nizguv ve win coocila colo dunde karib wadu ku huhakla kikel gas.","name":"subinterface13name","id":"edd991bd-6b34-5057-9389-003a56e10179","hardwareName":"SubInterface0/13.14","macAddress":"CC55.5B72.5979","monitorInterface":true,"standbyMacAddress":"9F25.7162.695C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0d43:9009:33b7:805f:2a41:1ed1:0ea0:3cd6/32","ipAddress":"e093:0b7d:4775:c0dc:8433:a3b6:1071:8974/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bf79:78d0:19ad:cc70:9f5b:5882:e462:ba1d","ipAddress":"5ffa:92d3:6efd:ef6f:c194:ff49:7d28:7d56"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"237.58.152.175","standbyIpAddress":"233.37.45.228"}},"version":"f9997393-39da-5999-bef9-a0aa1c914d96","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"e960df5e-1ab8-5a15-85e5-a7a47f0ebcb0","name":"SecurityZone5Name","description":"Kinen aziheeci teniow ucezaw idikaki rupbu tieb rawihzec ufkedok iwewun le zihpisze vuzip roetjim fokbuwu jemrumvu cigzet.","version":"0925128c-48f1-552e-8507-379551253d9c","interfaces":[{"mtu":2652,"enabled":true,"description":"Hi vihjuup vueji zufmab wib zel woz ligok wu hi iremouto wahoato.","name":"subinterface5name","id":"9f816351-560c-5e5b-ba0a-2051828301e6","hardwareName":"SubInterface0/5.6","macAddress":"84F0.8C6A.D6DF","monitorInterface":true,"standbyMacAddress":"0971.695D.7024","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e20a:2b14:aecc:7997:984d:9fcd:b3c4:2e66/32","ipAddress":"5753:596d:3c86:ab69:1e26:fa83:c032:8e71/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"44d8:5ccd:bbcd:60df:d35b:afb7:6211:375b","ipAddress":"7b7c:0b52:9938:5274:ef02:b8c5:577c:5028"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"119.148.92.111","standbyIpAddress":"106.21.74.31"}},"version":"7a7c4c69-3da2-5e43-a1f3-2f8026bfb0bd","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"sourceNetworks":[{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"8681f6d1-4c1b-58ca-bac5-c217895fbbcd","name":"Geolocation7","description":"Ciriro waavwef icmadate zuh lobba amroc mehufi huabwe mi gowukose dapedvip pa uz baoruaj mowka popbiola.","version":"f2554e00-8f4c-5f06-8e33-1e6ece1334ee","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"}]}],"destinationNetworks":[{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"8681f6d1-4c1b-58ca-bac5-c217895fbbcd","name":"Geolocation7","description":"Ciriro waavwef icmadate zuh lobba amroc mehufi huabwe mi gowukose dapedvip pa uz baoruaj mowka popbiola.","version":"f2554e00-8f4c-5f06-8e33-1e6ece1334ee","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"e8b65d12-13e5-53b5-abe4-3c833e412440","name":"San Marino","deprecated":true,"iso3":"SMR","iso2":"SM","code":"674","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"}]}],"sourcePorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false}],"destinationPorts":[{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}],"users":[{"id":"6fc80f39-f5ca-52da-baac-a4008a22fdbd","name":"User 29","realmName":"hoomewudavu","type":"trafficuser","realmId":2,"version":"maakuojusal"},{"id":"44735a4a-a680-5da1-a095-e90d6fc646aa","name":"User 22","realmName":"afhuzwiclaz","type":"trafficuser","realmId":2,"version":"tucritjeve"},{"id":"b33b73c3-522a-5e45-93fa-9d0a05dc2444","name":"User 4","realmName":"guzafodoaka","type":"trafficuser","realmId":2,"version":"fiusonuik"}],"embeddedAppFilter":{"conditions":[{"filter":"rapfosapi","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"415702f2-3bd8-5dba-adea-dd03452067a5","version":"1062501a-214c-51d1-9af3-d9c2ca87588f","appId":4,"name":"ApplicationCategory11","description":"Dubofmih taj cukij fes vizoc urzip lazigeha pot bak jackoaz ufi ebomujme ce.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"},{"filter":"jignorebes","tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"461cac69-03ff-5113-a215-4cdfaf8bd3f1","version":"c5c46d5e-163b-53e4-a12e-4ec6708cb4a7","name":"ApplicationFilter13","description":"Hi hug zad nolrepmum bil nuwbacora fa guhu ale ogve foksaruw cipzis zomdozun de is da uzifoma.","applications":[{"id":"368e2c4f-cce1-574d-b5ee-ab9d539cf248","version":"3ecf8402-8607-5fdc-a148-f5abddf84f0a","description":"Apeja libsul uweb osjoti ge uzu fal gob woletkew be tu hah ha wuvekohuz gacaw.","deprecated":true,"appId":4,"productivity":1,"risk":0,"name":"Application14","tagIds":["9b16dd72-476a-5ac0-8aeb-fbf6e1f45438"],"tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["5f0662ef-3382-5357-bf35-b9b7361aae44"],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["WEBAPP","SERVER"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"giasnovpe","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"284fc5f4-ac07-5859-abb8-8d3d7e883e07","version":"3c123aed-eabf-5f8f-b009-4bb510d14c1e","description":"Ruz mujjihpil wehuzfe so hobzokbi us vomret wip tos cieriebe nifej ma.","deprecated":true,"appId":4,"productivity":3,"risk":3,"name":"Application12","tagIds":["7269266f-8413-59ef-9085-0de4aa64660b"],"tags":[{"id":"7269266f-8413-59ef-9085-0de4aa64660b","version":"6eb7235a-74ab-5701-8a37-2522e325519d","appId":2,"name":"ApplicationTag2","description":"Zu wep pag palu mazu irowil rag bore ev ica miljov iwoog besjezew fi regevi ap vo.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["WEBAPP"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"0d8fb7ba-1aee-5509-a833-5a64db795ba3","version":"nokkivamota","name":"UrlGroup10","description":"Umijidep raticce kainusev di gijo if os necullo dadjus jow zajoz ri pasiz kufdah uskikuw la.","objects":[{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"00d12166-18a1-568d-8878-cbe92b44602c","name":"Risk unknown","index":0,"startPercentage":0,"endPercentage":0,"version":"b5c74a5a-ad53-5a53-91d1-505f3d64d5d5","type":"urlreputation"},"urlCategory":{"id":"5c03856a-3c13-5838-b397-19e4eb343d1d","version":"4399e700-e8df-5a73-a565-c19049383762","name":"Health and Medicine","deprecated":false,"urlCategoryId":1,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f6-fe55-11e4-8e99-ipsN10","name":"Connectivity Over Security","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10/rules/"}},"description":"Connectivity Over Security Layer","type":"intrusionpolicy","version":"f17dd031-7eba-5f6f-8734-300a871471fe"},"filePolicy":{"id":"de5b742d-70db-535d-bb42-6e6ba949ef53","type":"filepolicy","policyType":"BLOCK_MALWARE_ALL","name":"File_Policy_1","description":"Wiakeno ja barfowole aredu wutra loc fe soc cakdo se la agokim gevsirrog cagome.","version":"e0e81a67-2608-53e2-a015-f53dc3a9de10"},"logFiles":false,"type":"accessrule"},{"id":"13cee82c-f2e2-5281-8ca5-914a00d0a704","version":"8896aad4-37b8-539a-9f9b-e07cf452e17c","ruleId":28,"name":"Access_Rule_28","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_NONE","sourceZones":[{"id":"ec43d6a8-fe32-5daa-a8bd-766b57a23892","name":"SecurityZone12Name","description":"Etzasus comdupo lu jeitlov zedoj no lidwa ka beni ujenapse lowon dil ami jir.","version":"3091782d-2bd2-57e7-8447-191d486665aa","interfaces":[{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"9c8667b7-4e34-56df-b092-1340af45b0d2","name":"SecurityZone10Name","description":"Joni gagko ugmucba ogparjad uvre hobneva wete epujein nelgidma kuollum wi gabvanaj sosso.","version":"bc2e044f-1753-51e2-aa7a-ea7362c6b23b","interfaces":[{"mtu":5818,"enabled":false,"description":"Rojsitepo fifgar sovaf ebabovvoj ivjinjig ite sadehtud upazeh dejsabfuv tipgo cosbe femigpi ac aztazta beduw.","id":"fa3dc115-5c3e-51ae-aa38-60ff9abd415a","hardwareName":"GigabitEthernet1/7","macAddress":"55F1.B70C.C1B7","monitorInterface":false,"standbyMacAddress":"B24B.66FA.3266","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"29df:8589:549c:1eef:cc3a:60bf:e04c:3627/32","ipAddress":"afd9:ec18:e2d8:02b5:d0fb:e88c:cea2:e443/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"1a98:7998:35a2:1767:f8b7:fea5:dc50:6a35","ipAddress":"2365:d545:9cd1:ab13:70c3:7177:cd7b:749e"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"135.29.245.249","standbyIpAddress":"74.247.146.212"}},"version":"143d2951-eca6-58fa-b11e-89d0e27b913c","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":2652,"enabled":false,"description":"Cacfi rijgebpuj hotow vu jisfesgub os biami baajo cimod totufo cajip epkaeg ezeugpek ucifulo huzdeal.","name":"subinterface8name","id":"90da9e2e-5eb1-5d7f-95cf-8759bf36f644","hardwareName":"SubInterface0/8.9","macAddress":"8C77.2E4D.7213","monitorInterface":false,"standbyMacAddress":"32AD.D756.5E62","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1ca8:b55c:d9ed:3be2:2955:da65:a52c:d0fc/32","ipAddress":"085b:3c0e:113f:ccef:6d12:cb57:ef1d:431d/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3025:32ff:78fb:37e2:42a3:8d40:64ee:e93e","ipAddress":"7aea:6aed:7d14:3ac6:df8b:0446:5b7d:f55f"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"225.196.76.214","standbyIpAddress":"62.250.115.23"}},"version":"4e59e028-4b81-5f28-9fbf-6033fd2394b8","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"sourceNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"62d1c211-894a-5027-a046-0d29808688cf","name":"Geolocation11","description":"So gipoguzoh wemomwur zerugeba ne dupwibam ofi rojcowo dupoggot pojlapof sicjigto izavu mobfof bohoguh forjuseme jogas.","version":"c65c168c-cbef-50bd-862e-cb33b7a67f87","type":"geolocation","locations":[{"id":"58c1b14d-e032-5b9c-a581-a5c8857e2260","name":"North America","deprecated":true,"code":1002,"type":"continent","countries":[{"id":"2ba895c9-9f2b-5182-95b9-59306b13ebc4","name":"U.S. Virgin Islands","deprecated":true,"iso3":"VIR","iso2":"VI","code":"850","type":"country"},{"id":"e6bb9c77-a955-5f2b-ac2d-9082a5160f71","name":"British Virgin Islands","deprecated":true,"iso3":"VGB","iso2":"VG","code":"092","type":"country"},{"id":"b3735b95-7d83-5ed3-916e-3379993398f6","name":"Saint Vincent and the Grenadines","deprecated":false,"iso3":"VCT","iso2":"VC","code":"670","type":"country"},{"id":"816c5c8f-f624-561e-99f1-1a26d826a4f3","name":"United States","deprecated":true,"iso3":"USA","iso2":"US","code":"840","type":"country"},{"id":"3fefff2b-d89c-55b1-8cbc-3ef1a65be130","name":"Trinidad and Tobago","deprecated":true,"iso3":"TTO","iso2":"TT","code":"780","type":"country"},{"id":"3589f9a6-a7c1-5332-a139-3f9595fdfd28","name":"Turks and Caicos Islands","deprecated":true,"iso3":"TCA","iso2":"TC","code":"796","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"85d297a7-310d-59f0-a0ca-ebf303a096cc","name":"El Salvador","deprecated":true,"iso3":"SLV","iso2":"SV","code":"222","type":"country"},{"id":"fa707d6d-a72f-5469-985d-5173dbe32666","name":"Puerto Rico","deprecated":false,"iso3":"PRI","iso2":"PR","code":"630","type":"country"},{"id":"93eb0baf-8f56-5cb2-8282-ab1ad5e85c10","name":"Saint Pierre and Miquelon","deprecated":false,"iso3":"SPM","iso2":"PM","code":"666","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"f9fcc680-cfb6-5541-9a22-5d708e664cd7","name":"Nicaragua","deprecated":true,"iso3":"NIC","iso2":"NI","code":"558","type":"country"},{"id":"2acf54f9-dcef-583a-b011-1ade5b0c8337","name":"Mexico","deprecated":false,"iso3":"MEX","iso2":"MX","code":"484","type":"country"},{"id":"d8b849e3-61d8-5e6b-9616-e84333164d82","name":"Montserrat","deprecated":false,"iso3":"MSR","iso2":"MS","code":"500","type":"country"},{"id":"00bdfb06-2438-5d19-ab21-536be76831df","name":"Martinique","deprecated":false,"iso3":"MTQ","iso2":"MQ","code":"474","type":"country"},{"id":"e41f17d8-47ba-5889-a3f9-757a2d6dbf53","name":"Saint Martin","deprecated":true,"iso3":"MAF","iso2":"MF","code":"663","type":"country"},{"id":"d6056e12-c9d7-52e1-affd-5e54f743c415","name":"Saint Lucia","deprecated":false,"iso3":"LCA","iso2":"LC","code":"662","type":"country"},{"id":"5e6b0423-d9b1-5c70-b1fc-c35c581af83a","name":"Cayman Islands","deprecated":true,"iso3":"CYM","iso2":"KY","code":"136","type":"country"},{"id":"d86293d3-8d1d-59bd-8b48-16fb532231d9","name":"Saint Kitts and Nevis","deprecated":true,"iso3":"KNA","iso2":"KN","code":"659","type":"country"},{"id":"5ca89c40-c558-55ae-b606-c4a7c84900d0","name":"Jamaica","deprecated":true,"iso3":"JAM","iso2":"JM","code":"388","type":"country"},{"id":"d8fbf1b8-0581-5bf5-a03d-ca9382c3a25f","name":"Haiti","deprecated":true,"iso3":"HTI","iso2":"HT","code":"332","type":"country"},{"id":"d42e37aa-8ab2-5cee-be19-f8bc7123029e","name":"Honduras","deprecated":false,"iso3":"HND","iso2":"HN","code":"340","type":"country"},{"id":"deb2c3f7-7c6e-5fae-859a-d19da6b88bf7","name":"Guatemala","deprecated":false,"iso3":"GTM","iso2":"GT","code":"320","type":"country"},{"id":"1339e3d7-5dbf-59d5-9dc4-0c9928509839","name":"Guadeloupe","deprecated":true,"iso3":"GLP","iso2":"GP","code":"312","type":"country"},{"id":"f1ef7a41-03d9-5725-a34c-e7dce349dc68","name":"Greenland","deprecated":true,"iso3":"GRL","iso2":"GL","code":"304","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"2cef5772-f72d-5ca9-bd72-de4bda8da061","name":"Dominican Republic","deprecated":false,"iso3":"DOM","iso2":"DO","code":"214","type":"country"},{"id":"4ecd121e-af06-5def-a17d-5aeb58e5834b","name":"Dominica","deprecated":true,"iso3":"DMA","iso2":"DM","code":"212","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"473581e5-1b39-5d06-a56c-44a01298ba3d","name":"Cuba","deprecated":false,"iso3":"CUB","iso2":"CU","code":"192","type":"country"},{"id":"6b162de0-602e-5a7d-a241-50ccdb10c3ea","name":"Costa Rica","deprecated":true,"iso3":"CRI","iso2":"CR","code":"188","type":"country"},{"id":"338c3d83-e4bb-5c7e-854a-5370a23c9b06","name":"Canada","deprecated":true,"iso3":"CAN","iso2":"CA","code":"124","type":"country"},{"id":"32ee65e9-d6c1-5d5b-95a4-83dd798ab6fc","name":"Belize","deprecated":true,"iso3":"BLZ","iso2":"BZ","code":"084","type":"country"},{"id":"e37aa05a-1414-5366-abdd-eae7482267de","name":"Bahamas","deprecated":false,"iso3":"BHS","iso2":"BS","code":"044","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"830ae2eb-65f0-56f2-8823-e293c1b6f086","name":"Saint Barthélemy","deprecated":true,"iso3":"BLM","iso2":"BL","code":"652","type":"country"},{"id":"9cd8a90c-1915-51dc-978b-b35c591d11c0","name":"Barbados","deprecated":false,"iso3":"BRB","iso2":"BB","code":"052","type":"country"},{"id":"a91f1f86-8c52-569f-9244-f914a4438731","name":"Aruba","deprecated":true,"iso3":"ABW","iso2":"AW","code":"533","type":"country"},{"id":"50d84fbd-fb07-51a0-ad92-be08d1dd5471","name":"Anguilla","deprecated":true,"iso3":"AIA","iso2":"AI","code":"660","type":"country"},{"id":"2494c782-b35f-5a88-8313-4eda120aa623","name":"Antigua and Barbuda","deprecated":false,"iso3":"ATG","iso2":"AG","code":"028","type":"country"}],"countryCodes":["850","092","670","840","780","796","534","222","630","666","591","558","484","500","474","663","662","136","659","388","332","340","320","312","304","308","214","212","531","192","188","124","084","044","535","060","652","052","533","660","028"]},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"}]}],"destinationNetworks":[{"id":"8dabc86d-1558-5a56-8c32-bc388b6a93f3","name":"Network13","description":"Dojba epfaw rew reltuzaw vaifjen wilida kepsu gadcukam rewog ojudu to siokwig jakel.","version":"81a1cfa9-9bdf-5ac8-98e5-299f203d4289","type":"networkobject","subType":"HOST","value":"b4f1:f88e:09b6:827b:d85f:dbf9:751b:dc45","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"62d1c211-894a-5027-a046-0d29808688cf","name":"Geolocation11","description":"So gipoguzoh wemomwur zerugeba ne dupwibam ofi rojcowo dupoggot pojlapof sicjigto izavu mobfof bohoguh forjuseme jogas.","version":"c65c168c-cbef-50bd-862e-cb33b7a67f87","type":"geolocation","locations":[{"id":"58c1b14d-e032-5b9c-a581-a5c8857e2260","name":"North America","deprecated":true,"code":1002,"type":"continent","countries":[{"id":"2ba895c9-9f2b-5182-95b9-59306b13ebc4","name":"U.S. Virgin Islands","deprecated":true,"iso3":"VIR","iso2":"VI","code":"850","type":"country"},{"id":"e6bb9c77-a955-5f2b-ac2d-9082a5160f71","name":"British Virgin Islands","deprecated":true,"iso3":"VGB","iso2":"VG","code":"092","type":"country"},{"id":"b3735b95-7d83-5ed3-916e-3379993398f6","name":"Saint Vincent and the Grenadines","deprecated":false,"iso3":"VCT","iso2":"VC","code":"670","type":"country"},{"id":"816c5c8f-f624-561e-99f1-1a26d826a4f3","name":"United States","deprecated":true,"iso3":"USA","iso2":"US","code":"840","type":"country"},{"id":"3fefff2b-d89c-55b1-8cbc-3ef1a65be130","name":"Trinidad and Tobago","deprecated":true,"iso3":"TTO","iso2":"TT","code":"780","type":"country"},{"id":"3589f9a6-a7c1-5332-a139-3f9595fdfd28","name":"Turks and Caicos Islands","deprecated":true,"iso3":"TCA","iso2":"TC","code":"796","type":"country"},{"id":"76d9fd77-8fb0-5b69-a7b9-5ceae0c32261","name":"Sint Maarten","deprecated":false,"iso3":"SXM","iso2":"SX","code":"534","type":"country"},{"id":"85d297a7-310d-59f0-a0ca-ebf303a096cc","name":"El Salvador","deprecated":true,"iso3":"SLV","iso2":"SV","code":"222","type":"country"},{"id":"fa707d6d-a72f-5469-985d-5173dbe32666","name":"Puerto Rico","deprecated":false,"iso3":"PRI","iso2":"PR","code":"630","type":"country"},{"id":"93eb0baf-8f56-5cb2-8282-ab1ad5e85c10","name":"Saint Pierre and Miquelon","deprecated":false,"iso3":"SPM","iso2":"PM","code":"666","type":"country"},{"id":"8701b229-f2cb-5873-9ad8-d4f15407cd99","name":"Panama","deprecated":true,"iso3":"PAN","iso2":"PA","code":"591","type":"country"},{"id":"f9fcc680-cfb6-5541-9a22-5d708e664cd7","name":"Nicaragua","deprecated":true,"iso3":"NIC","iso2":"NI","code":"558","type":"country"},{"id":"2acf54f9-dcef-583a-b011-1ade5b0c8337","name":"Mexico","deprecated":false,"iso3":"MEX","iso2":"MX","code":"484","type":"country"},{"id":"d8b849e3-61d8-5e6b-9616-e84333164d82","name":"Montserrat","deprecated":false,"iso3":"MSR","iso2":"MS","code":"500","type":"country"},{"id":"00bdfb06-2438-5d19-ab21-536be76831df","name":"Martinique","deprecated":false,"iso3":"MTQ","iso2":"MQ","code":"474","type":"country"},{"id":"e41f17d8-47ba-5889-a3f9-757a2d6dbf53","name":"Saint Martin","deprecated":true,"iso3":"MAF","iso2":"MF","code":"663","type":"country"},{"id":"d6056e12-c9d7-52e1-affd-5e54f743c415","name":"Saint Lucia","deprecated":false,"iso3":"LCA","iso2":"LC","code":"662","type":"country"},{"id":"5e6b0423-d9b1-5c70-b1fc-c35c581af83a","name":"Cayman Islands","deprecated":true,"iso3":"CYM","iso2":"KY","code":"136","type":"country"},{"id":"d86293d3-8d1d-59bd-8b48-16fb532231d9","name":"Saint Kitts and Nevis","deprecated":true,"iso3":"KNA","iso2":"KN","code":"659","type":"country"},{"id":"5ca89c40-c558-55ae-b606-c4a7c84900d0","name":"Jamaica","deprecated":true,"iso3":"JAM","iso2":"JM","code":"388","type":"country"},{"id":"d8fbf1b8-0581-5bf5-a03d-ca9382c3a25f","name":"Haiti","deprecated":true,"iso3":"HTI","iso2":"HT","code":"332","type":"country"},{"id":"d42e37aa-8ab2-5cee-be19-f8bc7123029e","name":"Honduras","deprecated":false,"iso3":"HND","iso2":"HN","code":"340","type":"country"},{"id":"deb2c3f7-7c6e-5fae-859a-d19da6b88bf7","name":"Guatemala","deprecated":false,"iso3":"GTM","iso2":"GT","code":"320","type":"country"},{"id":"1339e3d7-5dbf-59d5-9dc4-0c9928509839","name":"Guadeloupe","deprecated":true,"iso3":"GLP","iso2":"GP","code":"312","type":"country"},{"id":"f1ef7a41-03d9-5725-a34c-e7dce349dc68","name":"Greenland","deprecated":true,"iso3":"GRL","iso2":"GL","code":"304","type":"country"},{"id":"627efa23-c14e-5fc0-b2d2-a197986eaa58","name":"Grenada","deprecated":true,"iso3":"GRD","iso2":"GD","code":"308","type":"country"},{"id":"2cef5772-f72d-5ca9-bd72-de4bda8da061","name":"Dominican Republic","deprecated":false,"iso3":"DOM","iso2":"DO","code":"214","type":"country"},{"id":"4ecd121e-af06-5def-a17d-5aeb58e5834b","name":"Dominica","deprecated":true,"iso3":"DMA","iso2":"DM","code":"212","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"473581e5-1b39-5d06-a56c-44a01298ba3d","name":"Cuba","deprecated":false,"iso3":"CUB","iso2":"CU","code":"192","type":"country"},{"id":"6b162de0-602e-5a7d-a241-50ccdb10c3ea","name":"Costa Rica","deprecated":true,"iso3":"CRI","iso2":"CR","code":"188","type":"country"},{"id":"338c3d83-e4bb-5c7e-854a-5370a23c9b06","name":"Canada","deprecated":true,"iso3":"CAN","iso2":"CA","code":"124","type":"country"},{"id":"32ee65e9-d6c1-5d5b-95a4-83dd798ab6fc","name":"Belize","deprecated":true,"iso3":"BLZ","iso2":"BZ","code":"084","type":"country"},{"id":"e37aa05a-1414-5366-abdd-eae7482267de","name":"Bahamas","deprecated":false,"iso3":"BHS","iso2":"BS","code":"044","type":"country"},{"id":"0b32f4f0-c8db-5011-ac99-73bfc4a31ecb","name":"Bonaire","deprecated":true,"iso3":"BES","iso2":"BQ","code":"535","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"830ae2eb-65f0-56f2-8823-e293c1b6f086","name":"Saint Barthélemy","deprecated":true,"iso3":"BLM","iso2":"BL","code":"652","type":"country"},{"id":"9cd8a90c-1915-51dc-978b-b35c591d11c0","name":"Barbados","deprecated":false,"iso3":"BRB","iso2":"BB","code":"052","type":"country"},{"id":"a91f1f86-8c52-569f-9244-f914a4438731","name":"Aruba","deprecated":true,"iso3":"ABW","iso2":"AW","code":"533","type":"country"},{"id":"50d84fbd-fb07-51a0-ad92-be08d1dd5471","name":"Anguilla","deprecated":true,"iso3":"AIA","iso2":"AI","code":"660","type":"country"},{"id":"2494c782-b35f-5a88-8313-4eda120aa623","name":"Antigua and Barbuda","deprecated":false,"iso3":"ATG","iso2":"AG","code":"028","type":"country"}],"countryCodes":["850","092","670","840","780","796","534","222","630","666","591","558","484","500","474","663","662","136","659","388","332","340","320","312","304","308","214","212","531","192","188","124","084","044","535","060","652","052","533","660","028"]},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"059ecc8f-4828-5c94-a589-534028509f02","name":"Liechtenstein","deprecated":true,"iso3":"LIE","iso2":"LI","code":"438","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"9c4fc5b1-9569-52be-a502-a076da629c1a","name":"Falkland Islands","deprecated":false,"iso3":"FLK","iso2":"FK","code":"238","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"}]}],"sourcePorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}],"destinationPorts":[{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"users":[{"id":"dfe8be9f-f2fb-541e-ba1c-8a51b58462c1","name":"User Group 22","realmName":"dibumolub","type":"trafficusergroup","realmId":2,"version":"ukogomzatkaj"},{"id":"d3638498-9eeb-5283-9a18-cd184ddbf6cd","name":"User 26","realmName":"oppogitceh","type":"trafficuser","realmId":2,"version":"gusedivkaw"},{"id":"35a62df5-7fcc-5388-b945-2d9e91aad74d","name":"User Group 10","realmName":"liravopza","type":"trafficusergroup","realmId":2,"version":"cahiruohalik"}],"embeddedAppFilter":{"conditions":[{"filter":"loweteziwno","tags":[{"id":"11d43e11-683f-5ec2-89c6-6b4e9a8c756d","version":"13924388-a6d9-5f80-8b3b-825736afd2bc","appId":13,"name":"ApplicationTag13","description":"Fiwjag safe jujohmi lipa gucpi la tocgomkap fozensir jafuhi vutbinij jov lifo ciduwno fuzegvef consibe hope.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"},{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"23b60b04-37e5-5da7-97a4-83beab8596e0","version":"c1fea614-149c-52dc-9c9d-00ce915dffcc","name":"ApplicationFilter9","description":"Wir todnofi pifofo ogdaub zane gosi kutoiji at raow bipelba itefogsuk mefen mub mumija.","applications":[{"id":"54cfecf9-a1b7-5d3d-84a4-8f7080027cb4","version":"134633d9-a14f-596d-9ebc-c75915ec96f0","description":"Deg ujalaloj bu talkafda jozbafahu fa lub so ijozuzjef bugte jumojba masihaj teug sil lewga wavefulo inhache.","deprecated":true,"appId":4,"productivity":4,"risk":3,"name":"Application10","tagIds":["df3a88b5-3e3b-5024-9d9f-25d3262ce374","a558b06a-1e83-5caa-a903-3b6e291ddc2e"],"tags":[{"id":"df3a88b5-3e3b-5024-9d9f-25d3262ce374","version":"b689fe7b-2b28-59fb-93cf-3995fe189cf1","appId":3,"name":"ApplicationTag15","description":"Ofihzaj hesa do dawo mipegil bilel liviip mub zahtavso rut nu zaj weuki dep suspufun ac rap.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"a558b06a-1e83-5caa-a903-3b6e291ddc2e","version":"96c0750c-0f50-5872-869a-8b50dad24edc","appId":8,"name":"SSL protocol","description":"Ifgafu ma vopuatu ho jim zud hiodiben ango ji nusiwufu hig gatejsem povci.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["5f0662ef-3382-5357-bf35-b9b7361aae44","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":false},"type":"application"},{"id":"284fc5f4-ac07-5859-abb8-8d3d7e883e07","version":"3c123aed-eabf-5f8f-b009-4bb510d14c1e","description":"Ruz mujjihpil wehuzfe so hobzokbi us vomret wip tos cieriebe nifej ma.","deprecated":true,"appId":4,"productivity":3,"risk":3,"name":"Application12","tagIds":["7269266f-8413-59ef-9085-0de4aa64660b"],"tags":[{"id":"7269266f-8413-59ef-9085-0de4aa64660b","version":"6eb7235a-74ab-5701-8a37-2522e325519d","appId":2,"name":"ApplicationTag2","description":"Zu wep pag palu mazu irowil rag bore ev ica miljov iwoog besjezew fi regevi ap vo.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["WEBAPP"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"huimezuben","tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"6361bd7f-01c9-5714-baca-035d66f50a8c","version":"50dcdb47-5d21-537f-b3b0-81713bf31c06","description":"Leku luto lofuwec wuwguhot abmofdo cun vuunuvi lulsoteg kivsas mijmi ru kipumeja sacwuwhe gub magumera.","deprecated":false,"appId":5,"productivity":0,"risk":4,"name":"Application5","tagIds":["0b45de63-5252-5257-acf6-ce494cdb905a"],"tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"bba3c76d-8a74-5ec9-9bc5-df3008b85742","version":"uwofikigom","name":"UrlGroup2","description":"Eze zuj difruw namoha pu nijizkam owitema konho upi neppo fikcebzi hub zadouf sautiar.","objects":[{"id":"00abb7ee-65e7-5e3e-99f7-9800c0af349c","version":"bogoprobifi","name":"Url15","description":"Mok ujci zasidrob zo man urebanfir gim faseg hacabkuw gi jorabco bitle bek.","url":"http://nufiwow.net/mimce","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"293f3f8b-e996-5139-bee7-ff7e376ed4f0","version":"2b059a77-a530-5bd9-8694-f4754a6e7538","name":"UrlCategory-8","deprecated":false,"urlCategoryId":65534,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f6-fe55-11e4-8e99-ipsN10","name":"Connectivity Over Security","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10/rules/"}},"description":"Connectivity Over Security Layer","type":"intrusionpolicy","version":"f17dd031-7eba-5f6f-8734-300a871471fe"},"filePolicy":{"id":"9c84889f-8c5c-5643-a489-d01bb07639a5","type":"filepolicy","policyType":"BLOCK_OFFICE_DOCUMENTS_PDF_UPLOAD_BLOCK_MALWARE_OTHERS","name":"File_Policy_3","description":"Mi rul etusisti iphogu acrevdid cas bijcaz nul ceaf napi kegpo su dozpov zikpul lohi gurukdi ke.","version":"d5e7c6d4-1f13-5cd2-9442-bdccd7e4b804"},"logFiles":false,"type":"accessrule"},{"id":"84bf1df8-6803-5feb-aabb-6af69b651dd2","version":"49e10f82-c183-5a01-be50-a01e0743ba74","ruleId":29,"name":"Access_Rule_29","protocol":"TCP","ruleAction":"DENY","eventLogAction":"LOG_NONE","sourceZones":[{"id":"e960df5e-1ab8-5a15-85e5-a7a47f0ebcb0","name":"SecurityZone5Name","description":"Kinen aziheeci teniow ucezaw idikaki rupbu tieb rawihzec ufkedok iwewun le zihpisze vuzip roetjim fokbuwu jemrumvu cigzet.","version":"0925128c-48f1-552e-8507-379551253d9c","interfaces":[{"mtu":2652,"enabled":true,"description":"Hi vihjuup vueji zufmab wib zel woz ligok wu hi iremouto wahoato.","name":"subinterface5name","id":"9f816351-560c-5e5b-ba0a-2051828301e6","hardwareName":"SubInterface0/5.6","macAddress":"84F0.8C6A.D6DF","monitorInterface":true,"standbyMacAddress":"0971.695D.7024","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e20a:2b14:aecc:7997:984d:9fcd:b3c4:2e66/32","ipAddress":"5753:596d:3c86:ab69:1e26:fa83:c032:8e71/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"44d8:5ccd:bbcd:60df:d35b:afb7:6211:375b","ipAddress":"7b7c:0b52:9938:5274:ef02:b8c5:577c:5028"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"119.148.92.111","standbyIpAddress":"106.21.74.31"}},"version":"7a7c4c69-3da2-5e43-a1f3-2f8026bfb0bd","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"f13918c2-287c-5026-b2d4-ae18cf69fd8c","name":"SecurityZone2Name","description":"Elaba havor do tifgovew di tobeep osiho gamalun ilokavo hosoc bavmep lo katzakcu we lekucazif jusifi baluhufa ivinu.","version":"f1cb8b72-77e1-524f-9ee0-07e3f6ffb563","interfaces":[{"mtu":5818,"enabled":true,"description":"Eh fiec wepauju fakigi fedep osgitewo wodrah ponkumido fis nozpuri ju geelo doh vipuopu vobuhalu piova bokadar.","id":"09d6217f-2741-5b6a-bd5c-91ca02f54e09","hardwareName":"GigabitEthernet1/6","macAddress":"3539.C649.1EF4","monitorInterface":false,"standbyMacAddress":"AAB5.9320.943C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"e765:caaf:c971:52be:e7af:9357:6eab:2e59/32","ipAddress":"d168:a40a:b8df:9bc5:d38c:64df:a4fd:4110/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"76da:7d95:05ed:3ac9:4014:58d2:1e81:b4b2","ipAddress":"fdcf:ebe2:84c9:5892:94f3:b209:1cd6:d430"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"46.176.226.56","standbyIpAddress":"252.197.49.100"}},"version":"e18f92be-6c58-55a7-9dea-ccdefd79a44f","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":false,"description":"Wi repiro sisig se wuglo zuzrog wivsel iboabamu wug sew figinfo pada koorcu wun akawobit cuholso wizpeos belidgew.","id":"c95c223c-b583-5d80-88a6-b1ac1b528e5e","hardwareName":"GigabitEthernet1/8","macAddress":"AD75.0711.BDF3","monitorInterface":false,"standbyMacAddress":"C7BE.0512.EDE1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4d6e:8d99:e5e9:8e08:03ed:ac78:12d9:1abc/32","ipAddress":"5b5a:9ba8:4d53:74f4:b2b9:b36b:2930:3030/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"919d:d8d6:cac4:18ed:5582:4d98:5afa:7f30","ipAddress":"9bfa:b940:f6b8:cd45:9eb6:d07e:09a6:b747"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"206.102.168.38","standbyIpAddress":"47.171.86.122"}},"version":"88bd96c5-891e-5b48-ab25-5091e3dfe377","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"95a6c824-af98-562a-8be6-adc2446c4a09","name":"SecurityZone4Name","description":"Hu nevsuzwiz lezjab hidlurus la pak relte kew umigo zo kopi jetjata.","version":"73028d64-6d1e-5a0a-9f3c-db515f246240","interfaces":[{"mtu":2652,"enabled":false,"description":"Zojin ohdahe kulgune acme eriocopus wubvi hulwic buscub daugeiw ekdegwa jijekub ko gijenog lokrogri tolev tiassi pejliuda.","name":"subinterface6name","id":"bf6765a2-9e9f-506d-a381-329a46273a43","hardwareName":"SubInterface0/6.7","macAddress":"35AF.6E50.0377","monitorInterface":true,"standbyMacAddress":"D947.0A8F.425F","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"7206:d020:f8c8:c150:b059:d35c:3824:c1ae/32","ipAddress":"be49:09fb:26ce:f506:0899:43c5:ce17:4143/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"080b:aa66:ca0d:4375:d7c7:8cbb:8978:46f0","ipAddress":"a226:34cd:63b0:a860:aa22:3304:05a5:a64f"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.51.91.99","standbyIpAddress":"231.94.58.66"}},"version":"68043109-6c4e-5a0f-8df0-d01122d3c319","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"sourceNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"302b9321-60fd-55ac-8111-7b228ba8a7bc","name":"Geolocation1","description":"Eretalta mov naw dibravwe vimu bek ose wipa ecgule kesep pewaco we taruhra awsen kef poin tu fazu.","version":"b9a8a2e0-c5ff-5705-8d0f-b488b9275e46","type":"geolocation","locations":[{"id":"56ea454f-c3b7-5928-88b1-fc3c7937519a","name":"Africa","deprecated":true,"code":1001,"type":"continent","countries":[{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"},{"id":"7cd6bf9c-8b69-57c2-abf6-6eeb0741de15","name":"Zambia","deprecated":true,"iso3":"ZMB","iso2":"ZM","code":"894","type":"country"},{"id":"f2d94483-8127-5b5c-9f56-26897f391615","name":"South Africa","deprecated":false,"iso3":"ZAF","iso2":"ZA","code":"710","type":"country"},{"id":"67312148-f472-5f74-af7e-da0dfe6c5483","name":"Mayotte","deprecated":true,"iso3":"MYT","iso2":"YT","code":"175","type":"country"},{"id":"16d66ae1-8a56-5b81-8a83-6f7123be2e2c","name":"Uganda","deprecated":false,"iso3":"UGA","iso2":"UG","code":"800","type":"country"},{"id":"b1825e78-1df2-5592-a76e-7442de702238","name":"Tanzania","deprecated":false,"iso3":"TZA","iso2":"TZ","code":"834","type":"country"},{"id":"34105ec6-4fd5-5617-8a55-a033b433501b","name":"Tunisia","deprecated":false,"iso3":"TUN","iso2":"TN","code":"788","type":"country"},{"id":"00827e94-7231-522b-a92c-c43381c394b0","name":"Togo","deprecated":true,"iso3":"TGO","iso2":"TG","code":"768","type":"country"},{"id":"5b1f4a78-73fb-5d81-b087-a43e6a56210e","name":"Chad","deprecated":true,"iso3":"TCD","iso2":"TD","code":"148","type":"country"},{"id":"4390d558-ea24-5aab-92ed-7ea167512925","name":"Swaziland","deprecated":false,"iso3":"SWZ","iso2":"SZ","code":"748","type":"country"},{"id":"22e9a10d-c048-5bce-92b3-d35ba32a2380","name":"São Tomé and Príncipe","deprecated":false,"iso3":"STP","iso2":"ST","code":"678","type":"country"},{"id":"175e350b-3e7b-5988-92a5-b8592f89a5d0","name":"South Sudan","deprecated":true,"iso3":"SSD","iso2":"SS","code":"728","type":"country"},{"id":"408c17e6-3750-56ba-b74d-14cece756b69","name":"Somalia","deprecated":false,"iso3":"SOM","iso2":"SO","code":"706","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"},{"id":"81415c05-a391-5182-8902-0f48ee21358a","name":"Sierra Leone","deprecated":true,"iso3":"SLE","iso2":"SL","code":"694","type":"country"},{"id":"50c46fa0-0451-5e15-9bbc-846a527de114","name":"Saint Helena","deprecated":true,"iso3":"SHN","iso2":"SH","code":"654","type":"country"},{"id":"c2a050bc-b370-5bcd-945c-cd0d88d814ee","name":"Sudan","deprecated":false,"iso3":"SDN","iso2":"SD","code":"729","type":"country"},{"id":"2792902e-5e01-5294-bd39-4a9b86443f69","name":"Seychelles","deprecated":false,"iso3":"SYC","iso2":"SC","code":"690","type":"country"},{"id":"e6e6e19f-26b3-53cc-ae5c-ad6af73ffa23","name":"Rwanda","deprecated":false,"iso3":"RWA","iso2":"RW","code":"646","type":"country"},{"id":"1657adab-03a4-556a-b779-d62bf356497f","name":"Réunion","deprecated":true,"iso3":"REU","iso2":"RE","code":"638","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"271aded5-deef-50b9-9e02-ec55543da25b","name":"Niger","deprecated":true,"iso3":"NER","iso2":"NE","code":"562","type":"country"},{"id":"a8f12931-d0a3-5ead-b8f7-26c9d8e29684","name":"Namibia","deprecated":false,"iso3":"NAM","iso2":"NA","code":"516","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"26316b70-a4e5-5ee7-9176-d8f88977ac81","name":"Malawi","deprecated":false,"iso3":"MWI","iso2":"MW","code":"454","type":"country"},{"id":"8ac5e628-88fe-5a8f-a8e8-5e9823bed8c9","name":"Mauritius","deprecated":true,"iso3":"MUS","iso2":"MU","code":"480","type":"country"},{"id":"6286246a-cb95-57c8-bf4d-85524e069dc9","name":"Mauritania","deprecated":false,"iso3":"MRT","iso2":"MR","code":"478","type":"country"},{"id":"9eaf4ef5-fcd1-55b8-b344-7b60f9acbb2a","name":"Mali","deprecated":true,"iso3":"MLI","iso2":"ML","code":"466","type":"country"},{"id":"3158c9ea-2e08-5057-923c-a252e9bbceb5","name":"Madagascar","deprecated":true,"iso3":"MDG","iso2":"MG","code":"450","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"},{"id":"b82c039e-20c2-50f0-9176-307e154d19cd","name":"Lesotho","deprecated":true,"iso3":"LSO","iso2":"LS","code":"426","type":"country"},{"id":"936e5855-cede-5036-b530-4a8dc3ded9f1","name":"Liberia","deprecated":true,"iso3":"LBR","iso2":"LR","code":"430","type":"country"},{"id":"781554f5-83af-5829-a0b1-f679ccadcbc8","name":"Comoros","deprecated":true,"iso3":"COM","iso2":"KM","code":"174","type":"country"},{"id":"ef9608a5-3398-5610-9770-361e8f4d5018","name":"Kenya","deprecated":false,"iso3":"KEN","iso2":"KE","code":"404","type":"country"},{"id":"7ff14832-3c58-5e8d-b6fa-7d211d0eddea","name":"Guinea-Bissau","deprecated":true,"iso3":"GNB","iso2":"GW","code":"624","type":"country"},{"id":"24ef0507-02b5-58d8-a403-8087853d0d0e","name":"Equatorial Guinea","deprecated":false,"iso3":"GNQ","iso2":"GQ","code":"226","type":"country"},{"id":"8b2e1fe0-df59-514f-8cad-46e618371f10","name":"Guinea","deprecated":false,"iso3":"GIN","iso2":"GN","code":"324","type":"country"},{"id":"2311d16e-f8c8-5db8-9446-ddc015dee026","name":"Gambia","deprecated":true,"iso3":"GMB","iso2":"GM","code":"270","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"},{"id":"1a6265f3-08ce-57c4-9d8d-8807bc7c3f96","name":"Gabon","deprecated":true,"iso3":"GAB","iso2":"GA","code":"266","type":"country"},{"id":"7466e390-4ac7-5c6e-8ae7-cffbf4d26761","name":"Ethiopia","deprecated":false,"iso3":"ETH","iso2":"ET","code":"231","type":"country"},{"id":"1b6630d5-2650-5baf-b9a5-fa59fbbd36be","name":"Eritrea","deprecated":false,"iso3":"ERI","iso2":"ER","code":"232","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"bd6f190e-df1a-568c-94cc-8fbb7394522f","name":"Algeria","deprecated":false,"iso3":"DZA","iso2":"DZ","code":"012","type":"country"},{"id":"9c992f6e-72f5-5d6b-8fb9-b23909129b08","name":"Djibouti","deprecated":true,"iso3":"DJI","iso2":"DJ","code":"262","type":"country"},{"id":"63696b95-bded-58f4-8b4e-402397cfcd8a","name":"Cape Verde","deprecated":true,"iso3":"CPV","iso2":"CV","code":"132","type":"country"},{"id":"6d854d95-e91f-53cb-a1f2-1e07d51eb137","name":"Cameroon","deprecated":false,"iso3":"CMR","iso2":"CM","code":"120","type":"country"},{"id":"e8286886-6019-50d6-b0b4-315f7b9f2cef","name":"Ivory Coast","deprecated":false,"iso3":"CIV","iso2":"CI","code":"384","type":"country"},{"id":"97916595-e2d1-5214-87e2-e242bf4ad893","name":"Republic of the Congo","deprecated":false,"iso3":"COG","iso2":"CG","code":"178","type":"country"},{"id":"b1b8664b-d80d-5480-9b9a-a1ac997bd533","name":"Central African Republic","deprecated":false,"iso3":"CAF","iso2":"CF","code":"140","type":"country"},{"id":"8789e5fc-90ef-5dc5-942f-1f0f6bef20e2","name":"Democratic Republic of the Congo","deprecated":false,"iso3":"COD","iso2":"CD","code":"180","type":"country"},{"id":"e8bab11d-42db-5ff0-a68d-81d7fdae7000","name":"Botswana","deprecated":false,"iso3":"BWA","iso2":"BW","code":"072","type":"country"},{"id":"74442316-edea-5c33-9f4e-de1677f848a1","name":"Benin","deprecated":true,"iso3":"BEN","iso2":"BJ","code":"204","type":"country"},{"id":"a666ef14-444e-5605-add7-3a1a1bf028d6","name":"Burundi","deprecated":true,"iso3":"BDI","iso2":"BI","code":"108","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"}],"countryCodes":["716","894","710","175","800","834","788","768","148","748","678","728","706","686","694","654","729","690","646","638","566","562","516","508","454","480","478","466","450","504","434","426","430","174","404","624","226","324","270","288","266","231","232","732","818","012","262","132","120","384","178","140","180","072","204","108","854","024"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"}]}],"destinationNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"302b9321-60fd-55ac-8111-7b228ba8a7bc","name":"Geolocation1","description":"Eretalta mov naw dibravwe vimu bek ose wipa ecgule kesep pewaco we taruhra awsen kef poin tu fazu.","version":"b9a8a2e0-c5ff-5705-8d0f-b488b9275e46","type":"geolocation","locations":[{"id":"56ea454f-c3b7-5928-88b1-fc3c7937519a","name":"Africa","deprecated":true,"code":1001,"type":"continent","countries":[{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"},{"id":"7cd6bf9c-8b69-57c2-abf6-6eeb0741de15","name":"Zambia","deprecated":true,"iso3":"ZMB","iso2":"ZM","code":"894","type":"country"},{"id":"f2d94483-8127-5b5c-9f56-26897f391615","name":"South Africa","deprecated":false,"iso3":"ZAF","iso2":"ZA","code":"710","type":"country"},{"id":"67312148-f472-5f74-af7e-da0dfe6c5483","name":"Mayotte","deprecated":true,"iso3":"MYT","iso2":"YT","code":"175","type":"country"},{"id":"16d66ae1-8a56-5b81-8a83-6f7123be2e2c","name":"Uganda","deprecated":false,"iso3":"UGA","iso2":"UG","code":"800","type":"country"},{"id":"b1825e78-1df2-5592-a76e-7442de702238","name":"Tanzania","deprecated":false,"iso3":"TZA","iso2":"TZ","code":"834","type":"country"},{"id":"34105ec6-4fd5-5617-8a55-a033b433501b","name":"Tunisia","deprecated":false,"iso3":"TUN","iso2":"TN","code":"788","type":"country"},{"id":"00827e94-7231-522b-a92c-c43381c394b0","name":"Togo","deprecated":true,"iso3":"TGO","iso2":"TG","code":"768","type":"country"},{"id":"5b1f4a78-73fb-5d81-b087-a43e6a56210e","name":"Chad","deprecated":true,"iso3":"TCD","iso2":"TD","code":"148","type":"country"},{"id":"4390d558-ea24-5aab-92ed-7ea167512925","name":"Swaziland","deprecated":false,"iso3":"SWZ","iso2":"SZ","code":"748","type":"country"},{"id":"22e9a10d-c048-5bce-92b3-d35ba32a2380","name":"São Tomé and Príncipe","deprecated":false,"iso3":"STP","iso2":"ST","code":"678","type":"country"},{"id":"175e350b-3e7b-5988-92a5-b8592f89a5d0","name":"South Sudan","deprecated":true,"iso3":"SSD","iso2":"SS","code":"728","type":"country"},{"id":"408c17e6-3750-56ba-b74d-14cece756b69","name":"Somalia","deprecated":false,"iso3":"SOM","iso2":"SO","code":"706","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"},{"id":"81415c05-a391-5182-8902-0f48ee21358a","name":"Sierra Leone","deprecated":true,"iso3":"SLE","iso2":"SL","code":"694","type":"country"},{"id":"50c46fa0-0451-5e15-9bbc-846a527de114","name":"Saint Helena","deprecated":true,"iso3":"SHN","iso2":"SH","code":"654","type":"country"},{"id":"c2a050bc-b370-5bcd-945c-cd0d88d814ee","name":"Sudan","deprecated":false,"iso3":"SDN","iso2":"SD","code":"729","type":"country"},{"id":"2792902e-5e01-5294-bd39-4a9b86443f69","name":"Seychelles","deprecated":false,"iso3":"SYC","iso2":"SC","code":"690","type":"country"},{"id":"e6e6e19f-26b3-53cc-ae5c-ad6af73ffa23","name":"Rwanda","deprecated":false,"iso3":"RWA","iso2":"RW","code":"646","type":"country"},{"id":"1657adab-03a4-556a-b779-d62bf356497f","name":"Réunion","deprecated":true,"iso3":"REU","iso2":"RE","code":"638","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"271aded5-deef-50b9-9e02-ec55543da25b","name":"Niger","deprecated":true,"iso3":"NER","iso2":"NE","code":"562","type":"country"},{"id":"a8f12931-d0a3-5ead-b8f7-26c9d8e29684","name":"Namibia","deprecated":false,"iso3":"NAM","iso2":"NA","code":"516","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"26316b70-a4e5-5ee7-9176-d8f88977ac81","name":"Malawi","deprecated":false,"iso3":"MWI","iso2":"MW","code":"454","type":"country"},{"id":"8ac5e628-88fe-5a8f-a8e8-5e9823bed8c9","name":"Mauritius","deprecated":true,"iso3":"MUS","iso2":"MU","code":"480","type":"country"},{"id":"6286246a-cb95-57c8-bf4d-85524e069dc9","name":"Mauritania","deprecated":false,"iso3":"MRT","iso2":"MR","code":"478","type":"country"},{"id":"9eaf4ef5-fcd1-55b8-b344-7b60f9acbb2a","name":"Mali","deprecated":true,"iso3":"MLI","iso2":"ML","code":"466","type":"country"},{"id":"3158c9ea-2e08-5057-923c-a252e9bbceb5","name":"Madagascar","deprecated":true,"iso3":"MDG","iso2":"MG","code":"450","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"},{"id":"b82c039e-20c2-50f0-9176-307e154d19cd","name":"Lesotho","deprecated":true,"iso3":"LSO","iso2":"LS","code":"426","type":"country"},{"id":"936e5855-cede-5036-b530-4a8dc3ded9f1","name":"Liberia","deprecated":true,"iso3":"LBR","iso2":"LR","code":"430","type":"country"},{"id":"781554f5-83af-5829-a0b1-f679ccadcbc8","name":"Comoros","deprecated":true,"iso3":"COM","iso2":"KM","code":"174","type":"country"},{"id":"ef9608a5-3398-5610-9770-361e8f4d5018","name":"Kenya","deprecated":false,"iso3":"KEN","iso2":"KE","code":"404","type":"country"},{"id":"7ff14832-3c58-5e8d-b6fa-7d211d0eddea","name":"Guinea-Bissau","deprecated":true,"iso3":"GNB","iso2":"GW","code":"624","type":"country"},{"id":"24ef0507-02b5-58d8-a403-8087853d0d0e","name":"Equatorial Guinea","deprecated":false,"iso3":"GNQ","iso2":"GQ","code":"226","type":"country"},{"id":"8b2e1fe0-df59-514f-8cad-46e618371f10","name":"Guinea","deprecated":false,"iso3":"GIN","iso2":"GN","code":"324","type":"country"},{"id":"2311d16e-f8c8-5db8-9446-ddc015dee026","name":"Gambia","deprecated":true,"iso3":"GMB","iso2":"GM","code":"270","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"},{"id":"1a6265f3-08ce-57c4-9d8d-8807bc7c3f96","name":"Gabon","deprecated":true,"iso3":"GAB","iso2":"GA","code":"266","type":"country"},{"id":"7466e390-4ac7-5c6e-8ae7-cffbf4d26761","name":"Ethiopia","deprecated":false,"iso3":"ETH","iso2":"ET","code":"231","type":"country"},{"id":"1b6630d5-2650-5baf-b9a5-fa59fbbd36be","name":"Eritrea","deprecated":false,"iso3":"ERI","iso2":"ER","code":"232","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"bd6f190e-df1a-568c-94cc-8fbb7394522f","name":"Algeria","deprecated":false,"iso3":"DZA","iso2":"DZ","code":"012","type":"country"},{"id":"9c992f6e-72f5-5d6b-8fb9-b23909129b08","name":"Djibouti","deprecated":true,"iso3":"DJI","iso2":"DJ","code":"262","type":"country"},{"id":"63696b95-bded-58f4-8b4e-402397cfcd8a","name":"Cape Verde","deprecated":true,"iso3":"CPV","iso2":"CV","code":"132","type":"country"},{"id":"6d854d95-e91f-53cb-a1f2-1e07d51eb137","name":"Cameroon","deprecated":false,"iso3":"CMR","iso2":"CM","code":"120","type":"country"},{"id":"e8286886-6019-50d6-b0b4-315f7b9f2cef","name":"Ivory Coast","deprecated":false,"iso3":"CIV","iso2":"CI","code":"384","type":"country"},{"id":"97916595-e2d1-5214-87e2-e242bf4ad893","name":"Republic of the Congo","deprecated":false,"iso3":"COG","iso2":"CG","code":"178","type":"country"},{"id":"b1b8664b-d80d-5480-9b9a-a1ac997bd533","name":"Central African Republic","deprecated":false,"iso3":"CAF","iso2":"CF","code":"140","type":"country"},{"id":"8789e5fc-90ef-5dc5-942f-1f0f6bef20e2","name":"Democratic Republic of the Congo","deprecated":false,"iso3":"COD","iso2":"CD","code":"180","type":"country"},{"id":"e8bab11d-42db-5ff0-a68d-81d7fdae7000","name":"Botswana","deprecated":false,"iso3":"BWA","iso2":"BW","code":"072","type":"country"},{"id":"74442316-edea-5c33-9f4e-de1677f848a1","name":"Benin","deprecated":true,"iso3":"BEN","iso2":"BJ","code":"204","type":"country"},{"id":"a666ef14-444e-5605-add7-3a1a1bf028d6","name":"Burundi","deprecated":true,"iso3":"BDI","iso2":"BI","code":"108","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"}],"countryCodes":["716","894","710","175","800","834","788","768","148","748","678","728","706","686","694","654","729","690","646","638","566","562","516","508","454","480","478","466","450","504","434","426","430","174","404","624","226","324","270","288","266","231","232","732","818","012","262","132","120","384","178","140","180","072","204","108","854","024"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"}]}],"sourcePorts":[{"id":"d0ecb6d1-cc76-58fb-a392-4e9c9537be4c","name":"icmpv4port2","description":"Asci be jutgu wo susadagi woveven bafosjoc ceec wovukiv tati tepav gu za muhhudbi.","version":"54ed4735-cf04-5504-8a5a-2dd0bec3f5a9","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8251,"isSystemDefined":false},{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"destinationPorts":[{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"users":[{"id":"5c6ece63-70a7-5455-b42e-83a4a2e3dc3b","name":"User Group 16","realmName":"nofadporog","type":"trafficusergroup","realmId":2,"version":"utjacuwez"},{"id":"34ce25ce-b971-56d3-b495-655fa8025d19","name":"User Group 5","realmName":"tacmisfaku","type":"trafficusergroup","realmId":2,"version":"acufuzanaf"},{"id":"e4cf55a1-9e8b-5e8b-a91e-ed734a516447","name":"User Group 29","realmName":"wicocetifow","type":"trafficusergroup","realmId":2,"version":"ohkofalezi"}],"embeddedAppFilter":{"conditions":[{"filter":"muechicpoh","tags":[{"id":"7269266f-8413-59ef-9085-0de4aa64660b","version":"6eb7235a-74ab-5701-8a37-2522e325519d","appId":2,"name":"ApplicationTag2","description":"Zu wep pag palu mazu irowil rag bore ev ica miljov iwoog besjezew fi regevi ap vo.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"},{"filter":"loweteziwno","tags":[{"id":"11d43e11-683f-5ec2-89c6-6b4e9a8c756d","version":"13924388-a6d9-5f80-8b3b-825736afd2bc","appId":13,"name":"ApplicationTag13","description":"Fiwjag safe jujohmi lipa gucpi la tocgomkap fozensir jafuhi vutbinij jov lifo ciduwno fuzegvef consibe hope.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"0a6d59d9-86bf-5ca6-bcdc-8f9bbdfa8542","version":"55d07968-5435-5c3e-8840-2f0761cf28e1","name":"ApplicationFilter4","description":"Ro isuopwo azjuswu an dadwiwen kapoteno ifsi vef je omeanni riho lema berezas geci se.","applications":[{"id":"44b7bb09-58d5-59ef-abd3-7341fa4d1c7b","version":"fe155cb3-e78d-5a5b-8713-5c056c0ea86f","description":"Dazgo jefeci dulhel lowez cotgo mu ewuufih indeh bo urjur vursosoc cetco eb.","deprecated":false,"appId":8,"productivity":3,"risk":3,"name":"Application3","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","0928e8e9-25a4-53d0-b118-342a26b44100"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"loweteziwno","tags":[{"id":"11d43e11-683f-5ec2-89c6-6b4e9a8c756d","version":"13924388-a6d9-5f80-8b3b-825736afd2bc","appId":13,"name":"ApplicationTag13","description":"Fiwjag safe jujohmi lipa gucpi la tocgomkap fozensir jafuhi vutbinij jov lifo ciduwno fuzegvef consibe hope.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"f8c5fef0-916a-541e-9113-de4951dde18b","version":"c07380b4-d91f-5a9b-aed7-efbe152c2f6b","description":"Aloul gouwtu riguse luzmokfof somi ehroz esecegwaf fafal heeg ohban fi ijga.","deprecated":true,"appId":6,"productivity":1,"risk":3,"name":"Application6","tagIds":["63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["33552c21-0930-5bb5-8459-9b7608cda68e","794d6605-f5d9-5f26-b11d-507eac471889"],"categories":[{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["WEBAPP"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ef71cd89-a0fc-5994-aaff-0f427dff92fa","version":"pugvagpugmi","name":"UrlGroup5","description":"Muhzipil korezoki kuwelas fojulcud jum ineteig ob zeluc mekpufes api ajnovawa ro tadi.","objects":[{"id":"0776578c-c6ee-58a3-91de-7d50b64343b8","version":"bimupair","name":"Url7","description":"Mer komad cozmersul el gaze fupfod gij pikukkop kavimgen befowez guwojo bikpogezu ice niruvpo ganal ovo taun.","url":"http://difepfel.io/ovcekwe","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"e486bdfa-148b-5bc2-8d36-a9ff520e6100","name":"Benign sites with security risks","index":3,"startPercentage":41,"endPercentage":60,"version":"b9f77c01-ede9-55d2-b674-61ac711565ec","type":"urlreputation"},"urlCategory":{"id":"fef571b3-8633-5be7-9cef-47c0dc5a43a7","version":"2b4b99aa-307f-5ed5-b7f3-5c9e0fa8846e","name":"UrlCategory-4","deprecated":false,"urlCategoryId":4,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"logFiles":false,"type":"accessrule"},{"id":"01c653a0-c459-55e3-9f61-539ba5e169df","version":"aa190f15-92c9-5212-b91b-d84c6d6cb19f","ruleId":30,"name":"Access_Rule_30","protocol":"TCP","ruleAction":"PERMIT","eventLogAction":"LOG_BOTH","syslogServer":{"id":"f2c4e7eb-7291-5517-9517-856dc94ff74d","version":"a0453a75-4ee6-5add-9577-adc5172a2d03","host":"57.182.210.210","port":5897,"protocol":"TCP","useManagementInterface":true,"type":"syslogserver"},"sourceZones":[{"id":"a3e7f3ef-3d09-5365-9a73-229ded43ba48","name":"SecurityZone15Name","description":"Wofa mukko zugal efamosaj ape vurugepa memepi woutod lu ergifde ceini den pegvuni ja.","version":"e721fda0-83ce-51b6-a003-bedfe42bb5db","interfaces":[{"mtu":2652,"enabled":false,"description":"Bo afri kewbiezu atda okpibmim faelaja jip tu ena oc pek mu piwnehsab puspon nuuja ziwelnak ilwu teew.","name":"subinterface9name","id":"a54e4784-eafc-5bc4-bfa1-985dd51ea923","hardwareName":"SubInterface0/9.10","macAddress":"A82E.76DF.F146","monitorInterface":false,"standbyMacAddress":"11D9.182D.C518","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4f09:724e:c874:a60e:ff7c:0374:170f:cacf/32","ipAddress":"4313:8aa3:d274:f439:ea48:c8c7:c19b:22e2/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"0484:520a:88d4:9a88:6e95:64c9:65b9:f83b","ipAddress":"4ad5:881b:7ff6:552a:b882:7de7:21fc:972d"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"0.192.1.63","standbyIpAddress":"195.235.84.107"}},"version":"877f9f31-9402-5eaa-b18c-9333e068e73e","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"83e3721c-b23f-5eb1-b660-40655c216680","name":"SecurityZone9Name","description":"Iha kiuh ja iweacce tuh hajmipjuj fikufuv bofijwi esede tu gahak wenab belif lupilsif udo puzabke ferfa ofwon.","version":"17150a55-f982-526f-aa60-9e435d2c5455","interfaces":[{"mtu":5818,"enabled":true,"description":"Wabjenuv vuhtevguf zucce omiogu anitug cuho gaejma vesumob oduuro levhid uniozwej olkavcuv dawiim mehub wuka suj.","id":"3faf4981-2b04-5091-9c1f-fa0ab78379b4","hardwareName":"GigabitEthernet1/5","macAddress":"7472.5071.519E","monitorInterface":false,"standbyMacAddress":"5387.1EFE.E0E6","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"84c0:cd09:bceb:ce0c:5cfa:f535:d426:01db/32","ipAddress":"067a:e7f9:1bf0:6af4:b89b:4c11:ec0c:51b4/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"02eb:e82a:bb44:e0a0:d969:6055:6744:cfa2","ipAddress":"aa33:0271:1f23:9725:0d24:7767:0fd2:0cf8"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"6.124.202.116","standbyIpAddress":"40.108.171.23"}},"version":"472d2c22-e548-5cb1-983f-f81ee3e14422","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"sourceNetworks":[{"id":"00826312-17b2-5b1e-968a-aabe114f0734","name":"Network6","description":"Je anah sankorir zaduv noscipan ron pi dubsanuf motnod ugufu zacew idu wafsembuc lo roge almoh lah.","version":"59e9909f-27d5-5e47-8d77-210909065352","type":"networkobject","subType":"NETWORK","value":"234.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"ae1c0317-eff4-5a33-8a62-261109073d87","name":"Geolocation5","description":"Fihedrag najdeimi ofu remig amokeso duzodro pa guanru isojo honune bumcozi nu.","version":"01c4fd80-7bdc-5ee1-8f7c-de9ff5bbd08d","type":"geolocation","locations":[{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"a05f1e97-1b5e-5f45-b53a-373f28de0edc","name":"Uruguay","deprecated":false,"iso3":"URY","iso2":"UY","code":"858","type":"country"},{"id":"e6bb9c77-a955-5f2b-ac2d-9082a5160f71","name":"British Virgin Islands","deprecated":true,"iso3":"VGB","iso2":"VG","code":"092","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"}]}],"destinationNetworks":[{"id":"00826312-17b2-5b1e-968a-aabe114f0734","name":"Network6","description":"Je anah sankorir zaduv noscipan ron pi dubsanuf motnod ugufu zacew idu wafsembuc lo roge almoh lah.","version":"59e9909f-27d5-5e47-8d77-210909065352","type":"networkobject","subType":"NETWORK","value":"234.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"ae1c0317-eff4-5a33-8a62-261109073d87","name":"Geolocation5","description":"Fihedrag najdeimi ofu remig amokeso duzodro pa guanru isojo honune bumcozi nu.","version":"01c4fd80-7bdc-5ee1-8f7c-de9ff5bbd08d","type":"geolocation","locations":[{"id":"d6f6aa91-7e0d-5137-abbf-328cc779888c","name":"Antarctica","deprecated":true,"code":1004,"type":"continent","countries":[{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"3358686b-4139-5062-b3a1-e838d19918cf","name":"Heard Island and McDonald Islands","deprecated":true,"iso3":"HMD","iso2":"HM","code":"334","type":"country"},{"id":"ba4897cd-087a-5292-b1be-d3a00a7f26bb","name":"South Georgia and the South Sandwich Islands","deprecated":true,"iso3":"SGS","iso2":"GS","code":"239","type":"country"},{"id":"fa4cea3e-1888-5481-9934-8f815bc26857","name":"Bouvet Island","deprecated":true,"iso3":"BVT","iso2":"BV","code":"074","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"}],"countryCodes":["260","334","239","074","010"]},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"0a95f5f3-ed92-5adb-9e53-3a1d516b33f1","name":"Iceland","deprecated":true,"iso3":"ISL","iso2":"IS","code":"352","type":"country"},{"id":"a05f1e97-1b5e-5f45-b53a-373f28de0edc","name":"Uruguay","deprecated":false,"iso3":"URY","iso2":"UY","code":"858","type":"country"},{"id":"e6bb9c77-a955-5f2b-ac2d-9082a5160f71","name":"British Virgin Islands","deprecated":true,"iso3":"VGB","iso2":"VG","code":"092","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"}]}],"sourcePorts":[{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"destinationPorts":[{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false},{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true}],"users":[{"id":"5c815701-9753-5b9e-8b24-c5c5511aa1b6","name":"User 23","realmName":"gowitenci","type":"trafficuser","realmId":2,"version":"tufapitem"},{"id":"08ccb2fe-b3b5-524a-8857-8df8d2b8cd4c","name":"User 6","realmName":"mazivezgez","type":"trafficuser","realmId":2,"version":"vibnilkiza"},{"id":"ce75440f-a481-5a0b-b630-ff9c24a2a3ea","name":"User 15","realmName":"difubuve","type":"trafficuser","realmId":2,"version":"beikbihfij"}],"embeddedAppFilter":{"conditions":[{"filter":"loweteziwno","tags":[{"id":"11d43e11-683f-5ec2-89c6-6b4e9a8c756d","version":"13924388-a6d9-5f80-8b3b-825736afd2bc","appId":13,"name":"ApplicationTag13","description":"Fiwjag safe jujohmi lipa gucpi la tocgomkap fozensir jafuhi vutbinij jov lifo ciduwno fuzegvef consibe hope.","metadata":{"referenced":true},"type":"applicationtag"}],"categories":[{"id":"24cd3c21-8c19-531f-81d5-08aca7b587b9","version":"b18c67e8-0f51-5f2c-88a2-11994eea44b1","appId":5,"name":"ApplicationCategory5","description":"Camweg wevovic diowu fi vo kacag vibumjih lus bowi ewatige epewa ecifoder mu gopeges.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"3cd37a5a-b5c2-516a-8eb9-c5d87fcdb2a2","version":"76af8e96-44af-5285-a65a-172f138b8941","appId":3,"name":"ApplicationCategory10","description":"Taljooco pi wo cahorti fih heose wicueci emiwoube no iwozovban ip oho im uke wu ko noed.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"},{"filter":"uckupehot","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"}],"applicationTypes":[{"type":"typecondition","applicationType":"SERVER"},{"type":"typecondition","applicationType":"CLIENT"}],"productivities":[{"type":"productivitycondition","productivity":"LOW"},{"type":"productivitycondition","productivity":"VERY_HIGH"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"a0d6d0e6-95f9-528f-99cd-ade97f3318ba","version":"e719a0ce-c1e2-56c8-a9be-2f90e8351624","name":"ApplicationFilter15","description":"Lirec zejjezop folidetat dinwe zetavi izdoak hi tion eg iwdorha ik ah abpi.","applications":[{"id":"a035fce1-4959-5362-8472-253aa159b1ec","version":"616efbb8-6148-59e3-afd4-68d4d42164c1","description":"Fo cigejki leg umjunu ja da lefuh ib zatlose ganutag dilebi cejizgow.","deprecated":false,"appId":6,"productivity":0,"risk":1,"name":"Application15","tagIds":["f7e90abe-ce71-56da-9f43-dd8685ec1a3a","a558b06a-1e83-5caa-a903-3b6e291ddc2e"],"tags":[{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"a558b06a-1e83-5caa-a903-3b6e291ddc2e","version":"96c0750c-0f50-5872-869a-8b50dad24edc","appId":8,"name":"SSL protocol","description":"Ifgafu ma vopuatu ho jim zud hiodiben ango ji nusiwufu hig gatejsem povci.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["fff4b47c-a653-5729-a31a-e6353d420768","7f62abc6-7f08-5a69-acb6-65def01251d4"],"categories":[{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","SERVER"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"jignorebes","tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":false},"type":"applicationfilter"}],"applications":[{"id":"17b348f3-870c-5aa4-bcae-3bfe0f0d061d","version":"7b26e782-fe4b-5259-aa5f-744f5c3f1b22","description":"Tem ac li gagnefro folema no mo tafdis cew vudo wafop ru milis ubuedurur sufbot.","deprecated":true,"appId":2,"productivity":0,"risk":2,"name":"Application8","tagIds":["e9812b72-2a36-5146-bce0-b09f876df88d"],"tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","SERVER"],"metadata":{"referenced":true},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"ffe7a902-b85c-5fd6-af84-62f80cd30c65","version":"weowagopwib","name":"UrlGroup7","description":"Doaniopa kojutwef va uzu ji riw hoap veruhro ge nej tozbuz uzbohi ma pok.","objects":[{"id":"4dcd5400-fbdc-5d2e-a182-437ae706284c","version":"erreupih","name":"Url11","description":"Mu wiod pa winhuta ukzup foveba conefda zecvi wit ciahujah bo lahfonhe adcogo mori.","url":"http://sodzup.io/pivkaod","type":"urlobject"},{"id":"1ec355c1-47fb-55b1-b8d1-6d6a465821ca","version":"hapevemoco","name":"Url10","description":"Cagsif ju ilawusne kal uw tewwuvmul cu suilu putuz fuwabe wi favig bibothep ti hire gucrak.","url":"http://ni.net/civ","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlCategory":{"id":"293f3f8b-e996-5139-bee7-ff7e376ed4f0","version":"2b059a77-a530-5bd9-8694-f4754a6e7538","name":"UrlCategory-8","deprecated":false,"urlCategoryId":65534,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"intrusionPolicy":{"id":"a47cb8f5-fe55-11e4-8e99-ipsN30","name":"Security Over Connectivity","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f5-fe55-11e4-8e99-ipsN30/rules/"}},"description":"Security Over Connectivity Layer","type":"intrusionpolicy","version":"fc826c33-84fb-5b14-96e5-0cdd4717c442"},"logFiles":false,"type":"accessrule"}],"securityIntelligence":{"id":"f0b864fa-9530-5dac-b94c-a056e4619934","securityIntelligenceNetworkPolicy":{"id":"0ea316eb-527a-5098-a64d-585fa1d4618e","whitelist":[{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}}],"blacklistForBlock":[{"id":"5f628e6e-9c10-55a9-a69b-78d400a47404","version":"10128965-b11b-5330-bcba-fc2ec3888558","name":"networkfeed23","checksumURL":"Iwiovozul jifeen girzi ci oze zekodo cujzo cefeto ze zihdeka muasa li hokano.","feedURL":"http://reah.io/revnil","updateFrequency":"ONE_HOUR","lastUpdate":"2018-07-12 12:42:21.872Z","type":"networkfeed"}],"version":"97086e22-b9cb-5709-ba75-f7e2551f17ba","name":"viovba","type":"securityintelligencenetworkpolicy"},"securityIntelligenceURLPolicy":{"id":"b58aeb8a-9ab0-5cc2-b062-053a08affa7b","whitelist":[{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"blacklistForBlock":[{"id":"ef71cd89-a0fc-5994-aaff-0f427dff92fa","version":"pugvagpugmi","name":"UrlGroup5","description":"Muhzipil korezoki kuwelas fojulcud jum ineteig ob zeluc mekpufes api ajnovawa ro tadi.","objects":[{"id":"0776578c-c6ee-58a3-91de-7d50b64343b8","version":"bimupair","name":"Url7","description":"Mer komad cozmersul el gaze fupfod gij pikukkop kavimgen befowez guwojo bikpogezu ice niruvpo ganal ovo taun.","url":"http://difepfel.io/ovcekwe","type":"urlobject"}],"type":"urlobjectgroup"},{"id":"1ec355c1-47fb-55b1-b8d1-6d6a465821ca","version":"hapevemoco","name":"Url10","description":"Cagsif ju ilawusne kal uw tewwuvmul cu suilu putuz fuwabe wi favig bibothep ti hire gucrak.","url":"http://ni.net/civ","type":"urlobject"},{"id":"e9248457-7eaf-5343-9069-e672bf530f61","version":"5e4d020b-63f5-5cf7-b09a-1223a60908b7","name":"urlfeed3","checksumURL":"Ackurpi tairjif nuabowu teg buuzro tiohumah mogolar mukva divti inabufepu jis decicev zomajpe cufowgo wazatevo ku okrocelo mibuw.","feedURL":"http://hif.com/efasepnu","updateFrequency":"ONE_WEEK","lastUpdate":"2018-07-10 12:42:21.877Z","type":"urlfeed"}],"version":"19d1ac8b-8d22-5601-96b5-4d965ecac9ec","name":"vibeaze","type":"securityintelligenceurlpolicy"},"syslogServer":{"id":"5f0e6c85-c926-5164-b869-521630fab8d0","version":"bf8528ac-8ccc-5ef7-a484-11e827a3cd66","host":"80.207.116.68","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"logEnabled":true,"name":"NGFW-Default-Security-Intelligence-Policy","version":"c6b476ea-d3cd-55eb-ad8b-8541b6555ae3","type":"securityintelligencepolicy"},"sslPolicy":{"id":"default-ssl-random-id","type":"sslpolicy","version":"dc207d5a-c82b-54c6-b909-57bc23791864","name":"SSL_Policy_1","sslRules":[],"undecryptableActions":{"type":"sslundecryptableactions","compressedSession":"DO_NOT_DECRYPT","sslV2Session":"BLOCK_WITH_RESET","unknownCipherSuite":"INHERIT_DEFAULT_ACTION","unsupportedCipherSuite":"INHERIT_DEFAULT_ACTION","sessionNotCached":"BLOCK_WITH_RESET","handShakeErrors":"BLOCK","decryptionErrors":"BLOCK"},"decryptionCACertificate":{"id":"4d266d16-14e6-58c4-940a-2246efd34363","name":"Internal CA1","cert":"-----BEGIN CERTIFICATE-----\nMIIDEjCCAnugAwIBAgIJAJ69cfUJsifzMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD\nVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQL\nDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkq\nhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQ0NTJaFw0x\nNjA0MDUxNDQ0NTJaMIGVMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDzAN\nBgNVBAcMBkF1c3RpbjEVMBMGA1UECgwMQURJIGF0IENpc2NvMQwwCgYDVQQLDANB\nREkxHTAbBgNVBAMMFEFESSBUZXN0aW5nIEF0IENpc2NvMSEwHwYJKoZIhvcNAQkB\nFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\nAKk6jiG3XImaQNnVe1zeRbchMVbpBxdDYIRt0Eqvl2HqfAZJDKSw+s080iMC5Dmg\nTvOaZYaf4rc92z/WpMTgiOxmwKLhaw1INzBptxc4JoQPNFG4qUSVIHW9mnoXwluo\naXypJKAgeLukuO5tdUj9Iy4IHabMmJxcQsZ1vJ65cIH5AgMBAAGjezB5MAkGA1Ud\nEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj\nYXRlMB0GA1UdDgQWBBROqbPMUm6cUg+E/ficJa8WkdhcwzAfBgNVHSMEGDAWgBRD\nXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBaoTmcEb14AIcd\nq6R34phLlDP1JRV54NQ5gTXK858dyRE41CHensHSwXlHUg2JJ/LuUhK7h+ST1Qhy\nkFCHNQHh9ojRK34ydIIltGaGGCIZDEgUqhc7IeZ/PSR5252vQaAwDWDxapA2ZsVo\nr9OY0Q7uuCLvNNiQQzvjlnQZ94Rp4A==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqsrdtuAzs/APtjiJefyhxCnheLOFOP8BfvtcdfFNFVj3RP5n30AYGmTT31dTLPeA4dYHgthUImKkxcWIOuJqHlLrEo3fmfEbhy8KehfQ0Pfy+4K/QTB7NU28/K9Hr0Mwz6bUuboby/BvIi1u/ZIzl5KlmJBz/cQMPonD2hte2fwvkqCfhpNl25tMzEpyqCAa4tciUqSXf0Zs63XtcVPBpuGN6vU0QllqxLbzsQ7ShwymBiLnUqX95tWkJCrRIfklEwlbTXyRM5NSjk6EdZeDfX5OHexV4AodbtGZSeQYU7s2vs50khtIWVGr+14dPguWf9ggMCRoX+B9RogfV03IVAgMBAAECggEAfwLTsXQNShiK46uqrx12fgYIYiqKyqps/dEGRw5G94SgIp5sdhP3J9m/q9kTqNa1i80Dgqx5IhhVbFCtYb7CXLex8LahdIJsS35NpZ6OgoDNG0ocB6VcFfNLB3oXjJukFcyD37Sl/Q7RrXrkHZk3radi1Hlyii8Q1AVOgGD9CPBwRaBrjAuJXunJRSnzJ1MuV29PoNSOcQ0o+q26JkZaTcFHt/iVdeBiKFEyfwd6oWTkpRQiUD+Xi/P9XkYud1nou64dvw6XIDpsV7uX07OASHk1fuQjDJLwyO4KlcWBzNb6Z1sE6l1EqHcZKqijcYISElzPGTEVlDkXAT5YxiIjAQKBgQDVYP/8obthBaUBFVkPaZNUzLsjyv9ONOWVHIzw9YVOmC7v2WdrnDgoBkNaV4SdCOYsJW+887nA6zK2208DlRea1fAcZWgItRqvJi9wiqtZAS1BCC+tTliYS3x/wqmFyFRqLK4dIqpbZ52+vEoEMgrDJmzG7k7aXjAm9+JH+MqfBQKBgQDMy0KcdA68h5VlbifLnMbQUJO7Zy081Tdbpgnf02/PaC/HHbYnbn/hWv8TTuoBcEDkh0nl3JRmPKMyF+Aeqj5Xd6A4znRQXq9ZPcOyKYw08VGkf4m41mm2Iq7HcSwhZFlWZWfA3cCU+Z5eTVY7RBQjoJ8Qk6LyRjAmlA5xiMVT0QKBgGVDeXjtUD3FLf+LoA5+bhsqZg2ggvUciW/wcrrP6gnYkz3kkP4yzzu/bStsqVTVKlb9FUA48oiplhHNlnv+v4sNyLvRLEQlnppMpurkBFljA5T/S5EVw1nTSSxgt47z+YvB1IejMfHbBLPGK+I91XmzvJ/T7LwZQwTbUxoQ6if5AoGBAMuoErzteT4pAvuUWQTWCqxchR1nVIhbbKq6arVoWZeDf4fe1ydNbuSXjnQQFQuLKy1YELgC7JzjDlOhhKJaIJbxAqebP/YwwuXXU0ZYpPJ9TPhuUHI833Fd+juiIwWt+l29iDk3DO3ZcpFLDUbww6pOcACXIQMXo4ip0dc78SgRAoGAEb7FK7hqFmBk24Pu5vzKE/BYYD1mY17+zmeFocn2vu89jLYvRGYrvuGn9TgD3zeXjNsAqbMW8Td5F3xnMJ3JHhnAQHd1Wh5VROsXfhtT/Uhl4eCGEkKqM+EEBD6Z3UsZbNFRGEl1xThzdwchLt0WNTD9kuoxWkjV3hjPBnkJlvk=-----END PRIVATE KEY-----","issuerCommonName":"FTD OnBox Team Testing at Cisco","issuerOrganizationUnit":"FTD","subjectCommonName":"FTD Testing At Cisco","subjectOrganization":"FTD at Cisco","subjectOrganizationUnit":"FTD","validityStartDate":"Apr 6 14:44:52 2015 GMT","validityEndDate":"Feb 16 14:44:52 2017 GMT","type":"internalcacertificate","version":"6d05cd7f-3d24-55de-85d1-7d5a97f95f58"},"internalCertificates":[{"id":"2b778d3e-fdfe-55f2-88f9-3f29239683bb","name":"Internal CA2","cert":"-----BEGIN CERTIFICATE-----\nMIIDEjCCAnugAwIBAgIJAJ69cfUJsifzMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD\nVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQL\nDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkq\nhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQ0NTJaFw0x\nNjA0MDUxNDQ0NTJaMIGVMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDzAN\nBgNVBAcMBkF1c3RpbjEVMBMGA1UECgwMQURJIGF0IENpc2NvMQwwCgYDVQQLDANB\nREkxHTAbBgNVBAMMFEFESSBUZXN0aW5nIEF0IENpc2NvMSEwHwYJKoZIhvcNAQkB\nFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\nAKk6jiG3XImaQNnVe1zeRbchMVbpBxdDYIRt0Eqvl2HqfAZJDKSw+s080iMC5Dmg\nTvOaZYaf4rc92z/WpMTgiOxmwKLhaw1INzBptxc4JoQPNFG4qUSVIHW9mnoXwluo\naXypJKAgeLukuO5tdUj9Iy4IHabMmJxcQsZ1vJ65cIH5AgMBAAGjezB5MAkGA1Ud\nEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj\nYXRlMB0GA1UdDgQWBBROqbPMUm6cUg+E/ficJa8WkdhcwzAfBgNVHSMEGDAWgBRD\nXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBaoTmcEb14AIcd\nq6R34phLlDP1JRV54NQ5gTXK858dyRE41CHensHSwXlHUg2JJ/LuUhK7h+ST1Qhy\nkFCHNQHh9ojRK34ydIIltGaGGCIZDEgUqhc7IeZ/PSR5252vQaAwDWDxapA2ZsVo\nr9OY0Q7uuCLvNNiQQzvjlnQZ94Rp4A==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqsrdtuAzs/APtjiJefyhxCnheLOFOP8BfvtcdfFNFVj3RP5n30AYGmTT31dTLPeA4dYHgthUImKkxcWIOuJqHlLrEo3fmfEbhy8KehfQ0Pfy+4K/QTB7NU28/K9Hr0Mwz6bUuboby/BvIi1u/ZIzl5KlmJBz/cQMPonD2hte2fwvkqCfhpNl25tMzEpyqCAa4tciUqSXf0Zs63XtcVPBpuGN6vU0QllqxLbzsQ7ShwymBiLnUqX95tWkJCrRIfklEwlbTXyRM5NSjk6EdZeDfX5OHexV4AodbtGZSeQYU7s2vs50khtIWVGr+14dPguWf9ggMCRoX+B9RogfV03IVAgMBAAECggEAfwLTsXQNShiK46uqrx12fgYIYiqKyqps/dEGRw5G94SgIp5sdhP3J9m/q9kTqNa1i80Dgqx5IhhVbFCtYb7CXLex8LahdIJsS35NpZ6OgoDNG0ocB6VcFfNLB3oXjJukFcyD37Sl/Q7RrXrkHZk3radi1Hlyii8Q1AVOgGD9CPBwRaBrjAuJXunJRSnzJ1MuV29PoNSOcQ0o+q26JkZaTcFHt/iVdeBiKFEyfwd6oWTkpRQiUD+Xi/P9XkYud1nou64dvw6XIDpsV7uX07OASHk1fuQjDJLwyO4KlcWBzNb6Z1sE6l1EqHcZKqijcYISElzPGTEVlDkXAT5YxiIjAQKBgQDVYP/8obthBaUBFVkPaZNUzLsjyv9ONOWVHIzw9YVOmC7v2WdrnDgoBkNaV4SdCOYsJW+887nA6zK2208DlRea1fAcZWgItRqvJi9wiqtZAS1BCC+tTliYS3x/wqmFyFRqLK4dIqpbZ52+vEoEMgrDJmzG7k7aXjAm9+JH+MqfBQKBgQDMy0KcdA68h5VlbifLnMbQUJO7Zy081Tdbpgnf02/PaC/HHbYnbn/hWv8TTuoBcEDkh0nl3JRmPKMyF+Aeqj5Xd6A4znRQXq9ZPcOyKYw08VGkf4m41mm2Iq7HcSwhZFlWZWfA3cCU+Z5eTVY7RBQjoJ8Qk6LyRjAmlA5xiMVT0QKBgGVDeXjtUD3FLf+LoA5+bhsqZg2ggvUciW/wcrrP6gnYkz3kkP4yzzu/bStsqVTVKlb9FUA48oiplhHNlnv+v4sNyLvRLEQlnppMpurkBFljA5T/S5EVw1nTSSxgt47z+YvB1IejMfHbBLPGK+I91XmzvJ/T7LwZQwTbUxoQ6if5AoGBAMuoErzteT4pAvuUWQTWCqxchR1nVIhbbKq6arVoWZeDf4fe1ydNbuSXjnQQFQuLKy1YELgC7JzjDlOhhKJaIJbxAqebP/YwwuXXU0ZYpPJ9TPhuUHI833Fd+juiIwWt+l29iDk3DO3ZcpFLDUbww6pOcACXIQMXo4ip0dc78SgRAoGAEb7FK7hqFmBk24Pu5vzKE/BYYD1mY17+zmeFocn2vu89jLYvRGYrvuGn9TgD3zeXjNsAqbMW8Td5F3xnMJ3JHhnAQHd1Wh5VROsXfhtT/Uhl4eCGEkKqM+EEBD6Z3UsZbNFRGEl1xThzdwchLt0WNTD9kuoxWkjV3hjPBnkJlvk=-----END PRIVATE KEY-----","issuerCommonName":"FTD OnBox Team Testing at Cisco","issuerOrganizationUnit":"FTD","subjectCommonName":"FTD Testing At Cisco","subjectOrganization":"FTD at Cisco","subjectOrganizationUnit":"FTD","validityStartDate":"Apr 6 14:44:52 2015 GMT","validityEndDate":"Feb 16 14:44:52 2017 GMT","type":"internalcacertificate","version":"d4f4de1a-52f0-5e77-89c6-72aecb7eba93"}],"defaultAction":{"type":"sslpolicydefaultaction","policyAction":"DO_NOT_DECRYPT","eventLogAction":"LOG_NONE"}},"defaultAction":{"action":"TRUST","eventLogAction":"LOG_BOTH","type":"accessdefaultaction"},"name":"Default Access Policy","accessRuleIds":[],"type":"accesspolicy","version":"hucubopvir"}},"AccessPolicyWrapper":{"allOf":[{"$ref":"#/definitions/AccessPolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"AccessPolicyDeployInfo":{"type":"object","properties":{"version":{"type":"string"},"ruleContainerUuid":{"type":"string"},"deployedOnDevice":{"type":"boolean"},"ruleDeployInfoEntries":{"type":"array","items":{"type":"object","$ref":"#/definitions/AccessControlRuleDeployInfo"}},"id":{"type":"string"},"type":{"type":"string","default":"accesspolicydeployinfo"}},"required":["type"]},"AccessRule":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"ruleId":{"type":"integer"},"sourceZones":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationZones":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"sourceNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"sourcePorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationPorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ruleAction":{"type":"object","$ref":"#/definitions/AccessControlRuleBase$AcRuleAction"},"eventLogAction":{"type":"object","$ref":"#/definitions/AccessControlRuleBase$EventLogAction"},"users":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"embeddedAppFilter":{"type":"object","$ref":"#/definitions/EmbeddedAppFilter"},"urlFilter":{"type":"object","$ref":"#/definitions/EmbeddedURLFilter"},"intrusionPolicy":{"type":"object","$ref":"#/definitions/ReferenceModel"},"filePolicy":{"type":"object","$ref":"#/definitions/ReferenceModel"},"logFiles":{"type":"boolean"},"syslogServer":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"accessrule"}},"required":["type"],"example":{"id":"f7443881-d20e-5699-8f66-55481ef54196","version":"9171ae71-46df-514d-a690-9484e8950569","ruleId":1,"name":"err","protocol":"TCP","ruleAction":"TRUST","eventLogAction":"LOG_FLOW_END","syslogServer":{"id":"b7731ecd-011b-5f95-90b4-72b024a040d9","version":"8287a57f-56d1-51e9-83f1-361ad172f158","host":"28.235.174.9","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"sourceZones":[{"id":"8cb69a8f-7d8d-5f4e-9a4f-f6e717f833ed","name":"SecurityZone3Name","description":"Udanovja dupolo zurepi ufmu ah lezup ba ga jur duvorzu abevabji zil nuikihi wopuw.","version":"dd83a4d5-be23-51f8-9b73-2ae9e26f7d36","interfaces":[{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"340bf250-a4a5-5049-bddf-a6201a9b8e86","name":"SecurityZone7Name","description":"So gitejipo sotvotdab watu la ica fojum dorog odohog mil etuw ta daghavke dig.","version":"273d67ab-abb9-5af1-8574-3e9af6e98aed","interfaces":[{"mtu":2652,"enabled":false,"description":"Wa cep gi lankowtu ce uvujed tad wo vezke vib vezvufgev hun vob velumde.","name":"subinterface11name","id":"ffc74b4d-ad27-5459-9907-186a8c739189","hardwareName":"SubInterface0/11.12","macAddress":"1534.AB09.4146","monitorInterface":true,"standbyMacAddress":"CF72.BDFB.98A1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"fafb:559d:106d:67ac:52dd:e182:d306:4792/32","ipAddress":"a7bd:69ea:f24f:04ea:40c5:3f80:0416:0f09/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d544:6d26:411c:e460:9911:cb8b:ca9e:3a15","ipAddress":"f96f:858d:9ed1:fc9f:7b47:0fb4:246d:6cb6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"17.76.225.83","standbyIpAddress":"195.253.157.229"}},"version":"e22e21d2-9d64-51a4-adc2-a775a4572916","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"destinationZones":[{"id":"043ca75c-25c8-5d2f-9912-f174e3756077","name":"SecurityZone8Name","description":"Fo zihroc befjijwe vafel golwekjow hukohdi bo gitjap titsuabe cav fif mufdec unibit mubu idabehob ruthesusa.","version":"9f2207f2-63f0-5423-aa5c-6b7dc7d41cf3","interfaces":[{"mtu":2652,"enabled":true,"description":"Ta ikoure oznog tu hodul bizzo jimiite men cucif bewtujjof amurulev cuh igu fo siw dupziswul upahig roivipi.","name":"subinterface1name","id":"bdb62102-971e-5472-ab3b-22a7d408dc10","hardwareName":"SubInterface0/1.2","macAddress":"A57C.05DF.7FC0","monitorInterface":false,"standbyMacAddress":"4CE2.828C.AAB1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"86a0:974f:3bf1:cee2:71c8:e295:2c3e:8d76/32","ipAddress":"9cb8:4589:0220:bd63:4d62:42ac:bd26:e1ac/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"7f67:fa11:adca:bd10:8583:757e:7ebb:be87","ipAddress":"4298:ffb2:30f7:84b6:5106:69aa:343c:8362"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"43.30.66.103","standbyIpAddress":"138.99.49.192"}},"version":"e04406e6-ff09-57ac-9b38-fdd8b19cf6fb","managementInterface":true,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}}],"sourceNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"destinationNetworks":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"2082a308-8b86-5219-b121-d470ff1b8aa8","name":"Geolocation14","description":"Heivkib tij budvoddij abauzjuk obuvunken fiji tajo puluno kahja vozrejnak hizebivis dowu cujtabti kelij heh mo pifgiri lamfajkuw.","version":"db2ff476-1b01-52e6-8574-95caec83dfa4","type":"geolocation","locations":[{"id":"b0f1ed2e-900c-526e-80d4-07510afeff4d","name":"Asia","deprecated":false,"code":1000,"type":"continent","countries":[{"id":"63a1df40-7be5-5d18-af51-6c505a84929b","name":"Yemen","deprecated":false,"iso3":"YEM","iso2":"YE","code":"887","type":"country"},{"id":"fa3954da-0537-56ca-bcbc-49586fb30867","name":"Vietnam","deprecated":true,"iso3":"VNM","iso2":"VN","code":"704","type":"country"},{"id":"2f75e787-8e9f-5104-93f1-90f873e036ee","name":"Uzbekistan","deprecated":true,"iso3":"UZB","iso2":"UZ","code":"860","type":"country"},{"id":"0a6941d2-4dce-5324-9c2d-7023d05a0e87","name":"Taiwan","deprecated":true,"iso3":"TWN","iso2":"TW","code":"158","type":"country"},{"id":"8b6f9c03-18de-5a2a-8b04-789273a75a14","name":"Turkey","deprecated":false,"iso3":"TUR","iso2":"TR","code":"792","type":"country"},{"id":"79011712-6ace-5c53-9919-60c0aede45e4","name":"Turkmenistan","deprecated":true,"iso3":"TKM","iso2":"TM","code":"795","type":"country"},{"id":"4e9c261d-a5c3-516d-b96b-4a4446c4d006","name":"Tajikistan","deprecated":true,"iso3":"TJK","iso2":"TJ","code":"762","type":"country"},{"id":"e309c3a1-741a-5c5a-91d8-34bd9f707713","name":"Thailand","deprecated":true,"iso3":"THA","iso2":"TH","code":"764","type":"country"},{"id":"5455c99c-857d-59e7-ac30-d1cdf8a544fc","name":"Syria","deprecated":false,"iso3":"SYR","iso2":"SY","code":"760","type":"country"},{"id":"b6240c09-b99b-5702-8b81-ae347554b063","name":"Singapore","deprecated":false,"iso3":"SGP","iso2":"SG","code":"702","type":"country"},{"id":"7e450676-17ba-52e1-9774-a2d8946e7222","name":"Saudi Arabia","deprecated":true,"iso3":"SAU","iso2":"SA","code":"682","type":"country"},{"id":"5edb06cc-771b-56bd-a810-d7ed7ac60f18","name":"Qatar","deprecated":true,"iso3":"QAT","iso2":"QA","code":"634","type":"country"},{"id":"4e105b61-409f-5adb-b994-6bf39b366f80","name":"Palestine","deprecated":false,"iso3":"PSE","iso2":"PS","code":"275","type":"country"},{"id":"bddecea3-ccaa-5945-ab89-cdc3777020a4","name":"Pakistan","deprecated":true,"iso3":"PAK","iso2":"PK","code":"586","type":"country"},{"id":"39b1fa04-86c6-5030-8860-de4c52772bf6","name":"Philippines","deprecated":false,"iso3":"PHL","iso2":"PH","code":"608","type":"country"},{"id":"ca1627e6-84a9-5bbc-bdaa-d2ad6095ee4d","name":"Oman","deprecated":false,"iso3":"OMN","iso2":"OM","code":"512","type":"country"},{"id":"238facd8-e02b-519e-8769-3928cd2f41f0","name":"Nepal","deprecated":true,"iso3":"NPL","iso2":"NP","code":"524","type":"country"},{"id":"42d5a169-55b8-50de-a0dd-6841b0efdedf","name":"Malaysia","deprecated":true,"iso3":"MYS","iso2":"MY","code":"458","type":"country"},{"id":"18846de6-0324-5525-91d7-a4776e65b9b6","name":"Maldives","deprecated":false,"iso3":"MDV","iso2":"MV","code":"462","type":"country"},{"id":"a9e44468-6566-53c4-82fe-51bde575afee","name":"Macao","deprecated":false,"iso3":"MAC","iso2":"MO","code":"446","type":"country"},{"id":"b9dc5343-3cd6-5af7-bedc-a17c680aac1f","name":"Mongolia","deprecated":true,"iso3":"MNG","iso2":"MN","code":"496","type":"country"},{"id":"d157ae45-005b-5726-8cb5-6b2106ac4e14","name":"Myanmar [Burma]","deprecated":false,"iso3":"MMR","iso2":"MM","code":"104","type":"country"},{"id":"71949b92-109d-5eff-b3e0-2eee31f109d7","name":"Sri Lanka","deprecated":false,"iso3":"LKA","iso2":"LK","code":"144","type":"country"},{"id":"1b53432a-4b28-59d3-ab11-158caa6b4978","name":"Lebanon","deprecated":false,"iso3":"LBN","iso2":"LB","code":"422","type":"country"},{"id":"8d6d1007-e852-5cbb-bcb9-86762d6c7ba6","name":"Laos","deprecated":true,"iso3":"LAO","iso2":"LA","code":"418","type":"country"},{"id":"5b67e3c4-f9c1-5ef6-9481-cec39e7c08f2","name":"Kazakhstan","deprecated":true,"iso3":"KAZ","iso2":"KZ","code":"398","type":"country"},{"id":"ce42b833-871a-5c06-a2cf-3d628329ed7f","name":"Kuwait","deprecated":false,"iso3":"KWT","iso2":"KW","code":"414","type":"country"},{"id":"16b7d774-418c-54d8-b296-c4c580f2a8c8","name":"South Korea","deprecated":true,"iso3":"KOR","iso2":"KR","code":"410","type":"country"},{"id":"fa1d3c9f-39a0-5873-92a0-c448c220c43e","name":"North Korea","deprecated":true,"iso3":"PRK","iso2":"KP","code":"408","type":"country"},{"id":"9419c7a5-98ec-59b1-8ff8-732af761497e","name":"Cambodia","deprecated":true,"iso3":"KHM","iso2":"KH","code":"116","type":"country"},{"id":"0dfe65f2-ab03-547b-9477-c623744540c4","name":"Kyrgyzstan","deprecated":true,"iso3":"KGZ","iso2":"KG","code":"417","type":"country"},{"id":"c7cbdbe3-3bd7-507f-9106-b1ac7349aac4","name":"Japan","deprecated":false,"iso3":"JPN","iso2":"JP","code":"392","type":"country"},{"id":"35f7b4c1-b26c-535a-8ebe-24e4ba1ea3dd","name":"Jordan","deprecated":true,"iso3":"JOR","iso2":"JO","code":"400","type":"country"},{"id":"58ec396e-5a59-5d1e-b795-77ad1e4b06b5","name":"Iran","deprecated":true,"iso3":"IRN","iso2":"IR","code":"364","type":"country"},{"id":"1f1390d0-4db0-527b-be7f-23f8343e9002","name":"Iraq","deprecated":false,"iso3":"IRQ","iso2":"IQ","code":"368","type":"country"},{"id":"cbb15e65-d635-53e1-b184-be8ddcaccc67","name":"British Indian Ocean Territory","deprecated":false,"iso3":"IOT","iso2":"IO","code":"086","type":"country"},{"id":"f7a4609c-b790-5f30-a9cb-8114c67189da","name":"India","deprecated":true,"iso3":"IND","iso2":"IN","code":"356","type":"country"},{"id":"e3b0c5a5-7df2-569d-8988-a611243a6874","name":"Israel","deprecated":true,"iso3":"ISR","iso2":"IL","code":"376","type":"country"},{"id":"95d846b0-cc98-5993-a725-369315f962e7","name":"Indonesia","deprecated":true,"iso3":"IDN","iso2":"ID","code":"360","type":"country"},{"id":"5fa0fc06-05e1-507d-b51d-f08411e8c0d0","name":"Hong Kong","deprecated":false,"iso3":"HKG","iso2":"HK","code":"344","type":"country"},{"id":"5c74911f-d8b6-51d1-8595-cb3d65ea34d2","name":"Georgia","deprecated":true,"iso3":"GEO","iso2":"GE","code":"268","type":"country"},{"id":"3f16b5d1-5e61-5fc5-9226-060ff8dba7e1","name":"Christmas Island","deprecated":true,"iso3":"CXR","iso2":"CX","code":"162","type":"country"},{"id":"5358d377-8778-51f1-b8d5-894911926f03","name":"China","deprecated":true,"iso3":"CHN","iso2":"CN","code":"156","type":"country"},{"id":"ba120d07-4c77-5a4a-85a9-514fcc3f1d5d","name":"Cocos [Keeling] Islands","deprecated":false,"iso3":"CCK","iso2":"CC","code":"166","type":"country"},{"id":"a53b66e4-49bb-5ce9-a2f0-c94bbdae984c","name":"Bhutan","deprecated":true,"iso3":"BTN","iso2":"BT","code":"064","type":"country"},{"id":"b9c499af-659d-5ed4-bc72-071a452ae76e","name":"Brunei","deprecated":false,"iso3":"BRN","iso2":"BN","code":"096","type":"country"},{"id":"2f50ebb7-afdb-538a-9c5a-cee807b67094","name":"Bahrain","deprecated":true,"iso3":"BHR","iso2":"BH","code":"048","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"},{"id":"f99a3977-39e4-5bda-912b-b69575ebda73","name":"Azerbaijan","deprecated":true,"iso3":"AZE","iso2":"AZ","code":"031","type":"country"},{"id":"b12ab4d2-17c1-54c7-9819-f9530a72a401","name":"Armenia","deprecated":false,"iso3":"ARM","iso2":"AM","code":"051","type":"country"},{"id":"02fafdd1-9128-5ba2-bc34-2faaf65fafad","name":"Afghanistan","deprecated":true,"iso3":"AFG","iso2":"AF","code":"004","type":"country"},{"id":"a92ff025-6314-5ca0-a5af-92407fc3ad85","name":"United Arab Emirates","deprecated":true,"iso3":"ARE","iso2":"AE","code":"784","type":"country"}],"countryCodes":["887","704","860","158","792","795","762","764","760","702","682","634","275","586","608","512","524","458","462","446","496","104","144","422","418","398","414","410","408","116","417","392","400","364","368","086","356","376","360","344","268","162","156","166","064","096","048","050","031","051","004","784"]},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"92e4bed7-5044-5b4f-8d3f-1239ff903965","name":"France","deprecated":true,"iso3":"FRA","iso2":"FR","code":"250","type":"country"},{"id":"4dd5f39f-8f06-578d-b0e4-db9495101093","name":"French Southern Territories","deprecated":false,"iso3":"ATF","iso2":"TF","code":"260","type":"country"},{"id":"f15f76ba-d150-5ed1-8d49-329860b8a4c2","name":"Venezuela","deprecated":false,"iso3":"VEN","iso2":"VE","code":"862","type":"country"},{"id":"57110fb6-aee4-50cf-a1ad-e8e3cf723b03","name":"Curacao","deprecated":false,"iso3":"CUW","iso2":"CW","code":"531","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"}]}],"sourcePorts":[{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false},{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false}],"destinationPorts":[{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true},{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false}],"users":[{"id":"963a9548-fb5f-57b2-b1d0-a0510cff6f64","name":"User Group 8","realmName":"hoivicinu","type":"trafficusergroup","realmId":2,"version":"aclowhiwid"},{"id":"5c815701-9753-5b9e-8b24-c5c5511aa1b6","name":"User 23","realmName":"gowitenci","type":"trafficuser","realmId":2,"version":"tufapitem"},{"id":"f7417bdc-8866-5397-8f4b-e1f2d7956bcc","name":"User 31","realmName":"guhecogguk","type":"trafficuser","realmId":0,"version":"asogtiodo"}],"embeddedAppFilter":{"conditions":[{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"},{"filter":"detfaodvej","tags":[{"id":"9b16dd72-476a-5ac0-8aeb-fbf6e1f45438","version":"1afcadf3-8339-5999-b958-c3d5e5fb1556","appId":11,"name":"ApplicationTag11","description":"Og egi mavlavtog jaiwsat pav gisod cahlicov rasvezbi so mifpip tihumgod zep totuh ighuso eknuwoha.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"MEDIUM"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"CRITICAL"}],"applicationTypes":[{"type":"typecondition","applicationType":"CLIENT"},{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"},{"type":"productivitycondition","productivity":"VERY_HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"type":"embeddedappfilter","applicationFilters":[{"id":"71b15970-f3f3-5b1b-b7bb-f0613eba06e2","version":"a1f1ec4f-62c4-56f7-85ab-ffa7d87ea131","name":"ApplicationFilter7","description":"Vul ejube iwu bodjaaki neros atwiha pi tamgek mazce zilitufa volvaz mibgo tubzesuwi bunefon enuhoj.","applications":[{"id":"ce901dd3-4e85-5bf0-a273-2018d76527c8","version":"84a4f0c6-57b3-50f3-bf20-0cf68bbbb806","description":"Gipus bovawge vel ceoziwo nuim ehdifir nowe onoli atsewav irfer semowi ge turos mufo tahukca jaz.","deprecated":true,"appId":5,"productivity":0,"risk":2,"name":"Application2","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["1323d445-72c0-5d8b-9f58-c223feb51bac","328094ea-7b95-58e5-a2de-09018514e679"],"categories":[{"id":"1323d445-72c0-5d8b-9f58-c223feb51bac","version":"f85374d2-b1c5-5e65-b746-77dc6a21decb","appId":7,"name":"ApplicationCategory14","description":"Ohoad agoteveto irewomi adizogo lurtoop tizesuca himewwak poftoj cow nunapivif cisge pe hi raam hatdunze.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}],"conditions":[{"filter":"tazfeofgut","tags":[{"id":"aad0af81-b4ad-5a4a-a395-d88fc2abb8c4","version":"f6d8090e-8533-560d-8704-23fadbc827da","appId":4,"name":"ApplicationTag4","description":"Voblowi puhu ogaseaw zu not gom fotik feb ve ekfuzoc rifure zevkup woj mon copivcar dartuaze riowa nu.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"5f0662ef-3382-5357-bf35-b9b7361aae44","version":"a139321f-a0e1-5bc5-a623-57986c35147c","appId":5,"name":"ApplicationCategory2","description":"Kor atazidpem jujwo maw wez eke cog cab bibepov mojner azataget cat.","metadata":{"referenced":true},"type":"applicationcategory"},{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"VERY_LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"MEDIUM"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}],"applications":[{"id":"c51fa076-7516-5b1a-b689-87d5d4dd6656","version":"71b129f0-e504-5ee0-85b0-3d683c7fbc85","description":"Fishak luksa juw magaldi igo kaipojo vifpok jarado fefadkiw keogo mow kojepoha bonewke hobomag vo gi om tam.","deprecated":false,"appId":4,"productivity":1,"risk":3,"name":"Application4","tagIds":["58edda62-c97b-56e5-9e6c-32926f4d3009","63db3391-02c9-5d1b-b971-5a6427f4c9fe"],"tags":[{"id":"58edda62-c97b-56e5-9e6c-32926f4d3009","version":"8b92f2a7-bebd-537c-8bfc-b06bb27b85d0","appId":3,"name":"ApplicationTag3","description":"Nev fuzac ifofunom juzufe cub ecic div za zemak bozitusi ta gazneb lere.","metadata":{"referenced":false},"type":"applicationtag"},{"id":"63db3391-02c9-5d1b-b971-5a6427f4c9fe","version":"95d07b80-ad97-50b0-a64b-b279d1420618","appId":5,"name":"ApplicationTag5","description":"Uwano ujeoska rootmaj kammovu ivitarpoh percuk oto bacema da onsevsej jovocoog ge gafed zakas ijwimuf.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["794d6605-f5d9-5f26-b11d-507eac471889","33552c21-0930-5bb5-8459-9b7608cda68e"],"categories":[{"id":"794d6605-f5d9-5f26-b11d-507eac471889","version":"20176f07-7d98-5dd7-8a17-de688ee66220","appId":1,"name":"ApplicationCategory3","description":"Woc ved ecu hin potalbib la uweerabof mato dewahmo avutji wose pujda tunoduz ucu ho zopusno lo mu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"33552c21-0930-5bb5-8459-9b7608cda68e","version":"73578557-169e-5431-99f4-4a87fb56d57c","appId":4,"name":"ApplicationCategory9","description":"Tir upwul taf foj igonas mawejus ba ni loj racwu pu nelkal gofifun zemcuz ut.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["CLIENT","WEBAPP"],"metadata":{"referenced":false},"type":"application"}]},"urlFilter":{"urlObjects":[{"id":"88645135-dab6-5408-ad33-728243b663c2","version":"wugurojwo","name":"UrlGroup6","description":"Du vit inawi ravci mogpaf lal fer jefkew ginac nih namhit dop.","objects":[{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"urlCategories":[{"urlReputation":{"id":"23f0e43b-0957-554b-b0a4-555d8a444cfa","name":"High risk","index":5,"startPercentage":1,"endPercentage":20,"version":"67559ce6-d60d-5a76-9eef-b4d30401c5c8","type":"urlreputation"},"urlCategory":{"id":"798bf64f-6bf2-5cf4-a895-74670e51cfb2","version":"08eadcce-2a79-5212-9907-e3e7b7e8ae0e","name":"UrlCategory-6","deprecated":false,"urlCategoryId":6,"type":"urlcategory"},"type":"urlcategorymatcher"}],"type":"embeddedurlfilter"},"logFiles":false,"type":"accessrule"}},"AccessRuleWrapper":{"allOf":[{"$ref":"#/definitions/AccessRule"},{"$ref":"#/definitions/LinksWrapper"}]},"ActiveDirectoryRealm":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"directoryConfigurations":{"type":"array","items":{"type":"object","$ref":"#/definitions/DirectoryConfiguration"}},"enabled":{"type":"boolean"},"systemDefined":{"type":"boolean"},"realmId":{"type":"integer"},"dirUsername":{"type":"string"},"dirPassword":{"type":"string","default":"*********"},"baseDN":{"type":"string"},"adPrimaryDomain":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"activedirectoryrealm"}},"required":["dirUsername","adPrimaryDomain","dirPassword","baseDN","type"],"example":{"id":"3a675c42-3970-5e66-a949-c7d84860f47e","enabled":true,"name":"SpecialUsersRealmIdentity","type":"activedirectoryrealm","baseDN":"miodupbal","adPrimaryDomain":"xsa.cisco.com","dirUsername":"vewhapigud","dirPassword":"*********","systemDefined":true,"directoryConfigurations":[{"port":7146,"hostname":"166.169.55.184","encryptionProtocol":"STARTTLS","encryptionCert":{"id":"31ce8cf5-0e07-58c1-9617-4de62a7800f1","name":"TrustedCACertificate1","cert":"-----BEGIN CERTIFICATE-----MIIC9zCCAmCgAwIBAgIJAJ69cfUJsifyMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQLDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkqhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQwMjBaFw0xNjA0MDUxNDQwMjBaMHsxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGluMQwwCgYDVQQKDANBREkxDDAKBgNVBAsMA0FESTEMMAoGA1UEAwwDQURJMSEwHwYJKoZIhvcNAQkBFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRzoznNy0g/X4VyqF8jJt+p6z44tDAfBgNVHSMEGDAWgBRDXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBHm6MADmMOPj7bBCY1lADpcFuSdGjzNgvUyivRDZcMlwFpLlIl+vNJSSMU6i20bq5o+pOMJsSCjOf9NxT3lcWuxtT4Ea226txs5a15TyGRxBV5MJ4/s6gHaDowJSF/TngsURIKcNqFpLTv5FBCqcGR2kdmvBwtl9319seCoZEZYw==-----END CERTIFICATE-----","type":"externalcacertificate","version":"da56323b-9415-5389-b592-946163695c1e","isSystemDefined":false},"type":"directoryconfiguration"}],"version":"ecterdobi","realmId":2}},"ActiveDirectoryRealmWrapper":{"allOf":[{"$ref":"#/definitions/ActiveDirectoryRealm"},{"$ref":"#/definitions/LinksWrapper"}]},"ActiveUserSessions":{"type":"object","properties":{"userName":{"type":"string"},"identitySourceId":{"type":"string"},"issuedAt":{"type":"integer"},"expiresAt":{"type":"integer"},"sessionDuration":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"ActiveUserSessions"}},"required":["type"]},"ActiveUserSessionsWrapper":{"allOf":[{"$ref":"#/definitions/ActiveUserSessions"},{"$ref":"#/definitions/LinksWrapper"}]},"Application":{"type":"object","properties":{"name":{"type":"string"},"appId":{"type":"integer"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"categories":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"deprecated":{"type":"boolean"},"tagIds":{"type":"array","items":{"type":"integer"}},"categoryIds":{"type":"array","items":{"type":"integer"}},"id":{"type":"string"},"applicationTypes":{"type":"array","items":{"type":"object","$ref":"#/definitions/ApplicationType"}},"productivity":{"type":"integer"},"risk":{"type":"integer"},"type":{"type":"string","default":"application"}},"required":["appId","type"],"example":{"id":"83c8e0e6-3707-5128-b7da-4659f67b76a0","version":"5072ae78-a326-5b92-8176-c0c8132922a8","description":"Bo dese su ja elumuf ane zusjo fiplois ewariju ihjup nunnihep kosaldic kuhfovu.","deprecated":false,"appId":4,"productivity":0,"risk":1,"name":"Application1","tagIds":["62bc5d56-7e60-5a71-a467-2c4f2a035a06"],"tags":[{"id":"62bc5d56-7e60-5a71-a467-2c4f2a035a06","version":"e7e0ebc9-3a9a-5342-91e9-ae0ce54b3444","appId":12,"name":"ApplicationTag12","description":"Bamiwaga bo kek wawinta ovepozgan tibutef je kezaluk zonwoz fovul aw ter nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","2ad8b880-5783-5919-bda2-46e8316f2d70"],"categories":[{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"2ad8b880-5783-5919-bda2-46e8316f2d70","version":"c19f7a96-7634-5d1b-972d-99caa3e34a64","appId":1,"name":"ApplicationCategory12","description":"Ev zalapi hiwuhi peror lupu iv obalem gicobem vi bafuh ponij co hur linsis fukurod dehpupme.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":false},"type":"application"}},"ApplicationWrapper":{"allOf":[{"$ref":"#/definitions/Application"},{"$ref":"#/definitions/LinksWrapper"}]},"ApplicationCategory":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"appId":{"type":"integer"},"description":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"applicationcategory"}},"required":["appId","type"],"example":{"id":"328094ea-7b95-58e5-a2de-09018514e679","version":"a9f6d6f5-e2ce-5a1b-8c7f-1a5ba3c375b4","appId":4,"name":"ApplicationCategory1","description":"Pilooru amavudek uhzidkah sieha duhni ikfo celrid az ocolu loplun buj nodlial do ahme henacava so ecevega wemtumacu.","metadata":{"referenced":true},"type":"applicationcategory"}},"ApplicationCategoryWrapper":{"allOf":[{"$ref":"#/definitions/ApplicationCategory"},{"$ref":"#/definitions/LinksWrapper"}]},"ApplicationFilter":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"applications":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"isSystemDefined":{"type":"boolean"},"id":{"type":"string"},"conditions":{"type":"array","items":{"type":"object","$ref":"#/definitions/ApplicationFilterCondition"}},"type":{"type":"string","default":"applicationfilter"}},"required":["type"],"example":{"id":"4890f08c-7d08-5b84-93cc-7a4baa096ff1","version":"76998009-57e5-5be3-83ee-29ff93086a19","name":"ApplicationFilter2","description":"Uwudu elufur kikvusab gi zafur zerojtuc cefiz oti fonum wit pewivbu leuhi cen uri mibfozta jukmuw nafid.","applications":[{"id":"83c8e0e6-3707-5128-b7da-4659f67b76a0","version":"5072ae78-a326-5b92-8176-c0c8132922a8","description":"Bo dese su ja elumuf ane zusjo fiplois ewariju ihjup nunnihep kosaldic kuhfovu.","deprecated":false,"appId":4,"productivity":0,"risk":1,"name":"Application1","tagIds":["62bc5d56-7e60-5a71-a467-2c4f2a035a06"],"tags":[{"id":"62bc5d56-7e60-5a71-a467-2c4f2a035a06","version":"e7e0ebc9-3a9a-5342-91e9-ae0ce54b3444","appId":12,"name":"ApplicationTag12","description":"Bamiwaga bo kek wawinta ovepozgan tibutef je kezaluk zonwoz fovul aw ter nu.","metadata":{"referenced":false},"type":"applicationtag"}],"categoryIds":["ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","2ad8b880-5783-5919-bda2-46e8316f2d70"],"categories":[{"id":"ea9b4aa3-c8a2-52f9-87ba-b33f1b452a42","version":"e289f52e-a078-5581-a775-4c8435a534f0","appId":3,"name":"ApplicationCategory7","description":"Ci sovo ig ivebcag gif uk eztez ezofi jizrebi lafozu ehje daj noiw vajru modpoteh juizu.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"2ad8b880-5783-5919-bda2-46e8316f2d70","version":"c19f7a96-7634-5d1b-972d-99caa3e34a64","appId":1,"name":"ApplicationCategory12","description":"Ev zalapi hiwuhi peror lupu iv obalem gicobem vi bafuh ponij co hur linsis fukurod dehpupme.","metadata":{"referenced":true},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":false},"type":"application"},{"id":"6361bd7f-01c9-5714-baca-035d66f50a8c","version":"50dcdb47-5d21-537f-b3b0-81713bf31c06","description":"Leku luto lofuwec wuwguhot abmofdo cun vuunuvi lulsoteg kivsas mijmi ru kipumeja sacwuwhe gub magumera.","deprecated":false,"appId":5,"productivity":0,"risk":4,"name":"Application5","tagIds":["0b45de63-5252-5257-acf6-ce494cdb905a"],"tags":[{"id":"0b45de63-5252-5257-acf6-ce494cdb905a","version":"9c3ed423-1b8a-5f1f-aae0-a507cc188490","appId":6,"name":"ApplicationTag6","description":"Varejse ji ogouvu rin nubuten bezozmaj coeg zuralse pa zitomgon lu rigugip.","metadata":{"referenced":true},"type":"applicationtag"}],"categoryIds":["7f62abc6-7f08-5a69-acb6-65def01251d4","fff4b47c-a653-5729-a31a-e6353d420768"],"categories":[{"id":"7f62abc6-7f08-5a69-acb6-65def01251d4","version":"e457683e-a3d5-5f9b-a339-949db4522822","appId":1,"name":"ApplicationCategory15","description":"Uke us eb vem no biwoji hazwaji wepsuvese zugoci fit badtagtih na ke lorvot bulukupo.","metadata":{"referenced":false},"type":"applicationcategory"},{"id":"fff4b47c-a653-5729-a31a-e6353d420768","version":"4254f0ee-0e30-5d6c-aef9-120450723b6a","appId":9,"name":"ApplicationCategory13","description":"Gufatrif rapbe amtac riz naz li jaf recluhu ugjuh edi diuhitoc ivuwbal.","metadata":{"referenced":false},"type":"applicationcategory"}],"applicationTypes":["SERVER","WEBAPP"],"metadata":{"referenced":true},"type":"application"}],"conditions":[{"filter":"jignorebes","tags":[{"id":"e9812b72-2a36-5146-bce0-b09f876df88d","version":"080dca18-c677-5dd1-8f2f-40555beb4fe4","appId":10,"name":"ApplicationTag10","description":"Viswilo ariuzaf pih wa mul vugavrip rijfon aba kac giicse wolifa cowudzuv vev iztafit.","metadata":{"referenced":false},"type":"applicationtag"}],"categories":[{"id":"0928e8e9-25a4-53d0-b118-342a26b44100","version":"cccc44d5-b855-569b-90ad-b26d4e3e0c66","appId":7,"name":"ApplicationCategory8","description":"Mifzonu fokero acdu panvo cuvubde tovli maz cawag kaoj gosoojo falkof hezel sig ca vo wak.","metadata":{"referenced":false},"type":"applicationcategory"}],"risks":[{"type":"riskcondition","risk":"CRITICAL"},{"type":"riskcondition","risk":"LOW"},{"type":"riskcondition","risk":"HIGH"},{"type":"riskcondition","risk":"MEDIUM"}],"applicationTypes":[{"type":"typecondition","applicationType":"WEBAPP"},{"type":"typecondition","applicationType":"SERVER"}],"productivities":[{"type":"productivitycondition","productivity":"HIGH"},{"type":"productivitycondition","productivity":"VERY_LOW"}],"type":"applicationfiltercondition"}],"isSystemDefined":false,"metadata":{"referenced":true},"type":"applicationfilter"}},"ApplicationFilterWrapper":{"allOf":[{"$ref":"#/definitions/ApplicationFilter"},{"$ref":"#/definitions/LinksWrapper"}]},"ApplicationFilterCondition":{"type":"object","properties":{"risks":{"type":"array","items":{"type":"object","$ref":"#/definitions/RiskCondition"}},"productivities":{"type":"array","items":{"type":"object","$ref":"#/definitions/ProductivityCondition"}},"tags":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"categories":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"filter":{"type":"string"},"applicationTypes":{"type":"array","items":{"type":"object","$ref":"#/definitions/TypeCondition"}},"type":{"type":"string","default":"applicationfiltercondition"}},"required":["type"]},"ApplicationTag":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"appId":{"type":"integer"},"description":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"applicationtag"}},"required":["appId","type"],"example":{"id":"f7e90abe-ce71-56da-9f43-dd8685ec1a3a","version":"8b4ad1f1-dab6-5988-a793-c67eb8dbd3ee","appId":1,"name":"ApplicationTag1","description":"Opa zov vek obnam nobbab midzusmow riwehar gufugin mogfuana nairu camu fupim mo hov nizunfej.","metadata":{"referenced":false},"type":"applicationtag"}},"ApplicationTagWrapper":{"allOf":[{"$ref":"#/definitions/ApplicationTag"},{"$ref":"#/definitions/LinksWrapper"}]},"ApplicationType":{"type":"string","enum":["SERVER","CLIENT","WEBAPP"]},"ArchivedBackup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"user":{"type":"string"},"startDate":{"type":"string"},"fileSize":{"type":"integer"},"archiveName":{"type":"string"},"originalScheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"backupLocation":{"type":"object","$ref":"#/definitions/BackupLocation"},"model":{"type":"string"},"softwareVersion":{"type":"string"},"vdbVersion":{"type":"string"},"serialNumber":{"type":"string"},"modelNumber":{"type":"string"},"modelId":{"type":"string"},"buildVersion":{"type":"string"},"schemaVersion":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"archivedbackup"}},"required":["type"],"example":{"id":"67149052-5232-5a96-9626-172d67ed29d1","archiveName":"NGFW_backup.Archived-Backup-1","name":"Archived-Backup-1","fileSize":51035930,"originalScheduleType":"DAILY","startDate":"2018-05-11T05:14:12.042Z","user":"admin","type":"archivedbackup","version":"uwsakomi","backupLocation":"DEFAULT"}},"ArchivedBackupWrapper":{"allOf":[{"$ref":"#/definitions/ArchivedBackup"},{"$ref":"#/definitions/LinksWrapper"}]},"AuthAction":{"type":"string","enum":["ACTIVE","PASSIVE","NO_AUTH"]},"AuthType":{"type":"string","enum":["HTTP_BASIC","NTLM","HTTP_NEGOTIATE","HTTP_RESPONSE_PAGE"]},"BackupFile":{"type":"object","properties":{"file":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"BackupFile"}},"required":["type"]},"BackupFileWrapper":{"allOf":[{"$ref":"#/definitions/BackupFile"},{"$ref":"#/definitions/LinksWrapper"}]},"BackupImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"backupLocation":{"type":"object","$ref":"#/definitions/BackupLocation"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"backupimmediate"}},"required":["type"]},"BackupImmediateWrapper":{"allOf":[{"$ref":"#/definitions/BackupImmediate"},{"$ref":"#/definitions/LinksWrapper"}]},"BackupScheduled":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"runTimes":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"backupLocation":{"type":"object","$ref":"#/definitions/BackupLocation"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"backupscheduled"}},"required":["type"],"example":{"id":"f529ae80-2f85-5fcc-9070-48513d66a2d7","name":"hiihohubfij","description":"Walik tiubafu ni ro tarida retiw sod co goh hacanner lemoc ceiwu vuddera zefvizsa cejub.","scheduleType":"WEEKLY","runTimes":"41 30 18 * * 4","version":"809bf06d-f594-5488-a5ec-15f7ab41122f","user":"vopelagsud","type":"backupscheduled","backupLocation":"DEFAULT"}},"BackupScheduledWrapper":{"allOf":[{"$ref":"#/definitions/BackupScheduled"},{"$ref":"#/definitions/LinksWrapper"}]},"BreakHAStatus":{"type":"object","properties":{"statusMessage":{"type":"string"},"cliErrorMessage":{"type":"string"},"state":{"type":"object","$ref":"#/definitions/DeploymentStatus$DeploymentState"},"queuedTime":{"type":"integer"},"startTime":{"type":"integer"},"endTime":{"type":"integer"},"statusMessages":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"modifiedObjects":{"type":"object"}}},"BreakHAStatusWrapper":{"allOf":[{"$ref":"#/definitions/BreakHAStatus"},{"$ref":"#/definitions/LinksWrapper"}]},"BridgeGroupInterface":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"hardwareName":{"type":"string"},"monitorInterface":{"type":"boolean"},"ipv4":{"type":"object","$ref":"#/definitions/InterfaceIPv4"},"ipv6":{"type":"object","$ref":"#/definitions/InterfaceIPv6"},"selectedInterfaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"bridgeGroupId":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"bridgegroupinterface"}},"required":["monitorInterface","type"],"example":{"id":"c79d144b-28cf-56fc-80d0-567702b34ec3","version":"dd0874a0-ca8b-56aa-b7bc-104aa51299bf","monitorInterface":false,"ipv4":{"ipType":"DHCP","defaultRouteUsingDHCP":true,"ipAddress":{"type":"haipv4address","netmask":"16","standbyIpAddress":"80.117.141.68","ipAddress":"195.227.238.205"},"dhcp":false,"addressNull":false,"type":"interfaceipv4"},"ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":404,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c351:02cb:c8a3:1cca:57b1:b484:fd45:8dd9","ipAddress":"47dd:82cb:c993:2f64:aaec:e886:a605:915a/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","ipAddress":""},"dhcpForOtherConfig":false},"description":"Erto imugi ije pek ras pigwic mupurovil di virfan orwo pu sal kopzi simhaas vin.","name":"bgi1","hardwareName":"BridgeGroupInterface1","bridgeGroupId":1,"selectedInterfaces":[{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},{"mtu":2652,"enabled":false,"description":"Efupaf nas ilureg zetikdav emki fafiv tihug orhid zimurfo naferal va ta ug za ur di zetsa ragizike.","name":"subinterface10name","id":"4307a6d5-0ef1-55d4-adc4-0461c31b7eb5","hardwareName":"SubInterface0/10.11","macAddress":"F617.A8F2.5DEB","monitorInterface":true,"standbyMacAddress":"0E24.391A.BFD9","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"c324:084e:8a04:523f:64ec:2b27:9f07:6a8d/32","ipAddress":"0faf:b8b8:7fbe:0d00:facd:c82d:f721:93dd/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bc90:477f:99f9:ee80:1faa:1f0c:a2a6:77b7","ipAddress":"2d31:24c2:acd3:16b0:d1df:b4b6:763f:48c0"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"250.15.33.10","standbyIpAddress":"254.220.208.229"}},"version":"0f193aa1-ad09-52dd-98e8-eb32e2e61484","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"bridgegroupinterface"}},"BridgeGroupInterfaceWrapper":{"allOf":[{"$ref":"#/definitions/BridgeGroupInterface"},{"$ref":"#/definitions/LinksWrapper"}]},"BridgeGroupInterfaceIdInfo":{"type":"object","properties":{"version":{"type":"string"},"bridgeGroupIds":{"type":"array","items":{"type":"integer"}},"recycledBridgeGroupIds":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"bridgegroupinterfaceidinfo"}},"required":["type"]},"CertFileUploadStatus":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"fileName":{"type":"string"},"cert":{"type":"string"},"privateKey":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"certfileuploadstatus"}},"required":["type"]},"CertFileUploadStatusWrapper":{"allOf":[{"$ref":"#/definitions/CertFileUploadStatus"},{"$ref":"#/definitions/LinksWrapper"}]},"CertFileUploadStatus$CertFileUploadType":{},"CliDeploymentError":{"type":"object","properties":{"deploymentStatusUuid":{"type":"string"},"cliErrorMessage":{"type":"string"},"blockType":{"type":"string","enum":["FDM_CLI_DEFAULT","FDM_CLI","SMART_CLI","FLEX_CLI"]},"blockUuid":{"type":"string"},"errorLineId":{"type":"integer"},"negateLine":{"type":"boolean"},"blockStartLineId":{"type":"integer"},"blockEndLineId":{"type":"integer"},"cliLines":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"CliDeploymentError"}},"required":["type"],"example":{"deploymentStatusUuid":"39978e83-a8ff-11e7-b7ab-f9a7bf4a84a2","cliErrorMessage":"WARNING: DHCPD bindings cleared on interface 'inside', address pool removed\nWARNING: Local user database is empty and there are still 'aaa' commands for 'LOCAL'.\nINFO: Security level for \"diagnostic\" set to 0 by default.\nINFO: Security level for \"outside\" set to 0 by default.\nINFO: Security level for \"inside\" set to 0 by default.\nWARNING: This command will not take effect until interface 'diagnostic' has been assigned an IPv4 address\nWARNING: This command will not take effect until interface 'diagnostic' has been initialized with at least one global IPv6 address\nWARNING: This command will not take effect until interface 'outside' has been assigned an IPv4 address\nWARNING: This command will not take effect until interface 'outside' has been initialized with at least one global IPv6 address\nWARNING: This command will not take effect until interface 'inside' has been initialized with at least one global IPv6 address\n.ERROR: Invalid next hop address.\nConfig Error -- route inside 205.188.248.0 255.255.255.0 234.23.234.23 1","blockType":"FDM_CLI","errorLineId":101,"negateLine":false,"blockStartLineId":23,"blockEndLineId":191,"cliLines":["!!!FdmCliDefaultStart","clear configure all","policy-map global_policy"," class inspection_default"," inspect dns preset_dns_map"," inspect ftp"," inspect h323 h225"," inspect h323 ras"," inspect rsh"," inspect rtsp"," inspect sqlnet"," inspect skinny"," inspect sunrpc"," inspect xdmcp"," inspect sip"," inspect netbios"," inspect tftp"," inspect ip-options"," inspect icmp"," inspect icmp error","logging timestamp","no strong-encryption-disable","!!!FdmCliDefaultEnd","!!!FdmCliStart","interface Management0/0"," nameif diagnostic","interface GigabitEthernet0/0"," nameif outside","interface GigabitEthernet0/1"," nameif inside","interface GigabitEthernet0/4"," no ip address","interface GigabitEthernet0/5"," no ip address","interface GigabitEthernet0/6"," no ip address","interface GigabitEthernet0/7"," no ip address","interface GigabitEthernet0/8"," no ip address","interface Management0/0"," no ip address","interface GigabitEthernet0/1"," ip address 192.168.45.1 255.255.255.0","interface GigabitEthernet0/2"," no ip address","interface GigabitEthernet0/3"," no ip address","interface GigabitEthernet0/0"," dhcp client route distance 1"," ip address dhcp setroute","interface GigabitEthernet0/4"," shutdown"," speed auto"," duplex auto","interface GigabitEthernet0/5"," shutdown"," speed auto"," duplex auto","interface GigabitEthernet0/6"," shutdown"," speed auto"," duplex auto","interface GigabitEthernet0/7"," shutdown"," speed auto"," duplex auto","interface GigabitEthernet0/8"," shutdown"," speed auto"," duplex auto","interface Management0/0"," management-only"," speed auto"," duplex auto","interface GigabitEthernet0/0"," no shutdown"," speed auto"," duplex auto","interface GigabitEthernet0/1"," no shutdown"," speed auto"," duplex auto","interface GigabitEthernet0/2"," shutdown"," speed auto"," duplex auto","interface GigabitEthernet0/3"," shutdown"," speed auto"," duplex auto","ip-client diagnostic","ip-client diagnostic ipv6","dhcpd auto_config outside","dhcpd address 192.168.45.46-192.168.45.254 inside","dhcpd enable inside","dhcp-client client-id interface outside","ip-client outside","ip-client outside ipv6","ip-client inside","ip-client inside ipv6","route inside 205.188.248.0 255.255.255.0 234.23.234.23 1","route inside 234.23.234.23 255.255.255.255 234.23.234.23 1","object network Test"," host 234.23.234.23","object network any-ipv4"," subnet 0.0.0.0 0.0.0.0","object network any-ipv6"," subnet ::/0","object network AIM_SERVERS-64.12.31.136"," host 64.12.31.136","object network AIM_SERVERS-64.12.46.140"," host 64.12.46.140","object network AIM_SERVERS-64.12.186.85"," host 64.12.186.85","object network AIM_SERVERS-205.188.1.132"," host 205.188.1.132","object network AIM_SERVERS-205.188.11.228"," host 205.188.11.228","object network AIM_SERVERS-205.188.11.253"," host 205.188.11.253","object network AIM_SERVERS-205.188.11.254"," host 205.188.11.254","object network AIM_SERVERS-205.188.210.203"," host 205.188.210.203","object network AIM_SERVERS-64.12.24.0-23"," subnet 64.12.24.0 255.255.254.0","object network AIM_SERVERS-64.12.28.0-23"," subnet 64.12.28.0 255.255.254.0","object network AIM_SERVERS-64.12.161.0-24"," subnet 64.12.161.0 255.255.255.0","object network AIM_SERVERS-64.12.163.0-24"," subnet 64.12.163.0 255.255.255.0","object network AIM_SERVERS-64.12.200.0-24"," subnet 64.12.200.0 255.255.255.0","object network AIM_SERVERS-205.188.3.0-24"," subnet 205.188.3.0 255.255.255.0","object network AIM_SERVERS-205.188.5.0-24"," subnet 205.188.5.0 255.255.255.0","object network AIM_SERVERS-205.188.7.0-24"," subnet 205.188.7.0 255.255.255.0","object network AIM_SERVERS-205.188.9.0-24"," subnet 205.188.9.0 255.255.255.0","object network AIM_SERVERS-205.188.153.0-24"," subnet 205.188.153.0 255.255.255.0","object network AIM_SERVERS-205.188.179.0-24"," subnet 205.188.179.0 255.255.255.0","object network AIM_SERVERS-205.188.248.0-24"," subnet 205.188.248.0 255.255.255.0","object-group network AIM_SERVERS"," network-object object AIM_SERVERS-205.188.11.253"," network-object object AIM_SERVERS-205.188.210.203"," network-object object AIM_SERVERS-205.188.248.0-24"," network-object object AIM_SERVERS-205.188.3.0-24"," network-object object AIM_SERVERS-205.188.9.0-24"," network-object object AIM_SERVERS-64.12.186.85"," network-object object AIM_SERVERS-205.188.11.228"," network-object object AIM_SERVERS-64.12.200.0-24"," network-object object AIM_SERVERS-205.188.5.0-24"," network-object object AIM_SERVERS-64.12.163.0-24"," network-object object AIM_SERVERS-64.12.28.0-23"," network-object object AIM_SERVERS-205.188.7.0-24"," network-object object AIM_SERVERS-205.188.179.0-24"," network-object object AIM_SERVERS-205.188.11.254"," network-object object AIM_SERVERS-64.12.24.0-23"," network-object object AIM_SERVERS-205.188.153.0-24"," network-object object AIM_SERVERS-64.12.31.136"," network-object object AIM_SERVERS-205.188.1.132"," network-object object AIM_SERVERS-64.12.46.140"," network-object object AIM_SERVERS-64.12.161.0-24","access-list NGFW_ONBOX_ACL line 1 remark rule-id 1: ACCESS POLICY: NGFW_Access_Policy","access-list NGFW_ONBOX_ACL line 2 remark rule-id 1: L5 RULE: DefaultActionRule","access-list NGFW_ONBOX_ACL line 3 advanced deny ip any any rule-id 1","access-group NGFW_ONBOX_ACL global","crypto ikev1 policy 160"," authentication pre-share"," encryption des"," hash sha"," group 5"," lifetime 86400","crypto ikev2 policy 100"," encryption des"," integrity sha"," group 5"," prf sha"," lifetime seconds 86400","no logging enable","no logging trap","no logging console","sysopt connection tcpmss 0","strong-encryption-disable","!!!FdmCliEnd"],"type":"CliDeploymentError","id":"39978e83-a8ff-11e7-b7ab-f9a7bf4a84a2","links":{"self":"https://10.88.127.213:2915/api/fdm/v2/operational/deploymenterrors/39978e83-a8ff-11e7-b7ab-f9a7bf4a84a2"}}},"CliDeploymentErrorWrapper":{"allOf":[{"$ref":"#/definitions/CliDeploymentError"},{"$ref":"#/definitions/LinksWrapper"}]},"Clipboard":{"type":"object","properties":{"value":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"Clipboard"}},"required":["type"],"example":{"id":"default","value":"---\n# Pending Changes copied to clipboard\n\n- entityId: cd61615a-d9f7-11e7-a718-e9e60ac6939f\n entityType: networkobject\n entityName: network-object-test\n referencesAdded: []\n valuesAdded:\n - fieldName: subType\n newValue: Host\n\n - fieldName: value\n newValue: 1.1.1.1\n\n - fieldName: name\n newValue: network-object-test\n\n - fieldName: description\n newValue: Test description\n\n type: entitycreate\n","type":"clipboard"}},"ClipboardWrapper":{"allOf":[{"$ref":"#/definitions/Clipboard"},{"$ref":"#/definitions/LinksWrapper"}]},"CloudCommunicationSettings":{"type":"object","properties":{"version":{"type":"string"},"telemetryEnabled":{"type":"boolean"},"defenseOrchestratorEnabled":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"cloudcommunicationsettings"}},"required":["type"]},"CloudCommunicationSettingsWrapper":{"allOf":[{"$ref":"#/definitions/CloudCommunicationSettings"},{"$ref":"#/definitions/LinksWrapper"}]},"CloudConfig":{"type":"object","properties":{"version":{"type":"string"},"enableAutomaticUpdates":{"type":"boolean"},"queryCloudUnknown":{"type":"boolean"},"urlCacheReloadTTL":{"type":"object","$ref":"#/definitions/URLCacheReloadTTL"},"id":{"type":"string"},"type":{"type":"string","default":"cloudconfig"}},"required":["type"],"example":{"id":"bcec32bb-155e-575c-97ed-2d2c31b46c8d","version":"a676c787-6f49-53fa-b32e-9ffc42123871","type":"cloudconfig","enableAutomaticUpdates":true,"urlCacheReloadTTL":"NEVER","queryCloudUnknown":false}},"CloudConfigWrapper":{"allOf":[{"$ref":"#/definitions/CloudConfig"},{"$ref":"#/definitions/LinksWrapper"}]},"CloudServicesInfo":{"type":"object","properties":{"servicesPortalURL":{"type":"string"},"status":{"type":"string"},"statusDescription":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"CloudServicesInfo"}},"required":["type"]},"CloudServicesInfoWrapper":{"allOf":[{"$ref":"#/definitions/CloudServicesInfo"},{"$ref":"#/definitions/LinksWrapper"}]},"Command":{"type":"object","properties":{"commandInput":{"type":"string"},"commandOutput":{"type":"string"},"timeOut":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"Command"}},"required":["type","commandInput"]},"CommandWrapper":{"allOf":[{"$ref":"#/definitions/Command"},{"$ref":"#/definitions/LinksWrapper"}]},"CommandAutoComplete":{"type":"object","properties":{"autoCompleteCommands":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"CommandAutoComplete"}},"required":["type"]},"CommandAutoCompleteWrapper":{"allOf":[{"$ref":"#/definitions/CommandAutoComplete"},{"$ref":"#/definitions/LinksWrapper"}]},"ConnectivitySetting":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"tcpMaxSegmentSize":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"connectivitysetting"}},"required":["tcpMaxSegmentSize","type"],"example":{"id":"b0145da9-d0da-581a-9800-11a649da72cf","version":"38b3eba3-c4e7-5fbf-9eb5-293fd7eddd01","tcpMaxSegmentSize":1380,"type":"connectivitysetting"}},"Continent":{"type":"object","properties":{"name":{"type":"string"},"code":{"type":"integer"},"deprecated":{"type":"boolean"},"countries":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"countryCodes":{"type":"array","items":{"type":"integer"}},"id":{"type":"string"},"type":{"type":"string","default":"continent"}},"required":["code","type"],"example":{"id":"c7eb60a1-be27-5963-87ac-0c756fe76124","name":"Oceania","deprecated":true,"code":1006,"type":"continent","countries":[{"id":"28993a70-0f71-51a6-bd15-75bbbe151d39","name":"Samoa","deprecated":true,"iso3":"WSM","iso2":"WS","code":"882","type":"country"},{"id":"91d14642-b0c8-57a5-b226-e39b80213360","name":"Wallis and Futuna","deprecated":true,"iso3":"WLF","iso2":"WF","code":"876","type":"country"},{"id":"1f8bd503-8b6b-53b7-91e8-b4f01a87f55d","name":"Vanuatu","deprecated":true,"iso3":"VUT","iso2":"VU","code":"548","type":"country"},{"id":"0822041a-9790-514e-84a5-229c82007d22","name":"U.S. Minor Outlying Islands","deprecated":true,"iso3":"UMI","iso2":"UM","code":"581","type":"country"},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"9442da73-6b47-5cab-8a0b-baa977ec390b","name":"Tonga","deprecated":true,"iso3":"TON","iso2":"TO","code":"776","type":"country"},{"id":"37cfb898-ea93-52c7-bb5e-05b5e6ff3710","name":"East Timor","deprecated":false,"iso3":"TLS","iso2":"TL","code":"626","type":"country"},{"id":"d4c50c5a-d2a1-527e-81d7-b76ab3722771","name":"Tokelau","deprecated":false,"iso3":"TKL","iso2":"TK","code":"772","type":"country"},{"id":"2b6643b8-6fcb-5315-b350-5817c1573ea4","name":"Solomon Islands","deprecated":true,"iso3":"SLB","iso2":"SB","code":"090","type":"country"},{"id":"10a85a47-2aa1-5729-aa4d-cb226f57c280","name":"Palau","deprecated":false,"iso3":"PLW","iso2":"PW","code":"585","type":"country"},{"id":"dd1d13f6-78f2-5a0f-b4ca-ca27972be314","name":"Pitcairn Islands","deprecated":true,"iso3":"PCN","iso2":"PN","code":"612","type":"country"},{"id":"122477fe-9b24-50ed-88db-64565b4cc950","name":"Papua New Guinea","deprecated":false,"iso3":"PNG","iso2":"PG","code":"598","type":"country"},{"id":"642a86d2-e785-5f88-83a1-6b9299dc0cdf","name":"French Polynesia","deprecated":false,"iso3":"PYF","iso2":"PF","code":"258","type":"country"},{"id":"f2d903e0-16b9-5f01-a3dc-854970d49544","name":"New Zealand","deprecated":true,"iso3":"NZL","iso2":"NZ","code":"554","type":"country"},{"id":"643a299d-d43d-5be0-b5eb-4b30867675b1","name":"Niue","deprecated":false,"iso3":"NIU","iso2":"NU","code":"570","type":"country"},{"id":"65295b82-c8fc-5b50-9e20-e8a1ea9c3439","name":"Nauru","deprecated":true,"iso3":"NRU","iso2":"NR","code":"520","type":"country"},{"id":"fe7bb7a6-4c20-526b-a28f-59c99ffb6c79","name":"Norfolk Island","deprecated":true,"iso3":"NFK","iso2":"NF","code":"574","type":"country"},{"id":"23f76b7a-27a9-5013-9d04-668471db97fc","name":"New Caledonia","deprecated":false,"iso3":"NCL","iso2":"NC","code":"540","type":"country"},{"id":"6d4a7385-b2b6-578c-b825-f2bae24ad903","name":"Northern Mariana Islands","deprecated":true,"iso3":"MNP","iso2":"MP","code":"580","type":"country"},{"id":"b49ff744-593f-5d86-ac9a-58d2d4e8307e","name":"Marshall Islands","deprecated":true,"iso3":"MHL","iso2":"MH","code":"584","type":"country"},{"id":"ec318859-4ec8-56f2-a06c-f2d23e06516e","name":"Kiribati","deprecated":false,"iso3":"KIR","iso2":"KI","code":"296","type":"country"},{"id":"6fff8b89-01f2-59d9-9a39-bd5a8c525fc9","name":"Guam","deprecated":false,"iso3":"GUM","iso2":"GU","code":"316","type":"country"},{"id":"87ea1078-3291-54f4-85e1-f2d54f97a96d","name":"Micronesia","deprecated":false,"iso3":"FSM","iso2":"FM","code":"583","type":"country"},{"id":"c7a81f83-2cd9-501d-9645-ed4170667b48","name":"Fiji","deprecated":true,"iso3":"FJI","iso2":"FJ","code":"242","type":"country"},{"id":"4343b55a-5fe8-567f-a099-f3d20b53a9cf","name":"Cook Islands","deprecated":true,"iso3":"COK","iso2":"CK","code":"184","type":"country"},{"id":"147f040e-b349-5414-81d3-dae7700c7e81","name":"Australia","deprecated":true,"iso3":"AUS","iso2":"AU","code":"036","type":"country"},{"id":"f3f980b4-9a78-5ff2-b7e7-be91523e3783","name":"American Samoa","deprecated":true,"iso3":"ASM","iso2":"AS","code":"016","type":"country"}],"countryCodes":["882","876","548","581","798","776","626","772","090","585","612","598","258","554","570","520","574","540","580","584","296","316","583","242","184","036","016"]}},"ContinentWrapper":{"allOf":[{"$ref":"#/definitions/Continent"},{"$ref":"#/definitions/LinksWrapper"}]},"Country":{"type":"object","properties":{"name":{"type":"string"},"code":{"type":"integer"},"deprecated":{"type":"boolean"},"iso2":{"type":"string"},"iso3":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"country"}},"required":["code","type"],"example":{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"}},"CountryWrapper":{"allOf":[{"$ref":"#/definitions/Country"},{"$ref":"#/definitions/LinksWrapper"}]},"DHCPServer":{"type":"object","properties":{"enableDHCP":{"type":"boolean"},"addressPool":{"type":"string"},"interface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"dhcpserver"}},"required":["enableDHCP","addressPool","interface","type"]},"DHCPServerContainer":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"autoConfig":{"type":"boolean"},"primaryDNS":{"type":"string"},"secondaryDNS":{"type":"string"},"primaryWINS":{"type":"string"},"secondaryWINS":{"type":"string"},"servers":{"type":"array","items":{"type":"object","$ref":"#/definitions/DHCPServer"}},"id":{"type":"string"},"interface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"dhcpservercontainer"}},"required":["autoConfig","type"],"example":{"id":"03d74d98-18e2-5d26-ba97-8d33c95ce067","version":"a63674d4-a9d6-5758-a87e-928328729e9e","autoConfig":false,"servers":[],"primaryWINS":"35.168.133.32","secondaryWINS":"48.108.208.232","primaryDNS":"193.194.169.150","secondaryDNS":"102.255.75.63","type":"dhcpservercontainer"}},"DHCPServerContainerWrapper":{"allOf":[{"$ref":"#/definitions/DHCPServerContainer"},{"$ref":"#/definitions/LinksWrapper"}]},"DatabaseInfo":{"type":"object","properties":{"version":{"type":"string"},"softwareVersion":{"type":"string"},"buildVersion":{"type":"string"},"restoredFromBackup":{"type":"object","$ref":"#/definitions/BackupStateType"},"schemaVersion":{"type":"string"},"configDBVersion":{"type":"string"},"firewallConfigChecksum":{"type":"string"},"isBootstrapSuccessFul":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"databaseinfo"}},"required":["buildVersion","schemaVersion","type","softwareVersion"]},"DbCacheEntityBase$DbCacheState":{"type":"string","enum":["DEPLOYING","DEPLOYED","HISTORIC"]},"DefaultIdentityRule":{"type":"object","properties":{"authAction":{"type":"object","$ref":"#/definitions/AuthAction"},"type":{"type":"string","default":"defaultidentityrule"}},"required":["type"],"example":{"authAction":"PASSIVE","type":"defaultidentityrule"}},"DeployedConfigChecksum":{"type":"object","properties":{"version":{"type":"string"},"checksum":{"type":"string"},"lastUpdatedTimestamp":{"type":"integer"},"updatedFrom":{"type":"object","$ref":"#/definitions/DeployedConfigChecksumType"},"id":{"type":"string"},"type":{"type":"string","default":"deployedconfigchecksum"}},"required":["type"]},"DeployedConfigChecksumType":{"type":"string","enum":["DEPLOYED_LOCALLY","SYNCED_FROM_PEER"]},"DeploymentData":{"type":"object","properties":{"numberOfObjectsToDeploy":{"type":"integer"},"deployedConfigChecksum":{"type":"object","$ref":"#/definitions/DeployedConfigChecksum"},"forceDeployment":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"DeploymentData"}},"required":["type"],"example":{"id":"default","numberOfObjectsToDeploy":0,"type":"deploymentdata"}},"DeploymentDataWrapper":{"allOf":[{"$ref":"#/definitions/DeploymentData"},{"$ref":"#/definitions/LinksWrapper"}]},"DeploymentInfo":{"type":"object","properties":{"version":{"type":"string"},"lastDeployedConfigChecksum":{"type":"string"},"isEasySetupDeployment":{"type":"boolean"},"forceDeployment":{"type":"boolean"},"requiresCacheRefresh":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"deploymentinfo"}},"required":["type"]},"DeploymentSchedule":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"runTimes":{"type":"string"},"name":{"type":"string"},"deploymentId":{"type":"integer"},"deploymentStatusUuid":{"type":"string"},"deploymentType":{"type":"object","$ref":"#/definitions/DeploymentSchedule$DeploymentType"},"resumeDeployment":{"type":"boolean"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"deploymentschedule"}},"required":["type"]},"DeploymentSchedule$DeploymentType":{"type":"string","enum":["NEW","EASY_SETUP_DEPLOYMENT","HA_JOIN_DEPLOYMENT","HA_BREAK_DEPLOYMENT"]},"DeploymentStatus":{"type":"object","properties":{"statusMessage":{"type":"string"},"cliErrorMessage":{"type":"string"},"state":{"type":"object","$ref":"#/definitions/DeploymentStatus$DeploymentState"},"queuedTime":{"type":"integer"},"startTime":{"type":"integer"},"endTime":{"type":"integer"},"statusMessages":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"modifiedObjects":{"type":"object"}}},"DeploymentStatusWrapper":{"allOf":[{"$ref":"#/definitions/DeploymentStatus"},{"$ref":"#/definitions/LinksWrapper"}]},"DeploymentStatus$DeploymentState":{"type":"string","enum":["QUEUED","DEPLOYING","DEPLOYED","DEPLOY_FAILED","DEPLOY_TIMEOUT"]},"Device":{"type":"object","properties":{"version":{"type":"string"},"ipAddress":{"type":"string"},"name":{"type":"string"},"port":{"type":"integer"},"userName":{"type":"string"},"password":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"device"}},"required":["type"]},"DirectoryConfiguration":{"type":"object","properties":{"hostname":{"type":"string"},"port":{"type":"integer"},"encryptionProtocol":{"type":"object","$ref":"#/definitions/EncryptionProtocol"},"encryptionCert":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"directoryconfiguration"}},"required":["hostname","port","type"],"example":{"port":7146,"hostname":"166.169.55.184","encryptionProtocol":"STARTTLS","encryptionCert":{"id":"31ce8cf5-0e07-58c1-9617-4de62a7800f1","name":"TrustedCACertificate1","cert":"-----BEGIN CERTIFICATE-----MIIC9zCCAmCgAwIBAgIJAJ69cfUJsifyMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQLDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkqhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQwMjBaFw0xNjA0MDUxNDQwMjBaMHsxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGluMQwwCgYDVQQKDANBREkxDDAKBgNVBAsMA0FESTEMMAoGA1UEAwwDQURJMSEwHwYJKoZIhvcNAQkBFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRzoznNy0g/X4VyqF8jJt+p6z44tDAfBgNVHSMEGDAWgBRDXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBHm6MADmMOPj7bBCY1lADpcFuSdGjzNgvUyivRDZcMlwFpLlIl+vNJSSMU6i20bq5o+pOMJsSCjOf9NxT3lcWuxtT4Ea226txs5a15TyGRxBV5MJ4/s6gHaDowJSF/TngsURIKcNqFpLTv5FBCqcGR2kdmvBwtl9319seCoZEZYw==-----END CERTIFICATE-----","type":"externalcacertificate","version":"da56323b-9415-5389-b592-946163695c1e","isSystemDefined":false},"type":"directoryconfiguration"}},"DirectoryUserDownloadImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"directoryuserdownloadimmediate"}},"required":["type"]},"DirectoryUserImportImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"directoryuserimportimmediate"}},"required":["type"]},"EmbeddedAppFilter":{"type":"object","properties":{"applications":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"applicationFilters":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"conditions":{"type":"array","items":{"type":"object","$ref":"#/definitions/ApplicationFilterCondition"}},"type":{"type":"string","default":"embeddedappfilter"}},"required":["type"]},"EmbeddedAppFilterBase":{"type":"object","properties":{"applications":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"conditions":{"type":"array","items":{"type":"object","$ref":"#/definitions/ApplicationFilterCondition"}},"type":{"type":"string","default":"embeddedappfilterbase"}},"required":["type"]},"EmbeddedURLFilter":{"type":"object","properties":{"urlObjects":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"urlCategories":{"type":"array","items":{"type":"object","$ref":"#/definitions/URLCategoryMatcher"}},"type":{"type":"string","default":"embeddedurlfilter"}},"required":["type"]},"EncryptionProtocol":{"type":"string","enum":["STARTTLS","LDAPS","NONE"]},"EntryAction":{"type":"string","enum":["PERMIT","DENY"]},"ExportConfigFile":{"type":"object","properties":{"file":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"ExportConfigFile"}},"required":["type"]},"ExportConfigJobHistory":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"exportconfigjobhistory"}},"required":["type"]},"ExportConfigJobHistoryWrapper":{"allOf":[{"$ref":"#/definitions/ExportConfigJobHistory"},{"$ref":"#/definitions/LinksWrapper"}]},"ExternalCACertificate":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"cert":{"type":"string","default":"*********"},"privateKey":{"type":"string","default":"*********"},"passPhrase":{"type":"string"},"issuerCommonName":{"type":"string"},"issuerCountry":{"type":"string"},"issuerLocality":{"type":"string"},"issuerOrganization":{"type":"string"},"issuerOrganizationUnit":{"type":"string"},"issuerState":{"type":"string"},"subjectCommonName":{"type":"string"},"subjectCountry":{"type":"string"},"subjectDistinguishedName":{"type":"string"},"subjectLocality":{"type":"string"},"subjectOrganization":{"type":"string"},"subjectOrganizationUnit":{"type":"string"},"subjectState":{"type":"string"},"validityStartDate":{"type":"string"},"validityEndDate":{"type":"string"},"isSystemDefined":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"externalcacertificate"}},"required":["type"],"example":{"cert":"-----BEGIN CERTIFICATE-----MIIC9zCCAmCgAwIBAgIJAJ69cfUJsifyMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQLDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkqhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQwMjBaFw0xNjA0MDUxNDQwMjBaMHsxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGluMQwwCgYDVQQKDANBREkxDDAKBgNVBAsMA0FESTEMMAoGA1UEAwwDQURJMSEwHwYJKoZIhvcNAQkBFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRzoznNy0g/X4VyqF8jJt+p6z44tDAfBgNVHSMEGDAWgBRDXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBHm6MADmMOPj7bBCY1lADpcFuSdGjzNgvUyivRDZcMlwFpLlIl+vNJSSMU6i20bq5o+pOMJsSCjOf9NxT3lcWuxtT4Ea226txs5a15TyGRxBV5MJ4/s6gHaDowJSF/TngsURIKcNqFpLTv5FBCqcGR2kdmvBwtl9319seCoZEZYw==-----END CERTIFICATE-----","key":"-----BEGIN RSA PUBLIC KEY-----MIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAE=-----END RSA PUBLIC KEY-----","subjectDistinguishedName":"Zirpoppo guj luc lo zij zabe gokuhdul zoh gophek du wogin cav wiw lurera vab eb.","subjectCommonName":"Oji unusito mepajdac fomew ken fesasdaz terde be pionufo atarej ana mukad gap kalmemsu po vir bek.","subjectOrganization":"Zegas va keaja vav zosomo jufejagog sep mukpummub sinbeto igegiizu hevwojet ikecod fu ajueb.","subjectCountry":"Wug nug ulizihep ac ro hibmu ufe vo hucenhev wowjig ohacudilu pujuha oggo aveceku gogogmu.","type":"externalcacertificate","issuerLocality":"Jihhihu biv jozki feg awmum jazfek fuijevi urse so le wi bizeni wojva vic cehokla.","subjectState":"Cujafiga seosjej fa pu voh sohacis ohdonot covdes ijnun doru dab kefa sa no.","subjectOrganization_unit":"Naji gon re unsejal malimuj hun gijajalo dugi ibbil nezi hakonauc zeemu em kud fuwimed cemicnop fo.","physicalPathToKeyFile":"Ikcitip caadaj detezeg ti oh sodo vuhvobeha tuf ciene togokta mulub to hojufha.","physicalPathToCertFile":"Re suv taguzco mocto kuvamziz bip emvoduc urcanbo sopavon jihus umefoip repga gicun ikaniwfe di ezimiap dareb silco.","validityStartDate":"2016-02-06T11:09:17Z","issuerCommonName":"Pa beobe niloraba onsuif bepmif aleubo mafkofo huljodo sovcu duj rez kaj mercefad joto.","issuerCountry":"Bin cumum wahluzpa mewocic awvek basiwo weepo hencob hepos dibofo reugvut wihevewi.","name":"External_Certificate","subjectLocality":"So tejpopku telopep kota pah keiffi luz behha aja osuvobawa an renpukzi.","issuerOrganizationUnit":"Lued licepwal lid lausubid nob iwiwo zouge dugjiar noiz lap vewlapej hepkig niju izevostu sasu ne.","issuerOrganization":"Ju op piema sisoh tir liujoza wafgejhu irpa wu sam seit zosekrog wob dur pohak mogdo.","validityEndDate":"2018-06-05T15:10:57Z","issuerState":"Remiz vi orpiede av romgihipu potacijid fiduked jobe pazbooz erouwi ten wampo cankaag dimnalhi febsi."}},"ExternalCACertificateWrapper":{"allOf":[{"$ref":"#/definitions/ExternalCACertificate"},{"$ref":"#/definitions/LinksWrapper"}]},"ExternalCACertificateGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"isSystemDefined":{"type":"boolean"},"id":{"type":"string"},"objects":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"type":{"type":"string","default":"externalcacertificategroup"}},"required":["type"]},"ExternalCertificate":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"cert":{"type":"string","default":"*********"},"privateKey":{"type":"string","default":"*********"},"passPhrase":{"type":"string"},"issuerCommonName":{"type":"string"},"issuerCountry":{"type":"string"},"issuerLocality":{"type":"string"},"issuerOrganization":{"type":"string"},"issuerOrganizationUnit":{"type":"string"},"issuerState":{"type":"string"},"subjectCommonName":{"type":"string"},"subjectCountry":{"type":"string"},"subjectDistinguishedName":{"type":"string"},"subjectLocality":{"type":"string"},"subjectOrganization":{"type":"string"},"subjectOrganizationUnit":{"type":"string"},"subjectState":{"type":"string"},"validityStartDate":{"type":"string"},"validityEndDate":{"type":"string"},"isSystemDefined":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"externalcertificate"}},"required":["type"]},"ExternalCertificateWrapper":{"allOf":[{"$ref":"#/definitions/ExternalCertificate"},{"$ref":"#/definitions/LinksWrapper"}]},"FQDNDNSResolution":{"type":"string","enum":["IPV4_ONLY","IPV6_ONLY","IPV4_AND_IPV6"]},"FQDNId":{"type":"object","properties":{"version":{"type":"string"},"currentFqdnId":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"fqdnid"}},"required":["type"]},"FQDNSupportedPolicyEnum":{"type":"string","enum":["AC_POLICY"]},"FeatureInformation":{"type":"object","properties":{"featureList":{"type":"array","items":{"type":"object","$ref":"#/definitions/FeatureInformation$Feature"}},"id":{"type":"string"},"type":{"type":"string","default":"FeatureInformation"}},"required":["type"],"example":{"id":"default","version":"31e67c45-3193-596f-beb7-e9603e729420","featureList":[{"name":"SSL","enabled":true,"urls":["/api/fdm/v2/policy/sslpolicies","/api/fdm/v2/object/distinguishednames","/api/fdm/v2/object/distinguishednamegroups"]},{"name":"FilePolicy","enabled":true,"urls":["/api/fdm/v2/policy/filepolicies"]},{"name":"CloudServices","enabled":true,"urls":["/api/fdm/v2/devicesettings/default/cloudcommunicationsettings","/api/fdm/v2/actions/default/cloudmanagement","/api/fdm/v2/operational/telemetry"]},{"name":"OpenDNS","enabled":true,"urls":[]}],"type":"FeatureInformation"}},"FeatureInformationWrapper":{"allOf":[{"$ref":"#/definitions/FeatureInformation"},{"$ref":"#/definitions/LinksWrapper"}]},"FeatureInformation$Feature":{"type":"object","properties":{"name":{"type":"string"},"enabled":{"type":"boolean"},"urls":{"type":"array","items":{"type":"string"}}}},"FileEntity":{"type":"object","properties":{"file":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"FileEntity"}},"required":["type"]},"FilePolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"policyType":{"type":"object","$ref":"#/definitions/CannedFilePolicy"},"type":{"type":"string","default":"filepolicy"}},"required":["description","type"],"example":{"id":"de5b742d-70db-535d-bb42-6e6ba949ef53","type":"filepolicy","policyType":"BLOCK_MALWARE_ALL","name":"File_Policy_1","description":"Wiakeno ja barfowole aredu wutra loc fe soc cakdo se la agokim gevsirrog cagome.","version":"e0e81a67-2608-53e2-a015-f53dc3a9de10"}},"FilePolicyWrapper":{"allOf":[{"$ref":"#/definitions/FilePolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"FileUploadStatus":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"fileName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"fileuploadstatus"}},"required":["type"]},"FileUploadStatusWrapper":{"allOf":[{"$ref":"#/definitions/FileUploadStatus"},{"$ref":"#/definitions/LinksWrapper"}]},"GeoLocation":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"locations":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"geolocation"}},"required":["type"],"example":{"id":"302b9321-60fd-55ac-8111-7b228ba8a7bc","name":"Geolocation1","description":"Eretalta mov naw dibravwe vimu bek ose wipa ecgule kesep pewaco we taruhra awsen kef poin tu fazu.","version":"b9a8a2e0-c5ff-5705-8d0f-b488b9275e46","type":"geolocation","locations":[{"id":"56ea454f-c3b7-5928-88b1-fc3c7937519a","name":"Africa","deprecated":true,"code":1001,"type":"continent","countries":[{"id":"2dd83d58-9368-513e-8bca-464e074764f6","name":"Zimbabwe","deprecated":true,"iso3":"ZWE","iso2":"ZW","code":"716","type":"country"},{"id":"7cd6bf9c-8b69-57c2-abf6-6eeb0741de15","name":"Zambia","deprecated":true,"iso3":"ZMB","iso2":"ZM","code":"894","type":"country"},{"id":"f2d94483-8127-5b5c-9f56-26897f391615","name":"South Africa","deprecated":false,"iso3":"ZAF","iso2":"ZA","code":"710","type":"country"},{"id":"67312148-f472-5f74-af7e-da0dfe6c5483","name":"Mayotte","deprecated":true,"iso3":"MYT","iso2":"YT","code":"175","type":"country"},{"id":"16d66ae1-8a56-5b81-8a83-6f7123be2e2c","name":"Uganda","deprecated":false,"iso3":"UGA","iso2":"UG","code":"800","type":"country"},{"id":"b1825e78-1df2-5592-a76e-7442de702238","name":"Tanzania","deprecated":false,"iso3":"TZA","iso2":"TZ","code":"834","type":"country"},{"id":"34105ec6-4fd5-5617-8a55-a033b433501b","name":"Tunisia","deprecated":false,"iso3":"TUN","iso2":"TN","code":"788","type":"country"},{"id":"00827e94-7231-522b-a92c-c43381c394b0","name":"Togo","deprecated":true,"iso3":"TGO","iso2":"TG","code":"768","type":"country"},{"id":"5b1f4a78-73fb-5d81-b087-a43e6a56210e","name":"Chad","deprecated":true,"iso3":"TCD","iso2":"TD","code":"148","type":"country"},{"id":"4390d558-ea24-5aab-92ed-7ea167512925","name":"Swaziland","deprecated":false,"iso3":"SWZ","iso2":"SZ","code":"748","type":"country"},{"id":"22e9a10d-c048-5bce-92b3-d35ba32a2380","name":"São Tomé and Príncipe","deprecated":false,"iso3":"STP","iso2":"ST","code":"678","type":"country"},{"id":"175e350b-3e7b-5988-92a5-b8592f89a5d0","name":"South Sudan","deprecated":true,"iso3":"SSD","iso2":"SS","code":"728","type":"country"},{"id":"408c17e6-3750-56ba-b74d-14cece756b69","name":"Somalia","deprecated":false,"iso3":"SOM","iso2":"SO","code":"706","type":"country"},{"id":"bed65f83-79ce-514e-a9c2-24bae1906576","name":"Senegal","deprecated":true,"iso3":"SEN","iso2":"SN","code":"686","type":"country"},{"id":"81415c05-a391-5182-8902-0f48ee21358a","name":"Sierra Leone","deprecated":true,"iso3":"SLE","iso2":"SL","code":"694","type":"country"},{"id":"50c46fa0-0451-5e15-9bbc-846a527de114","name":"Saint Helena","deprecated":true,"iso3":"SHN","iso2":"SH","code":"654","type":"country"},{"id":"c2a050bc-b370-5bcd-945c-cd0d88d814ee","name":"Sudan","deprecated":false,"iso3":"SDN","iso2":"SD","code":"729","type":"country"},{"id":"2792902e-5e01-5294-bd39-4a9b86443f69","name":"Seychelles","deprecated":false,"iso3":"SYC","iso2":"SC","code":"690","type":"country"},{"id":"e6e6e19f-26b3-53cc-ae5c-ad6af73ffa23","name":"Rwanda","deprecated":false,"iso3":"RWA","iso2":"RW","code":"646","type":"country"},{"id":"1657adab-03a4-556a-b779-d62bf356497f","name":"Réunion","deprecated":true,"iso3":"REU","iso2":"RE","code":"638","type":"country"},{"id":"db11cb4c-3534-5c9a-bd15-7b41c5b161d6","name":"Nigeria","deprecated":false,"iso3":"NGA","iso2":"NG","code":"566","type":"country"},{"id":"271aded5-deef-50b9-9e02-ec55543da25b","name":"Niger","deprecated":true,"iso3":"NER","iso2":"NE","code":"562","type":"country"},{"id":"a8f12931-d0a3-5ead-b8f7-26c9d8e29684","name":"Namibia","deprecated":false,"iso3":"NAM","iso2":"NA","code":"516","type":"country"},{"id":"f85a38bd-9851-5540-9a47-2bcda221c02f","name":"Mozambique","deprecated":false,"iso3":"MOZ","iso2":"MZ","code":"508","type":"country"},{"id":"26316b70-a4e5-5ee7-9176-d8f88977ac81","name":"Malawi","deprecated":false,"iso3":"MWI","iso2":"MW","code":"454","type":"country"},{"id":"8ac5e628-88fe-5a8f-a8e8-5e9823bed8c9","name":"Mauritius","deprecated":true,"iso3":"MUS","iso2":"MU","code":"480","type":"country"},{"id":"6286246a-cb95-57c8-bf4d-85524e069dc9","name":"Mauritania","deprecated":false,"iso3":"MRT","iso2":"MR","code":"478","type":"country"},{"id":"9eaf4ef5-fcd1-55b8-b344-7b60f9acbb2a","name":"Mali","deprecated":true,"iso3":"MLI","iso2":"ML","code":"466","type":"country"},{"id":"3158c9ea-2e08-5057-923c-a252e9bbceb5","name":"Madagascar","deprecated":true,"iso3":"MDG","iso2":"MG","code":"450","type":"country"},{"id":"b110114a-4903-54d2-8925-cfa66175fc81","name":"Morocco","deprecated":true,"iso3":"MAR","iso2":"MA","code":"504","type":"country"},{"id":"ac567919-9e6f-5712-8ef8-817d2875ae89","name":"Libya","deprecated":false,"iso3":"LBY","iso2":"LY","code":"434","type":"country"},{"id":"b82c039e-20c2-50f0-9176-307e154d19cd","name":"Lesotho","deprecated":true,"iso3":"LSO","iso2":"LS","code":"426","type":"country"},{"id":"936e5855-cede-5036-b530-4a8dc3ded9f1","name":"Liberia","deprecated":true,"iso3":"LBR","iso2":"LR","code":"430","type":"country"},{"id":"781554f5-83af-5829-a0b1-f679ccadcbc8","name":"Comoros","deprecated":true,"iso3":"COM","iso2":"KM","code":"174","type":"country"},{"id":"ef9608a5-3398-5610-9770-361e8f4d5018","name":"Kenya","deprecated":false,"iso3":"KEN","iso2":"KE","code":"404","type":"country"},{"id":"7ff14832-3c58-5e8d-b6fa-7d211d0eddea","name":"Guinea-Bissau","deprecated":true,"iso3":"GNB","iso2":"GW","code":"624","type":"country"},{"id":"24ef0507-02b5-58d8-a403-8087853d0d0e","name":"Equatorial Guinea","deprecated":false,"iso3":"GNQ","iso2":"GQ","code":"226","type":"country"},{"id":"8b2e1fe0-df59-514f-8cad-46e618371f10","name":"Guinea","deprecated":false,"iso3":"GIN","iso2":"GN","code":"324","type":"country"},{"id":"2311d16e-f8c8-5db8-9446-ddc015dee026","name":"Gambia","deprecated":true,"iso3":"GMB","iso2":"GM","code":"270","type":"country"},{"id":"9cbd51af-d825-56f1-b3c3-1412697fe6d8","name":"Ghana","deprecated":true,"iso3":"GHA","iso2":"GH","code":"288","type":"country"},{"id":"1a6265f3-08ce-57c4-9d8d-8807bc7c3f96","name":"Gabon","deprecated":true,"iso3":"GAB","iso2":"GA","code":"266","type":"country"},{"id":"7466e390-4ac7-5c6e-8ae7-cffbf4d26761","name":"Ethiopia","deprecated":false,"iso3":"ETH","iso2":"ET","code":"231","type":"country"},{"id":"1b6630d5-2650-5baf-b9a5-fa59fbbd36be","name":"Eritrea","deprecated":false,"iso3":"ERI","iso2":"ER","code":"232","type":"country"},{"id":"f2413a89-a11d-527c-a748-d64457cd82ba","name":"Western Sahara","deprecated":true,"iso3":"ESH","iso2":"EH","code":"732","type":"country"},{"id":"23a4cd6d-3738-547b-9e3a-82d60efe6864","name":"Egypt","deprecated":true,"iso3":"EGY","iso2":"EG","code":"818","type":"country"},{"id":"bd6f190e-df1a-568c-94cc-8fbb7394522f","name":"Algeria","deprecated":false,"iso3":"DZA","iso2":"DZ","code":"012","type":"country"},{"id":"9c992f6e-72f5-5d6b-8fb9-b23909129b08","name":"Djibouti","deprecated":true,"iso3":"DJI","iso2":"DJ","code":"262","type":"country"},{"id":"63696b95-bded-58f4-8b4e-402397cfcd8a","name":"Cape Verde","deprecated":true,"iso3":"CPV","iso2":"CV","code":"132","type":"country"},{"id":"6d854d95-e91f-53cb-a1f2-1e07d51eb137","name":"Cameroon","deprecated":false,"iso3":"CMR","iso2":"CM","code":"120","type":"country"},{"id":"e8286886-6019-50d6-b0b4-315f7b9f2cef","name":"Ivory Coast","deprecated":false,"iso3":"CIV","iso2":"CI","code":"384","type":"country"},{"id":"97916595-e2d1-5214-87e2-e242bf4ad893","name":"Republic of the Congo","deprecated":false,"iso3":"COG","iso2":"CG","code":"178","type":"country"},{"id":"b1b8664b-d80d-5480-9b9a-a1ac997bd533","name":"Central African Republic","deprecated":false,"iso3":"CAF","iso2":"CF","code":"140","type":"country"},{"id":"8789e5fc-90ef-5dc5-942f-1f0f6bef20e2","name":"Democratic Republic of the Congo","deprecated":false,"iso3":"COD","iso2":"CD","code":"180","type":"country"},{"id":"e8bab11d-42db-5ff0-a68d-81d7fdae7000","name":"Botswana","deprecated":false,"iso3":"BWA","iso2":"BW","code":"072","type":"country"},{"id":"74442316-edea-5c33-9f4e-de1677f848a1","name":"Benin","deprecated":true,"iso3":"BEN","iso2":"BJ","code":"204","type":"country"},{"id":"a666ef14-444e-5605-add7-3a1a1bf028d6","name":"Burundi","deprecated":true,"iso3":"BDI","iso2":"BI","code":"108","type":"country"},{"id":"b4bd346d-94ee-5893-8439-83dcc230d37e","name":"Burkina Faso","deprecated":false,"iso3":"BFA","iso2":"BF","code":"854","type":"country"},{"id":"c6218172-7179-5f37-9302-48a0ac1e3082","name":"Angola","deprecated":true,"iso3":"AGO","iso2":"AO","code":"024","type":"country"}],"countryCodes":["716","894","710","175","800","834","788","768","148","748","678","728","706","686","694","654","729","690","646","638","566","562","516","508","454","480","478","466","450","504","434","426","430","174","404","624","226","324","270","288","266","231","232","732","818","012","262","132","120","384","178","140","180","072","204","108","854","024"]},{"id":"8aa72327-ba67-5dff-b069-035aeb8cfa04","name":"Tuvalu","deprecated":true,"iso3":"TUV","iso2":"TV","code":"798","type":"country"},{"id":"d992dc09-5ab5-5126-a966-51dd89360213","name":"Cyprus","deprecated":false,"iso3":"CYP","iso2":"CY","code":"196","type":"country"},{"id":"f768751b-5126-5dd3-8d28-dc034bde2bb2","name":"Antarctica","deprecated":false,"iso3":"ATA","iso2":"AQ","code":"010","type":"country"},{"id":"465abc15-6361-5901-99d0-014fd0a8fb59","name":"Peru","deprecated":false,"iso3":"PER","iso2":"PE","code":"604","type":"country"},{"id":"8fc88712-b063-55fa-adf9-7d1090098ca4","name":"Bermuda","deprecated":false,"iso3":"BMU","iso2":"BM","code":"060","type":"country"},{"id":"52961d82-c37b-5a32-8ca1-34c8ca38ca0f","name":"Bangladesh","deprecated":true,"iso3":"BGD","iso2":"BD","code":"050","type":"country"}]}},"GeoLocationWrapper":{"allOf":[{"$ref":"#/definitions/GeoLocation"},{"$ref":"#/definitions/LinksWrapper"}]},"GeolocationUpdateImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"geolocationupdateimmediate"}},"required":["type"]},"GeolocationUpdateImmediateWrapper":{"allOf":[{"$ref":"#/definitions/GeolocationUpdateImmediate"},{"$ref":"#/definitions/LinksWrapper"}]},"GeolocationUpdateSchedule":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"runTimes":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"geolocationupdateschedule"}},"required":["type"]},"GeolocationUpdateScheduleWrapper":{"allOf":[{"$ref":"#/definitions/GeolocationUpdateSchedule"},{"$ref":"#/definitions/LinksWrapper"}]},"GeolocationVersion":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"geolocationDbVersion":{"type":"string"},"lastSuccessGeolocationDate":{"type":"string"},"countryCodeMapVersion":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"geolocationversion"}},"required":["type"]},"HAIPv4Address":{"type":"object","properties":{"ipAddress":{"type":"string"},"netmask":{"type":"string"},"standbyIpAddress":{"type":"string"},"type":{"type":"string","default":"haipv4address"}},"required":["type"]},"HAIPv6Address":{"type":"object","properties":{"ipAddress":{"type":"string"},"standbyIpAddress":{"type":"string"},"type":{"type":"string","default":"haipv6address"}},"required":["type"]},"HaBreakCleanupImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"habreakcleanupimmediate"}},"required":["type"]},"HaConfigSyncImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"jobName":{"type":"string"},"restore":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"haconfigsyncimmediate"}},"required":["type"]},"ICMPv4Codes":{"type":"string","enum":["ANY_IPV4","NET_UNREACHABLE","HOST_UNREACHABLE","PROTOCOL_UNREACHABLE","PORT_UNREACHABLE","FRAGMENTATION_NEEDED","SOURCE_ROUTE_FAILED","DEST_NETWORK_UNKNOWN","DEST_HOST_UNKNOWN","SRC_HOST_ISOLATED","COMMUNICATION_DEST_NET_PROHIBITED","COMMUNICATION_DEST_HOST_PROHIBITED","DEST_NET_UNREACHABLE_FOR_TOS","DEST_HOST_UNREACHABLE_FOR_TOS","COMM_ADMINISTRATIVELY_PROHIBITED","HOST_PRECEDENCE_VIOLATION","PRECEDENCE_CUTOFF","REDIRECT_DATAGRAM_NETWORK","REDIRECT_DATAGRAM_HOST","REDIRECT_DATAGRAM_SERVICE_NETWORK","REDIRECT_DATAGRAM_SERVICE_HOST","ALTERNATE_HOST_ADDR","NORMAL_ROUTER_ADV","DO_NOT_ROUTE_COMMON_TRAFFIC","TTL_EXPIRED_TRANSIT","FRAG_ASSEMBLY","PTR_ERROR","MISSING_REQD_OPTION","BAD_LENGTH","BAD_SPI","AUTH_FAILED","DECOMPRESSION_FAILED","DECRYPTION_FAILED","NEED_AUTHENTICATION","NEED_AUTHORIZATION"]},"ICMPv4PortObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystemDefined":{"type":"boolean"},"icmpv4Type":{"type":"object","$ref":"#/definitions/ICMPv4Types"},"icmpv4Code":{"type":"object","$ref":"#/definitions/ICMPv4Codes"},"id":{"type":"string"},"type":{"type":"string","default":"icmpv4portobject"}},"required":["icmpv4Type","type"],"example":{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}},"ICMPv4PortObjectWrapper":{"allOf":[{"$ref":"#/definitions/ICMPv4PortObject"},{"$ref":"#/definitions/LinksWrapper"}]},"ICMPv4Types":{"type":"string","enum":["ANY","ECHO_REPLY","DESTINATION_UNREACHABLE","SOURCE_QUENCH","REDIRECT_MESSAGE","ALTERNATE_HOST_ADDRESS","ECHO_REQUEST","ROUTER_ADVERTISEMENT","ROUTER_SOLICITATION","TIME_EXCEEDED","PARAMETER_PROBLEM","TIMESTAMP","TIMESTAMP_REPLY","INFO_REQUEST","INFO_REPLY","ADDR_MASK_REQUEST","ADDR_MASK_REPLY","TRACEROUTE","DATAGRAM_CONVERSION_ERROR","MOBILE_HOST_REDIRECT","WHERE_ARE_YOU","HERE_I_AM","MOBILE_REG_REQUEST","MOBILE_REG_REPLY","DOMAIN_NAME_REQUEST","DOMAIN_NAME_REPLY","SKIP_ALGORITHM_DISCOVERY_PROTOCOL","PHOTURIS","EXPERIMENTAL_MOB_PROTOCOLS"]},"ICMPv6Codes":{"type":"string","enum":["ANY_IPV6","NO_ROUTE_DEST","COMMUNICATION_PROHIBITED","BEYOND_SCOPE_SRC_ADDR","ADDRESS_UNREACHABLE","PORT_UNREACHABLE","SOURCE_ADDRESS_FAILED","REJECT_ROUTE","ERROR_SRC_ROUTING_HEADER","HOP_LIMIT_EXCEEDED","FRAGMENT_REASSEMBLY_TIME_EXCEEDED","ERRONEOUS_HEADER_ENCOUNTERED","UNRECOGNIZED_NEXT_HEADER_TYPE_ENCOUNTERED","UNRECOGNIZED_IPv6_OPTION_ENCOUNTERED","ROUTER_RENUMBERING_COMMAND","ROUTER_RENUMBERING_RESULT","SEQUENCE_NUMBER_RESET","DATA_CONTAINS_IPv6","DATA_CONTAINS_NAME","DATA_CONTAINS_IPv4","SUCCESSFUL_REPLY","RESPONDER_REFUSES_ANSWER","QTYPE_UNKNOWN"]},"ICMPv6PortObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystemDefined":{"type":"boolean"},"icmpv6Type":{"type":"object","$ref":"#/definitions/ICMPv6Types"},"icmpv6Code":{"type":"object","$ref":"#/definitions/ICMPv6Codes"},"id":{"type":"string"},"type":{"type":"string","default":"icmpv6portobject"}},"required":["icmpv6Type","type"],"example":{"id":"ff728962-8729-5bce-941c-1730e280dc0b","name":"icmpv6port1","description":"Uh letiof numsu bokewod gosso sowdilid bevliur idseaho vu delale luctid ila givcogev.","version":"9aca9371-12d1-5490-af24-a87e3160146f","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8452,"isSystemDefined":false}},"ICMPv6PortObjectWrapper":{"allOf":[{"$ref":"#/definitions/ICMPv6PortObject"},{"$ref":"#/definitions/LinksWrapper"}]},"ICMPv6Types":{"type":"string","enum":["ANY","DESTINATION_UNREACHABLE","PACKET_TOO_BIG","TIME_EXCEEDED","PARAMETER_PROBLEM","ECHO_REQUEST","ECHO_REPLY","MULTICAST_LISTENER_QUERY","MULTICAST_LISTENER_REPORT","MULTICAST_LISTENER_DONE","ROUTER_SOLICITATION","ROUTER_ADVERTISEMENT","NEIGHBOUR_SOLICITATION","NEIGHBOUR_ADVERTISEMENT","REDIRECT_MESSAGE","ROUTER_RENUMBERING","ICMP_NODE_INFO_QUERY","ICMP_NODE_INFO_RESPONSE","INVERSE_NEIGHBOR_DISCOVERY_SOLICITATION","INVERSE_NEIGHBOR_DISCOVERY_ADVERTISEMENT","VER2_MULTICAST_LISTENER_REPORT","HOME_AGENT_ADDR_DISCOVERY_REQ","HOME_AGENT_ADDR_DISCOVERY_REPLY","MOBILE_PREFIX_SOLICITATION","MOBILE_PREFIX_ADVERTISEMENT","CERT_PATH_SOLICITATION","CERT_PATH_ADVERTISEMENT","ICMP_EXP_MOBILITY_PROTOCOLS","MULTICAST_ROUTER_ADVERTISEMENT","MULTICAST_ROUTER_SOLICITATION","MULTICAST_ROUTER_TERMINATION","FMIPv6_MSG","RPL_CTRL_MSG","PRIVATE_EXPERIMENTATION","PRIVATE_EXPERIMENTATION_EXTENDED"]},"IPSRuleClassification":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"priority":{"type":"integer"},"ordinal":{"type":"integer"},"description":{"type":"string"},"revision":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"ipsruleclassification"}},"required":["description","type","revision"]},"IPv4Address":{"type":"object","properties":{"ipAddress":{"type":"string"},"netmask":{"type":"string"},"type":{"type":"string","default":"ipv4address"}},"required":["type"]},"IPv4Type":{"type":"string","enum":["DHCP","STATIC"]},"IPv6Address":{"type":"object","properties":{"ipAddress":{"type":"string"},"type":{"type":"string","default":"ipv6address"}},"required":["type"]},"IPv6Prefix":{"type":"object","properties":{"prefix":{"type":"string"},"type":{"type":"string","default":"ipv6prefix"}},"required":["type"]},"ISEObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"iseobject"}},"required":["type"]},"IdentityPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"activeAuthPort":{"type":"integer"},"defaultIdentityRule":{"type":"object","$ref":"#/definitions/DefaultIdentityRule"},"id":{"type":"string"},"activeAuthCertificate":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"identitypolicy"}},"required":["type","activeAuthPort"],"example":{"id":"c6e1cd2e-f402-5578-a72f-8c637f5bf0c4","name":"Identity policy","activeAuthPort":885,"activeAuthCertificate":{"id":"dd3ca9bc-cd75-5799-953b-0a2e5dba2c49","name":"InternalCertificate3","cert":"-----BEGIN CERTIFICATE-----\nMIIDEjCCAnugAwIBAgIJAJ69cfUJsifzMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD\nVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQL\nDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkq\nhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQ0NTJaFw0x\nNjA0MDUxNDQ0NTJaMIGVMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDzAN\nBgNVBAcMBkF1c3RpbjEVMBMGA1UECgwMQURJIGF0IENpc2NvMQwwCgYDVQQLDANB\nREkxHTAbBgNVBAMMFEFESSBUZXN0aW5nIEF0IENpc2NvMSEwHwYJKoZIhvcNAQkB\nFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\nAKk6jiG3XImaQNnVe1zeRbchMVbpBxdDYIRt0Eqvl2HqfAZJDKSw+s080iMC5Dmg\nTvOaZYaf4rc92z/WpMTgiOxmwKLhaw1INzBptxc4JoQPNFG4qUSVIHW9mnoXwluo\naXypJKAgeLukuO5tdUj9Iy4IHabMmJxcQsZ1vJ65cIH5AgMBAAGjezB5MAkGA1Ud\nEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj\nYXRlMB0GA1UdDgQWBBROqbPMUm6cUg+E/ficJa8WkdhcwzAfBgNVHSMEGDAWgBRD\nXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBaoTmcEb14AIcd\nq6R34phLlDP1JRV54NQ5gTXK858dyRE41CHensHSwXlHUg2JJ/LuUhK7h+ST1Qhy\nkFCHNQHh9ojRK34ydIIltGaGGCIZDEgUqhc7IeZ/PSR5252vQaAwDWDxapA2ZsVo\nr9OY0Q7uuCLvNNiQQzvjlnQZ94Rp4A==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqsrdtuAzs/APtjiJefyhxCnheLOFOP8BfvtcdfFNFVj3RP5n30AYGmTT31dTLPeA4dYHgthUImKkxcWIOuJqHlLrEo3fmfEbhy8KehfQ0Pfy+4K/QTB7NU28/K9Hr0Mwz6bUuboby/BvIi1u/ZIzl5KlmJBz/cQMPonD2hte2fwvkqCfhpNl25tMzEpyqCAa4tciUqSXf0Zs63XtcVPBpuGN6vU0QllqxLbzsQ7ShwymBiLnUqX95tWkJCrRIfklEwlbTXyRM5NSjk6EdZeDfX5OHexV4AodbtGZSeQYU7s2vs50khtIWVGr+14dPguWf9ggMCRoX+B9RogfV03IVAgMBAAECggEAfwLTsXQNShiK46uqrx12fgYIYiqKyqps/dEGRw5G94SgIp5sdhP3J9m/q9kTqNa1i80Dgqx5IhhVbFCtYb7CXLex8LahdIJsS35NpZ6OgoDNG0ocB6VcFfNLB3oXjJukFcyD37Sl/Q7RrXrkHZk3radi1Hlyii8Q1AVOgGD9CPBwRaBrjAuJXunJRSnzJ1MuV29PoNSOcQ0o+q26JkZaTcFHt/iVdeBiKFEyfwd6oWTkpRQiUD+Xi/P9XkYud1nou64dvw6XIDpsV7uX07OASHk1fuQjDJLwyO4KlcWBzNb6Z1sE6l1EqHcZKqijcYISElzPGTEVlDkXAT5YxiIjAQKBgQDVYP/8obthBaUBFVkPaZNUzLsjyv9ONOWVHIzw9YVOmC7v2WdrnDgoBkNaV4SdCOYsJW+887nA6zK2208DlRea1fAcZWgItRqvJi9wiqtZAS1BCC+tTliYS3x/wqmFyFRqLK4dIqpbZ52+vEoEMgrDJmzG7k7aXjAm9+JH+MqfBQKBgQDMy0KcdA68h5VlbifLnMbQUJO7Zy081Tdbpgnf02/PaC/HHbYnbn/hWv8TTuoBcEDkh0nl3JRmPKMyF+Aeqj5Xd6A4znRQXq9ZPcOyKYw08VGkf4m41mm2Iq7HcSwhZFlWZWfA3cCU+Z5eTVY7RBQjoJ8Qk6LyRjAmlA5xiMVT0QKBgGVDeXjtUD3FLf+LoA5+bhsqZg2ggvUciW/wcrrP6gnYkz3kkP4yzzu/bStsqVTVKlb9FUA48oiplhHNlnv+v4sNyLvRLEQlnppMpurkBFljA5T/S5EVw1nTSSxgt47z+YvB1IejMfHbBLPGK+I91XmzvJ/T7LwZQwTbUxoQ6if5AoGBAMuoErzteT4pAvuUWQTWCqxchR1nVIhbbKq6arVoWZeDf4fe1ydNbuSXjnQQFQuLKy1YELgC7JzjDlOhhKJaIJbxAqebP/YwwuXXU0ZYpPJ9TPhuUHI833Fd+juiIwWt+l29iDk3DO3ZcpFLDUbww6pOcACXIQMXo4ip0dc78SgRAoGAEb7FK7hqFmBk24Pu5vzKE/BYYD1mY17+zmeFocn2vu89jLYvRGYrvuGn9TgD3zeXjNsAqbMW8Td5F3xnMJ3JHhnAQHd1Wh5VROsXfhtT/Uhl4eCGEkKqM+EEBD6Z3UsZbNFRGEl1xThzdwchLt0WNTD9kuoxWkjV3hjPBnkJlvk=-----END PRIVATE KEY-----","issuerCommonName":"FTD OnBox Team Testing at Cisco","issuerOrganizationUnit":"FTD","subjectCommonName":"FTD Testing At Cisco","subjectOrganization":"FTD at Cisco","subjectOrganizationUnit":"FTD","validityStartDate":"Apr 6 14:44:52 2015 GMT","validityEndDate":"Feb 16 14:44:52 2017 GMT","type":"internalcertificate","version":"e4835856-e762-5621-b141-b742806949d7"},"defaultIdentityRule":{"authAction":"PASSIVE","type":"defaultidentityrule"},"type":"identitypolicy","version":"golfisiwgo"}},"IdentityPolicyWrapper":{"allOf":[{"$ref":"#/definitions/IdentityPolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"IdentityRule":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"ruleId":{"type":"integer"},"sourceZones":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationZones":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"sourceNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"sourcePorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationPorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"realm":{"type":"object","$ref":"#/definitions/ReferenceModel"},"guestAccessFallback":{"type":"boolean"},"authType":{"type":"object","$ref":"#/definitions/AuthType"},"action":{"type":"object","$ref":"#/definitions/AuthAction"},"enabled":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"identityrule"}},"required":["type"],"example":{"name":"err","type":"identityrule","enabled":false,"guestAccessFallback":false,"id":"51dedb67-ad67-52bd-b366-6b267486b4c1","version":"vubamkood","realm":{"id":"3a675c42-3970-5e66-a949-c7d84860f47e","enabled":true,"name":"SpecialUsersRealmIdentity","type":"activedirectoryrealm","baseDN":"miodupbal","adPrimaryDomain":"xsa.cisco.com","dirUsername":"vewhapigud","dirPassword":"*********","systemDefined":true,"directoryConfigurations":[{"port":7146,"hostname":"166.169.55.184","encryptionProtocol":"STARTTLS","encryptionCert":{"id":"31ce8cf5-0e07-58c1-9617-4de62a7800f1","name":"TrustedCACertificate1","cert":"-----BEGIN CERTIFICATE-----MIIC9zCCAmCgAwIBAgIJAJ69cfUJsifyMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQLDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkqhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQwMjBaFw0xNjA0MDUxNDQwMjBaMHsxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGluMQwwCgYDVQQKDANBREkxDDAKBgNVBAsMA0FESTEMMAoGA1UEAwwDQURJMSEwHwYJKoZIhvcNAQkBFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRzoznNy0g/X4VyqF8jJt+p6z44tDAfBgNVHSMEGDAWgBRDXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBHm6MADmMOPj7bBCY1lADpcFuSdGjzNgvUyivRDZcMlwFpLlIl+vNJSSMU6i20bq5o+pOMJsSCjOf9NxT3lcWuxtT4Ea226txs5a15TyGRxBV5MJ4/s6gHaDowJSF/TngsURIKcNqFpLTv5FBCqcGR2kdmvBwtl9319seCoZEZYw==-----END CERTIFICATE-----","type":"externalcacertificate","version":"da56323b-9415-5389-b592-946163695c1e","isSystemDefined":false},"type":"directoryconfiguration"}],"version":"ecterdobi","realmId":2},"action":"NO_AUTH","authType":"HTTP_NEGOTIATE","ruleId":2,"sourceZones":[{"id":"e12d0a2e-afc7-53cb-85e7-38aa135de327","name":"SecurityZone13Name","description":"Do tewuznas ucait mad ziwgef iw unjup guzov dize guzut vibuk anpekpib nerviw ip ijpa koruf.","version":"09dc0dd3-4a94-5cf2-9efb-89a0f352e003","interfaces":[{"mtu":2652,"enabled":true,"description":"Agi pobjotu zukac rive putsi herima mepues ezijo wicimub utjamoj noskavup wupoje ra dujipale.","name":"subinterface2name","id":"353dee59-d2b6-5df6-9b8e-4f444b489176","hardwareName":"SubInterface0/2.3","macAddress":"EDB8.12E9.D2DB","monitorInterface":false,"standbyMacAddress":"5667.5103.F034","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"2647:2aea:3fdf:b4cc:6433:554a:6ab5:c594/32","ipAddress":"04f0:7320:ae63:ce9f:664b:c7e3:8867:daa9/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"3d77:5e5d:78ec:d370:2293:4026:1bbb:aee3","ipAddress":"e6eb:6fef:da47:e1c1:1523:464b:1cab:92a1"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"96.88.118.226","standbyIpAddress":"17.135.120.105"}},"version":"82ce2f08-42bf-5b19-bbbb-0c4ef276caa0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"ec43d6a8-fe32-5daa-a8bd-766b57a23892","name":"SecurityZone12Name","description":"Etzasus comdupo lu jeitlov zedoj no lidwa ka beni ujenapse lowon dil ami jir.","version":"3091782d-2bd2-57e7-8447-191d486665aa","interfaces":[{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}},{"id":"0453e827-ea9e-5279-b45d-49df10666f7f","name":"SecurityZone14Name","description":"Kojugbel ram kucdowaf dozabace bagi vizlujva ibeali humupici apefin sig wiwdocduw halsoz.","version":"aaaea33f-d703-5f8e-9fb0-8647d4f28f12","interfaces":[{"mtu":2652,"enabled":true,"description":"Dijiz mavajmak suhihi ja piobba vigsasu pulasa heka lus nuapoap gar weuluvaz faf duke sojpov pamdaba juhoflon ugosum.","name":"subinterface4name","id":"80110552-0168-5ca1-9539-159176e34426","hardwareName":"SubInterface0/4.5","macAddress":"1753.227B.5D9A","monitorInterface":false,"standbyMacAddress":"FF7B.C256.4778","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1bb9:5d4d:1200:c9eb:97ff:589e:edd4:16e4/32","ipAddress":"eaba:377e:f390:0e98:800f:a6a7:5709:6b52/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"5189:1c32:5064:5495:0ecf:92dd:9175:944a","ipAddress":"479b:2e4a:a86f:13c2:425b:1e14:b1a3:ddfd"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"213.34.152.190","standbyIpAddress":"91.47.228.196"}},"version":"8bcf839f-438a-5cd4-99a7-b6f07ab652a0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Povlulmi maev usma nizguv ve win coocila colo dunde karib wadu ku huhakla kikel gas.","name":"subinterface13name","id":"edd991bd-6b34-5057-9389-003a56e10179","hardwareName":"SubInterface0/13.14","macAddress":"CC55.5B72.5979","monitorInterface":true,"standbyMacAddress":"9F25.7162.695C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0d43:9009:33b7:805f:2a41:1ed1:0ea0:3cd6/32","ipAddress":"e093:0b7d:4775:c0dc:8433:a3b6:1071:8974/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bf79:78d0:19ad:cc70:9f5b:5882:e462:ba1d","ipAddress":"5ffa:92d3:6efd:ef6f:c194:ff49:7d28:7d56"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"237.58.152.175","standbyIpAddress":"233.37.45.228"}},"version":"f9997393-39da-5999-bef9-a0aa1c914d96","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationZones":[{"id":"a3e7f3ef-3d09-5365-9a73-229ded43ba48","name":"SecurityZone15Name","description":"Wofa mukko zugal efamosaj ape vurugepa memepi woutod lu ergifde ceini den pegvuni ja.","version":"e721fda0-83ce-51b6-a003-bedfe42bb5db","interfaces":[{"mtu":2652,"enabled":false,"description":"Bo afri kewbiezu atda okpibmim faelaja jip tu ena oc pek mu piwnehsab puspon nuuja ziwelnak ilwu teew.","name":"subinterface9name","id":"a54e4784-eafc-5bc4-bfa1-985dd51ea923","hardwareName":"SubInterface0/9.10","macAddress":"A82E.76DF.F146","monitorInterface":false,"standbyMacAddress":"11D9.182D.C518","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"4f09:724e:c874:a60e:ff7c:0374:170f:cacf/32","ipAddress":"4313:8aa3:d274:f439:ea48:c8c7:c19b:22e2/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"0484:520a:88d4:9a88:6e95:64c9:65b9:f83b","ipAddress":"4ad5:881b:7ff6:552a:b882:7de7:21fc:972d"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"0.192.1.63","standbyIpAddress":"195.235.84.107"}},"version":"877f9f31-9402-5eaa-b18c-9333e068e73e","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"043ca75c-25c8-5d2f-9912-f174e3756077","name":"SecurityZone8Name","description":"Fo zihroc befjijwe vafel golwekjow hukohdi bo gitjap titsuabe cav fif mufdec unibit mubu idabehob ruthesusa.","version":"9f2207f2-63f0-5423-aa5c-6b7dc7d41cf3","interfaces":[{"mtu":2652,"enabled":true,"description":"Ta ikoure oznog tu hodul bizzo jimiite men cucif bewtujjof amurulev cuh igu fo siw dupziswul upahig roivipi.","name":"subinterface1name","id":"bdb62102-971e-5472-ab3b-22a7d408dc10","hardwareName":"SubInterface0/1.2","macAddress":"A57C.05DF.7FC0","monitorInterface":false,"standbyMacAddress":"4CE2.828C.AAB1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"86a0:974f:3bf1:cee2:71c8:e295:2c3e:8d76/32","ipAddress":"9cb8:4589:0220:bd63:4d62:42ac:bd26:e1ac/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"7f67:fa11:adca:bd10:8583:757e:7ebb:be87","ipAddress":"4298:ffb2:30f7:84b6:5106:69aa:343c:8362"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"43.30.66.103","standbyIpAddress":"138.99.49.192"}},"version":"e04406e6-ff09-57ac-9b38-fdd8b19cf6fb","managementInterface":true,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":false}},{"id":"0453e827-ea9e-5279-b45d-49df10666f7f","name":"SecurityZone14Name","description":"Kojugbel ram kucdowaf dozabace bagi vizlujva ibeali humupici apefin sig wiwdocduw halsoz.","version":"aaaea33f-d703-5f8e-9fb0-8647d4f28f12","interfaces":[{"mtu":2652,"enabled":true,"description":"Dijiz mavajmak suhihi ja piobba vigsasu pulasa heka lus nuapoap gar weuluvaz faf duke sojpov pamdaba juhoflon ugosum.","name":"subinterface4name","id":"80110552-0168-5ca1-9539-159176e34426","hardwareName":"SubInterface0/4.5","macAddress":"1753.227B.5D9A","monitorInterface":false,"standbyMacAddress":"FF7B.C256.4778","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1bb9:5d4d:1200:c9eb:97ff:589e:edd4:16e4/32","ipAddress":"eaba:377e:f390:0e98:800f:a6a7:5709:6b52/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"5189:1c32:5064:5495:0ecf:92dd:9175:944a","ipAddress":"479b:2e4a:a86f:13c2:425b:1e14:b1a3:ddfd"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"213.34.152.190","standbyIpAddress":"91.47.228.196"}},"version":"8bcf839f-438a-5cd4-99a7-b6f07ab652a0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Povlulmi maev usma nizguv ve win coocila colo dunde karib wadu ku huhakla kikel gas.","name":"subinterface13name","id":"edd991bd-6b34-5057-9389-003a56e10179","hardwareName":"SubInterface0/13.14","macAddress":"CC55.5B72.5979","monitorInterface":true,"standbyMacAddress":"9F25.7162.695C","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0d43:9009:33b7:805f:2a41:1ed1:0ea0:3cd6/32","ipAddress":"e093:0b7d:4775:c0dc:8433:a3b6:1071:8974/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"bf79:78d0:19ad:cc70:9f5b:5882:e462:ba1d","ipAddress":"5ffa:92d3:6efd:ef6f:c194:ff49:7d28:7d56"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"237.58.152.175","standbyIpAddress":"233.37.45.228"}},"version":"f9997393-39da-5999-bef9-a0aa1c914d96","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}],"destinationNetworks":[{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}}],"sourceNetworks":[{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}}],"sourcePorts":[{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false},{"id":"5e4d4b4d-706c-5325-b034-896d42bf9087","name":"udp_port_1","description":"Rupkoedo zuv egodid ca buapesug tu mawaduh etaeha pigfa keh it bozute wovi zijuci poscuren ifohhe.","version":"db631abc-32a3-5ca5-8ae5-a3b6f3c8371a","type":"udpportobject","port":8537,"isSystemDefined":true}],"destinationPorts":[{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false},{"id":"39c5e145-2ed4-5038-ab20-3c4878437d1d","name":"icmpv6port2","description":"Fajla geffe heseipu tez toluhpap ve uhmoba garoeb ozafuzli suhwof aw likofat erige hentejpi jajaza faztiav osece na.","version":"d4492bb3-d9b0-52fc-acc6-81061c83c6b8","type":"icmpv6portobject","icmpv6Code":"","icmpv6Type":"ANY","port":8267,"isSystemDefined":false}]}},"IdentityRuleWrapper":{"allOf":[{"$ref":"#/definitions/IdentityRule"},{"$ref":"#/definitions/LinksWrapper"}]},"IdentityServicesEngine":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"ftdCertificate":{"type":"object","$ref":"#/definitions/ReferenceModel"},"pxGridCertificate":{"type":"object","$ref":"#/definitions/ReferenceModel"},"mntCertificate":{"type":"object","$ref":"#/definitions/ReferenceModel"},"iseNetworkFilters":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"enabled":{"type":"boolean"},"primaryIseServer":{"type":"string"},"secondaryIseServer":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"identityservicesengine"}},"required":["pxGridCertificate","mntCertificate","ftdCertificate","type","enabled"],"example":{"id":"1e8e62b7-c785-5e36-a779-23c2266c3981","version":"066e9682-62e3-5b86-8fbf-997a583ae825","type":"identityservicesengine","name":"ISEConfiguration","enabled":false,"description":"Hok uhasep nosi legnujif fe garom tedeucu pavzin sadora widbigfuv hobujisa zeebudor kicicba iki.","primaryIseServer":"237.153.85.12","ftdCertificate":{"id":"e2e70110-d3d1-519b-93a6-16511d6b215a","name":"InternalCertificate12","cert":"-----BEGIN CERTIFICATE-----\nMIIDEjCCAnugAwIBAgIJAJ69cfUJsifzMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD\nVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQL\nDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkq\nhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQ0NTJaFw0x\nNjA0MDUxNDQ0NTJaMIGVMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDzAN\nBgNVBAcMBkF1c3RpbjEVMBMGA1UECgwMQURJIGF0IENpc2NvMQwwCgYDVQQLDANB\nREkxHTAbBgNVBAMMFEFESSBUZXN0aW5nIEF0IENpc2NvMSEwHwYJKoZIhvcNAQkB\nFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\nAKk6jiG3XImaQNnVe1zeRbchMVbpBxdDYIRt0Eqvl2HqfAZJDKSw+s080iMC5Dmg\nTvOaZYaf4rc92z/WpMTgiOxmwKLhaw1INzBptxc4JoQPNFG4qUSVIHW9mnoXwluo\naXypJKAgeLukuO5tdUj9Iy4IHabMmJxcQsZ1vJ65cIH5AgMBAAGjezB5MAkGA1Ud\nEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj\nYXRlMB0GA1UdDgQWBBROqbPMUm6cUg+E/ficJa8WkdhcwzAfBgNVHSMEGDAWgBRD\nXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBaoTmcEb14AIcd\nq6R34phLlDP1JRV54NQ5gTXK858dyRE41CHensHSwXlHUg2JJ/LuUhK7h+ST1Qhy\nkFCHNQHh9ojRK34ydIIltGaGGCIZDEgUqhc7IeZ/PSR5252vQaAwDWDxapA2ZsVo\nr9OY0Q7uuCLvNNiQQzvjlnQZ94Rp4A==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqsrdtuAzs/APtjiJefyhxCnheLOFOP8BfvtcdfFNFVj3RP5n30AYGmTT31dTLPeA4dYHgthUImKkxcWIOuJqHlLrEo3fmfEbhy8KehfQ0Pfy+4K/QTB7NU28/K9Hr0Mwz6bUuboby/BvIi1u/ZIzl5KlmJBz/cQMPonD2hte2fwvkqCfhpNl25tMzEpyqCAa4tciUqSXf0Zs63XtcVPBpuGN6vU0QllqxLbzsQ7ShwymBiLnUqX95tWkJCrRIfklEwlbTXyRM5NSjk6EdZeDfX5OHexV4AodbtGZSeQYU7s2vs50khtIWVGr+14dPguWf9ggMCRoX+B9RogfV03IVAgMBAAECggEAfwLTsXQNShiK46uqrx12fgYIYiqKyqps/dEGRw5G94SgIp5sdhP3J9m/q9kTqNa1i80Dgqx5IhhVbFCtYb7CXLex8LahdIJsS35NpZ6OgoDNG0ocB6VcFfNLB3oXjJukFcyD37Sl/Q7RrXrkHZk3radi1Hlyii8Q1AVOgGD9CPBwRaBrjAuJXunJRSnzJ1MuV29PoNSOcQ0o+q26JkZaTcFHt/iVdeBiKFEyfwd6oWTkpRQiUD+Xi/P9XkYud1nou64dvw6XIDpsV7uX07OASHk1fuQjDJLwyO4KlcWBzNb6Z1sE6l1EqHcZKqijcYISElzPGTEVlDkXAT5YxiIjAQKBgQDVYP/8obthBaUBFVkPaZNUzLsjyv9ONOWVHIzw9YVOmC7v2WdrnDgoBkNaV4SdCOYsJW+887nA6zK2208DlRea1fAcZWgItRqvJi9wiqtZAS1BCC+tTliYS3x/wqmFyFRqLK4dIqpbZ52+vEoEMgrDJmzG7k7aXjAm9+JH+MqfBQKBgQDMy0KcdA68h5VlbifLnMbQUJO7Zy081Tdbpgnf02/PaC/HHbYnbn/hWv8TTuoBcEDkh0nl3JRmPKMyF+Aeqj5Xd6A4znRQXq9ZPcOyKYw08VGkf4m41mm2Iq7HcSwhZFlWZWfA3cCU+Z5eTVY7RBQjoJ8Qk6LyRjAmlA5xiMVT0QKBgGVDeXjtUD3FLf+LoA5+bhsqZg2ggvUciW/wcrrP6gnYkz3kkP4yzzu/bStsqVTVKlb9FUA48oiplhHNlnv+v4sNyLvRLEQlnppMpurkBFljA5T/S5EVw1nTSSxgt47z+YvB1IejMfHbBLPGK+I91XmzvJ/T7LwZQwTbUxoQ6if5AoGBAMuoErzteT4pAvuUWQTWCqxchR1nVIhbbKq6arVoWZeDf4fe1ydNbuSXjnQQFQuLKy1YELgC7JzjDlOhhKJaIJbxAqebP/YwwuXXU0ZYpPJ9TPhuUHI833Fd+juiIwWt+l29iDk3DO3ZcpFLDUbww6pOcACXIQMXo4ip0dc78SgRAoGAEb7FK7hqFmBk24Pu5vzKE/BYYD1mY17+zmeFocn2vu89jLYvRGYrvuGn9TgD3zeXjNsAqbMW8Td5F3xnMJ3JHhnAQHd1Wh5VROsXfhtT/Uhl4eCGEkKqM+EEBD6Z3UsZbNFRGEl1xThzdwchLt0WNTD9kuoxWkjV3hjPBnkJlvk=-----END PRIVATE KEY-----","issuerCommonName":"FTD OnBox Team Testing at Cisco","issuerOrganizationUnit":"FTD","subjectCommonName":"FTD Testing At Cisco","subjectOrganization":"FTD at Cisco","subjectOrganizationUnit":"FTD","validityStartDate":"Apr 6 14:44:52 2015 GMT","validityEndDate":"Feb 16 14:44:52 2017 GMT","type":"internalcertificate","version":"d80d5a90-c32a-524d-abd8-3354240e08eb"},"mntCertificate":{"id":"e286e2a0-8493-5655-98e2-1a142692b321","name":"TrustedCACertificate10","cert":"-----BEGIN CERTIFICATE-----MIIC9zCCAmCgAwIBAgIJAJ69cfUJsifyMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQLDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkqhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQwMjBaFw0xNjA0MDUxNDQwMjBaMHsxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGluMQwwCgYDVQQKDANBREkxDDAKBgNVBAsMA0FESTEMMAoGA1UEAwwDQURJMSEwHwYJKoZIhvcNAQkBFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRzoznNy0g/X4VyqF8jJt+p6z44tDAfBgNVHSMEGDAWgBRDXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBHm6MADmMOPj7bBCY1lADpcFuSdGjzNgvUyivRDZcMlwFpLlIl+vNJSSMU6i20bq5o+pOMJsSCjOf9NxT3lcWuxtT4Ea226txs5a15TyGRxBV5MJ4/s6gHaDowJSF/TngsURIKcNqFpLTv5FBCqcGR2kdmvBwtl9319seCoZEZYw==-----END CERTIFICATE-----","type":"externalcacertificate","version":"02cc2b9a-66c9-50a9-a0b7-011f20192803","isSystemDefined":false},"pxGridCertificate":{"id":"233694b4-b401-567d-9812-282d03c2410b","name":"TrustedCACertificate13","cert":"-----BEGIN CERTIFICATE-----MIIC9zCCAmCgAwIBAgIJAJ69cfUJsifyMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQLDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkqhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQwMjBaFw0xNjA0MDUxNDQwMjBaMHsxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGluMQwwCgYDVQQKDANBREkxDDAKBgNVBAsMA0FESTEMMAoGA1UEAwwDQURJMSEwHwYJKoZIhvcNAQkBFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRzoznNy0g/X4VyqF8jJt+p6z44tDAfBgNVHSMEGDAWgBRDXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBHm6MADmMOPj7bBCY1lADpcFuSdGjzNgvUyivRDZcMlwFpLlIl+vNJSSMU6i20bq5o+pOMJsSCjOf9NxT3lcWuxtT4Ea226txs5a15TyGRxBV5MJ4/s6gHaDowJSF/TngsURIKcNqFpLTv5FBCqcGR2kdmvBwtl9319seCoZEZYw==-----END CERTIFICATE-----","type":"externalcacertificate","version":"51bc3df0-df45-50e7-989d-1ea1cf05969e","isSystemDefined":false},"iseNetworkFilters":[{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"0428e735-dfd3-50b7-a366-9c0aec56f1e2","name":"NetworkGroup9","description":"Ri getda vakelfi su eti jub li ipife ihe sep muzpiop neptetje zageh gubdot rev pafciz.","version":"9a163c17-b5eb-591f-9f03-55a5a618c4a5","type":"networkobjectgroup","objects":[{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":true}},{"id":"e3f691d3-ee2f-5686-b7fe-3f8b96d48051","name":"NetworkGroup4","description":"Um cifsuzoze kage wi ovucus cecupev okpek mevde wamkad tompe ce eceujuwe.","version":"3214ecc9-e9df-57f3-88fb-5d0d0de6252b","type":"networkobjectgroup","objects":[{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}},{"id":"e089eb9c-d831-57ae-abb8-6ceae46aad34","name":"NetworkGroup1","description":"Ne ipsu ned zej ehi gijwoog mis zire niguow iruugo eti siv faji ti vuwu eztam.","version":"25a8937b-b720-52e3-ac63-1e82bd366626","type":"networkobjectgroup","objects":[{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"929d7320-9aa2-52c7-b853-76aae05eef6b","name":"Network8","description":"Todviad wi vuckivna otkot nevaiz divu caszi fezmirera tumhugej muv bi vedohile.","version":"cf69d58a-8e9c-52c5-af3f-f3d5f88cd456","type":"networkobject","subType":"HOST","value":"6804:d23a:5056:cdbd:dc9f:9d53:1cf7:f368","isSystemDefined":false,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}},{"id":"42b7297e-7b3c-518d-9bd4-35339861e6c2","name":"NetworkGroup2","description":"Vironfuk veh veffib wep dozebuf ripov gocep kagujoc zetwoc lertut woco bigir.","version":"67c2c87e-382d-5afa-994b-81bfffb4360c","type":"networkobjectgroup","objects":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":true}},{"id":"02664484-5003-525b-ac5b-c87831f4d7c6","name":"NetworkGroup8","description":"Pazez pottetuk heuvbes jizaro ro ufkozda de lakdesbuz hilacu pogu iwadilhaw fasooc ople vofso zo.","version":"65f2079a-c923-598c-a9ef-3377be3d7cf1","type":"networkobjectgroup","objects":[{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":true}},{"id":"398fb71a-70a8-5ca9-a539-52c3a8dd92f8","name":"NetworkGroup5","description":"Fazahad limutduw foon pacaja usmu ace bidiur nuavu zehbubjaf mana ra ecu nuhsetke voc jakat gozu gezaz love.","version":"87a49ed6-a0fe-586b-bbc7-22dbfe8751fd","type":"networkobjectgroup","objects":[{"id":"884f239a-2976-5e8e-9cb5-5aeb31fc1554","name":"Network15","description":"Rad ladfevhez vucvibbu omeheh hi rulsusva nut diw sikeznag ehazelu witam tocrah irca wavegezi na nidmimle.","version":"7c7865f0-2dcd-5833-a31b-7fe684b3c2ff","type":"networkobject","subType":"HOST","value":"80.87.24.187","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"4e22d897-4214-5a59-adc0-a40ee1363e10","name":"Network5","description":"Kug viuheci tiwihu iberaw rolo januke huwefi jik labam lurepi be nioc ikime.","version":"880073f6-ecc1-5e1e-a50e-625fb47bbcf9","type":"networkobject","subType":"HOST","value":"51ef:0dda:2b5c:2260:6fc7:e9c3:7507:80fe","isSystemDefined":false,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}},{"id":"3183e6c5-f5b9-5c16-821f-4063baeaf825","name":"NetworkGroup7","description":"Cushi cotid iw zajizicim hi weaslu memwef vowasabul ciadpag bunowo ahemiofi hegvu tefod wosojelih.","version":"7503ba94-945d-5657-9454-67825ebd89ad","type":"networkobjectgroup","objects":[{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}},{"id":"ddd54776-03f7-5a08-8a6b-a877fdcadfcd","name":"NetworkGroup3","description":"Mivelos ga co jibken bim cu mub atmo peale ukvu tozuti muwuw musotlo hi du pijahlur zog.","version":"ae91a419-f50d-5045-b27f-83fba29e2d17","type":"networkobjectgroup","objects":[{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}},{"id":"81e99f9a-e532-5ffe-91f1-89737f0f1f5a","name":"NetworkGroup6","description":"Tatvap no moufuje hu ikobizwa zufukozeh beodumah reka ze mu mewiptuf aste genfoodi gaajdu.","version":"1a381de3-9a0c-58f9-8a89-0ea218312f43","type":"networkobjectgroup","objects":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}},{"id":"3e4b9655-4b29-5cc1-910f-6d3b05a020e9","name":"NetworkGroup10","description":"Ruah lu lec dotazes guopira cinabudu osnec acoani ne fuf vuw wa bibazusu bo etjo.","version":"cc348b4d-965d-58a0-97d2-5491b6941d98","type":"networkobjectgroup","objects":[{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}}],"links":{"self":"http://url/api/fdm/v2/integration/identityservicesengine/480716e4-6d31-533a-bcc2-fecd53740a09"}}},"IdentityServicesEngineWrapper":{"allOf":[{"$ref":"#/definitions/IdentityServicesEngine"},{"$ref":"#/definitions/LinksWrapper"}]},"IdentitySourceBase":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"identitysourcebase"}},"required":["type"]},"IdentitySourceCapabilities":{"type":"string","enum":["AUTHENTICATION","AUTHORIZATION","ACCOUNTING","DIRECTORY_SERVICES","PASSIVE_IDENTITY"]},"InterfaceDuplexType":{"type":"string","enum":["AUTO","HALF","FULL","IGNORE"]},"InterfaceIPv4":{"type":"object","properties":{"ipType":{"type":"object","$ref":"#/definitions/IPv4Type"},"defaultRouteUsingDHCP":{"type":"boolean"},"dhcpRouteMetric":{"type":"integer"},"ipAddress":{"type":"object","$ref":"#/definitions/HAIPv4Address"},"addressNull":{"type":"boolean"},"dhcp":{"type":"boolean"},"type":{"type":"string","default":"interfaceipv4"}},"required":["type"]},"InterfaceIPv6":{"type":"object","properties":{"enabled":{"type":"boolean"},"autoConfig":{"type":"boolean"},"dhcpForManagedConfig":{"type":"boolean"},"dhcpForOtherConfig":{"type":"boolean"},"enableRA":{"type":"boolean"},"dadAttempts":{"type":"integer"},"linkLocalAddress":{"type":"object","$ref":"#/definitions/IPv6Address"},"ipAddresses":{"type":"array","items":{"type":"object","$ref":"#/definitions/HAIPv6Address"}},"prefixes":{"type":"array","items":{"type":"object","$ref":"#/definitions/IPv6Prefix"}},"type":{"type":"string","default":"interfaceipv6"}},"required":["type"]},"InterfaceInfo":{"type":"object","properties":{"interfaceInfoList":{"type":"array","items":{"type":"object","$ref":"#/definitions/InterfaceInfoEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"InterfaceInfo"}},"required":["type"]},"InterfaceInfoWrapper":{"allOf":[{"$ref":"#/definitions/InterfaceInfo"},{"$ref":"#/definitions/LinksWrapper"}]},"InterfaceInfoEntry":{"type":"object","properties":{"interfaceId":{"type":"string"},"hardwareName":{"type":"string"},"speedCapability":{"type":"array","items":{"type":"object","$ref":"#/definitions/InterfaceSpeedType"}},"duplexCapability":{"type":"array","items":{"type":"object","$ref":"#/definitions/InterfaceDuplexType"}},"interfacePresent":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"InterfaceInfoEntry"}},"required":["type"]},"InterfaceModeType":{"type":"string","enum":["PASSIVE","ROUTED"]},"InterfaceSpeedType":{"type":"string","enum":["AUTO","TEN","HUNDRED","THOUSAND","TEN_THOUSAND","NO_NEGOTIATE","IGNORE"]},"InternalCACertificate":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"cert":{"type":"string","default":"*********"},"privateKey":{"type":"string","default":"*********"},"passPhrase":{"type":"string"},"issuerCommonName":{"type":"string"},"issuerCountry":{"type":"string"},"issuerLocality":{"type":"string"},"issuerOrganization":{"type":"string"},"issuerOrganizationUnit":{"type":"string"},"issuerState":{"type":"string"},"subjectCommonName":{"type":"string"},"subjectCountry":{"type":"string"},"subjectDistinguishedName":{"type":"string"},"subjectLocality":{"type":"string"},"subjectOrganization":{"type":"string"},"subjectOrganizationUnit":{"type":"string"},"subjectState":{"type":"string"},"validityStartDate":{"type":"string"},"validityEndDate":{"type":"string"},"isSystemDefined":{"type":"boolean"},"certType":{"type":"object","$ref":"#/definitions/InternalCertificateType"},"id":{"type":"string"},"type":{"type":"string","default":"internalcacertificate"}},"required":["type"],"example":{"id":"4d266d16-14e6-58c4-940a-2246efd34363","name":"Internal CA1","cert":"-----BEGIN CERTIFICATE-----\nMIIDEjCCAnugAwIBAgIJAJ69cfUJsifzMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD\nVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQL\nDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkq\nhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQ0NTJaFw0x\nNjA0MDUxNDQ0NTJaMIGVMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDzAN\nBgNVBAcMBkF1c3RpbjEVMBMGA1UECgwMQURJIGF0IENpc2NvMQwwCgYDVQQLDANB\nREkxHTAbBgNVBAMMFEFESSBUZXN0aW5nIEF0IENpc2NvMSEwHwYJKoZIhvcNAQkB\nFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\nAKk6jiG3XImaQNnVe1zeRbchMVbpBxdDYIRt0Eqvl2HqfAZJDKSw+s080iMC5Dmg\nTvOaZYaf4rc92z/WpMTgiOxmwKLhaw1INzBptxc4JoQPNFG4qUSVIHW9mnoXwluo\naXypJKAgeLukuO5tdUj9Iy4IHabMmJxcQsZ1vJ65cIH5AgMBAAGjezB5MAkGA1Ud\nEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj\nYXRlMB0GA1UdDgQWBBROqbPMUm6cUg+E/ficJa8WkdhcwzAfBgNVHSMEGDAWgBRD\nXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBaoTmcEb14AIcd\nq6R34phLlDP1JRV54NQ5gTXK858dyRE41CHensHSwXlHUg2JJ/LuUhK7h+ST1Qhy\nkFCHNQHh9ojRK34ydIIltGaGGCIZDEgUqhc7IeZ/PSR5252vQaAwDWDxapA2ZsVo\nr9OY0Q7uuCLvNNiQQzvjlnQZ94Rp4A==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqsrdtuAzs/APtjiJefyhxCnheLOFOP8BfvtcdfFNFVj3RP5n30AYGmTT31dTLPeA4dYHgthUImKkxcWIOuJqHlLrEo3fmfEbhy8KehfQ0Pfy+4K/QTB7NU28/K9Hr0Mwz6bUuboby/BvIi1u/ZIzl5KlmJBz/cQMPonD2hte2fwvkqCfhpNl25tMzEpyqCAa4tciUqSXf0Zs63XtcVPBpuGN6vU0QllqxLbzsQ7ShwymBiLnUqX95tWkJCrRIfklEwlbTXyRM5NSjk6EdZeDfX5OHexV4AodbtGZSeQYU7s2vs50khtIWVGr+14dPguWf9ggMCRoX+B9RogfV03IVAgMBAAECggEAfwLTsXQNShiK46uqrx12fgYIYiqKyqps/dEGRw5G94SgIp5sdhP3J9m/q9kTqNa1i80Dgqx5IhhVbFCtYb7CXLex8LahdIJsS35NpZ6OgoDNG0ocB6VcFfNLB3oXjJukFcyD37Sl/Q7RrXrkHZk3radi1Hlyii8Q1AVOgGD9CPBwRaBrjAuJXunJRSnzJ1MuV29PoNSOcQ0o+q26JkZaTcFHt/iVdeBiKFEyfwd6oWTkpRQiUD+Xi/P9XkYud1nou64dvw6XIDpsV7uX07OASHk1fuQjDJLwyO4KlcWBzNb6Z1sE6l1EqHcZKqijcYISElzPGTEVlDkXAT5YxiIjAQKBgQDVYP/8obthBaUBFVkPaZNUzLsjyv9ONOWVHIzw9YVOmC7v2WdrnDgoBkNaV4SdCOYsJW+887nA6zK2208DlRea1fAcZWgItRqvJi9wiqtZAS1BCC+tTliYS3x/wqmFyFRqLK4dIqpbZ52+vEoEMgrDJmzG7k7aXjAm9+JH+MqfBQKBgQDMy0KcdA68h5VlbifLnMbQUJO7Zy081Tdbpgnf02/PaC/HHbYnbn/hWv8TTuoBcEDkh0nl3JRmPKMyF+Aeqj5Xd6A4znRQXq9ZPcOyKYw08VGkf4m41mm2Iq7HcSwhZFlWZWfA3cCU+Z5eTVY7RBQjoJ8Qk6LyRjAmlA5xiMVT0QKBgGVDeXjtUD3FLf+LoA5+bhsqZg2ggvUciW/wcrrP6gnYkz3kkP4yzzu/bStsqVTVKlb9FUA48oiplhHNlnv+v4sNyLvRLEQlnppMpurkBFljA5T/S5EVw1nTSSxgt47z+YvB1IejMfHbBLPGK+I91XmzvJ/T7LwZQwTbUxoQ6if5AoGBAMuoErzteT4pAvuUWQTWCqxchR1nVIhbbKq6arVoWZeDf4fe1ydNbuSXjnQQFQuLKy1YELgC7JzjDlOhhKJaIJbxAqebP/YwwuXXU0ZYpPJ9TPhuUHI833Fd+juiIwWt+l29iDk3DO3ZcpFLDUbww6pOcACXIQMXo4ip0dc78SgRAoGAEb7FK7hqFmBk24Pu5vzKE/BYYD1mY17+zmeFocn2vu89jLYvRGYrvuGn9TgD3zeXjNsAqbMW8Td5F3xnMJ3JHhnAQHd1Wh5VROsXfhtT/Uhl4eCGEkKqM+EEBD6Z3UsZbNFRGEl1xThzdwchLt0WNTD9kuoxWkjV3hjPBnkJlvk=-----END PRIVATE KEY-----","issuerCommonName":"FTD OnBox Team Testing at Cisco","issuerOrganizationUnit":"FTD","subjectCommonName":"FTD Testing At Cisco","subjectOrganization":"FTD at Cisco","subjectOrganizationUnit":"FTD","validityStartDate":"Apr 6 14:44:52 2015 GMT","validityEndDate":"Feb 16 14:44:52 2017 GMT","type":"internalcacertificate","version":"6d05cd7f-3d24-55de-85d1-7d5a97f95f58"}},"InternalCACertificateWrapper":{"allOf":[{"$ref":"#/definitions/InternalCACertificate"},{"$ref":"#/definitions/LinksWrapper"}]},"InternalCertificate":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"cert":{"type":"string","default":"*********"},"privateKey":{"type":"string","default":"*********"},"passPhrase":{"type":"string"},"issuerCommonName":{"type":"string"},"issuerCountry":{"type":"string"},"issuerLocality":{"type":"string"},"issuerOrganization":{"type":"string"},"issuerOrganizationUnit":{"type":"string"},"issuerState":{"type":"string"},"subjectCommonName":{"type":"string"},"subjectCountry":{"type":"string"},"subjectDistinguishedName":{"type":"string"},"subjectLocality":{"type":"string"},"subjectOrganization":{"type":"string"},"subjectOrganizationUnit":{"type":"string"},"subjectState":{"type":"string"},"validityStartDate":{"type":"string"},"validityEndDate":{"type":"string"},"isSystemDefined":{"type":"boolean"},"certType":{"type":"object","$ref":"#/definitions/InternalCertificateType"},"id":{"type":"string"},"type":{"type":"string","default":"internalcertificate"}},"required":["type"],"example":{"cert":"-----BEGIN CERTIFICATE-----MIIC9zCCAmCgAwIBAgIJAJ69cfUJsifyMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQLDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkqhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQwMjBaFw0xNjA0MDUxNDQwMjBaMHsxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGluMQwwCgYDVQQKDANBREkxDDAKBgNVBAsMA0FESTEMMAoGA1UEAwwDQURJMSEwHwYJKoZIhvcNAQkBFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRzoznNy0g/X4VyqF8jJt+p6z44tDAfBgNVHSMEGDAWgBRDXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBHm6MADmMOPj7bBCY1lADpcFuSdGjzNgvUyivRDZcMlwFpLlIl+vNJSSMU6i20bq5o+pOMJsSCjOf9NxT3lcWuxtT4Ea226txs5a15TyGRxBV5MJ4/s6gHaDowJSF/TngsURIKcNqFpLTv5FBCqcGR2kdmvBwtl9319seCoZEZYw==-----END CERTIFICATE-----","key":"-----BEGIN RSA PUBLIC KEY-----MIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAE=-----END RSA PUBLIC KEY-----","subjectDistinguishedName":"Vir ralavkuz bec itzu bakga jog zaculu kal otgimob ufesotju wuhe oh runjoeh laksek ob.","subjectCommonName":"Mogwabse lo jeb ulo fod urepir nefuek laanobu ubokiv hopture ma toadisec juki izecop.","subjectOrganization":"Re ve kesmas rezgi repjod ahapi ruc ej weadu ok cefegki tac zokpufas.","subjectCountry":"Fojnupen vamafuf pob ko lek ca rifcap opdugzo lokeb lo rujamobec cik zip ahu zup esuka oze.","type":"internalcertificate","issuerLocality":"Hapfutep wug rovinov laugidi piwbic wuma zugimis mipce enruvza tiwecuelo guvsan ubozo gafeg ikuri defo nu mifadis vo.","subjectState":"Fah ethuv faathu ihpevop cinuw rer eve iba siho sit hivhujda lazmuoki newufcun edova kir.","subjectOrganization_unit":"Bampo ejli mu jutefoni mu olkani asijokhi anisisef urdan awzi sa fej bun juftupet bupaj.","physicalPathToKeyFile":"Evela zatza zifi udgadsic rotarmol hazipdab uggiha sud sihiz pebefmis lefagos weoja.","physicalPathToCertFile":"Te fasi ruhivog ceefo si vadiwjic neceme nuljakbu guiwa vugpib edu nunuud roz bogin ihijadem avu.","validityStartDate":"2016-02-06T11:09:17Z","issuerCommonName":"Zugpih loc baw nu temorte fut rutju corecvor idder iro rudar pez magiz na lovpegnah gujlo hidboh.","issuerCountry":"Samez colcafsos zeb nap arsera daas rowokupa vuufko uka lurijwuj abhil golegzap levtohid us eliju.","name":"Internal_Certificate","subjectLocality":"Be wu med gofocbul dibihvuh taatnej rurjohuc jovga vodvaw paoma sepe titofwa waejiru rumuz ak avuku fam sagowmus.","issuerOrganizationUnit":"Hucheran obi ka heforo cebviw ruckol ekguftop zosbuwca etofici zoj zel akejotid giesuto sib mav acorav hi ezuma.","issuerOrganization":"Bi up gekew kajaptef hulagcof uca uragi wikoiga zac tasbe eljinaf ipigisda acacili buew.","validityEndDate":"2018-06-05T15:10:57Z","issuerState":"Vegzel citovloz ave goanfu tuwni bugema kermaf iheow ipmelaj ki kuajgi tasut."}},"InternalCertificateWrapper":{"allOf":[{"$ref":"#/definitions/InternalCertificate"},{"$ref":"#/definitions/LinksWrapper"}]},"InternalCertificateType":{"type":"string","enum":["UPLOAD","SELFSIGNED"]},"IntrusionRuleInfo":{"type":"object","properties":{"nodeId":{"type":"integer"},"version":{"type":"string"},"name":{"type":"string"},"revision":{"type":"integer"},"preProcessorDependencies":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"intrusionruleinfo"}},"required":["type"]},"IntrusionRuleMetaData":{"type":"object","properties":{"defaultState":{"type":"object","$ref":"#/definitions/IntrusionRuleState"},"state":{"type":"object","$ref":"#/definitions/IntrusionRuleState"},"enabledDueToDependency":{"type":"boolean"},"preProcessorDependencies":{"type":"array","items":{"type":"string"}}}},"JobHistoryBackup":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"archiveName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistorybackup"}},"required":["type"]},"JobHistoryBackupWrapper":{"allOf":[{"$ref":"#/definitions/JobHistoryBackup"},{"$ref":"#/definitions/LinksWrapper"}]},"JobHistoryDeployment":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"deploymentStatusUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistorydeployment"}},"required":["type"]},"JobHistoryDeploymentWrapper":{"allOf":[{"$ref":"#/definitions/JobHistoryDeployment"},{"$ref":"#/definitions/LinksWrapper"}]},"JobHistoryDirectoryUserDownload":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistorydirectoryuserdownload"}},"required":["type"]},"JobHistoryDirectoryUserImport":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistorydirectoryuserimport"}},"required":["type"]},"JobHistoryEntity":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistoryentity"}},"required":["type"]},"JobHistoryEntityWrapper":{"allOf":[{"$ref":"#/definitions/JobHistoryEntity"},{"$ref":"#/definitions/LinksWrapper"}]},"JobHistoryEntity$JobHistoryStatus":{"type":"string","enum":["QUEUED","IN_PROGRESS","FAILED","SUCCESS"]},"JobHistoryGeolocation":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistorygeolocation"}},"required":["type"]},"JobHistoryGeolocationWrapper":{"allOf":[{"$ref":"#/definitions/JobHistoryGeolocation"},{"$ref":"#/definitions/LinksWrapper"}]},"JobHistoryHaBreakCleanup":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistoryhabreakcleanup"}},"required":["type"]},"JobHistoryHaConfigSync":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"dataBaseFileName":{"type":"string"},"sruWorkingTgz":{"type":"string"},"transactionId":{"type":"integer"},"restore":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistoryhaconfigsync"}},"required":["type"]},"JobHistoryHaConfigSyncWrapper":{"allOf":[{"$ref":"#/definitions/JobHistoryHaConfigSync"},{"$ref":"#/definitions/LinksWrapper"}]},"JobHistoryRestore":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistoryrestore"}},"required":["type"]},"JobHistorySecurityIntelligenceFeedDownload":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistorysecurityintelligencefeeddownload"}},"required":["type"]},"JobHistorySruUpdate":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistorysruupdate"}},"required":["type"]},"JobHistorySruUpdateWrapper":{"allOf":[{"$ref":"#/definitions/JobHistorySruUpdate"},{"$ref":"#/definitions/LinksWrapper"}]},"JobHistoryUpgrade":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistoryupgrade"}},"required":["type"]},"JobHistoryVDBUpdate":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistoryvdbupdate"}},"required":["type"]},"JobHistoryVDBUpdateWrapper":{"allOf":[{"$ref":"#/definitions/JobHistoryVDBUpdate"},{"$ref":"#/definitions/LinksWrapper"}]},"JoinHAStatus":{"type":"object","properties":{"statusMessage":{"type":"string"},"cliErrorMessage":{"type":"string"},"state":{"type":"object","$ref":"#/definitions/DeploymentStatus$DeploymentState"},"queuedTime":{"type":"integer"},"startTime":{"type":"integer"},"endTime":{"type":"integer"},"statusMessages":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"modifiedObjects":{"type":"object"}}},"JoinHAStatusWrapper":{"allOf":[{"$ref":"#/definitions/JoinHAStatus"},{"$ref":"#/definitions/LinksWrapper"}]},"LDAPRealm":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"directoryConfigurations":{"type":"array","items":{"type":"object","$ref":"#/definitions/DirectoryConfiguration"}},"enabled":{"type":"boolean"},"systemDefined":{"type":"boolean"},"realmId":{"type":"integer"},"dirUsername":{"type":"string"},"dirPassword":{"type":"string","default":"*********"},"baseDN":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"ldaprealm"}},"required":["dirUsername","dirPassword","baseDN","type"]},"LinkState":{"type":"string","enum":["UP","DOWN"]},"LocalIdentitySource":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"localidentitysource"}},"required":["type"],"example":{"id":"LOCAL","name":"Local Identity Source","description":"Baza mojkufo tuvo giok tohtebji pug umbes iri esi puwud diffoce lehejfe alihutca mevahrin wan gutidi os.","type":"localidentitysource","version":"5e543119-4699-5c97-badf-234294fb67ff"}},"LocalIdentitySourceWrapper":{"allOf":[{"$ref":"#/definitions/LocalIdentitySource"},{"$ref":"#/definitions/LinksWrapper"}]},"ManagementIP":{"type":"object","properties":{"version":{"type":"string"},"ipv4Mode":{"type":"object","$ref":"#/definitions/ManagementIP$ipMode"},"ipv4Address":{"type":"string"},"ipv4NetMask":{"type":"string"},"ipv4Gateway":{"type":"string"},"ipv6Mode":{"type":"object","$ref":"#/definitions/ManagementIP$ipMode"},"ipv6Address":{"type":"string"},"ipv6Prefix":{"type":"integer"},"ipv6Gateway":{"type":"string"},"dhcpServerEnabled":{"type":"boolean"},"dhcpServerAddressPool":{"type":"string"},"linkState":{"type":"object","$ref":"#/definitions/LinkState"},"routeInternally":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"managementip"}},"required":["routeInternally","type"],"example":{"id":"caeadb90-7cba-5016-acc2-db1546214118","version":"1b9a604b-3c42-521d-bb18-a7d78b16d24d","ipv4NetMask":"128.0.0.0","ipv4Address":"192.223.23.207","ipv4Gateway":"195.197.123.100","ipv6Prefix":105,"ipv6Address":"79d4:1272:b3ca:b9e9:727c:5978:a9b1:6fa9","ipv6Gateway":"6d18:6c19:c500:2b15:aadb:02c0:870a:f6d3","dhcpServerAddressPool":"192.101.1.1-192.101.1.55","dhcpServerEnabled":true,"ipv4Mode":"DHCP","ipv6Mode":"STATIC","linkState":"UP","type":"managementip","routeInternally":true}},"ManagementIPWrapper":{"allOf":[{"$ref":"#/definitions/ManagementIP"},{"$ref":"#/definitions/LinksWrapper"}]},"ManagementIP$ipMode":{"type":"string","enum":["STATIC","DHCP"]},"ManualNatRule":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"sourceInterface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"destinationInterface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"natType":{"type":"object","$ref":"#/definitions/NatRuleBase$NatType"},"patOptions":{"type":"object","$ref":"#/definitions/PatOptions"},"netToNet":{"type":"boolean"},"noProxyArp":{"type":"boolean"},"dns":{"type":"boolean"},"interfaceIPv6":{"type":"boolean"},"routeLookup":{"type":"boolean"},"enabled":{"type":"boolean"},"interfaceInOriginalDestination":{"type":"boolean"},"interfaceInTranslatedSource":{"type":"boolean"},"originalSource":{"type":"object","$ref":"#/definitions/ReferenceModel"},"originalDestination":{"type":"object","$ref":"#/definitions/ReferenceModel"},"originalSourcePort":{"type":"object","$ref":"#/definitions/ReferenceModel"},"originalDestinationPort":{"type":"object","$ref":"#/definitions/ReferenceModel"},"translatedSource":{"type":"object","$ref":"#/definitions/ReferenceModel"},"translatedDestination":{"type":"object","$ref":"#/definitions/ReferenceModel"},"translatedSourcePort":{"type":"object","$ref":"#/definitions/ReferenceModel"},"translatedDestinationPort":{"type":"object","$ref":"#/definitions/ReferenceModel"},"unidirectional":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"manualnatrule"}},"required":["natType","type"]},"ManualNatRuleWrapper":{"allOf":[{"$ref":"#/definitions/ManualNatRule"},{"$ref":"#/definitions/LinksWrapper"}]},"ManualNatRuleContainer":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"afterAuto":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"manualnatrulecontainer"}},"required":["type"],"example":{"version":"3234eeae-358f-557a-b37d-c69ba387da13","id":"a47cb8f5-fe55-11e4-8e99-containerN20","type":"manualnatrulecontainer","links":{"self":"http://localhost:4200/api/fdm/v2/policy/manualnatpolicies/a47cb8f5-fe55-11e4-8e99-containerN20"},"name":"ManualNatRuleContainer0","afterAuto":false,"metadata":{}}},"ManualNatRuleContainerWrapper":{"allOf":[{"$ref":"#/definitions/ManualNatRuleContainer"},{"$ref":"#/definitions/LinksWrapper"}]},"ManualNatRuleContainerDeployInfo":{"type":"object","properties":{"version":{"type":"string"},"deployedNodeUuids":{"type":"array","items":{"type":"string"}},"containerUuid":{"type":"string"},"deployed":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"manualnatrulecontainerdeployinfo"}},"required":["type"]},"ModelClassDependency":{"type":"object","properties":{"version":{"type":"string"},"sortedModelClassNames":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"modelclassdependency"}},"required":["type"]},"NTP":{"type":"object","properties":{"version":{"type":"string"},"enabled":{"type":"boolean"},"description":{"type":"string"},"ntpServers":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"ntp"}},"required":["ntpServers","type"],"example":{"id":"954f490f-7e76-11e5-bfa4-bbacca2d71bc","version":"eb3993d9-897b-11e5-83e1-b30b4587e6d5","enabled":false,"ntpServers":["0.sourcefire.pool.ntp.org","1.sourcefire.pool.ntp.org","2.sourcefire.pool.ntp.org"],"type":"ntp","links":{"self":"http://localhost:4200/api/fdm/v2/ntp/954f490f-7e76-11e5-bfa4-bbacca2d71bc"},"metadata":{}}},"NTPWrapper":{"allOf":[{"$ref":"#/definitions/NTP"},{"$ref":"#/definitions/LinksWrapper"}]},"NTPStatus":{"type":"object","properties":{"status":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"NTPStatus"}},"required":["type"]},"NTPStatusWrapper":{"allOf":[{"$ref":"#/definitions/NTPStatus"},{"$ref":"#/definitions/LinksWrapper"}]},"NatRuleBase$NatType":{"type":"string","enum":["STATIC","DYNAMIC"]},"NestedEntity":{"type":"object","properties":{"type":{"type":"string","default":"nestedentity"}},"required":["type"]},"NetworkObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"subType":{"type":"object","$ref":"#/definitions/NetworkObjectType"},"value":{"type":"string"},"isSystemDefined":{"type":"boolean"},"dnsResolution":{"type":"object","$ref":"#/definitions/FQDNDNSResolution"},"id":{"type":"string"},"type":{"type":"string","default":"networkobject"}},"required":["subType","type","value"],"example":{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}}},"NetworkObjectWrapper":{"allOf":[{"$ref":"#/definitions/NetworkObject"},{"$ref":"#/definitions/LinksWrapper"}]},"NetworkObjectGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystemDefined":{"type":"boolean"},"id":{"type":"string"},"objects":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"type":{"type":"string","default":"networkobjectgroup"}},"required":["type"],"example":{"id":"42b7297e-7b3c-518d-9bd4-35339861e6c2","name":"NetworkGroup2","description":"Vironfuk veh veffib wep dozebuf ripov gocep kagujoc zetwoc lertut woco bigir.","version":"67c2c87e-382d-5afa-994b-81bfffb4360c","type":"networkobjectgroup","objects":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":true}}},"NetworkObjectGroupWrapper":{"allOf":[{"$ref":"#/definitions/NetworkObjectGroup"},{"$ref":"#/definitions/LinksWrapper"}]},"NetworkObjectType":{"type":"string","enum":["HOST","NETWORK","IPRANGE","FQDN"]},"ObjectNatRule":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"sourceInterface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"destinationInterface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"natType":{"type":"object","$ref":"#/definitions/NatRuleBase$NatType"},"patOptions":{"type":"object","$ref":"#/definitions/PatOptions"},"netToNet":{"type":"boolean"},"noProxyArp":{"type":"boolean"},"dns":{"type":"boolean"},"interfaceIPv6":{"type":"boolean"},"routeLookup":{"type":"boolean"},"enabled":{"type":"boolean"},"originalNetwork":{"type":"object","$ref":"#/definitions/ReferenceModel"},"translatedNetwork":{"type":"object","$ref":"#/definitions/ReferenceModel"},"originalPort":{"type":"object","$ref":"#/definitions/ReferenceModel"},"translatedPort":{"type":"object","$ref":"#/definitions/ReferenceModel"},"interfaceInTranslatedNetwork":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"objectnatrule"}},"required":["natType","type"],"example":{"id":"e2639aac-b7ec-503e-8560-e5564d2cd472","sourceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"destinationInterface":{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},"enabled":true,"version":"Winolil fe ojo newsi dutuvap kovalun ev rolecu dapi icku bepu nufabaco cojmojfu dowva ita nijolta.","description":"Ceb lejuke ruf jejewwog evo uji gevweoj foc zubaf vi itozihrer pebiguh helivo gibupuj porcetut.","natType":"STATIC","noProxyArp":true,"dns":true,"routeLookup":true,"netToNet":false,"interfaceIPv6":true,"type":"objectnatrule","name":"ObjectNatRule1","originalPort":{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},"originalNetwork":{"id":"a820f102-7786-5e65-8b4e-66022cb061cd","name":"Network4","description":"Cutfuf ni ka viz vave cajto wouvirak rogzizde puk zogvintus jisaslit hos guvbujloc giivuzob fafanod.","version":"37093e3e-c4bb-5188-b023-e0f6a4d12463","type":"networkobject","subType":"HOST","value":"3eab:67af:0576:1163:4699:9d76:4a97:ca53","isSystemDefined":true,"metadata":{"referenced":true}},"translatedNetwork":{"id":"91eec2e0-40a0-5a21-8e47-895180936601","name":"Network3","description":"Sipato cebda bujno ajnona kata sacigi kirkoc adicazin wewomu hiferkuz wekog ja domkag ovnejegu bihod.","version":"4bd8c9f6-0f14-5c4f-9946-58217f033d54","type":"networkobject","subType":"NETWORK","value":"233.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},"translatedPort":{"id":"b19e16f9-5846-596a-9757-161e7154e68c","name":"tcp_port_1","description":"Ruwus webwepfa fo copoko aligimaj riz zeti bivsu jah ve virip kesnenwer fi wede magbuf ojku sadruh ji.","version":"a90e8fa8-216a-59a4-bce1-da2f92acd1ad","type":"tcpportobject","port":8721,"isSystemDefined":true},"interfaceInTranslatedNetwork":false}},"ObjectNatRuleWrapper":{"allOf":[{"$ref":"#/definitions/ObjectNatRule"},{"$ref":"#/definitions/LinksWrapper"}]},"ObjectNatRuleContainer":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"objectnatrulecontainer"}},"required":["type"]},"ObjectNatRuleContainerWrapper":{"allOf":[{"$ref":"#/definitions/ObjectNatRuleContainer"},{"$ref":"#/definitions/LinksWrapper"}]},"ObjectRevisionDbCache":{"type":"object","properties":{"version":{"type":"string"},"timestamp":{"type":"integer"},"state":{"type":"object","$ref":"#/definitions/DbCacheEntityBase$DbCacheState"},"revisionMapEntries":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"objectrevisiondbcache"}},"required":["type"]},"ObjectUuidMapDbCache":{"type":"object","properties":{"version":{"type":"string"},"timestamp":{"type":"integer"},"state":{"type":"object","$ref":"#/definitions/DbCacheEntityBase$DbCacheState"},"uuidToNameMapEntries":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"objectuuidmapdbcache"}},"required":["type"]},"PatOptions":{"type":"object","properties":{"patPoolAddress":{"type":"object","$ref":"#/definitions/ReferenceModel"},"interfacePat":{"type":"boolean"},"roundRobin":{"type":"boolean"},"flat":{"type":"boolean"},"extended":{"type":"boolean"},"includeReserve":{"type":"boolean"},"type":{"type":"string","default":"patoptions"}},"required":["type"]},"Permission":{"type":"object","properties":{"permissionType":{"type":"object","$ref":"#/definitions/PermissionType"},"permittedResource":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"permission"}},"required":["type"]},"PermissionType":{"type":"string","enum":["READ","WRITE","NONE"]},"PhysicalInterface":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"hardwareName":{"type":"string"},"monitorInterface":{"type":"boolean"},"ipv4":{"type":"object","$ref":"#/definitions/InterfaceIPv4"},"ipv6":{"type":"object","$ref":"#/definitions/InterfaceIPv6"},"managementOnly":{"type":"boolean"},"linkState":{"type":"object","$ref":"#/definitions/LinkState"},"mtu":{"type":"integer"},"enabled":{"type":"boolean"},"macAddress":{"type":"string"},"standbyMacAddress":{"type":"string"},"speedType":{"type":"object","$ref":"#/definitions/InterfaceSpeedType"},"duplexType":{"type":"object","$ref":"#/definitions/InterfaceDuplexType"},"mode":{"type":"object","$ref":"#/definitions/InterfaceModeType"},"managementInterface":{"type":"boolean"},"tenGigabitInterface":{"type":"boolean"},"gigabitInterface":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"physicalinterface"}},"required":["mode","monitorInterface","type","enabled","mtu"],"example":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"}},"PhysicalInterfaceWrapper":{"allOf":[{"$ref":"#/definitions/PhysicalInterface"},{"$ref":"#/definitions/LinksWrapper"}]},"PolicyRuleIdInfo":{"type":"object","properties":{"version":{"type":"string"},"accessRuleIds":{"type":"array","items":{"type":"integer"}},"recycledAccessRuleIds":{"type":"array","items":{"type":"string"}},"tunnelRuleIds":{"type":"array","items":{"type":"integer"}},"recycledTunnelRuleIds":{"type":"array","items":{"type":"string"}},"recycledSSLRuleIds":{"type":"array","items":{"type":"string"}},"sslRuleIds":{"type":"array","items":{"type":"integer"}},"id":{"type":"string"},"type":{"type":"string","default":"policyruleidinfo"}},"required":["type"]},"PolicyRuleIdMapDbCache":{"type":"object","properties":{"version":{"type":"string"},"timestamp":{"type":"integer"},"state":{"type":"object","$ref":"#/definitions/DbCacheEntityBase$DbCacheState"},"accessRuleIdToRuleUuidMapEntries":{"type":"array","items":{"type":"string"}},"tunnelRuleIdToRuleUuidMapEntries":{"type":"array","items":{"type":"string"}},"sslRuleIdToRuleUuidMapEntries":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"policyruleidmapdbcache"}},"required":["type"]},"PolicyTypeEnum":{"type":"string","enum":["AC_POLICY","FLEX_POLICY","IDENTITY_RULE_POLICY","SECURITY_INTELLIGENCE","MANAGEMENT_ACCESS"]},"PortObjectGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystemDefined":{"type":"boolean"},"id":{"type":"string"},"objects":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"type":{"type":"string","default":"portobjectgroup"}},"required":["type"],"example":{"id":"5a6e476a-df65-5641-92eb-abd433af9877","name":"Port_Object_Group_1","description":"Zufuwrak bov jiw fac zav rofkeweja wetra ce ipa ronareobo vog ucupa zi eguru mimegiw roneam.","version":"f0b69817-f639-5361-880a-b36d48e5576c","type":"portobjectgroup","objects":[{"id":"2a40730e-7878-5969-ba53-1d9278cde125","name":"icmpv4port1","description":"Uva ceti behga hetivasu ajbebu rakepe ame ifa aceuriso kejic fucaoti gigvivvo gishelpob jurevmu ov maclefe.","version":"e62c0f51-027e-5a7f-b725-a96162bb7138","type":"icmpv4portobject","icmpv4Code":"","icmpv4Type":"ANY","port":8508,"isSystemDefined":false}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}}},"PortObjectGroupWrapper":{"allOf":[{"$ref":"#/definitions/PortObjectGroup"},{"$ref":"#/definitions/LinksWrapper"}]},"PostUpgradeFlags":{"type":"object","properties":{"version":{"type":"string"},"showPostUpgradeDialog":{"type":"boolean"},"featureList":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"postupgradeflags"}},"required":["type"]},"PostUpgradeFlagsWrapper":{"allOf":[{"$ref":"#/definitions/PostUpgradeFlags"},{"$ref":"#/definitions/LinksWrapper"}]},"ProductivityCondition":{"type":"object","properties":{"productivity":{"type":"object","$ref":"#/definitions/ProductivityRank"},"type":{"type":"string","default":"productivitycondition"}},"required":["type"]},"ProductivityRank":{"type":"string","enum":["UNKNOWN","VERY_LOW","LOW","MEDIUM","HIGH","VERY_HIGH"]},"ProtocolObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystemDefined":{"type":"boolean"},"protocol":{"type":"object","$ref":"#/definitions/ProtocolType"},"id":{"type":"string"},"type":{"type":"string","default":"protocolobject"}},"required":["protocol","type"],"example":{"id":"17820b1b-0caf-509e-9227-0640913583ba","name":"protocol_1","description":"Jeg de du uk kidturbad omagihev gobdi moshesmop hurkov an buibu lucre gukva.","version":"c3b4f831-da55-547b-8c2f-c2fce675a234","type":"protocolobject","protocol":"PUP","port":8275,"isSystemDefined":false}},"ProtocolObjectWrapper":{"allOf":[{"$ref":"#/definitions/ProtocolObject"},{"$ref":"#/definitions/LinksWrapper"}]},"ProtocolType":{"type":"string","enum":["IGMP","GGP","ST2","TCP","CBT","EGP","IGP","BBNRCCMON","NVP2","PUP","ARGUS","EMCON","XNET","CHAOS","UDP","MUX","DCNMEAS","HMP","PRM","XNSIDP","TRUNK1","TRUNK2","LEAF1","LEAF2","RDP","IRTP","ISOTP4","NETBLT","MFENSP","MERITINP","SEP","THREEPC","IDPR","XTP","DDP","IDPRCMTP","TPPLUSPLUS","IL","SDRP","IDRP","RSVP","GRE","MHRP","BNA","ESP","AH","INLSP","SWIPE","NARP","MOBILE","TLSP","SKIP","IPv6NONXT","CFTP","SATEXPAK","KRYPTOLAN","RVD","IPPC","SATMON","VISA","IPCV","CPNX","CPHB","WSN","PVP","BRSATMON","SUNND","WBMON","WBEXPAK","ISOIP","VMTP","SECUREVMTP","VINES","TTP","NSFNETIGP","DGP","TCF","EIGRP","OSPFIGP","SPRITERPC","LARP","MTP","AX25","IPIP","MICP","SCCSP","ETHERIP","ENCAP","GMTP","IFMP","PNNI","PIM","ARIS","SCPS","QNX","AN","IPCOMP","SNP","COMPAQPEER","IPXINIP","VRRP","PGM","L2TP","DDX","IATP","ST","SRP","UTI","SMP","SM","PTP","ISIS","FIRE","CRTP","CRUDP","SSCOPMCE","IPLT","SPS","PIPE","SCTP","FC","DIVERT"]},"RBACResource":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}},"dependentResources":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"rbacresource"}},"required":["type"]},"RBACResourceGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"resources":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"rbacresourcegroup"}},"required":["type"]},"RadiusIdentitySource":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"host":{"type":"string"},"timeout":{"type":"integer"},"serverAuthenticationPort":{"type":"integer"},"serverSecretKey":{"type":"string","default":"*********"},"capabilities":{"type":"array","items":{"type":"object","$ref":"#/definitions/IdentitySourceCapabilities"}},"id":{"type":"string"},"type":{"type":"string","default":"radiusidentitysource"}},"required":["name","host","type"],"example":{"id":"98de28ef-9898-55c4-b6ce-bcee24ee6d57","version":"280b0f79-9611-5086-b9b8-f51ddcef906a","name":"RadiusIdentitySource1","description":"Saranmun tevvoiga debozbo kuz beregu irepoge novemad uviohze nanlev jepezweg coaf ehlumvun.","host":"109.170.119.220","timeout":192,"serverAuthenticationPort":15336,"serverSecretKey":"","capabilities":["AUTHENTICATION","PASSIVE_IDENTITY"],"type":"radiusidentitysource"}},"RadiusIdentitySourceWrapper":{"allOf":[{"$ref":"#/definitions/RadiusIdentitySource"},{"$ref":"#/definitions/LinksWrapper"}]},"RadiusIdentitySourceGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"maxFailedAttempts":{"type":"integer"},"deadTime":{"type":"integer"},"description":{"type":"string"},"radiusIdentitySources":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"activeDirectoryRealm":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"radiusidentitysourcegroup"}},"required":["name","type"],"example":{"id":"859c02d1-c81d-5a67-b332-1e2a2f0e8451","version":"12911213-cca2-5c4f-8b9e-0fe795f10748","name":"RadiusIdentitySourceGroup1","description":"Dibwiat buiv wif gihac keki usigi zojta odim me hawaf reoponal ihudajiz cetdedol wanejudi oc sejcunful.","radiusIdentitySources":[{"id":"6337c699-3dcf-5160-8222-135f13129125","version":"811fa9af-23a7-5074-88c4-dcae37336fcc","name":"RadiusIdentitySource5","description":"Logabaho ruppiful iva losifah dah guhejku hitotnos linolhut umgutul dud mu otzosu vigit tevodofi moksoezu livufauk.","host":"97.98.218.73","timeout":74,"serverAuthenticationPort":42065,"serverSecretKey":"","capabilities":["ACCOUNTING","AUTHENTICATION","AUTHORIZATION","DIRECTORY_SERVICES","PASSIVE_IDENTITY"],"type":"radiusidentitysource"},{"id":"d8d577cf-3526-56ab-8322-7a7cff8cbd2a","version":"0683d1ff-ff25-5aca-806a-ee6dcbf97678","name":"RadiusIdentitySource12","description":"Bizufte ol riv purvefok unune wa jo ugsisot vahlegsev wokulfoj magiv gehipo kep weonuze lirjid ecriv mo.","host":"154.4.38.85","timeout":212,"serverAuthenticationPort":51259,"serverSecretKey":"","capabilities":["ACCOUNTING","AUTHENTICATION","AUTHORIZATION","DIRECTORY_SERVICES","PASSIVE_IDENTITY"],"type":"radiusidentitysource"},{"id":"62384483-eaad-599c-9d45-9a745736c3c9","version":"33953404-c1f2-5aa7-b05b-b1e1292cb712","name":"RadiusIdentitySource3","description":"Gettoztes hitco jopo wupoot mefjalnem atobico udeha nadhosa tunomeb ukithep ribna upolikgu vudrihhu ivilo dewdil be tor.","host":"127.190.113.61","timeout":25,"serverAuthenticationPort":1498,"serverSecretKey":"","capabilities":["ACCOUNTING","AUTHENTICATION","AUTHORIZATION","DIRECTORY_SERVICES","PASSIVE_IDENTITY"],"type":"radiusidentitysource"}],"deadTime":1199,"maxFailedAttempts":3,"type":"radiusidentitysourcegroup"}},"RadiusIdentitySourceGroupWrapper":{"allOf":[{"$ref":"#/definitions/RadiusIdentitySourceGroup"},{"$ref":"#/definitions/LinksWrapper"}]},"ResourcePermission":{"type":"object","properties":{"resourceName":{"type":"string"},"resourceUrls":{"type":"array","items":{"type":"string"}},"resourceType":{"type":"string"},"permissionType":{"type":"object","$ref":"#/definitions/PermissionType"}}},"RestoreImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"archiveName":{"type":"string"},"preserveArchive":{"type":"boolean"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"restoreimmediate"}},"required":["archiveName","type"]},"RestoreImmediateWrapper":{"allOf":[{"$ref":"#/definitions/RestoreImmediate"},{"$ref":"#/definitions/LinksWrapper"}]},"RiskCondition":{"type":"object","properties":{"risk":{"type":"object","$ref":"#/definitions/RiskRank"},"type":{"type":"string","default":"riskcondition"}},"required":["type"]},"RiskRank":{"type":"string","enum":["UNKNOWN","VERY_LOW","LOW","MEDIUM","HIGH","CRITICAL"]},"RolePermission":{"type":"object","properties":{"role":{"type":"string"},"rolePermissionSet":{"type":"array","items":{"type":"object","$ref":"#/definitions/ResourcePermission"}},"id":{"type":"string"},"type":{"type":"string","default":"RolePermission"}},"required":["type"],"example":{"id":"ROLE_READ_ONLY","rolePermissionSet":[{"resourceName":"accesspolicies","resourceUrls":["/policy/accesspolicies/{objId}","/policy/accesspolicies"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"accesspolicies>accessrules","resourceUrls":["/policy/accesspolicies/{parentId}/accessrules","/policy/accesspolicies/{parentId}/accessrules/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"activeusersessions","resourceUrls":["/action/activeusersessions","/action/activeusersessions/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"anyconnectclientprofiles","resourceUrls":["/object/anyconnectclientprofiles","/object/anyconnectclientprofiles/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"anyconnectgrouppolicies","resourceUrls":["/devices/default/anyconnectgrouppolicies/{objId}","/devices/default/anyconnectgrouppolicies"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"anyconnectpackagefiles","resourceUrls":["/devices/default/anyconnectpackagefiles/{objId}","/devices/default/anyconnectpackagefiles"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"anyconnectpackages","resourceUrls":["/devices/default/anyconnectpackages/{objId}","/devices/default/anyconnectpackages"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"anyconnectprofiles","resourceUrls":["/devices/default/anyconnectprofiles/{objId}","/devices/default/anyconnectprofiles"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"anyconnectvpnconnections","resourceUrls":["/devices/default/anyconnectvpnconnections","/devices/default/anyconnectvpnconnections/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"applicationcategories","resourceUrls":["/object/applicationcategories"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"applicationfilters","resourceUrls":["/object/applicationfilters","/object/applicationfilters/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"applications","resourceUrls":["/object/applications"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"applicationtags","resourceUrls":["/object/applicationtags"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"archivedbackups","resourceUrls":["/managedentity/archivedbackups/{objId}","/managedentity/archivedbackups"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"aspathlists","resourceUrls":["/object/aspathlists","/object/aspathlists/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"auditevents","resourceUrls":["/operational/auditevents","/operational/auditevents/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"auditevents>changes","resourceUrls":["/operational/auditevents/{parentId}/changes"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"backup","resourceUrls":["/action/backup","/action/backup/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"bridgegroupinterfaces","resourceUrls":["/devices/default/bridgegroupinterfaces","/devices/default/bridgegroupinterfaces/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"clitemplatecategories","resourceUrls":["/operational/clitemplatecategories/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"clitemplates","resourceUrls":["/operational/clitemplates","/operational/clitemplates/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"cloudmanagement","resourceUrls":["/action/cloudmanagement/{objId}","/action/cloudmanagement"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"cloudservicesinfo","resourceUrls":["/operational/cloudservicesinfo/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"command","resourceUrls":["/action/command"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"commandautocomplete","resourceUrls":["/operational/commandautocomplete/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"connecttest","resourceUrls":["/action/connecttest/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"continents","resourceUrls":["/object/continents/{objId}","/object/continents"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"countries","resourceUrls":["/object/countries/{objId}","/object/countries"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"datadnssettings","resourceUrls":["/devices/default/datadnssettings/{objId}","/devices/default/datadnssettings"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"deploy","resourceUrls":["/operational/deploy","/operational/deploy/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"deploymentdata","resourceUrls":["/operational/deploymentdata/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"deploymenterrors","resourceUrls":["/operational/deploymenterrors/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"devicesettings>aaasettings","resourceUrls":["/devicesettings/default/aaasettings/{objId}","/devicesettings/default/aaasettings"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>cloudcommunicationsettings","resourceUrls":["/devicesettings/default/cloudcommunicationsettings/{objId}","/devicesettings/default/cloudcommunicationsettings"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>cloudconfig","resourceUrls":["/devicesettings/default/cloudconfig","/devicesettings/default/cloudconfig/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>devicehostnames","resourceUrls":["/devicesettings/default/devicehostnames/{objId}","/devicesettings/default/devicehostnames"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>dhcpservercontainers","resourceUrls":["/devicesettings/default/dhcpservercontainers","/devicesettings/default/dhcpservercontainers/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>httpaccesslists","resourceUrls":["/devicesettings/default/httpaccesslists","/devicesettings/default/httpaccesslists/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>logsettings","resourceUrls":["/devicesettings/default/logsettings","/devicesettings/default/logsettings/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>managementaccess","resourceUrls":["/devicesettings/default/managementaccess","/devicesettings/default/managementaccess/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>managementips","resourceUrls":["/devicesettings/default/managementips","/devicesettings/default/managementips/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>ntp","resourceUrls":["/devicesettings/default/ntp/{objId}","/devicesettings/default/ntp"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"devicesettings>sshaccesslists","resourceUrls":["/devicesettings/default/sshaccesslists/{objId}","/devicesettings/default/sshaccesslists"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"diskusage","resourceUrls":["/operational/diskusage/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"dnsservergroups","resourceUrls":["/object/dnsservergroups/{objId}","/object/dnsservergroups"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"downloadbackup","resourceUrls":["/action/downloadbackup/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"downloadconfig","resourceUrls":["/action/downloadconfig/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"downloaddiskfile","resourceUrls":["/action/downloaddiskfile/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"downloadinternalcacertificate","resourceUrls":["/action/downloadinternalcacertificate/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"downloadtroubleshoot","resourceUrls":["/action/downloadtroubleshoot/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"easysetup>easysetupstatus","resourceUrls":["/easysetup/easysetupstatus","/easysetup/easysetupstatus/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"easysetup>outsidenetwork","resourceUrls":["/easysetup/outsidenetwork/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"easysetup>passwordstatus","resourceUrls":["/easysetup/passwordstatus","/easysetup/passwordstatus/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"easysetup>timesettings","resourceUrls":["/easysetup/timesettings/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"errorpage","resourceUrls":["/errorpage/{errorCode}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"eula","resourceUrls":["/devices/default/eula/{objId}","/devices/default/eula"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"expandedcommunitylists","resourceUrls":["/object/expandedcommunitylists","/object/expandedcommunitylists/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"exportconfig","resourceUrls":["/action/exportconfig"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"extendedaccesslists","resourceUrls":["/object/extendedaccesslists","/object/extendedaccesslists/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"externalcacertificates","resourceUrls":["/object/externalcacertificates/{objId}","/object/externalcacertificates"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"externalcertificates","resourceUrls":["/object/externalcertificates/{objId}","/object/externalcertificates"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"featureinfo","resourceUrls":["/operational/featureinfo/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"filepolicies","resourceUrls":["/policy/filepolicies","/policy/filepolicies/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"flexconfigobjects","resourceUrls":["/object/flexconfigobjects","/object/flexconfigobjects/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"flexconfigpolicies","resourceUrls":["/object/flexconfigpolicies/{objId}","/object/flexconfigpolicies"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"geolocations","resourceUrls":["/object/geolocations","/object/geolocations/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"geolocationupdateschedules","resourceUrls":["/managedentity/geolocationupdateschedules","/managedentity/geolocationupdateschedules/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ha>break","resourceUrls":["/devices/default/action/ha/break/{objId}","/devices/default/action/ha/break"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ha>configurations","resourceUrls":["/devices/default/ha/configurations/{objId}","/devices/default/ha/configurations"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ha>failover","resourceUrls":["/devices/default/action/ha/failover"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ha>failoverconfigurations","resourceUrls":["/devices/default/ha/failoverconfigurations","/devices/default/ha/failoverconfigurations/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ha>join","resourceUrls":["/devices/default/action/ha/join/{objId}","/devices/default/action/ha/join"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ha>reset","resourceUrls":["/devices/default/action/ha/reset"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ha>resume","resourceUrls":["/devices/default/action/ha/resume"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ha>status","resourceUrls":["/devices/default/operational/ha/status/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ha>suspend","resourceUrls":["/devices/default/action/ha/suspend"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"icmpv4ports","resourceUrls":["/object/icmpv4ports/{objId}","/object/icmpv4ports"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"icmpv6ports","resourceUrls":["/object/icmpv6ports","/object/icmpv6ports/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"identitypolicies","resourceUrls":["/policy/identitypolicies/{objId}","/policy/identitypolicies"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"identitypolicies>identityrules","resourceUrls":["/policy/identitypolicies/{parentId}/identityrules","/policy/identitypolicies/{parentId}/identityrules/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ikev1policies","resourceUrls":["/object/ikev1policies","/object/ikev1policies/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ikev1proposals","resourceUrls":["/object/ikev1proposals","/object/ikev1proposals/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ikev2policies","resourceUrls":["/object/ikev2policies","/object/ikev2policies/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ikev2proposals","resourceUrls":["/object/ikev2proposals","/object/ikev2proposals/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"integration>identityservicesengine","resourceUrls":["/integration/identityservicesengine","/integration/identityservicesengine/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"interfaceinfo","resourceUrls":["/operational/interfaceinfo/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"interfaces","resourceUrls":["/devices/default/interfaces","/devices/default/interfaces/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"interfaces>subinterfaces","resourceUrls":["/devices/default/interfaces/{parentId}/subinterfaces/{objId}","/devices/default/interfaces/{parentId}/subinterfaces"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"internalcacertificates","resourceUrls":["/object/internalcacertificates/{objId}","/object/internalcacertificates"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"internalcertificates","resourceUrls":["/object/internalcertificates","/object/internalcertificates/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"intrusionpolicies","resourceUrls":["/policy/intrusionpolicies","/policy/intrusionpolicies/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"intrusionpolicies>intrusionrules","resourceUrls":["/policy/intrusionpolicies/{parentId}/intrusionrules","/policy/intrusionpolicies/{parentId}/intrusionrules/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"intrusionpolicies>ruleupdates","resourceUrls":["/policy/intrusionpolicies/{objId}/ruleupdates"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"intrusionsettings","resourceUrls":["/object/intrusionsettings","/object/intrusionsettings/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ipv4prefixlists","resourceUrls":["/object/ipv4prefixlists","/object/ipv4prefixlists/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ipv6prefixlists","resourceUrls":["/object/ipv6prefixlists/{objId}","/object/ipv6prefixlists"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs","resourceUrls":["/jobs/{objId}","/jobs"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs>backups","resourceUrls":["/jobs/backups","/jobs/backups/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs>cloudmanagementupdates","resourceUrls":["/jobs/cloudmanagementupdates/{objId}","/jobs/cloudmanagementupdates"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs>deployments","resourceUrls":["/jobs/deployments","/jobs/deployments/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"jobs>exportconfigjob","resourceUrls":["/jobs/exportconfigjob"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs>geolocationupdates","resourceUrls":["/jobs/geolocationupdates","/jobs/geolocationupdates/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs>haconfigsync","resourceUrls":["/jobs/haconfigsync/{objId}","/jobs/haconfigsync"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs>licenseregistrations","resourceUrls":["/jobs/licenseregistrations","/jobs/licenseregistrations/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs>sruupdates","resourceUrls":["/jobs/sruupdates","/jobs/sruupdates/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs>troubleshootjob","resourceUrls":["/managedentity/jobs/troubleshootjob"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"jobs>vdbupdates","resourceUrls":["/jobs/vdbupdates/{objId}","/jobs/vdbupdates"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"license>smartagentconnections","resourceUrls":["/license/smartagentconnections","/license/smartagentconnections/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"license>smartagentstatuses","resourceUrls":["/license/smartagentstatuses/{objId}","/license/smartagentstatuses"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"license>smartagentsyncrequests","resourceUrls":["/license/smartagentsyncrequests","/license/smartagentsyncrequests/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"license>smartlicenses","resourceUrls":["/license/smartlicenses","/license/smartlicenses/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"localidentitysources","resourceUrls":["/object/localidentitysources/{objId}","/object/localidentitysources"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"managemententity>postupgradeflags","resourceUrls":["/managemententity/postupgradeflags/{objId}","/managemententity/postupgradeflags"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"manualnatpolicies","resourceUrls":["/policy/manualnatpolicies/{objId}","/policy/manualnatpolicies"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"manualnatpolicies>manualnatrules","resourceUrls":["/policy/manualnatpolicies/{parentId}/manualnatrules/{objId}","/policy/manualnatpolicies/{parentId}/manualnatrules"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"mgmtdnssettings","resourceUrls":["/devices/default/mgmtdnssettings/{objId}","/devices/default/mgmtdnssettings"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"monitor>trendingreports","resourceUrls":["/monitor/trendingreports/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"networkfeedcategories","resourceUrls":["/object/networkfeedcategories","/object/networkfeedcategories/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"networkgroups","resourceUrls":["/object/networkgroups","/object/networkgroups/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"networkinterfaces","resourceUrls":["/devices/default/networkinterfaces/{objId}","/devices/default/networkinterfaces"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"networks","resourceUrls":["/object/networks","/object/networks/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"ntpstatus","resourceUrls":["/operational/ntpstatus/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"objectnatpolicies","resourceUrls":["/policy/objectnatpolicies/{objId}","/policy/objectnatpolicies"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"objectnatpolicies>objectnatrules","resourceUrls":["/policy/objectnatpolicies/{parentId}/objectnatrules","/policy/objectnatpolicies/{parentId}/objectnatrules/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"pendingchanges","resourceUrls":["/operational/pendingchanges"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"pendingchanges>clipboard","resourceUrls":["/operational/pendingchanges/clipboard/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"pendingchanges>download","resourceUrls":["/action/pendingchanges/download/{objId}"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"policylists","resourceUrls":["/object/policylists/{objId}","/object/policylists"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"portgroups","resourceUrls":["/object/portgroups","/object/portgroups/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"protocols","resourceUrls":["/object/protocols","/object/protocols/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"radiusidentitysourcegroups","resourceUrls":["/object/radiusidentitysourcegroups/{objId}","/object/radiusidentitysourcegroups"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"radiusidentitysources","resourceUrls":["/object/radiusidentitysources/{objId}","/object/radiusidentitysources"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"realms","resourceUrls":["/object/realms/{objId}","/object/realms"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"realms>trafficusergroups","resourceUrls":["/object/realms/{parentId}/trafficusergroups/{objId}","/object/realms/{parentId}/trafficusergroups"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"realms>trafficusers","resourceUrls":["/object/realms/{parentId}/trafficusers","/object/realms/{parentId}/trafficusers/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"restore","resourceUrls":["/action/restore/{objId}","/action/restore"],"resourceType":"RBACResource","permissionType":"NONE"},{"resourceName":"rolepermissions","resourceUrls":["/operational/rolepermissions","/operational/rolepermissions/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"routemaps","resourceUrls":["/object/routemaps","/object/routemaps/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"routing","resourceUrls":["/devices/default/routing","/devices/default/routing/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"routing>staticrouteentries","resourceUrls":["/devices/default/routing/{parentId}/staticrouteentries/{objId}","/devices/default/routing/{parentId}/staticrouteentries"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"routing>virtualrouters>bgp","resourceUrls":["/devices/default/routing/virtualrouters/default/bgp","/devices/default/routing/virtualrouters/default/bgp/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"routing>virtualrouters>ospf","resourceUrls":["/devices/default/routing/virtualrouters/default/ospf/{objId}","/devices/default/routing/virtualrouters/default/ospf"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"routing>virtualrouters>ospfinterfacesettings","resourceUrls":["/devices/default/routing/virtualrouters/default/ospfinterfacesettings/{objId}","/devices/default/routing/virtualrouters/default/ospfinterfacesettings"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"s2sconnectionprofiles","resourceUrls":["/devices/default/s2sconnectionprofiles/{objId}","/devices/default/s2sconnectionprofiles"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"scheduledbackup","resourceUrls":["/action/scheduledbackup/{objId}","/action/scheduledbackup"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"secrets","resourceUrls":["/object/secrets/{objId}","/object/secrets"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"securityintelligencefeedsupdateschedules","resourceUrls":["/managedentity/securityintelligencefeedsupdateschedules/{objId}","/managedentity/securityintelligencefeedsupdateschedules"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"securityintelligencenetworkpolicies","resourceUrls":["/policy/securityintelligencenetworkpolicies","/policy/securityintelligencenetworkpolicies/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"securityintelligencepolicies","resourceUrls":["/policy/securityintelligencepolicies/{objId}","/policy/securityintelligencepolicies"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"securityintelligenceupdatefeeds","resourceUrls":["/action/securityintelligenceupdatefeeds","/action/securityintelligenceupdatefeeds/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"securityintelligenceurlpolicies","resourceUrls":["/policy/securityintelligenceurlpolicies/{objId}","/policy/securityintelligenceurlpolicies"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"securityzones","resourceUrls":["/object/securityzones","/object/securityzones/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"smartclis","resourceUrls":["/object/smartclis","/object/smartclis/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"specialrealms","resourceUrls":["/object/specialrealms/{objId}","/object/specialrealms"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"specialrealms>trafficusers","resourceUrls":["/object/specialrealms/{parentId}/trafficusers/{objId}","/object/specialrealms/{parentId}/trafficusers"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"sruupdateschedules","resourceUrls":["/managedentity/sruupdateschedules","/managedentity/sruupdateschedules/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"sslpolicies","resourceUrls":["/policy/sslpolicies","/policy/sslpolicies/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"sslpolicies>sslrules","resourceUrls":["/policy/sslpolicies/{parentId}/sslrules/{objId}","/policy/sslpolicies/{parentId}/sslrules"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"standardaccesslists","resourceUrls":["/object/standardaccesslists","/object/standardaccesslists/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"standardcommunitylists","resourceUrls":["/object/standardcommunitylists/{objId}","/object/standardcommunitylists"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"syslogalerts","resourceUrls":["/object/syslogalerts","/object/syslogalerts/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"systemfeedobjects","resourceUrls":["/object/systemfeedobjects/{objId}","/object/systemfeedobjects"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"systeminfo","resourceUrls":["/operational/systeminfo/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"tcpports","resourceUrls":["/object/tcpports","/object/tcpports/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"telemetry","resourceUrls":["/operational/telemetry/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"testidentityservicesengineconnectivity","resourceUrls":["/action/testidentityservicesengineconnectivity"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"testidentitysource","resourceUrls":["/action/testidentitysource"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"testrealm","resourceUrls":["/action/testrealm"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"timezones","resourceUrls":["/operational/timezones/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"trafficinterruptionreasons","resourceUrls":["/operational/trafficinterruptionreasons/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"troubleshoot","resourceUrls":["/action/troubleshoot","/action/troubleshoot/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"udpports","resourceUrls":["/object/udpports/{objId}","/object/udpports"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"update","resourceUrls":["/managedentity/update/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"updategeolocation","resourceUrls":["/action/updategeolocation/{objId}","/action/updategeolocation"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"updatesru","resourceUrls":["/action/updatesru/{objId}","/action/updatesru"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"updatevdb","resourceUrls":["/action/updatevdb","/action/updatevdb/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"upgrade","resourceUrls":["/action/upgrade"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"upgradefiles","resourceUrls":["/managedentity/upgradefiles/{objId}","/managedentity/upgradefiles"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"uploadbackup","resourceUrls":["/action/uploadbackup"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"uploadcert","resourceUrls":["/action/uploadcert"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"uploaddiskfile","resourceUrls":["/action/uploaddiskfile"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"uploadupgrade","resourceUrls":["/action/uploadupgrade"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"urlcategories","resourceUrls":["/object/urlcategories"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"urlfeedcategories","resourceUrls":["/object/urlfeedcategories/{objId}","/object/urlfeedcategories"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"urlgroups","resourceUrls":["/object/urlgroups/{objId}","/object/urlgroups"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"urlreputation","resourceUrls":["/object/urlreputation"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"urls","resourceUrls":["/object/urls","/object/urls/{objId}"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"users","resourceUrls":["/object/users/{objId}","/object/users"],"resourceType":"RBACResource","permissionType":"READ"},{"resourceName":"vdbupdateschedules","resourceUrls":["/managedentity/vdbupdateschedules/{objId}","/managedentity/vdbupdateschedules"],"resourceType":"RBACResource","permissionType":"READ"}],"type":"rolepermission","role":"ROLE_READ_ONLY","links":{"self":"https://ast0080-pod:24143/api/fdm/v2/operational/rolepermissions/ROLE_READ_ONLY"}}},"RolePermissionWrapper":{"allOf":[{"$ref":"#/definitions/RolePermission"},{"$ref":"#/definitions/LinksWrapper"}]},"SRUImmediateJobType":{"type":"string","enum":["SRU_UPDATE","SRU_OOB_UPDATE"]},"SRUUpdateImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"sruImmediateJobType":{"type":"object","$ref":"#/definitions/SRUImmediateJobType"},"forceUpdate":{"type":"boolean"},"deployAfterUpdate":{"type":"boolean"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"sruupdateimmediate"}},"required":["type"]},"SRUUpdateImmediateWrapper":{"allOf":[{"$ref":"#/definitions/SRUUpdateImmediate"},{"$ref":"#/definitions/LinksWrapper"}]},"SRUUpdateSchedule":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"runTimes":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"deployAfterUpdate":{"type":"boolean"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"sruupdateschedule"}},"required":["type"],"example":{"id":"a04cfb9d-d292-54c0-aba0-7e19627a8e92","version":"6691b2e4-5ecc-591e-873a-4890488af596","hostname":"Ufe izifopo pevha be hud lej cedgaffol lipi ced ozif kitaso jomtogi hutip veb wimeros wi.","deployAfterUpdate":true,"type":"sruupdateschedule","runTimes":"0 04 03 * * ?","scheduleType":"DAILY"}},"SRUUpdateScheduleWrapper":{"allOf":[{"$ref":"#/definitions/SRUUpdateSchedule"},{"$ref":"#/definitions/LinksWrapper"}]},"SRUVersion":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"sruVersion":{"type":"string"},"lastSuccessSRUDate":{"type":"string"},"soMd5Checksum":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"sruversion"}},"required":["type"]},"ScheduleExportConfig":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"masked":{"type":"boolean"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"scheduleexportconfig"}},"required":["type"]},"ScheduleExportConfigWrapper":{"allOf":[{"$ref":"#/definitions/ScheduleExportConfig"},{"$ref":"#/definitions/LinksWrapper"}]},"ScheduleTroubleshoot":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"scheduletroubleshoot"}},"required":["type"]},"ScheduleTroubleshootWrapper":{"allOf":[{"$ref":"#/definitions/ScheduleTroubleshoot"},{"$ref":"#/definitions/LinksWrapper"}]},"SearchCondition":{"type":"object","properties":{"search":{"type":"string"},"type":{"type":"string","default":"searchcondition"}},"required":["type"]},"SecurityIntelligenceFeedsInfo":{"type":"object","properties":{"version":{"type":"string"},"lastFeedsUpdateDate":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"securityintelligencefeedsinfo"}},"required":["type"]},"SecurityIntelligenceUpdateFeedsImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"securityintelligenceupdatefeedsimmediate"}},"required":["type"]},"SecurityIntelligenceUpdateFeedsImmediateWrapper":{"allOf":[{"$ref":"#/definitions/SecurityIntelligenceUpdateFeedsImmediate"},{"$ref":"#/definitions/LinksWrapper"}]},"SecurityIntelligenceUpdateFeedsSchedule":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"runTimes":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"securityintelligenceupdatefeedsschedule"}},"required":["type"],"example":{"id":"701dd5c6-24a5-58cf-804c-54e7dcc81cd9","version":"348ce707-58a0-565a-8a64-4cff9705579e","hostname":"Hukas joovunes kejwighu nihem wo gugego misappa dop imofimnu keiziwu idagid icjavvu.","type":"securityintelligenceupdatefeedsschedule","scheduleType":"HOURLY"}},"SecurityIntelligenceUpdateFeedsScheduleWrapper":{"allOf":[{"$ref":"#/definitions/SecurityIntelligenceUpdateFeedsSchedule"},{"$ref":"#/definitions/LinksWrapper"}]},"SecurityZone":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"interfaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"mode":{"type":"object","$ref":"#/definitions/InterfaceModeType"},"id":{"type":"string"},"type":{"type":"string","default":"securityzone"}},"required":["mode","type"],"example":{"id":"7fa724f3-b64c-585b-9176-69aed2b36237","name":"SecurityZone1Name","description":"Do pefa ritapo ovauciku vogomougi utino gudo momna sagocbiw bowce awu muzabwoz zetpec kit fe.","version":"9d1d113e-86e0-5106-9f6c-29cc8e8fc7fb","interfaces":[{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]}],"type":"securityzone","mode":"ROUTED","metadata":{"referenced":true}}},"SecurityZoneWrapper":{"allOf":[{"$ref":"#/definitions/SecurityZone"},{"$ref":"#/definitions/LinksWrapper"}]},"SerialNumber":{"type":"object","properties":{"serial":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"SerialNumber"}},"required":["type"]},"SerializationKey":{"type":"object","properties":{"version":{"type":"string"},"key":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"serializationkey"}},"required":["type","key"]},"SnortVersion":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"snortVersion":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"snortversion"}},"required":["type"]},"SpecialRealm":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"directoryConfigurations":{"type":"array","items":{"type":"object","$ref":"#/definitions/DirectoryConfiguration"}},"enabled":{"type":"boolean"},"systemDefined":{"type":"boolean"},"realmId":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"specialrealm"}},"required":["type"],"example":{"id":"default","enabled":true,"name":"Special Realm 1","type":"specialrealm","systemDefined":true,"directoryConfigurations":[{"port":7146,"hostname":"166.169.55.184","encryptionProtocol":"STARTTLS","encryptionCert":{"id":"31ce8cf5-0e07-58c1-9617-4de62a7800f1","name":"TrustedCACertificate1","cert":"-----BEGIN CERTIFICATE-----MIIC9zCCAmCgAwIBAgIJAJ69cfUJsifyMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQLDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkqhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQwMjBaFw0xNjA0MDUxNDQwMjBaMHsxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGluMQwwCgYDVQQKDANBREkxDDAKBgNVBAsMA0FESTEMMAoGA1UEAwwDQURJMSEwHwYJKoZIhvcNAQkBFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKdwrJ9FYCVpnqHITgGGYb7nzlz+IRJc5Bl8FAepbjXpRh+noV04ttLkoIDlGobtqHbCls+Py7HjIaUFb2/T9Cddhf1mHC4jSp9nXVQmERhYoHfpyEVu4ZU7x5qFw+G4f4am3KzI2d6meWqaJZ3/5Z7bI3+zTmVK1SiSh12zarA/AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRzoznNy0g/X4VyqF8jJt+p6z44tDAfBgNVHSMEGDAWgBRDXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBHm6MADmMOPj7bBCY1lADpcFuSdGjzNgvUyivRDZcMlwFpLlIl+vNJSSMU6i20bq5o+pOMJsSCjOf9NxT3lcWuxtT4Ea226txs5a15TyGRxBV5MJ4/s6gHaDowJSF/TngsURIKcNqFpLTv5FBCqcGR2kdmvBwtl9319seCoZEZYw==-----END CERTIFICATE-----","type":"externalcacertificate","version":"da56323b-9415-5389-b592-946163695c1e","isSystemDefined":false},"type":"directoryconfiguration"}],"realmId":0,"version":"ropetleon"}},"SpecialRealmWrapper":{"allOf":[{"$ref":"#/definitions/SpecialRealm"},{"$ref":"#/definitions/LinksWrapper"}]},"StaticRouteEntry":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"iface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"networks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"gateway":{"type":"object","$ref":"#/definitions/ReferenceModel"},"metricValue":{"type":"integer"},"ipType":{"type":"object","$ref":"#/definitions/StaticRouteEntry$IPType"},"id":{"type":"string"},"type":{"type":"string","default":"staticrouteentry"}},"required":["iface","networks","type","gateway","ipType"],"example":{"id":"ce016249-c034-5b1d-810f-2e45a3a01b27","version":"7ae22ee2-9da4-5d69-b955-1521e43a19ed","metricValue":44,"networks":[{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"c1e8dd5a-a13d-5bcd-8db1-d7895b9a9f3a","name":"Network7","description":"Ehe jeep mijwamad kohi ifegujzek tednadcat dewian tuzdum ripi wondoh woh cugi masal.","version":"dc274636-d6d4-590e-b68f-5cc0d313f41b","type":"networkobject","subType":"NETWORK","value":"71.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":false}},{"id":"0f1e5697-c424-59ac-87dd-bc36e3c08465","name":"Network10","description":"Gowvis opopijab joswirud jezow feud ikibik ruronub oh zoteso ilohhu wif wezagina mi dov riluj luffepcep safes zeksim.","version":"59a184bf-98ff-5f9a-a5c3-67542f91153d","type":"networkobject","subType":"NETWORK","value":"146.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}}],"gateway":{"id":"884f239a-2976-5e8e-9cb5-5aeb31fc1554","name":"Network15","description":"Rad ladfevhez vucvibbu omeheh hi rulsusva nut diw sikeznag ehazelu witam tocrah irca wavegezi na nidmimle.","version":"7c7865f0-2dcd-5833-a31b-7fe684b3c2ff","type":"networkobject","subType":"HOST","value":"80.87.24.187","isSystemDefined":false,"metadata":{"referenced":false}},"iface":{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},"ipType":"IPv6","type":"staticrouteentry"}},"StaticRouteEntryWrapper":{"allOf":[{"$ref":"#/definitions/StaticRouteEntry"},{"$ref":"#/definitions/LinksWrapper"}]},"StaticRouteEntry$IPType":{"type":"string","enum":["IPv4","IPv6"]},"StaticRouteEntryContainer":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"staticrouteentrycontainer"}},"required":["type"]},"StaticRouteEntryContainerWrapper":{"allOf":[{"$ref":"#/definitions/StaticRouteEntryContainer"},{"$ref":"#/definitions/LinksWrapper"}]},"SubInterface":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"hardwareName":{"type":"string"},"monitorInterface":{"type":"boolean"},"ipv4":{"type":"object","$ref":"#/definitions/InterfaceIPv4"},"ipv6":{"type":"object","$ref":"#/definitions/InterfaceIPv6"},"managementOnly":{"type":"boolean"},"linkState":{"type":"object","$ref":"#/definitions/LinkState"},"mtu":{"type":"integer"},"enabled":{"type":"boolean"},"macAddress":{"type":"string"},"standbyMacAddress":{"type":"string"},"managementInterface":{"type":"boolean"},"tenGigabitInterface":{"type":"boolean"},"gigabitInterface":{"type":"boolean"},"id":{"type":"string"},"subIntfId":{"type":"integer"},"vlanId":{"type":"integer"},"type":{"type":"string","default":"subinterface"}},"required":["subIntfId","monitorInterface","type","enabled","mtu"],"example":{"mtu":2652,"enabled":true,"description":"Ta ikoure oznog tu hodul bizzo jimiite men cucif bewtujjof amurulev cuh igu fo siw dupziswul upahig roivipi.","name":"subinterface1name","id":"bdb62102-971e-5472-ab3b-22a7d408dc10","hardwareName":"SubInterface0/1.2","macAddress":"A57C.05DF.7FC0","monitorInterface":false,"standbyMacAddress":"4CE2.828C.AAB1","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"86a0:974f:3bf1:cee2:71c8:e295:2c3e:8d76/32","ipAddress":"9cb8:4589:0220:bd63:4d62:42ac:bd26:e1ac/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"7f67:fa11:adca:bd10:8583:757e:7ebb:be87","ipAddress":"4298:ffb2:30f7:84b6:5106:69aa:343c:8362"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"43.30.66.103","standbyIpAddress":"138.99.49.192"}},"version":"e04406e6-ff09-57ac-9b38-fdd8b19cf6fb","managementInterface":true,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}},"SubInterfaceWrapper":{"allOf":[{"$ref":"#/definitions/SubInterface"},{"$ref":"#/definitions/LinksWrapper"}]},"SystemInformation":{"type":"object","properties":{"ipv4":{"type":"string"},"ipv6":{"type":"string"},"softwareVersion":{"type":"string"},"vdbVersion":{"type":"object","$ref":"#/definitions/VDBVersion"},"sruVersion":{"type":"object","$ref":"#/definitions/SRUVersion"},"snortVersion":{"type":"object","$ref":"#/definitions/SnortVersion"},"databaseInfo":{"type":"object","$ref":"#/definitions/DatabaseInfo"},"platformModel":{"type":"string"},"currentTime":{"type":"integer"},"serialNumber":{"type":"string"},"geolocationVersion":{"type":"object","$ref":"#/definitions/GeolocationVersion"},"securityIntelligenceFeedsInfo":{"type":"object","$ref":"#/definitions/SecurityIntelligenceFeedsInfo"},"modelId":{"type":"string"},"modelNumber":{"type":"string"},"applianceUuid":{"type":"string"},"managementInterfaceName":{"type":"string"},"systemUptime":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"SystemInformation"}},"required":["type"]},"SystemInformationWrapper":{"allOf":[{"$ref":"#/definitions/SystemInformation"},{"$ref":"#/definitions/LinksWrapper"}]},"TCPPortObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystemDefined":{"type":"boolean"},"port":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"tcpportobject"}},"required":["port","type"],"example":{"id":"1a4f8032-f665-5045-b0d8-a48b339750d1","name":"tcp_port_2","description":"Ku soguzsi ragibi nupavidag faji kovor ikikov efa ha cozuju inietu daf hif iso.","version":"b6ff8844-fd46-5e03-9ca4-00b7bc8bd936","type":"tcpportobject","port":8189,"isSystemDefined":false}},"TCPPortObjectWrapper":{"allOf":[{"$ref":"#/definitions/TCPPortObject"},{"$ref":"#/definitions/LinksWrapper"}]},"TagType":{"type":"string","enum":["tag","category"]},"Telemetry":{"type":"object","properties":{"telemetryData":{"type":"object"},"id":{"type":"string"},"type":{"type":"string","default":"Telemetry"}},"required":["type"]},"TelemetryWrapper":{"allOf":[{"$ref":"#/definitions/Telemetry"},{"$ref":"#/definitions/LinksWrapper"}]},"TelemetryJobHistory":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"telemetryjobhistory"}},"required":["type"]},"TelemetrySchedule":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"runTimes":{"type":"string"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"telemetryschedule"}},"required":["type"]},"TestDirectory":{"type":"object","properties":{"realmUUID":{"type":"string"},"hostname":{"type":"string"},"directoryUsername":{"type":"string"},"directoryPassword":{"type":"string"},"port":{"type":"integer"},"protocol":{"type":"object","$ref":"#/definitions/EncryptionProtocol"},"sslCertUUID":{"type":"string"},"sslCertString":{"type":"string"},"baseDN":{"type":"string"},"statusCode":{"type":"string"},"statusMessage":{"type":"string"},"linaStatusMessage":{"type":"string"},"linaStatusCode":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"TestDirectory"}},"required":["directoryPassword","hostname","port","directoryUsername","baseDN","type"]},"TestDirectoryWrapper":{"allOf":[{"$ref":"#/definitions/TestDirectory"},{"$ref":"#/definitions/LinksWrapper"}]},"TestIdentityServicesEngineConnectivity":{"type":"object","properties":{"ftdCertificateUUID":{"type":"string"},"pxGridCertificateUUID":{"type":"string"},"mntCertificateUUID":{"type":"string"},"statusCode":{"type":"string"},"statusMessage":{"type":"string"},"iseLogMessage":{"type":"string"},"secondaryStatusCode":{"type":"string"},"secondaryStatusMessage":{"type":"string"},"primaryIseServer":{"type":"string"},"secondaryIseServer":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"TestIdentityServicesEngineConnectivity"}},"required":["pxGridCertificateUUID","ftdCertificateUUID","mntCertificateUUID","type"]},"TestIdentityServicesEngineConnectivityWrapper":{"allOf":[{"$ref":"#/definitions/TestIdentityServicesEngineConnectivity"},{"$ref":"#/definitions/LinksWrapper"}]},"TestIdentitySource":{"type":"object","properties":{"identitySource":{"type":"object","$ref":"#/definitions/IdentitySourceBase"},"username":{"type":"string"},"password":{"type":"string","default":"*********"},"statusCode":{"type":"integer"},"statusMessage":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"TestIdentitySource"}},"required":["identitySource","password","type","username"],"example":{"statusCode":200,"identitySource":[{"id":"cf19a63b-a01a-5349-926c-222d411d08dc","version":"e7bbd852-121f-5426-8455-2daf6a00648f","name":"RadiusIdentitySource10","description":"Bucledas fegca as wupmucet rofi oproeca cahuru meide fi jegisege omnikgok dimturpub wivtin bah si.","host":"204.94.100.46","timeout":59,"serverAuthenticationPort":22241,"serverSecretKey":"","capabilities":["ACCOUNTING"],"type":"radiusidentitysource"},{"id":"d8d577cf-3526-56ab-8322-7a7cff8cbd2a","version":"0683d1ff-ff25-5aca-806a-ee6dcbf97678","name":"RadiusIdentitySource12","description":"Bizufte ol riv purvefok unune wa jo ugsisot vahlegsev wokulfoj magiv gehipo kep weonuze lirjid ecriv mo.","host":"154.4.38.85","timeout":212,"serverAuthenticationPort":51259,"serverSecretKey":"","capabilities":["ACCOUNTING","AUTHENTICATION","AUTHORIZATION","DIRECTORY_SERVICES","PASSIVE_IDENTITY"],"type":"radiusidentitysource"}],"username":"test","password":"****","statusMessage":"The connection test succeeded","id":"0c733070-4faf-5c45-8fc4-e8bca1644041","type":"testidentitysource"}},"TestIdentitySourceWrapper":{"allOf":[{"$ref":"#/definitions/TestIdentitySource"},{"$ref":"#/definitions/LinksWrapper"}]},"Time":{"type":"object","properties":{"value":{"type":"integer"},"timeUnit":{"type":"string","enum":["NANOSECONDS","MICROSECONDS","MILLISECONDS","SECONDS","MINUTES","HOURS","DAYS"]},"type":{"type":"string","default":"time"}},"required":["type"]},"TimeZones":{"type":"object","properties":{"timeZones":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"type":{"type":"string","default":"TimeZones"}},"required":["type"]},"TimeZonesWrapper":{"allOf":[{"$ref":"#/definitions/TimeZones"},{"$ref":"#/definitions/LinksWrapper"}]},"TrafficUser":{"type":"object","properties":{"version":{"type":"string"},"realmId":{"type":"integer"},"realmName":{"type":"string"},"type":{"type":"string","default":"trafficuser"},"id":{"type":"string"},"name":{"type":"string"}},"required":["realmId","realmName","id","type"],"example":{"id":"f7417bdc-8866-5397-8f4b-e1f2d7956bcc","name":"User 31","realmName":"guhecogguk","type":"trafficuser","realmId":0,"version":"asogtiodo"}},"TrafficUserWrapper":{"allOf":[{"$ref":"#/definitions/TrafficUser"},{"$ref":"#/definitions/LinksWrapper"}]},"TrafficUserGroup":{"type":"object","properties":{"version":{"type":"string"},"realmId":{"type":"integer"},"realmName":{"type":"string"},"type":{"type":"string","default":"trafficusergroup"},"id":{"type":"string"},"name":{"type":"string"}},"required":["realmId","realmName","id","type"],"example":{"id":"82e234e2-f6fe-5d98-bbc0-0d6c7e26482d","name":"User Group 1","realmName":"batziloij","type":"trafficusergroup","realmId":2,"version":"golzegnile"}},"TrafficUserGroupWrapper":{"allOf":[{"$ref":"#/definitions/TrafficUserGroup"},{"$ref":"#/definitions/LinksWrapper"}]},"TroubleshootFile":{"type":"object","properties":{"file":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"TroubleshootFile"}},"required":["type"]},"TroubleshootFileWrapper":{"allOf":[{"$ref":"#/definitions/TroubleshootFile"},{"$ref":"#/definitions/LinksWrapper"}]},"TroubleshootJobHistory":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"troubleshootjobhistory"}},"required":["type"]},"TroubleshootJobHistoryWrapper":{"allOf":[{"$ref":"#/definitions/TroubleshootJobHistory"},{"$ref":"#/definitions/LinksWrapper"}]},"TunnelPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"tunnelpolicy"}},"required":["type"]},"TunnelPolicyDeployInfo":{"type":"object","properties":{"version":{"type":"string"},"ruleContainerUuid":{"type":"string"},"deployedOnDevice":{"type":"boolean"},"ruleDeployInfoEntries":{"type":"array","items":{"type":"object","$ref":"#/definitions/AccessControlRuleDeployInfo"}},"id":{"type":"string"},"type":{"type":"string","default":"tunnelpolicydeployinfo"}},"required":["type"]},"TunnelRule":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"ruleId":{"type":"integer"},"sourceZones":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationZones":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"sourceNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"sourcePorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationPorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ruleAction":{"type":"object","$ref":"#/definitions/AccessControlRuleBase$AcRuleAction"},"eventLogAction":{"type":"object","$ref":"#/definitions/AccessControlRuleBase$EventLogAction"},"bidirectional":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"tunnelrule"}},"required":["type"]},"TunnelZone":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"tunnelzone"}},"required":["type"]},"TypeCondition":{"type":"object","properties":{"applicationType":{"type":"object","$ref":"#/definitions/ApplicationType"},"type":{"type":"string","default":"typecondition"}},"required":["type"]},"UDPPortObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystemDefined":{"type":"boolean"},"port":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"udpportobject"}},"required":["port","type"],"example":{"id":"34f7bed0-39b1-5064-a6e7-27b5431b2066","name":"udp_port_2","description":"Eji leklo infagziv wut vujapvug avvutu toduj dulnarse ifdo bipujhas ajo vualo efapomiw ge nepe gomhuh.","version":"5785591f-a79c-5ff4-bc82-b3dd6d70a236","type":"udpportobject","port":8830,"isSystemDefined":false}},"UDPPortObjectWrapper":{"allOf":[{"$ref":"#/definitions/UDPPortObject"},{"$ref":"#/definitions/LinksWrapper"}]},"URLCacheReloadTTL":{"type":"string","enum":["NEVER","TWO_HRS","FOUR_HRS","EIGHT_HRS","TWELVE_HRS","TWENTY_FOUR_HRS","FOURTY_EIGHT_HRS","ONE_WEEK"]},"URLCategory":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"urlCategoryId":{"type":"integer"},"deprecated":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"urlcategory"}},"required":["urlCategoryId","type"],"example":{"id":"5c03856a-3c13-5838-b397-19e4eb343d1d","version":"4399e700-e8df-5a73-a565-c19049383762","name":"Health and Medicine","deprecated":false,"urlCategoryId":1,"type":"urlcategory"}},"URLCategoryWrapper":{"allOf":[{"$ref":"#/definitions/URLCategory"},{"$ref":"#/definitions/LinksWrapper"}]},"URLCategoryMatcher":{"type":"object","properties":{"urlCategory":{"type":"object","$ref":"#/definitions/ReferenceModel"},"urlReputation":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"urlcategorymatcher"}},"required":["type"],"example":{"urlReputation":{"id":"00d12166-18a1-568d-8878-cbe92b44602c","name":"Risk unknown","index":0,"startPercentage":0,"endPercentage":0,"version":"b5c74a5a-ad53-5a53-91d1-505f3d64d5d5","type":"urlreputation"},"urlCategory":{"id":"5c03856a-3c13-5838-b397-19e4eb343d1d","version":"4399e700-e8df-5a73-a565-c19049383762","name":"Health and Medicine","deprecated":false,"urlCategoryId":1,"type":"urlcategory"},"type":"urlcategorymatcher"}},"URLObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"urlobject"}},"required":["type","url"],"example":{"id":"8c8ec923-9d7c-59f2-8d13-7db0e9d0fc55","version":"inkitfovat","name":"Url1","description":"Cukji verwe wafit hada sirivza uso awba mezjaje gi bavtiim satudu cevonlem nugocok ibnaar zasado.","url":"http://geta.org/ozmeg","type":"urlobject"}},"URLObjectWrapper":{"allOf":[{"$ref":"#/definitions/URLObject"},{"$ref":"#/definitions/LinksWrapper"}]},"URLObjectGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"objects":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"type":{"type":"string","default":"urlobjectgroup"}},"required":["type"],"example":{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}},"URLObjectGroupWrapper":{"allOf":[{"$ref":"#/definitions/URLObjectGroup"},{"$ref":"#/definitions/LinksWrapper"}]},"URLReputation":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"index":{"type":"integer"},"startPercentage":{"type":"integer"},"endPercentage":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"urlreputation"}},"required":["index","endPercentage","type","startPercentage"],"example":{"id":"00d12166-18a1-568d-8878-cbe92b44602c","name":"Risk unknown","index":0,"startPercentage":0,"endPercentage":0,"version":"b5c74a5a-ad53-5a53-91d1-505f3d64d5d5","type":"urlreputation"}},"URLReputationWrapper":{"allOf":[{"$ref":"#/definitions/URLReputation"},{"$ref":"#/definitions/LinksWrapper"}]},"UpgradeFile":{"type":"object","properties":{"version":{"type":"string"},"user":{"type":"string"},"uploadDate":{"type":"string"},"fileSize":{"type":"integer"},"upgradeFileName":{"type":"string"},"updateVersion":{"type":"string"},"upgradeFrom":{"type":"string"},"rebootRequired":{"type":"boolean"},"id":{"type":"string"},"upgradeType":{"type":"string"},"type":{"type":"string","default":"upgradefile"}},"required":["type"]},"UpgradeFileWrapper":{"allOf":[{"$ref":"#/definitions/UpgradeFile"},{"$ref":"#/definitions/LinksWrapper"}]},"UploadBackupStatus":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"uploadbackupstatus"}},"required":["type"]},"User":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"password":{"type":"string","default":"*********"},"newPassword":{"type":"string","default":"*********"},"userPreferences":{"type":"object","$ref":"#/definitions/UserPreferences"},"userRole":{"type":"string"},"identitySourceId":{"type":"string"},"userServiceTypes":{"type":"array","items":{"type":"object","$ref":"#/definitions/UserServiceType"}},"id":{"type":"string"},"type":{"type":"string","default":"user"}},"required":["identitySourceId","userServiceTypes","type"],"example":{"id":"default-user-id","version":"d30e1b78-7df4-5efd-aa8d-4a796fed3440","name":"admin","userServiceTypes":["MGMT"],"userRole":"ROLE_ADMIN","identitySourceId":"LOCAL","userPreferences":{"colorTheme":"NORMAL_CISCO_IDENTITY","preferredTimeZone":"(-10:00) Pacific/Honolulu","type":"userpreferences"},"type":"user"}},"UserWrapper":{"allOf":[{"$ref":"#/definitions/User"},{"$ref":"#/definitions/LinksWrapper"}]},"UserBase":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"userbase"}},"required":["type"]},"UserPreferences":{"type":"object","properties":{"preferredTimeZone":{"type":"string"},"colorTheme":{"type":"object","$ref":"#/definitions/UserPreferences$ColorTheme"},"type":{"type":"string","default":"userpreferences"}},"required":["colorTheme","type"]},"UserPreferences$ColorTheme":{"type":"string","enum":["NORMAL_CISCO_IDENTITY","NORMAL_ORANGE","NORMAL_BLUE","HIGH_CONTRAST_MODE","FILTERED_COLORS"]},"UserRole":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"permissions":{"type":"array","items":{"type":"object","$ref":"#/definitions/Permission"}},"id":{"type":"string"},"type":{"type":"string","default":"userrole"}},"required":["type"]},"UserServiceType":{"type":"string","enum":["RA_VPN","MGMT"]},"VDBUpdateImmediate":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"deployAfterUpdate":{"type":"boolean"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"vdbupdateimmediate"}},"required":["type"]},"VDBUpdateImmediateWrapper":{"allOf":[{"$ref":"#/definitions/VDBUpdateImmediate"},{"$ref":"#/definitions/LinksWrapper"}]},"VDBUpdateSchedule":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"runTimes":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"deployAfterUpdate":{"type":"boolean"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"vdbupdateschedule"}},"required":["type"],"example":{"id":"182a824b-a1fa-548a-805b-72c8e4191baf","version":"442fb86d-6b22-5575-aa23-0401713c4b2b","hostname":"Sizbes dodvabo sumlaiv acudele niw duwcaik nifvilja fodono giblujku ticib bicziaf sejupi jugufze suc opwupde jepju.","deployAfterUpdate":true,"type":"vdbupdateschedule","runTimes":"0 04 03 * * ?","scheduleType":"DAILY"}},"VDBUpdateScheduleWrapper":{"allOf":[{"$ref":"#/definitions/VDBUpdateSchedule"},{"$ref":"#/definitions/LinksWrapper"}]},"VDBVersion":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"lastSuccessVDBDate":{"type":"string"},"vdbCurrentVersion":{"type":"string"},"vdbCurrentBuild":{"type":"string"},"vdbReleaseDate":{"type":"string"},"appIDRevision":{"type":"string"},"navlRevision":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"vdbversion"}},"required":["type"]},"VlanTag":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"value":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"vlantag"}},"required":["type"]},"VlanTagGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"vlanTags":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"vlantaggroup"}},"required":["type"]},"WebAnalyticsSetting":{"type":"object","properties":{"version":{"type":"string"},"disabled":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"webanalyticssetting"}},"required":["type"],"example":{"id":"f306c79a-98aa-5f18-bfd0-fd37bd76031a","version":"a22269fd-651b-5d04-89de-a72ec792c9ea","disabled":true,"type":"webanalyticssetting"}},"WebAnalyticsSettingWrapper":{"allOf":[{"$ref":"#/definitions/WebAnalyticsSetting"},{"$ref":"#/definitions/LinksWrapper"}]},"AccessEntryBase":{"type":"object","properties":{"action":{"type":"object","$ref":"#/definitions/EntryAction"},"type":{"type":"string","default":"accessentrybase"}},"required":["action","type"]},"ExtendedAccessEntry":{"type":"object","properties":{"action":{"type":"object","$ref":"#/definitions/EntryAction"},"sourceNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"sourcePorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationPorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"logging":{"type":"object","$ref":"#/definitions/LoggingOption"},"logLevel":{"type":"object","$ref":"#/definitions/LogLevel"},"logInterval":{"type":"integer"},"type":{"type":"string","default":"extendedaccessentry"}},"required":["logging","action","type"]},"ExtendedAccessList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/ExtendedAccessEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"extendedaccesslist"}},"required":["entries","type"],"example":{"id":"0aa9ce96-ad85-593e-9b9d-2b19067e41d7","version":"9c70faf3-3711-5b55-a9ea-e018da07db33","name":"CLI Object 21","description":"Tu vahinomud nam avaefo do nudduer rac kasali je ettuplem hi cu jo selwuzwek ra topuda bad ehruv.","type":"extendedaccesslist"}},"ExtendedAccessListWrapper":{"allOf":[{"$ref":"#/definitions/ExtendedAccessList"},{"$ref":"#/definitions/LinksWrapper"}]},"LogLevel":{"type":"string","enum":["ALERT","CRITICAL","DEBUGGING","EMERGENCY","ERROR","INFORMATIONAL","NOTIFICATION","WARNING"]},"LoggingOption":{"type":"string","enum":["DEFAULT","DISABLED","PER_ACCESS_LIST_ENTRY"]},"StandardAccessEntry":{"type":"object","properties":{"action":{"type":"object","$ref":"#/definitions/EntryAction"},"networks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"type":{"type":"string","default":"standardaccessentry"}},"required":["action","networks","type"]},"StandardAccessList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/StandardAccessEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"standardaccesslist"}},"required":["entries","type"],"example":{"id":"7f1f5ad0-8e61-5c85-9c95-0aa2bec34b75","version":"c83f4693-2a2c-52b9-8b00-c85660509149","name":"CLI Object 16","description":"Bawra aviuvebed gukulcum su bo usamosag viva noslar fes fe guzneda hu.","type":"standardaccesslist"}},"StandardAccessListWrapper":{"allOf":[{"$ref":"#/definitions/StandardAccessList"},{"$ref":"#/definitions/LinksWrapper"}]},"ASPathEntry":{"type":"object","properties":{"action":{"type":"object","$ref":"#/definitions/EntryAction"},"regularExpression":{"type":"string"},"type":{"type":"string","default":"aspathentry"}},"required":["regularExpression","action","type"]},"ASPathList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/ASPathEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"aspathlist"}},"required":["entries","type"],"example":{"id":"01e502f9-7608-534a-8e42-73ba411232ab","version":"5643f7c5-5e12-53c1-a916-05bdd934498e","name":"CLI Object 1","description":"Lumem wagim cosbo dimo te jalogric jeggow ju zohize sum desvevhar zafuoru cewun sej.","type":"aspathlist"}},"ASPathListWrapper":{"allOf":[{"$ref":"#/definitions/ASPathList"},{"$ref":"#/definitions/LinksWrapper"}]},"AuditDeploymentEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"eventData":{"type":"object","$ref":"#/definitions/ReferenceModel"},"entityId":{"type":"string"},"entityName":{"type":"string"},"entityType":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"auditdeploymentevent"}},"required":["type"]},"AuditDiscardPendingChangesEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"auditdiscardpendingchangesevent"}},"required":["type"]},"AuditEntityCreateEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"entityId":{"type":"string"},"entityName":{"type":"string"},"entityType":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"auditentitycreateevent"}},"required":["type"]},"AuditEntityDeleteEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"entityId":{"type":"string"},"entityName":{"type":"string"},"entityType":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"auditentitydeleteevent"}},"required":["type"]},"AuditEntityUpdateEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"entityId":{"type":"string"},"entityName":{"type":"string"},"entityType":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"auditentityupdateevent"}},"required":["type"]},"AuditEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"eventData":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"auditevent"}},"required":["type"]},"AuditEventWrapper":{"allOf":[{"$ref":"#/definitions/AuditEvent"},{"$ref":"#/definitions/LinksWrapper"}]},"AuditFailedLoginEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"auditfailedloginevent"}},"required":["type"]},"AuditHaActionEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"eventData":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"audithaactionevent"}},"required":["type"]},"AuditJobExecutionEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"eventData":{"type":"object","$ref":"#/definitions/ReferenceModel"},"entityId":{"type":"string"},"entityName":{"type":"string"},"entityType":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"auditjobexecutionevent"}},"required":["type"]},"AuditLoginEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"auditloginevent"}},"required":["type"]},"AuditLogoutEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"auditlogoutevent"}},"required":["type"],"example":{"id":"ed3a462e-224b-5b1e-9240-77e23eef167a","timeStamp":1530997098281,"sourceIp":"176.217.243.34","userName":"admin","type":"auditlogoutevent"}},"AuditOutOfBandChangeEvent":{"type":"object","properties":{"sourceIp":{"type":"string"},"userName":{"type":"string"},"timeStamp":{"type":"integer"},"entityId":{"type":"string"},"entityName":{"type":"string"},"entityType":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"auditoutofbandchangeevent"}},"required":["type"]},"AuditEntityChange":{"type":"object","properties":{"version":{"type":"string"},"auditEventId":{"type":"string"},"entityDiff":{"type":"object","$ref":"#/definitions/BaseEntityDiff"},"id":{"type":"string"},"type":{"type":"string","default":"auditentitychange"}},"required":["type"],"example":{"id":"7a932bc2-57f5-5899-8361-61f41a4290bf","type":"auditentitychange","auditEventId":"7a3cfc08-d291-5480-b3b8-09bf7088d157","entityDiff":{"entityId":"701dd5c6-24a5-58cf-804c-54e7dcc81cd9","entityType":"securityintelligenceupdatefeedsschedule","referencesDeleted":[],"valuesDeleted":[{"fieldName":"hostname","oldValue":"Hukas joovunes kejwighu nihem wo gugego misappa dop imofimnu keiziwu idagid icjavvu.","type":"valuedelete"},{"fieldName":"scheduleType","oldValue":"HOURLY","type":"valuedelete"}],"type":"entitydelete"}}},"AuditEntityChangeWrapper":{"allOf":[{"$ref":"#/definitions/AuditEntityChange"},{"$ref":"#/definitions/LinksWrapper"}]},"AuditBaseEventData":{},"AuditDeploymentData":{"type":"object","properties":{"startTimeStamp":{"type":"integer"},"endTimeStamp":{"type":"integer"},"status":{"type":"object","$ref":"#/definitions/AuditProcessStatus"},"errorMessage":{"type":"string"},"deploymentStatusUuid":{"type":"string"}}},"AuditHAActionData":{"type":"object","properties":{"haAction":{"type":"string"}}},"AuditJobExecutionData":{"type":"object","properties":{"jobHistoryUuid":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"jobVersion":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/AuditProcessStatus"}}},"AuditProcessStatus":{"type":"string","enum":["STARTED","COMPLETED","FAILED"]},"AuthenticationStatus":{"type":"string","enum":["SUCCESSFUL","FAILED"]},"IdentitySourceProtocolType":{"type":"string","enum":["HTTPS","SSH"]},"OAuthTokenInfo":{"type":"object","properties":{"version":{"type":"string"},"customTokenInfo":{"type":"array","items":{"type":"string"}},"customTokenInfoEntries":{"type":"array","items":{"type":"object","$ref":"#/definitions/OAuthTokenInfo$TokenInfoEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"oauthtokeninfo"}},"required":["type"]},"OAuthTokenInfo$TokenInfoEntry":{"type":"object","properties":{"tokenId":{"type":"string"},"subject":{"type":"string"},"issuedAt":{"type":"integer"},"expireAt":{"type":"integer"},"refreshExpireAt":{"type":"integer"},"userUuid":{"type":"string"},"userRole":{"type":"string"}}},"UseLocal":{"type":"string","enum":["BEFORE","AFTER","NEVER","NOT_APPLICABLE"]},"Secret":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"password":{"type":"string","default":"*********"},"id":{"type":"string"},"type":{"type":"string","default":"secret"}},"required":["password","type"],"example":{"id":"a6bb23ab-ae4f-5241-97fb-9f18daec1e8f","version":"247dda8d-9759-56f8-b3b7-ece9fd52a616","description":"Wa ne get da rejehoz nejidek laz sih lesdezoc cuso viriav nuc la cohica kowpuzloh ideci.","name":"secret_1","password":"*********","type":"secret"}},"SecretWrapper":{"allOf":[{"$ref":"#/definitions/Secret"},{"$ref":"#/definitions/LinksWrapper"}]},"VariableBase":{"type":"object","properties":{"name":{"type":"string"},"variableType":{"type":"object","$ref":"#/definitions/VariableType"},"value":{"type":"string"},"entityValue":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"variablebase"}},"required":["variableType","name","type"]},"VariableType":{"type":"string","enum":["OBJECT_NAME","STRING","NUMERIC","BOOLEAN","IP","IPV6","MULTI_ENUM","NETWORK","NETWORK_OBJECT","PORT","INTERFACE","SECRET","ASPATH","COMMUNITY_LIST","STANDARD_COMMUNITY_LIST","EXPANDED_COMMUNITY_LIST","ACCESS_LIST","STANDARD_ACCESS_LIST","EXTENDED_ACCESS_LIST","PREFIX_LIST","IPV4_PREFIX_LIST","IPV6_PREFIX_LIST","POLICY_LIST","ROUTE_MAP","ENUM","MULTI_NETWORK","MULTI_PORT","MULTI_INTERFACE","MULTI_ASPATH","MULTI_COMMUNITY_LIST","MULTI_POLICY_LIST","MULTI_ACCESS_LIST","MULTI_IPV4_PREFIX_LIST","MULTI_STANDARD_ACCESS_LIST"]},"VariableType$Metatype":{"type":"string","enum":["VALUE","ENTITY","CONSTANT","ENTITIES","UNKNOWN"]},"FlexConfigObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"lines":{"type":"array","items":{"type":"string"}},"negateLines":{"type":"array","items":{"type":"string"}},"isBlacklisted":{"type":"boolean"},"variables":{"type":"array","items":{"type":"object","$ref":"#/definitions/FlexVariable"}},"id":{"type":"string"},"type":{"type":"string","default":"flexconfigobject"}},"required":["isBlacklisted","type"],"example":{"id":"322523e2-a2e3-11e7-aeff-41d2798f8ab7","version":"321aeab1-a2e3-11e7-aeff-1b3da2d74e21","name":"error_with_lines","variables":[{"name":"user","variableType":"STRING","value":"virgil","type":"flexvariable"}],"isBlacklisted":false,"lines":["banner login hello - line 1 {{ user }}","banner login hello - line 2","banner login hello - line 3","exit"],"negateLines":["no banner login hello - line 2","no banner login hello - line 1 {{user }}"],"type":"flexconfigobject","links":{"self":"https://10.88.127.219:28643/api/fdm/v2/object/flexconfigobjects/322523e2-a2e3-11e7-aeff-41d2798f8ab7"}}},"FlexConfigObjectWrapper":{"allOf":[{"$ref":"#/definitions/FlexConfigObject"},{"$ref":"#/definitions/LinksWrapper"}]},"FlexConfigPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"flexConfigObjects":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"flexconfigpolicy"}},"required":["type"],"example":{"id":"aff0984f-abed-5303-8a94-8f191c0d7bec","version":"0c322316-a537-5e0d-9ca0-04f09a0d6ad0","name":"CLI_template_group_1","flexConfigObjects":[{"id":"322523e2-a2e3-11e7-aeff-41d2798f8ab7","version":"321aeab1-a2e3-11e7-aeff-1b3da2d74e21","name":"error_with_lines","variables":[{"name":"user","variableType":"STRING","value":"virgil","type":"flexvariable"}],"isBlacklisted":false,"lines":["banner login hello - line 1 {{ user }}","banner login hello - line 2","banner login hello - line 3","exit"],"negateLines":["no banner login hello - line 2","no banner login hello - line 1 {{user }}"],"type":"flexconfigobject","links":{"self":"https://10.88.127.219:28643/api/fdm/v2/object/flexconfigobjects/322523e2-a2e3-11e7-aeff-41d2798f8ab7"}},{"id":"123523e2-a2e3-11e7-aeff-41d2798f8321","version":"123aeab1-a2e3-11e7-aeff-1b3da2d74321","name":"error_with_negatelines","variables":[{"name":"user","variableType":"STRING","value":"virgil","type":"flexvariable"}],"isBlacklisted":true,"lines":["banner login hello - line 1 {{ user }}","banner login hello - line 2","exit"],"negateLines":["no banner login hello - line 1","no banner login hello - line 2 {{user }}","no banner login hello - line 3 {{user }}","no banner login hello - line 4 {{user }}"],"type":"flexconfigobject","links":{"self":"https://10.88.127.219:28643/api/fdm/v2/object/flexconfigobjects/123523e2-a2e3-11e7-aeff-41d2798f8321"}},{"id":"5463523e2-a2e3-11e7-aeff-41d2798f8098","version":"123aeab1-a2e3-11e7-aeff-1b3da2d74321","name":"error_with_negatelines_and_lines","variables":[{"name":"user","variableType":"STRING","value":"virgil","type":"flexvariable"}],"isBlacklisted":false,"lines":["banner login hello - line 1 {{ user }}","banner login hello - line 2","exit"],"negateLines":["no banner login hello - line 1","no banner login hello - line 2 {{user }}","no banner login hello - line 3 {{user }}","no banner login hello - line 4 {{user }}"],"type":"flexconfigobject","links":{"self":"https://10.88.127.219:28643/api/fdm/v2/object/flexconfigobjects/123523e2-a2e3-11e7-aeff-41d2798f8321"}},{"id":"23","version":"","name":"test_deployment0","description":"test0","variables":[],"isBlacklisted":false,"lines":["object-network ww"],"negateLines":["no test"],"type":"flexconfigobject"},{"id":"23b376d8-7672-5159-a5c3-2bde8079c56b","version":"79f3ec67-13b6-5bb7-ade1-111791eb54e1","name":"test_deployment1","description":"test1","variables":[],"isBlacklisted":false,"lines":["object-network TestNew","line2","line3","line4","line5"],"negateLines":["no test"],"type":"flexconfigobject"},{"id":"eb4d512c-a2c1-11e7-a904-4dbbdaae4d62","version":"eb4d512b-a2c1-11e7-a904-5dbcfd211dbb","name":"Test_CLI_Template_2","description":"test","variables":[],"isBlacklisted":false,"lines":["test","ospf {{id}}","area {{area-id}}","area {{area-id}} nssa"],"negateLines":["no ospf {{id}}"],"type":"flexconfigobject","links":{"self":"https://10.88.127.213:2915/api/fdm/v2/object/flexconfigobjects/eb4d512c-a2c1-11e7-a904-4dbbdaae4d62"}},{"id":"33b376d8-7672-5159-a5c3","version":"79","name":"test_deployment2","description":"test1","variables":[],"isBlacklisted":false,"lines":["object-network TestNew","2line2","2line3","2line4","2line5"],"negateLines":["no test"],"type":"flexconfigobject"}],"type":"flexconfigpolicy"}},"FlexConfigPolicyWrapper":{"allOf":[{"$ref":"#/definitions/FlexConfigPolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"FlexVariable":{"type":"object","properties":{"name":{"type":"string"},"variableType":{"type":"object","$ref":"#/definitions/VariableType"},"value":{"type":"string"},"entityValue":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"flexvariable"}},"required":["variableType","name","type"]},"SmartCLIEntity":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"smartclientity"}},"required":["type"]},"CloudActionType":{"type":"string","enum":["TOKEN_ENROLL_CDO","AUTO_ENROLL_NETWORK_PARTICIPATION"]},"CloudManagement":{"type":"object","properties":{"version":{"type":"string"},"scheduleType":{"type":"object","$ref":"#/definitions/JobExecutionType"},"user":{"type":"string"},"forceOperation":{"type":"boolean"},"jobHistoryUuid":{"type":"string"},"ipAddress":{"type":"string"},"authToken":{"type":"string"},"action":{"type":"object","$ref":"#/definitions/CloudActionType"},"jobName":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"cloudmanagement"}},"required":["type"],"example":{"id":"cdb27d0b-f204-53a0-ad00-a4c137005229","type":"cloudmanagement","action":"TOKEN_ENROLL_CDO","authToken":"12343"}},"CloudManagementWrapper":{"allOf":[{"$ref":"#/definitions/CloudManagement"},{"$ref":"#/definitions/LinksWrapper"}]},"JobHistoryCloudManagement":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"jobhistorycloudmanagement"}},"required":["type"]},"JobHistoryCloudManagementWrapper":{"allOf":[{"$ref":"#/definitions/JobHistoryCloudManagement"},{"$ref":"#/definitions/LinksWrapper"}]},"CommunityEntryBase":{"type":"object","properties":{"action":{"type":"object","$ref":"#/definitions/EntryAction"},"type":{"type":"string","default":"communityentrybase"}},"required":["action","type"]},"ExpandedCommunityEntry":{"type":"object","properties":{"action":{"type":"object","$ref":"#/definitions/EntryAction"},"regularExpression":{"type":"string"},"type":{"type":"string","default":"expandedcommunityentry"}},"required":["regularExpression","action","type"]},"ExpandedCommunityList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/ExpandedCommunityEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"expandedcommunitylist"}},"required":["entries","type"],"example":{"id":"a32c162c-14cf-5a3b-9f9f-d159c46ea6c9","version":"03ef2d86-88d6-5c1c-a2b8-f7ef3cd48a43","name":"CLI Object 11","description":"Ujuzwu vih hadzaza urdu hu kopgezjeh etduc at tos otufugu ah caf dodo nuikra tuzkuada zunigob vezufek.","type":"expandedcommunitylist"}},"ExpandedCommunityListWrapper":{"allOf":[{"$ref":"#/definitions/ExpandedCommunityList"},{"$ref":"#/definitions/LinksWrapper"}]},"StandardCommunityEntry":{"type":"object","properties":{"action":{"type":"object","$ref":"#/definitions/EntryAction"},"communities":{"type":"array","items":{"type":"string"}},"internet":{"type":"boolean"},"noAdvertise":{"type":"boolean"},"noExport":{"type":"boolean"},"type":{"type":"string","default":"standardcommunityentry"}},"required":["noExport","action","type","internet","noAdvertise"]},"StandardCommunityList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/StandardCommunityEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"standardcommunitylist"}},"required":["entries","type"],"example":{"id":"50f826c5-a3c8-5c0f-8cfb-e3059574c0c9","version":"d5c1fe40-45ff-5bf7-8077-ed5163fcaee8","name":"CLI Object 6","description":"Javzi up fujrof dekde hok co paguga vo tic bafum japdu zot.","type":"standardcommunitylist"}},"StandardCommunityListWrapper":{"allOf":[{"$ref":"#/definitions/StandardCommunityList"},{"$ref":"#/definitions/LinksWrapper"}]},"DeviceHostname":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"hostname":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"devicehostname"}},"required":["type"],"example":{"id":"13f1111c-1352-5f49-9204-a305c12d3513","version":"4aab1990-0827-5fca-a54f-d61d01d755a5","hostname":"seegorekdij","type":"devicehostname"}},"DeviceHostnameWrapper":{"allOf":[{"$ref":"#/definitions/DeviceHostname"},{"$ref":"#/definitions/LinksWrapper"}]},"HTTPAccessList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"networkObjects":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"httpaccesslist"}},"required":["type"],"example":{"id":"09cc885b-7a5d-5060-9872-c219476c74dd","version":"e62db46c-c44c-5d6e-8b55-efe74d5d0d10","networkObjects":[{"id":"a820f102-7786-5e65-8b4e-66022cb061cd","name":"Network4","description":"Cutfuf ni ka viz vave cajto wouvirak rogzizde puk zogvintus jisaslit hos guvbujloc giivuzob fafanod.","version":"37093e3e-c4bb-5188-b023-e0f6a4d12463","type":"networkobject","subType":"HOST","value":"3eab:67af:0576:1163:4699:9d76:4a97:ca53","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}}],"type":"httpaccesslist"}},"HTTPAccessListWrapper":{"allOf":[{"$ref":"#/definitions/HTTPAccessList"},{"$ref":"#/definitions/LinksWrapper"}]},"SSHAccessList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"networkObjects":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"sshaccesslist"}},"required":["type"],"example":{"id":"a41a7140-579f-55a8-b4f5-a9839dba2cab","version":"55acd75d-4fd1-5345-ba06-62f3acc1a67c","networkObjects":[{"id":"4f342e19-761a-5d53-a7a6-471d1cf8e254","name":"Network9","description":"Ehibivje dac entikod lofimom dueku ozitakni rilgolpuv zezartim zilkeki bu mu ertum pol vuodle bemah fegbat.","version":"779130e6-7166-5b4e-91f2-d2d92dd952ec","type":"networkobject","subType":"NETWORK","value":"129.1.1.0/255.255.255.0","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"b483d38e-bce7-5bb7-9769-57ec8151bd4f","name":"Network12","description":"Tikafnaz lujis rirunuf sehi ubfewe kabhili zota funfof zagujnuf mel ejejegto fihjunmu ma funah va.","version":"3132162a-9791-5f26-9146-79add126c19f","type":"networkobject","subType":"NETWORK","value":"23.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":true}},{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}}],"type":"sshaccesslist"}},"SSHAccessListWrapper":{"allOf":[{"$ref":"#/definitions/SSHAccessList"},{"$ref":"#/definitions/LinksWrapper"}]},"WebUICertificate":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"certificate":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"webuicertificate"}},"required":["certificate","type"],"example":{"id":"63a5cb52-dcaf-5bf2-81e5-35333a388639","certificate":{"id":"ec573461-9775-5ad8-b2c9-2a611a94a301","name":"InternalCertificate7","cert":"-----BEGIN CERTIFICATE-----\nMIIDEjCCAnugAwIBAgIJAJ69cfUJsifzMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD\nVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQL\nDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkq\nhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQ0NTJaFw0x\nNjA0MDUxNDQ0NTJaMIGVMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDzAN\nBgNVBAcMBkF1c3RpbjEVMBMGA1UECgwMQURJIGF0IENpc2NvMQwwCgYDVQQLDANB\nREkxHTAbBgNVBAMMFEFESSBUZXN0aW5nIEF0IENpc2NvMSEwHwYJKoZIhvcNAQkB\nFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\nAKk6jiG3XImaQNnVe1zeRbchMVbpBxdDYIRt0Eqvl2HqfAZJDKSw+s080iMC5Dmg\nTvOaZYaf4rc92z/WpMTgiOxmwKLhaw1INzBptxc4JoQPNFG4qUSVIHW9mnoXwluo\naXypJKAgeLukuO5tdUj9Iy4IHabMmJxcQsZ1vJ65cIH5AgMBAAGjezB5MAkGA1Ud\nEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj\nYXRlMB0GA1UdDgQWBBROqbPMUm6cUg+E/ficJa8WkdhcwzAfBgNVHSMEGDAWgBRD\nXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBaoTmcEb14AIcd\nq6R34phLlDP1JRV54NQ5gTXK858dyRE41CHensHSwXlHUg2JJ/LuUhK7h+ST1Qhy\nkFCHNQHh9ojRK34ydIIltGaGGCIZDEgUqhc7IeZ/PSR5252vQaAwDWDxapA2ZsVo\nr9OY0Q7uuCLvNNiQQzvjlnQZ94Rp4A==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqsrdtuAzs/APtjiJefyhxCnheLOFOP8BfvtcdfFNFVj3RP5n30AYGmTT31dTLPeA4dYHgthUImKkxcWIOuJqHlLrEo3fmfEbhy8KehfQ0Pfy+4K/QTB7NU28/K9Hr0Mwz6bUuboby/BvIi1u/ZIzl5KlmJBz/cQMPonD2hte2fwvkqCfhpNl25tMzEpyqCAa4tciUqSXf0Zs63XtcVPBpuGN6vU0QllqxLbzsQ7ShwymBiLnUqX95tWkJCrRIfklEwlbTXyRM5NSjk6EdZeDfX5OHexV4AodbtGZSeQYU7s2vs50khtIWVGr+14dPguWf9ggMCRoX+B9RogfV03IVAgMBAAECggEAfwLTsXQNShiK46uqrx12fgYIYiqKyqps/dEGRw5G94SgIp5sdhP3J9m/q9kTqNa1i80Dgqx5IhhVbFCtYb7CXLex8LahdIJsS35NpZ6OgoDNG0ocB6VcFfNLB3oXjJukFcyD37Sl/Q7RrXrkHZk3radi1Hlyii8Q1AVOgGD9CPBwRaBrjAuJXunJRSnzJ1MuV29PoNSOcQ0o+q26JkZaTcFHt/iVdeBiKFEyfwd6oWTkpRQiUD+Xi/P9XkYud1nou64dvw6XIDpsV7uX07OASHk1fuQjDJLwyO4KlcWBzNb6Z1sE6l1EqHcZKqijcYISElzPGTEVlDkXAT5YxiIjAQKBgQDVYP/8obthBaUBFVkPaZNUzLsjyv9ONOWVHIzw9YVOmC7v2WdrnDgoBkNaV4SdCOYsJW+887nA6zK2208DlRea1fAcZWgItRqvJi9wiqtZAS1BCC+tTliYS3x/wqmFyFRqLK4dIqpbZ52+vEoEMgrDJmzG7k7aXjAm9+JH+MqfBQKBgQDMy0KcdA68h5VlbifLnMbQUJO7Zy081Tdbpgnf02/PaC/HHbYnbn/hWv8TTuoBcEDkh0nl3JRmPKMyF+Aeqj5Xd6A4znRQXq9ZPcOyKYw08VGkf4m41mm2Iq7HcSwhZFlWZWfA3cCU+Z5eTVY7RBQjoJ8Qk6LyRjAmlA5xiMVT0QKBgGVDeXjtUD3FLf+LoA5+bhsqZg2ggvUciW/wcrrP6gnYkz3kkP4yzzu/bStsqVTVKlb9FUA48oiplhHNlnv+v4sNyLvRLEQlnppMpurkBFljA5T/S5EVw1nTSSxgt47z+YvB1IejMfHbBLPGK+I91XmzvJ/T7LwZQwTbUxoQ6if5AoGBAMuoErzteT4pAvuUWQTWCqxchR1nVIhbbKq6arVoWZeDf4fe1ydNbuSXjnQQFQuLKy1YELgC7JzjDlOhhKJaIJbxAqebP/YwwuXXU0ZYpPJ9TPhuUHI833Fd+juiIwWt+l29iDk3DO3ZcpFLDUbww6pOcACXIQMXo4ip0dc78SgRAoGAEb7FK7hqFmBk24Pu5vzKE/BYYD1mY17+zmeFocn2vu89jLYvRGYrvuGn9TgD3zeXjNsAqbMW8Td5F3xnMJ3JHhnAQHd1Wh5VROsXfhtT/Uhl4eCGEkKqM+EEBD6Z3UsZbNFRGEl1xThzdwchLt0WNTD9kuoxWkjV3hjPBnkJlvk=-----END PRIVATE KEY-----","issuerCommonName":"FTD OnBox Team Testing at Cisco","issuerOrganizationUnit":"FTD","subjectCommonName":"FTD Testing At Cisco","subjectOrganization":"FTD at Cisco","subjectOrganizationUnit":"FTD","validityStartDate":"Apr 6 14:44:52 2015 GMT","validityEndDate":"Feb 16 14:44:52 2017 GMT","type":"internalcertificate","version":"265ea6f9-3d63-5a96-b340-a794cf92aee4"},"version":"c2b7b87a-4fcb-511d-bf6c-becbaf5b78aa","type":"webuicertificate"}},"ConsoleLogFilter":{"type":"object","properties":{"loggingEnabled":{"type":"boolean"},"severityLogLevel":{"type":"object","$ref":"#/definitions/SeverityLogLevelType"},"type":{"type":"string","default":"consolelogfilter"}},"required":["type"]},"DNSServer":{"type":"object","properties":{"ipAddress":{"type":"string"},"type":{"type":"string","default":"dnsserver"}},"required":["ipAddress","type"]},"DNSServerGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"dnsServers":{"type":"array","items":{"type":"object","$ref":"#/definitions/DNSServer"}},"timeout":{"type":"integer"},"retries":{"type":"integer"},"searchDomain":{"type":"string"},"systemDefined":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"dnsservergroup"}},"required":["dnsServers","type"],"example":{"id":"519d6992-9345-546e-9249-9b48f9ecf5a8","version":"875d4612-0f84-51cc-a45e-e74a2bc27f8e","name":"DNS-Server-Group-1","searchDomain":"Cisco","systemDefined":false,"retries":5,"timeout":28,"dnsServers":[{"ipAddress":"146.255.203.19","type":"dnsserver"},{"ipAddress":"56.211.60.159","type":"dnsserver"},{"ipAddress":"9.194.230.227","type":"dnsserver"}],"type":"dnsservergroup"}},"DNSServerGroupWrapper":{"allOf":[{"$ref":"#/definitions/DNSServerGroup"},{"$ref":"#/definitions/LinksWrapper"}]},"DataDNSSettings":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"pollTimer":{"type":"integer"},"expiryEntryTimer":{"type":"integer"},"dnsServerGroup":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"interfaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"type":{"type":"string","default":"datadnssettings"}},"required":["type"],"example":{"id":"e8a1376e-e750-554b-8b2d-5ded1a04497d","version":"bb22ae0d-d42e-5feb-ab89-173772574747","name":"DataDNSSettings","interfaces":[{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},{"mtu":5818,"enabled":false,"description":"Jigiz malko navsup bojga widbihi vatel vahuwuta ugi bopuru duzwar zopi juinoito sibkonac fozgojmi toopu nurhiru ce joeho.","name":"inside","id":"bddde0e1-1b1f-5f42-b9b7-7c72d9099ef4","hardwareName":"GigabitEthernet1/1","macAddress":"ECFB.7E12.09E1","monitorInterface":true,"standbyMacAddress":"A09D.B513.9683","version":"69f9f38e-0479-58d1-961c-e4040d439200","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"}],"dnsServerGroup":{"id":"519d6992-9345-546e-9249-9b48f9ecf5a8","version":"875d4612-0f84-51cc-a45e-e74a2bc27f8e","name":"DNS-Server-Group-1","searchDomain":"Cisco","systemDefined":false,"retries":5,"timeout":28,"dnsServers":[{"ipAddress":"146.255.203.19","type":"dnsserver"},{"ipAddress":"56.211.60.159","type":"dnsserver"},{"ipAddress":"9.194.230.227","type":"dnsserver"}],"type":"dnsservergroup"},"pollTimer":240,"expiryEntryTimer":1,"type":"datadnssettings"}},"DataDNSSettingsWrapper":{"allOf":[{"$ref":"#/definitions/DataDNSSettings"},{"$ref":"#/definitions/LinksWrapper"}]},"DataInterfaceManagementAccess":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"networkObjects":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"networkInterface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"protocols":{"type":"array","items":{"type":"object","$ref":"#/definitions/DataInterfaceAccessProtocol"}},"id":{"type":"string"},"type":{"type":"string","default":"datainterfacemanagementaccess"}},"required":["networkObjects","networkInterface","protocols","type"],"example":{"id":"d11fca89-18f1-5604-94c1-e485ce14c035","version":"d24f81f5-6305-50dc-8426-98a749024ba6","protocols":["SSH"],"networkInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"networkObjects":[{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}}],"type":"datainterfacemanagementaccess"}},"DataInterfaceManagementAccessWrapper":{"allOf":[{"$ref":"#/definitions/DataInterfaceManagementAccess"},{"$ref":"#/definitions/LinksWrapper"}]},"DeviceDNSSettings":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"dnsServerGroup":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"devicednssettings"}},"required":["type"],"example":{"id":"b61dadab-f7ed-5888-87f1-fe305d982cc5","version":"14b275fc-df3d-51c7-8196-7c8c87bcbfc9","name":"padgautemu","type":"devicednssettings"}},"DeviceDNSSettingsWrapper":{"allOf":[{"$ref":"#/definitions/DeviceDNSSettings"},{"$ref":"#/definitions/LinksWrapper"}]},"DeviceLogSettings":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"deviceLoggingEnabled":{"type":"boolean"},"consoleLogFilter":{"type":"object","$ref":"#/definitions/ConsoleLogFilter"},"syslogServerLogFilter":{"type":"object","$ref":"#/definitions/SyslogServerLogFilter"},"id":{"type":"string"},"type":{"type":"string","default":"devicelogsettings"}},"required":["type"],"example":{"id":"67626e00-c098-5f9c-a675-1ebc4d469f79","version":"8ca81f76-5e43-54f9-9570-1864615e7a61","deviceLoggingEnabled":false,"consoleLogFilter":{"loggingEnabled":false,"severityLogLevel":"EMERGENCY","type":"consolelogfilter"},"syslogServerLogFilter":{"loggingEnabled":false,"severityLogLevel":"EMERGENCY","type":"syslogserverlogfilter"},"type":"devicelogsettings"}},"DeviceLogSettingsWrapper":{"allOf":[{"$ref":"#/definitions/DeviceLogSettings"},{"$ref":"#/definitions/LinksWrapper"}]},"SyslogServer":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"deviceInterface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"useManagementInterface":{"type":"boolean"},"protocol":{"type":"object","$ref":"#/definitions/SyslogServerProtocolType"},"id":{"type":"string"},"host":{"type":"string"},"port":{"type":"string"},"type":{"type":"string","default":"syslogserver"}},"required":["protocol","host","type"],"example":{"id":"ba53d5c6-8f89-5f6d-8c93-40057bb67dfb","version":"f0ab7ee0-55a2-56cb-be0d-95aed23f579d","host":"77.225.87.129","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Dib wohomfa it firasugu joev ge nu dab caejuja ba no owezru rijbofnuv da ren.","name":"outside","id":"056580af-b7b5-5ea4-9434-84acde7b7b2b","hardwareName":"GigabitEthernet1/2","macAddress":"B807.AD9D.0E4C","monitorInterface":false,"standbyMacAddress":"8F66.A03C.5C85","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"398d:4979:fd8c:5c79:130d:af73:39ac:575b/32","ipAddress":"0e08:b1ea:5a22:75ba:8e01:eaed:3442:684c/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"264c:f9d4:85a8:fdee:b56d:4b03:96d7:6285","ipAddress":"d0f4:3235:0882:22a2:f8c8:c2db:683c:9639"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"178.90.249.165","standbyIpAddress":"41.101.191.177"}},"version":"53c69bde-efdf-5307-96bb-1d0c92bec9a5","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"UP","mode":"PASSIVE","type":"physicalinterface"},"protocol":"TCP","useManagementInterface":false,"type":"syslogserver"}},"SyslogServerWrapper":{"allOf":[{"$ref":"#/definitions/SyslogServer"},{"$ref":"#/definitions/LinksWrapper"}]},"SyslogServerLogFilter":{"type":"object","properties":{"loggingEnabled":{"type":"boolean"},"severityLogLevel":{"type":"object","$ref":"#/definitions/SeverityLogLevelType"},"syslogServers":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"type":{"type":"string","default":"syslogserverlogfilter"}},"required":["type"]},"DataInterfaceAccessProtocol":{"type":"string","enum":["HTTPS","SSH"]},"SeverityLogLevelType":{"type":"string","enum":["EMERGENCY","ALERT","CRITICAL","ERROR","WARNING","NOTIFICATION","INFORMATIONAL","DEBUG"]},"SyslogServerProtocolType":{"type":"string","enum":["TCP","UDP"]},"BaseDiff":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","default":"BaseDiff"}},"required":["type"]},"BaseEntityDiff":{"type":"object","properties":{"entityId":{"type":"string"},"entityType":{"type":"string"},"entityName":{"type":"string"},"type":{"type":"string","default":"BaseEntityDiff"}},"required":["type"]},"BaseEntityDiffWrapper":{"allOf":[{"$ref":"#/definitions/BaseEntityDiff"},{"$ref":"#/definitions/LinksWrapper"}]},"EntityCreate":{"type":"object","properties":{"entityId":{"type":"string"},"entityType":{"type":"string"},"entityName":{"type":"string"},"referencesAdded":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceUpdate"}},"valuesAdded":{"type":"array","items":{"type":"object","$ref":"#/definitions/ValueAdd"}},"type":{"type":"string","default":"EntityCreate"}},"required":["type"]},"EntityDelete":{"type":"object","properties":{"entityId":{"type":"string"},"entityType":{"type":"string"},"entityName":{"type":"string"},"referencesDeleted":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceUpdate"}},"valuesDeleted":{"type":"array","items":{"type":"object","$ref":"#/definitions/ValueDelete"}},"type":{"type":"string","default":"EntityDelete"}},"required":["type"]},"EntityDiffAnalyserResult":{"type":"object","properties":{"created":{"type":"object","$ref":"#/definitions/EntityCreate"},"updated":{"type":"object","$ref":"#/definitions/EntityUpdate"},"deleted":{"type":"object","$ref":"#/definitions/EntityDelete"},"type":{"type":"string","default":"EntityDiffAnalyserResult"}},"required":["type"]},"EntityUpdate":{"type":"object","properties":{"entityId":{"type":"string"},"entityType":{"type":"string"},"entityName":{"type":"string"},"referencesDeleted":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceUpdate"}},"referencesAdded":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceUpdate"}},"valuesDeleted":{"type":"array","items":{"type":"object","$ref":"#/definitions/ValueDelete"}},"valuesAdded":{"type":"array","items":{"type":"object","$ref":"#/definitions/ValueAdd"}},"valuesUpdated":{"type":"array","items":{"type":"object","$ref":"#/definitions/ValueUpdate"}},"type":{"type":"string","default":"EntityUpdate"}},"required":["type"],"example":{"entityId":"8b9bc086-1d36-11e8-82df-0d179a47a356","entityType":"intrusionpolicy","entityName":"Connectivity Over Security","referencesAdded":[],"valuesAdded":[{"fieldName":"overriddenRules[0].message","newValue":"SQL sa login failed","type":"valueadd"},{"fieldName":"overriddenRules[0].ruleState","newValue":"ALERT","type":"valueadd"}],"type":"entityupdate","referencesDeleted":[],"valuesDeleted":[],"valuesUpdated":[]}},"ReferenceUpdate":{"type":"object","properties":{"fieldName":{"type":"string"},"entityName":{"type":"string"},"entityType":{"type":"string"},"type":{"type":"string","default":"ReferenceUpdate"}},"required":["type"]},"ValueAdd":{"type":"object","properties":{"fieldName":{"type":"string"},"newValue":{"type":"string"},"type":{"type":"string","default":"ValueAdd"}},"required":["type"]},"ValueDelete":{"type":"object","properties":{"fieldName":{"type":"string"},"oldValue":{"type":"string"},"type":{"type":"string","default":"ValueDelete"}},"required":["type"]},"ValueUpdate":{"type":"object","properties":{"fieldName":{"type":"string"},"oldValue":{"type":"string"},"newValue":{"type":"string"},"type":{"type":"string","default":"ValueUpdate"}},"required":["type"]},"ChangePasswordStatus":{"type":"object","properties":{"version":{"type":"string"},"nextPage":{"type":"string"},"currentPage":{"type":"string"},"taskComplete":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"changepasswordstatus"}},"required":["type"]},"EasySetupBase":{"type":"object","properties":{"version":{"type":"string"},"nextPage":{"type":"string"},"currentPage":{"type":"string"},"taskComplete":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"easysetupbase"}},"required":["type"]},"EasySetupPages":{"type":"string","enum":["EULA","PASSWORD","NETWORK","DASHBOARD"]},"EasySetupStatus":{"type":"object","properties":{"version":{"type":"string"},"nextPage":{"type":"string"},"currentPage":{"type":"string"},"taskComplete":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"easysetupstatus"}},"required":["type"]},"InitialProvision":{"type":"object","properties":{"version":{"type":"string"},"acceptEULA":{"type":"boolean"},"eulaText":{"type":"string"},"currentPassword":{"type":"string","default":"*********"},"newPassword":{"type":"string","default":"*********"},"id":{"type":"string"},"type":{"type":"string","default":"initialprovision"}},"required":["type"]},"InitialProvisionWrapper":{"allOf":[{"$ref":"#/definitions/InitialProvision"},{"$ref":"#/definitions/LinksWrapper"}]},"BackupLocation":{"type":"string","enum":["DEFAULT","SDCARD"]},"BackupStateType":{"type":"string","enum":["BACKUP_NEW","BACKUP_RESTORED","BACKUP_RESTORED_NEW","NONE"]},"CannedFilePolicy":{"type":"string","enum":["BLOCK_MALWARE_ALL","CLOUD_LOOKUP_ALL","BLOCK_OFFICE_DOCUMENTS_PDF_UPLOAD_BLOCK_MALWARE_OTHERS","BLOCK_OFFICE_DOCUMENTS_UPLOAD_BLOCK_MALWARE_OTHERS"]},"JobExecutionType":{"type":"string","enum":["NONE","IMMEDIATE","DAILY","WEEKLY","MONTHLY","SINGLE","CRON","HOURLY"]},"HABreakStatus":{"type":"object","properties":{"statusMessage":{"type":"string"},"cliErrorMessage":{"type":"string"},"state":{"type":"object","$ref":"#/definitions/DeploymentStatus$DeploymentState"},"queuedTime":{"type":"integer"},"startTime":{"type":"integer"},"endTime":{"type":"integer"},"statusMessages":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"modifiedObjects":{"type":"object"}}},"HAConfigStatus":{"type":"string","enum":["IN_SYNC","PRIMARY_IMPORTING_CONFIG","SECONDARY_IMPORTING_CONFIG","OUT_OF_SYNC","UNKNOWN"]},"HAConfiguration":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"nodeRole":{"type":"object","$ref":"#/definitions/HANodeRole"},"failoverInterface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"failoverName":{"type":"string"},"primaryFailoverIPv4":{"type":"object","$ref":"#/definitions/IPv4Address"},"secondaryFailoverIPv4":{"type":"object","$ref":"#/definitions/IPv4Address"},"primaryFailoverIPv6":{"type":"object","$ref":"#/definitions/IPv6Address"},"secondaryFailoverIPv6":{"type":"object","$ref":"#/definitions/IPv6Address"},"statefulFailoverInterface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"statefulFailoverName":{"type":"string"},"primaryStatefulFailoverIPv4":{"type":"object","$ref":"#/definitions/IPv4Address"},"secondaryStatefulFailoverIPv4":{"type":"object","$ref":"#/definitions/IPv4Address"},"primaryStatefulFailoverIPv6":{"type":"object","$ref":"#/definitions/IPv6Address"},"secondaryStatefulFailoverIPv6":{"type":"object","$ref":"#/definitions/IPv6Address"},"sharedKey":{"type":"string","default":"*********"},"id":{"type":"string"},"type":{"type":"string","default":"haconfiguration"}},"required":["statefulFailoverInterface","nodeRole","failoverName","statefulFailoverName","failoverInterface","type"],"example":{"id":"cfe11bdd-4a3f-5167-96ff-c7709fb6851d","version":"1615f093-c778-5b0e-a6ca-04d288fb6609","name":"HA","nodeRole":"HA_PRIMARY","sharedKey":"sharedKeyPassword","primaryFailoverIPv4":{"ipAddress":"111.194.235.188","netmask":"255.255.255.0","type":"ipv4address"},"secondaryFailoverIPv4":{"ipAddress":"97.65.0.6","netmask":"255.255.255.0","type":"ipv4address"},"primaryStatefulFailoverIPv6":{"ipAddress":"efa6:48b0:1e0a:79a7:8b3c:e0be:be05:76e9/32","type":"ipv6address"},"secondaryStatefulFailoverIPv6":{"ipAddress":"d125:b4a8:c630:d042:6217:3929:ba90:7c72/32","type":"ipv6address"},"failoverInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"statefulFailoverInterface":{"mtu":5818,"enabled":true,"description":"Wonca cotfo biok ugfejbah ro itedere itoh pijazu ocozojgi buk facheuho zo.","id":"ef57753e-8a0c-5454-a3b3-fbc3c570851d","hardwareName":"GigabitEthernet1/3","macAddress":"34B5.AF3E.B9E9","monitorInterface":true,"standbyMacAddress":"4AF5.3F46.87FE","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"da83:da11:93ff:4f56:084e:f1c1:269c:0dd0/32","ipAddress":"831e:6e6b:281e:8b10:94d0:03f1:b4d5:3373/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"6a3f:c0b2:5d20:fdb6:945d:bcd1:a144:7558","ipAddress":"af4f:d5f4:67bb:3263:e183:fc6c:ea34:f2e6"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"204.8.215.52","standbyIpAddress":"108.106.112.194"}},"version":"46c1bc9f-9a0a-5425-8dc2-3a04dd84c3f1","managementInterface":false,"managementOnly":false,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"ROUTED","type":"physicalinterface","subInterfaces":[{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},{"mtu":2652,"enabled":false,"description":"Tamewjal som sekishek ojdoho ronewdur ku kazut sek domnihan kuduc lopipe gikhil.","name":"subinterface14name","id":"738d334a-80c7-54a2-a794-480649439bc5","hardwareName":"SubInterface0/14.15","macAddress":"4148.8A3F.4184","monitorInterface":false,"standbyMacAddress":"D7D6.49C1.C24B","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"d045:86b5:2ae3:c15b:18ff:cec3:1551:f181/32","ipAddress":"fd7b:8d17:d6e4:a434:6347:c069:fb49:07e5/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"10aa:438f:fe45:9a4f:7d50:7008:e90c:36b8","ipAddress":"96cc:b8d1:3e93:fa8c:04de:4571:c8d7:f854"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"50.25.199.74","standbyIpAddress":"213.65.202.100"}},"version":"f0ad8c22-a87f-5f0a-9a4f-fc00a09d2773","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}]},"type":"haconfiguration"}},"HAConfigurationWrapper":{"allOf":[{"$ref":"#/definitions/HAConfiguration"},{"$ref":"#/definitions/LinksWrapper"}]},"HAFailoverConfiguration":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"peerPollTime":{"type":"object","$ref":"#/definitions/Time"},"peerHoldTime":{"type":"object","$ref":"#/definitions/Time"},"interfacePollTime":{"type":"object","$ref":"#/definitions/Time"},"interfaceHoldTime":{"type":"object","$ref":"#/definitions/Time"},"interfaceFailureThreshold":{"type":"integer"},"interfaceFailureUnit":{"type":"object","$ref":"#/definitions/HAFailoverConfiguration$InterfaceFailureUnits"},"id":{"type":"string"},"type":{"type":"string","default":"hafailoverconfiguration"}},"required":["peerPollTime","interfaceFailureThreshold","interfaceHoldTime","peerHoldTime","type","interfaceFailureUnit","interfacePollTime"],"example":{"id":"31aba24a-eca6-5a21-ba28-cb22b31d210b","version":"334419d3-f9b9-5840-92e2-d2870f51af75","interfaceFailureUnit":"NUMBER","interfaceFailureThreshold":90,"interfacePollTime":{"value":9,"timeUnit":"SECONDS","type":"time"},"interfaceHoldTime":{"value":46,"timeUnit":"SECONDS","type":"time"},"peerPollTime":{"value":465,"timeUnit":"MILLISECONDS","type":"time"},"peerHoldTime":{"value":824,"timeUnit":"MILLISECONDS","type":"time"},"type":"hafailoverconfiguration"}},"HAFailoverConfigurationWrapper":{"allOf":[{"$ref":"#/definitions/HAFailoverConfiguration"},{"$ref":"#/definitions/LinksWrapper"}]},"HAFailoverConfiguration$InterfaceFailureUnits":{"type":"string","enum":["NUMBER","PERCENTAGE"]},"HAHealthStatus":{"type":"string","enum":["HEALTHY","PROCESSING","UNHEALTHY","CRITICAL"]},"HAJoinStatus":{"type":"object","properties":{"statusMessage":{"type":"string"},"cliErrorMessage":{"type":"string"},"state":{"type":"object","$ref":"#/definitions/DeploymentStatus$DeploymentState"},"queuedTime":{"type":"integer"},"startTime":{"type":"integer"},"endTime":{"type":"integer"},"statusMessages":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"modifiedObjects":{"type":"object"}}},"HANodeRole":{"type":"string","enum":["HA_PRIMARY","HA_SECONDARY"]},"HANodeState":{"type":"string","enum":["SINGLE_NODE","HA_ACTIVE_NODE","HA_STANDBY_NODE","HA_SUSPENDED_NODE","HA_FAILED_NODE","HA_CONFIGURATION_SYNC","HA_NEGOTIATING_NODE","HA_DISABLED_NODE","HA_UNKNOWN_NODE"]},"HAStatus":{"type":"object","properties":{"nodeRole":{"type":"object","$ref":"#/definitions/HANodeRole"},"nodeState":{"type":"object","$ref":"#/definitions/HANodeState"},"peerNodeState":{"type":"object","$ref":"#/definitions/HANodeState"},"configStatus":{"type":"object","$ref":"#/definitions/HAConfigStatus"},"haHealthStatus":{"type":"object","$ref":"#/definitions/HAHealthStatus"},"id":{"type":"string"},"type":{"type":"string","default":"HAStatus"}},"required":["type"],"example":{"id":"default","version":"00371765-7dc2-5f34-a252-1492846dce91","name":"HA","nodeRole":"HA_PRIMARY","nodeState":"SINGLE_NODE","configStatus":"IN_SYNC","haHealthStatus":"HEALTHY","peerNodeState":"HA_STANDBY_NODE","type":"hastatus"}},"HAStatusWrapper":{"allOf":[{"$ref":"#/definitions/HAStatus"},{"$ref":"#/definitions/LinksWrapper"}]},"DiskUsage":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"type":{"type":"string","default":"DiskUsage"},"used":{"type":"integer"},"free":{"type":"integer"},"total":{"type":"integer"}},"required":["type"]},"DiskUsageWrapper":{"allOf":[{"$ref":"#/definitions/DiskUsage"},{"$ref":"#/definitions/LinksWrapper"}]},"EpsReportItem":{"type":"object","properties":{"timestamp":{"type":"integer"},"avgEps":{"type":"integer"}}},"PercentUsageReportItem":{"type":"object","properties":{"timestamp":{"type":"integer"},"avgUsage":{"type":"number"}}},"ReportItem":{"type":"object","properties":{"timestamp":{"type":"integer"}}},"ReportItemAttribute":{"type":"object","properties":{"attribute":{"type":"string"},"type":{"type":"string","default":"reportitemattribute"},"units":{"type":"string"}},"required":["type"]},"ThroughputReportItem":{"type":"object","properties":{"timestamp":{"type":"integer"},"interfaceThroughput":{"type":"integer"},"interfaceName":{"type":"string"}}},"TrendingReport":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"type":{"type":"string","default":"TrendingReport"},"items":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReportItem"}},"metadata":{"type":"object"}},"required":["type"]},"TrendingReportWrapper":{"allOf":[{"$ref":"#/definitions/TrendingReport"},{"$ref":"#/definitions/LinksWrapper"}]},"IPPrefixEntry":{"type":"object","properties":{"action":{"type":"object","$ref":"#/definitions/EntryAction"},"sequence":{"type":"integer"},"ipAddress":{"type":"string"},"minPrefixLength":{"type":"integer"},"maxPrefixLength":{"type":"integer"},"type":{"type":"string","default":"ipprefixentry"}},"required":["sequence","ipAddress","action","type"]},"IPV4PrefixList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/IPPrefixEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"ipv4prefixlist"}},"required":["entries","type"],"example":{"id":"37c637c3-a289-5181-aaaa-6535d3f21707","version":"e8f995e7-8b50-5f19-8ef7-fd21fcb4fd63","name":"CLI Object 26","description":"Wek tehko bir zobos lupi lo kair tefegiw rivawde gu otnuwun sebot owzeg.","type":"ipv4prefixlist"}},"IPV4PrefixListWrapper":{"allOf":[{"$ref":"#/definitions/IPV4PrefixList"},{"$ref":"#/definitions/LinksWrapper"}]},"IPV6PrefixList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/IPPrefixEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"ipv6prefixlist"}},"required":["entries","type"],"example":{"id":"c4c5a452-abb8-5961-818c-423f051cbfa3","version":"66316bf1-8f40-57df-a5e3-c5d9a16b080c","name":"CLI Object 31","description":"Ide li sopa mejitukij ku wujzuhuko zolos zawib dijkin nolog uw ruknor.","type":"ipv6prefixlist"}},"IPV6PrefixListWrapper":{"allOf":[{"$ref":"#/definitions/IPV6PrefixList"},{"$ref":"#/definitions/LinksWrapper"}]},"Links":{"type":"object","properties":{"self":{"type":"string"}}},"LinksReference":{"type":"object","properties":{"links":{"type":"object","$ref":"#/definitions/Links"}}},"PolicyList":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"action":{"type":"object","$ref":"#/definitions/EntryAction"},"interfaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"standardAccessListAddresses":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv4PrefixListAddresses":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"standardAccessListNextHops":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv4PrefixListNextHops":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"standardAccessListRouteSources":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv4PrefixListRouteSources":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"asPathLists":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"communityLists":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"matchCommunityExactly":{"type":"boolean"},"metric":{"type":"integer"},"tag":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"policylist"}},"required":["matchCommunityExactly","action","type"],"example":{"id":"5ff217d2-c589-5550-a573-9010287ae5c1","version":"4b679f50-92c0-5dae-9d57-d01d2fc7711b","name":"CLI Object 36","description":"Niw sipi ubo sedtit orco gurovru ar mo zimesfi zojtocef ra kiras.","type":"policylist"}},"PolicyListWrapper":{"allOf":[{"$ref":"#/definitions/PolicyList"},{"$ref":"#/definitions/LinksWrapper"}]},"EntryOriginType":{"type":"string","enum":["LOCAL_IGP","INCOMPLETE"]},"IPV4NextHopType":{"type":"string","enum":["USE_PEER_ADDRESS","SPECIFIC_IP"]},"IPV6NextHopType":{"type":"string","enum":["USE_PEER_ADDRESS","SPECIFIC_IP"]},"RouteMap":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/RouteMapEntry"}},"id":{"type":"string"},"type":{"type":"string","default":"routemap"}},"required":["entries","type"],"example":{"id":"06513fe8-452f-5d24-9afd-6090f975b23e","version":"20e9b1a6-eb53-5bdc-b8d4-95d9df489618","name":"CLI Object 41","description":"Ji la sotza carcifrok zerecug ipeli bozzam noj mo ucizulu ti cuf filueg podu jimcebpe deceb isfu dugopo.","type":"routemap"}},"RouteMapWrapper":{"allOf":[{"$ref":"#/definitions/RouteMap"},{"$ref":"#/definitions/LinksWrapper"}]},"RouteMapEntry":{"type":"object","properties":{"sequence":{"type":"integer"},"action":{"type":"object","$ref":"#/definitions/EntryAction"},"interfaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv4AccessListAddresses":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv4PrefixListAddresses":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv4AccessListNextHops":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv4PrefixListNextHops":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv4AccessListRouteSources":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv4PrefixListRouteSources":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ipv6AccessListAddress":{"type":"object","$ref":"#/definitions/ReferenceModel"},"ipv6PrefixListAddress":{"type":"object","$ref":"#/definitions/ReferenceModel"},"ipv6AccessListNextHop":{"type":"object","$ref":"#/definitions/ReferenceModel"},"ipv6PrefixListNextHop":{"type":"object","$ref":"#/definitions/ReferenceModel"},"ipv6AccessListRouteSource":{"type":"object","$ref":"#/definitions/ReferenceModel"},"ipv6PrefixListRouteSource":{"type":"object","$ref":"#/definitions/ReferenceModel"},"asPathLists":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"communityLists":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"policyLists":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"metricRouteValues":{"type":"array","items":{"type":"integer"}},"tagValues":{"type":"array","items":{"type":"integer"}},"routeTypeExternal1":{"type":"boolean"},"routeTypeExternal2":{"type":"boolean"},"routeTypeInternal":{"type":"boolean"},"routeTypeLocal":{"type":"boolean"},"routeTypeNSSAExternal1":{"type":"boolean"},"routeTypeNSSAExternal2":{"type":"boolean"},"metricBandwidth":{"type":"integer"},"metricType":{"type":"object","$ref":"#/definitions/RouteMetricType"},"asPathPrependASPath":{"type":"array","items":{"type":"integer"}},"asPathPrependLastASToASPath":{"type":"integer"},"asPathConvertRouteTagIntoASPath":{"type":"boolean"},"communityListSetting":{"type":"integer"},"communityListSettingInternet":{"type":"boolean"},"communityListSettingNoAdvertise":{"type":"boolean"},"communityListSettingNoExport":{"type":"boolean"},"automaticTagSetting":{"type":"boolean"},"localPreferenceSetting":{"type":"integer"},"weightSetting":{"type":"integer"},"originSetting":{"type":"object","$ref":"#/definitions/EntryOriginType"},"nextHopIPV4Setting":{"type":"object","$ref":"#/definitions/IPV4NextHopType"},"specificIPsIPV4Setting":{"type":"array","items":{"type":"string"}},"prefixListIPV4Setting":{"type":"object","$ref":"#/definitions/ReferenceModel"},"nextHopIPV6Setting":{"type":"object","$ref":"#/definitions/IPV6NextHopType"},"specificIPsIPV6Setting":{"type":"array","items":{"type":"string"}},"prefixListIPV6Setting":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"routemapentry"}},"required":["communityListSettingNoExport","routeTypeNSSAExternal1","automaticTagSetting","type","routeTypeNSSAExternal2","sequence","routeTypeExternal2","routeTypeExternal1","communityListSettingNoAdvertise","action","routeTypeInternal","routeTypeLocal","asPathConvertRouteTagIntoASPath","communityListSettingInternet"]},"RouteMetricType":{"type":"string","enum":["INTERNAL","TYPE1","TYPE2"]},"BGP":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"asNumber":{"type":"string","description":"Unique Autonomous number that enables bgp process. Valid values for autonomous number are from 1-4294967295 and 1.0-XX.YY."},"maxasLimit":{"type":"integer","description":"Specifies the maximum number of Autonomous system segments allowed. Valid values are from 1 to 254."},"logNeighborChanges":{"type":"boolean","description":"Logs the neighbor status. If true, enables the logging of neighbor change messages. Default value is true."},"transportPathMtuDiscovery":{"type":"boolean","description":"If true, enables BGP to automatically discover the best TCP path MTU for each BGP session. Default value is true."},"fastExternalFallOver":{"type":"boolean","description":"Enable BGP to terminate external BGP sessions of any directly adjacent peer if the link used to reach the peer goes down; without waiting for the hold-down timer to expire. Default value is true."},"enforceFirstAs":{"type":"boolean","description":"Allow a BGP routing process to discard updates received from an external BGP (eBGP) peers that do not list their autonomous system (AS) number as the first AS path segment in the AS_PATH attribute of the incoming route. Default value is true."},"asnotationDot":{"type":"boolean","description":"Change the default display and regular expression match format of BGP 4-byte autonomous system numbers from asplain (decimal values) to dot notation. Default value is false."},"bgpTimers":{"type":"object","$ref":"#/definitions/BGPTimers","description":"An instance of type BGPTimers that represents the configuration of timer values for this process."},"bgpGracefulRestart":{"type":"object","$ref":"#/definitions/BGPGracefulRestart","description":"An instance of type BGPGracefulRestart that enable or disable the BGP graceful restart capability for a BGP neighbor."},"bgpBestPath":{"type":"object","$ref":"#/definitions/BGPBestPath","description":"An instance of type BGPBestPath that represents comparision between similar routes received from external BGP (eBGP) peers during the best path selection process and switch the best path to the route with the lowest router ID."},"routerId":{"type":"string","description":"Represents a fixed router ID for the local BGP routing process."},"addressFamilyIPv4":{"type":"object","$ref":"#/definitions/AFIPv4","description":"An instance of type AFIPv4 that represents the address family configuration to configure a routing session using standard IPv4 address prefixes"},"addressFamilyIPv6":{"type":"object","$ref":"#/definitions/AFIPv6","description":"An instance of type AFIPv6 that represents the address family configuration to configure a routing session using standard IPv6 address prefixes"},"id":{"type":"string"},"type":{"type":"string","default":"bgp"}},"required":["transportPathMtuDiscovery","bgpBestPath","asNumber","asnotationDot","fastExternalFallOver","logNeighborChanges","type","enforceFirstAs","bgpTimers"]},"BGPWrapper":{"allOf":[{"$ref":"#/definitions/BGP"},{"$ref":"#/definitions/LinksWrapper"}]},"BGPBestPath":{"type":"object","properties":{"defaultLocalPreferenceValue":{"type":"integer","description":"Value indicates the local preference number. Higher value indicates higher preference.Ranges from 0 to 4294967295. Default is 100"},"alwaysCompareMed":{"type":"boolean","description":"If true, enables Multi Exit Discriminator (MED) comparison among paths learned from neighbors in different autonomous systems. Default is false."},"bestPathCompareRouterId":{"type":"boolean","description":"If true, compares between similar routes received from external BGP (eBGP) peers during the best path selection process and switch the best path to the route with the lowest router ID. Default is false. Default value is false."},"deterministicMed":{"type":"boolean","description":"If true, selects the best MED path advertised from the neighboring AS. Default is false."},"bestPathMedMissingAsWorst":{"type":"boolean","description":"If true, sets a path with a missing MED attribute as the least preferred path. Default is false."},"type":{"type":"string","default":"bgpbestpath"}},"required":["deterministicMed","defaultLocalPreferenceValue","alwaysCompareMed","type","bestPathCompareRouterId","bestPathMedMissingAsWorst"]},"BGPGracefulRestart":{"type":"object","properties":{"gracefulRestart":{"type":"boolean","description":"If true, enables BGP graceful restart capability. Default value is false"},"gracefulRestartRestartTime":{"type":"integer","description":"Maximum time period (in seconds) that the device will wait for a graceful-restart-capable neighbor to return to normal operation after arestart event occurs. Ranges from 1 to 3600. Default value is 120 seconds."},"gracefulRestartStalePathTime":{"type":"integer","description":"Maximum time period (in seconds) that the device will hold stale paths for a restarting peer. All stale paths are deleted after this timer expires. Ranges from 1 to 3600. The default value is 360 seconds."},"type":{"type":"string","default":"bgpgracefulrestart"}},"required":["gracefulRestart","type"]},"BGPTimers":{"type":"object","properties":{"keepAlive":{"type":"integer","description":"Frequency (in seconds) with which the device sends keepalive messages to its peer. Ranges from 0 to 65535 The default value is 60 seconds."},"holdTime":{"type":"integer","description":"Interval (in seconds) after not receiving a keepalive message that the device declares a peer dead. Ranges from 0 to 65535 The default value is 180 seconds."},"minHoldTime":{"type":"integer","description":"Interval (in seconds) after not receiving a keepalive message from a neighbor, that the device declares a neighbor dead. Ranges from 0 to 65535 The default value is 0 seconds."},"type":{"type":"string","default":"bgptimers"}},"required":["keepAlive","type","minHoldTime","holdTime"]},"AFAggregateAddressIPv4":{"type":"object","properties":{"advertiseMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents the name of the route map used to select the routes to create AS_SET origin communities."},"attributeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents the name of the route map used to set the attribute of the aggregate route."},"suppressMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents the name of the route map used to select the routes to be suppressed."},"asSet":{"type":"boolean","description":"Generates autonomous system set path information. If true, enables asSet command. Default value is false."},"summaryOnly":{"type":"boolean","description":"Filters all more-specific routes from updates. If true, enables summaryOnly command. Default value is false."},"ipv4AggregateNetwork":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type NetworkObject that represents the IPv4 aggregate address."},"type":{"type":"string","default":"afaggregateaddressipv4"}},"required":["summaryOnly","ipv4AggregateNetwork","asSet","type"]},"AFAggregateAddressIPv6":{"type":"object","properties":{"advertiseMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents the name of the route map used to select the routes to create AS_SET origin communities."},"attributeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents the name of the route map used to set the attribute of the aggregate route."},"suppressMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents the name of the route map used to select the routes to be suppressed."},"asSet":{"type":"boolean","description":"Generates autonomous system set path information. If true, enables asSet command. Default value is false."},"summaryOnly":{"type":"boolean","description":"Filters all more-specific routes from updates. If true, enables summaryOnly command. Default value is false."},"ipv6AggregateNetwork":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type NetworkObject that represents the IPv6 aggregate address."},"type":{"type":"string","default":"afaggregateaddressipv6"}},"required":["summaryOnly","ipv6AggregateNetwork","asSet","type"]},"AFBGPDistance":{"type":"object","properties":{"externalDistance":{"type":"integer","description":"Administrative distance for external BGP routes. Ranges from 1 to 255. Default value is 20"},"internalDistance":{"type":"integer","description":"Administrative distance for internal BGP routes. Ranges from 1 to 255. Default value is 200"},"localDistance":{"type":"integer","description":"Administrative distance for local BGP routes. Ranges from 1 to 255. Default value is 200"},"type":{"type":"string","default":"afbgpdistance"}},"required":["externalDistance","internalDistance","type","localDistance"]},"AFIPv4":{"type":"object","properties":{"distance":{"type":"object","$ref":"#/definitions/AFBGPDistance","description":"An instance of type AFBGPDistance that represents an administrative distance."},"defaultInformationOrginate":{"type":"boolean","description":"If true, configures a BGP routing process to distribute a default route. Default is false."},"bgpSupressInactive":{"type":"boolean","description":"If true, suppress the advertisement of routes that are not installed in the routing information base (RIB). Default is false."},"synchronization":{"type":"boolean","description":"If true, synchronize between BGP and your Interior Gateway Protocol (IGP) system. Default is false."},"bgpRedistributeInternal":{"type":"boolean","description":"If true, configures iBGP redistribution into an IGP, such as OSPF. Default is false."},"scanTime":{"type":"integer","description":"Scanning intervals of BGP routers for next hop validation. Valid values are from 5 to 60 seconds. The default is 60 seconds."},"aggregateTimer":{"type":"integer","description":"Represents interval at which BGP routes will be aggregated. Valid values are from 6 to 60 seconds. The default is 30 seconds."},"maximumPaths":{"type":"object","$ref":"#/definitions/AFMaximumPaths","description":"An instance of type AFMaximumPaths that controls the maximum number of parallel iBGP routes that can be installed in a routing table. If the ibgp keyword is not used, then the number_of_paths argument controls the maximum number of parallel EBGP routes."},"redistributeProtocols":{"type":"array","description":"Represents redistribute routes from another routing domain into a BGP autonomous system.","items":{"type":"object","$ref":"#/definitions/RedistributeProtocol"}},"injectMaps":{"type":"array","description":"Represents injectMaps for injecting more specific routes into a BGP routing table.","items":{"type":"object","$ref":"#/definitions/AFInjectMap"}},"afTableMap":{"type":"object","$ref":"#/definitions/AFTableMap","description":"An instance of type AFTableMap that modifies metric and tag values when the IP routing table is updated with BGP learned routes"},"autoSummary":{"type":"boolean","description":"If true, enables automatic summarization of subnet routes into network-level routes.Default is false."},"bgpNextHopTriggerDelay":{"type":"integer","description":"Sets the delay to trigger nexthop address tracking. Range is from 0 to 100. Default is 5"},"bgpNextHopTriggerEnable":{"type":"boolean","description":"If true, enables BGP next-hop address tracking immediately. Default is true."},"aggregateAddressesIPv4s":{"type":"array","description":"Represents aggregateAddressesIPv4s for aggregation of specific routes into one route.","items":{"type":"object","$ref":"#/definitions/AFAggregateAddressIPv4"}},"distributeLists":{"type":"array","description":"Represents distributeLists for the configuration of filtering incoming or outgoing routes using access control lists","items":{"type":"object","$ref":"#/definitions/DistributeList"}},"neighbors":{"type":"array","description":"Represents neighbors configured for this process","items":{"type":"object","$ref":"#/definitions/NeighborIPv4"}},"networks":{"type":"array","description":"Represents networks to be advertised by the BGP routing processes.","items":{"type":"object","$ref":"#/definitions/AFIPv4Network"}},"type":{"type":"string","default":"afipv4"}},"required":["distance","defaultInformationOrginate","aggregateTimer","bgpRedistributeInternal","scanTime","bgpSupressInactive","synchronization","bgpNextHopTriggerDelay","autoSummary","type","bgpNextHopTriggerEnable"]},"AFIPv4Network":{"type":"object","properties":{"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents the identifier of a configured route map. The route map should be examined to filter the networks to be advertised. If not specified, all networks are advertised."},"ipv4Network":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type NetworkObject that represents the network that BGP will advertise."},"type":{"type":"string","default":"afipv4network"}},"required":["ipv4Network","type"]},"AFIPv6":{"type":"object","properties":{"distance":{"type":"object","$ref":"#/definitions/AFBGPDistance","description":"An instance of type AFBGPDistance that represents an administrative distance."},"defaultInformationOrginate":{"type":"boolean","description":"If true, configures a BGP routing process to distribute a default route. Default is false."},"bgpSupressInactive":{"type":"boolean","description":"If true, suppress the advertisement of routes that are not installed in the routing information base (RIB). Default is false."},"synchronization":{"type":"boolean","description":"If true, synchronize between BGP and your Interior Gateway Protocol (IGP) system. Default is false."},"bgpRedistributeInternal":{"type":"boolean","description":"If true, configures iBGP redistribution into an IGP, such as OSPF. Default is false."},"scanTime":{"type":"integer","description":"Scanning intervals of BGP routers for next hop validation. Valid values are from 5 to 60 seconds. The default is 60 seconds."},"aggregateTimer":{"type":"integer","description":"Represents interval at which BGP routes will be aggregated. Valid values are from 6 to 60 seconds. The default is 30 seconds."},"maximumPaths":{"type":"object","$ref":"#/definitions/AFMaximumPaths","description":"An instance of type AFMaximumPaths that controls the maximum number of parallel iBGP routes that can be installed in a routing table. If the ibgp keyword is not used, then the number_of_paths argument controls the maximum number of parallel EBGP routes."},"redistributeProtocols":{"type":"array","description":"Represents redistribute routes from another routing domain into a BGP autonomous system.","items":{"type":"object","$ref":"#/definitions/RedistributeProtocol"}},"injectMaps":{"type":"array","description":"Represents injectMaps for injecting more specific routes into a BGP routing table.","items":{"type":"object","$ref":"#/definitions/AFInjectMap"}},"aggregateAddressesIPv6":{"type":"array","description":"Represents aggregateAddressesIPv6s for aggregation of specific routes into one route.","items":{"type":"object","$ref":"#/definitions/AFAggregateAddressIPv6"}},"neighbors":{"type":"array","description":"Represents neighbors configured for this process","items":{"type":"object","$ref":"#/definitions/NeighborIPv6"}},"networks":{"type":"array","description":"Represents networks to be advertised by the BGP routing processes.","items":{"type":"object","$ref":"#/definitions/AFIPv6Network"}},"type":{"type":"string","default":"afipv6"}},"required":["distance","defaultInformationOrginate","aggregateTimer","bgpRedistributeInternal","scanTime","bgpSupressInactive","synchronization","type"]},"AFIPv6Network":{"type":"object","properties":{"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents the identifier of a configured route map. The route map should be examined to filter the networks to be advertised. If not specified, all networks are advertised."},"prefixName":{"type":"string","description":"Represents prefix name to be advertised."},"ipv6Network":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type NetworkObject that represents the network that BGP will advertise."},"type":{"type":"string","default":"afipv6network"}},"required":["ipv6Network","type"]},"AFInjectMap":{"type":"object","properties":{"injectMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that contains the prefixes to inject into the local BGP routing table."},"existMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that contains the prefixes that the BGP speaker will track."},"copyAttributes":{"type":"boolean","description":"Configures the injected route to inherit attributes of the aggregate route. Value True indicates the presence of copyAttributes in the command. False indicates otherwise. Default is false."},"type":{"type":"string","default":"afinjectmap"}},"required":["injectMap","copyAttributes","existMap","type"]},"AFMaximumPaths":{"type":"object","properties":{"value":{"type":"integer","description":"Maximum number of parallel EBGP routes that can be installed in a routing table. Valid value is from 1 to 8."},"ibgpValue":{"type":"integer","description":"Maximum number of parallel iBGP routes that can be installed in a routing table. Valid value is from 1 to 8."},"type":{"type":"string","default":"afmaximumpaths"}},"required":["type"]},"AFTableMap":{"type":"object","properties":{"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap"},"filter":{"type":"boolean","description":"If true, enables the route map name. Default value is false."},"type":{"type":"string","default":"aftablemap"}},"required":["filter","routeMap","type"]},"NeighborAdvanced":{"type":"object","properties":{"neighborSecret":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type Secret that enables Message Digest 5 (MD5) authentication on a TCP connection between two BGP peers."},"neighborHops":{"type":"object","$ref":"#/definitions/NeighborHops","description":"Represents either neighborTtlSecurityHops or maxHopCount and disableConnectedCheck. maxHopCount: Accept and attempt BGP connections to external peers residing on networks that are not directly connected. disableConnectedCheck: Disable connection verification to establish an eBGP peering session with a single-hop peer that uses a loopback interfaceneighborTtlSecurityHops: Secure a BGP peering session and configures the maximum number of hops that separate two external BGP (eBGP) peers."},"neighborVersion":{"type":"integer","description":"Specifies the BGP version number. Valid value is 4. The default is to use Version 4."},"nextHopSelf":{"type":"boolean","description":"If true, enables router as the next hop for a BGP-speaking neighbor or peer group. Default value is false"},"neighborWeight":{"type":"integer","description":"Assign a weight to a neighbor connection. Valid range is from 0 to 65535."},"sendCommunity":{"type":"boolean","description":"Specifies that communities attributes should be sent to a BGP neighbor.If true, standard communities are sent to neighbors. Default value is false."},"neighborTransportConnectionMode":{"type":"object","$ref":"#/definitions/NeighborTransportConnectionMode","description":"An instance of type NeighborTransportConnectionMode that enables TCP transport session option for a BGP session. Type of connection can be active or passive."},"neighborTransportPathMTUDiscovery":{"type":"object","$ref":"#/definitions/NeighborTransportPathMTUDiscovery","description":"An instance of type NeighborTransportPathMTUDiscovery that enables TCP transport path maximum transmission unit (MTU) discovery. TCP path MTU discovery is enabled by default."},"type":{"type":"string","default":"neighboradvanced"}},"required":["nextHopSelf","type","sendCommunity"]},"NeighborAdvertiseMap":{"type":"object","properties":{"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type {RouteMap that represents the route map that will be advertised if the conditions of the exist map or non-exist map are met."},"existMap":{"type":"boolean","description":"Value True selects exist map and value false specifies non-exist map.. Default value is false."},"existRouteMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents exist or non exist map. The name is compared with the routes in the BGP table to determine whether the advertise-map route is advertised or not."},"type":{"type":"string","default":"neighboradvertisemap"}},"required":["routeMap","existRouteMap","existMap","type"]},"NeighborDefaultOriginate":{"type":"object","properties":{"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap that represents name of the route-map that allows route 0.0.0.0 to be injected conditionally."},"type":{"type":"string","default":"neighbordefaultoriginate"}},"required":["type"]},"NeighborDistributeList":{"type":"object","properties":{"accessListName":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type StandardAccessList that represents the name of a standard access list."},"filterUpdateAction":{"type":"object","$ref":"#/definitions/FilterDirection","description":"Applies access list to either incoming or outgoing routes. IN applies access list to incoming advertisements from that neighbor. OUT applies access list to outgoing advertisements from that neighbor."},"type":{"type":"string","default":"neighbordistributelist"}},"required":["filterUpdateAction","accessListName","type"]},"NeighborEBGPMultiHop":{"type":"object","properties":{"maxHopCount":{"type":"integer","description":"Specifies time-to-live in the range from 1 to 255 hops. Default value is 255."},"disableConnectedCheck":{"type":"boolean","description":"If true, disables connection verification to establish an eBGP peering session with a single-hop peer that uses a loopback interface. Default value is false"},"type":{"type":"string","default":"neighborebgpmultihop"}},"required":["maxHopCount","disableConnectedCheck","type"]},"NeighborFallOverBFD":{"type":"object","properties":{"fallOverBFD":{"type":"boolean","description":"If true, enables BFD support for fall-over. Default value is false."},"neighborFallOverBFDOption":{"type":"object","$ref":"#/definitions/NeighborFallOverBFDOption","description":"Enables BGP to monitor the peering session of a specified neighbor for adjacency changes and to deactivate the peering session."},"type":{"type":"string","default":"neighborfalloverbfd"}},"required":["fallOverBFD","type"]},"NeighborFallOverBFDOption":{"type":"string","enum":["SINGLEHOP","MULTIHOP"]},"NeighborFilterList":{"type":"object","properties":{"asPathList":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type ASPathList that represents the number of an autonomous system path access list."},"filterUpdateAction":{"type":"object","$ref":"#/definitions/FilterDirection","description":"Applies access list to either incoming or outgoing routes. IN applies access list to incoming advertisements from that neighbor. OUT applies access list to outgoing advertisements from that neighbor."},"type":{"type":"string","default":"neighborfilterlist"}},"required":["filterUpdateAction","asPathList","type"]},"NeighborGeneral":{"type":"object","properties":{"description":{"type":"string","description":"Description of the neighbor. Maximum character count is 80."},"shutdown":{"type":"boolean","description":"If true, disables a neighbor or peer group. Default value is false"},"fallOverBFD":{"type":"object","$ref":"#/definitions/NeighborFallOverBFD","description":"An instance of type NeighborFallOverBFD that enables or disables BFD support for fall-over."},"type":{"type":"string","default":"neighborgeneral"}},"required":["type","shutdown"]},"NeighborHAMode":{"type":"object","properties":{"disable":{"type":"boolean","description":"If true, specifies if the Neighbor HA graceful restart is disabled. Default value is false"},"type":{"type":"string","default":"neighborhamode"}},"required":["disable","type"]},"NeighborIPv4":{"type":"object","properties":{"remoteAs":{"type":"string","description":"Represents remote Autonomous number for BGP neighbor."},"activate":{"type":"boolean","description":"If true, exchange information with a BGP neighbor. Default value is false."},"neighborGeneral":{"type":"object","$ref":"#/definitions/NeighborGeneral","description":"Represents settings of type NeighborGeneral such as BFD support for fall-over"},"neighborAdvanced":{"type":"object","$ref":"#/definitions/NeighborAdvanced","description":"Represents settings of type NeighborAdvanced such as NeighborHops support for neighborTtlSecurityHops, maxHopCount and disableConnectedCheck"},"neighborRoutes":{"type":"object","$ref":"#/definitions/NeighborRoutes","description":"Represents settings of type NeighborRoutes such as Neighbor Default Originate, Neighbor Advertise Map"},"neighborRouteMap":{"type":"array","description":"Represents neighbor route-maps for applying a route map to incoming or outgoing routes.","items":{"type":"object","$ref":"#/definitions/NeighborRouteMap"}},"neighborFilterList":{"type":"array","description":"Represents neighbor filter-list for establishing BGP filters.","items":{"type":"object","$ref":"#/definitions/NeighborFilterList"}},"neighborMaximumPrefix":{"type":"object","$ref":"#/definitions/NeighborMaximumPrefix","description":"An instance of type NeighborMaximumPrefix that controls the number of prefixes that can be received from a neighbor."},"haModeGracefulRestart":{"type":"boolean","description":"If true, enables the graceful restart configuration when the system is configured in HA mode. Default value is false."},"neighborTimers":{"type":"object","$ref":"#/definitions/NeighborTimers","description":"An instance of type NeighborTimers that sets the timers for a specific BGP peer or peer group."},"neighborLocalAs":{"type":"object","$ref":"#/definitions/NeighborLocalAs","description":"An instance of type NeighborLocalAs that customizes the AS_PATH attribute for routes received from an external Border Gateway Protocol (eBGP) neighbor."},"ipv4Address":{"type":"string","description":"Represents neighbor ipv4 address."},"neighborDistributeLists":{"type":"array","description":"Represents neighbor distribute-lists for distributing BGP neighbor information as specified in an access list.","items":{"type":"object","$ref":"#/definitions/NeighborDistributeList"}},"ipv4PrefixListFilter":{"type":"array","description":"Represents neighbor distribute-lists for distributing BGP neighbor information as specified in an prefix list.","items":{"type":"object","$ref":"#/definitions/IPV4PrefixListFilter"}},"neighborHAMode":{"type":"object","$ref":"#/definitions/NeighborHAMode","description":"An instance of type NeighborHAMode that enables or disables Neighbor HA graceful restart mode."},"type":{"type":"string","default":"neighboripv4"}},"required":["haModeGracefulRestart","remoteAs","activate","type"]},"NeighborIPv6":{"type":"object","properties":{"remoteAs":{"type":"string","description":"Represents remote Autonomous number for BGP neighbor."},"activate":{"type":"boolean","description":"If true, exchange information with a BGP neighbor. Default value is false."},"neighborGeneral":{"type":"object","$ref":"#/definitions/NeighborGeneral","description":"Represents settings of type NeighborGeneral such as BFD support for fall-over"},"neighborAdvanced":{"type":"object","$ref":"#/definitions/NeighborAdvanced","description":"Represents settings of type NeighborAdvanced such as NeighborHops support for neighborTtlSecurityHops, maxHopCount and disableConnectedCheck"},"neighborRoutes":{"type":"object","$ref":"#/definitions/NeighborRoutes","description":"Represents settings of type NeighborRoutes such as Neighbor Default Originate, Neighbor Advertise Map"},"neighborRouteMap":{"type":"array","description":"Represents neighbor route-maps for applying a route map to incoming or outgoing routes.","items":{"type":"object","$ref":"#/definitions/NeighborRouteMap"}},"neighborFilterList":{"type":"array","description":"Represents neighbor filter-list for establishing BGP filters.","items":{"type":"object","$ref":"#/definitions/NeighborFilterList"}},"neighborMaximumPrefix":{"type":"object","$ref":"#/definitions/NeighborMaximumPrefix","description":"An instance of type NeighborMaximumPrefix that controls the number of prefixes that can be received from a neighbor."},"haModeGracefulRestart":{"type":"boolean","description":"If true, enables the graceful restart configuration when the system is configured in HA mode. Default value is false."},"neighborTimers":{"type":"object","$ref":"#/definitions/NeighborTimers","description":"An instance of type NeighborTimers that sets the timers for a specific BGP peer or peer group."},"neighborLocalAs":{"type":"object","$ref":"#/definitions/NeighborLocalAs","description":"An instance of type NeighborLocalAs that customizes the AS_PATH attribute for routes received from an external Border Gateway Protocol (eBGP) neighbor."},"ipv6Address":{"type":"string","description":"Represents neighbor ipv6 address."},"ipv6Prefix":{"type":"integer","description":"Represents prefix of the IPv6 address."},"ipv6PrefixListFilter":{"type":"array","description":"Represents neighbor distribute-lists for distributing BGP neighbor information as specified in an prefix list.","items":{"type":"object","$ref":"#/definitions/IPV6PrefixListFilter"}},"type":{"type":"string","default":"neighboripv6"}},"required":["haModeGracefulRestart","remoteAs","activate","type"]},"NeighborLocalAs":{"type":"object","properties":{"localAsNumber":{"type":"string","description":"Represents the number of an autonomous system to prepend to the AS_PATH attribute. The range of values for this argument is any valid autonomous system number from 1 to 4294967295 or 1.0 to XX.YY."},"neighborLocalAsOption":{"type":"object","$ref":"#/definitions/NeighborLocalAsOption","description":"Allows a router to appear to be a member of AS. Setting NO_PREPEND does not prepend local-as to updates from ebgp neighbor. Setting REPLACE_AS replaces real AS with local AS in the EBGP updates also includes no-prepend. Setting DUAL_AS accepts either real AS or local AS from the ebgp neighbor also includes no-prepend and replace-as."},"type":{"type":"string","default":"neighborlocalas"}},"required":["neighborLocalAsOption","type","localAsNumber"]},"NeighborLocalAsOption":{"type":"string","enum":["NONE","NO_PREPEND","REPLACE_AS","DUAL_AS"]},"NeighborMaximumPrefix":{"type":"object","properties":{"maxPrefixLimit":{"type":"integer","description":"Represents maximum number of prefixes allowed from this neighbor. Valid range is 1 to 2147483647."},"thresholdValue":{"type":"integer","description":"Specifies at what percentage of maximum the router starts to generate a warning message. Valid range is 1 to 100. Default value is 75."},"restartInterval":{"type":"integer","description":"Specifies the time interval after which the BGP neighbor restarts. Valid range is 1 to 65535."},"neighborMaximumPrefixOption":{"type":"object","$ref":"#/definitions/NeighborMaximumPrefixOption","description":"Represents configuration to control the number of prefixes that can be received from a neighbor. WARNING_ONLY specifies the time interval after which the BGP neighbor restarts.RESTART allows the router to generate a log message when the maximum number of prefixes is exceeded, instead of terminating the peering."},"type":{"type":"string","default":"neighbormaximumprefix"}},"required":["maxPrefixLimit","thresholdValue","type"]},"NeighborMaximumPrefixOption":{"type":"string","enum":["WARNING_ONLY","RESTART"]},"NeighborRouteMap":{"type":"object","properties":{"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type RouteMap."},"filterUpdateAction":{"type":"object","$ref":"#/definitions/FilterDirection","description":"Applies a route map to either incoming or outgoing routes. IN applies a route map to incoming routes. OUT applies a route map to outgoing routes."},"type":{"type":"string","default":"neighborroutemap"}},"required":["routeMap","filterUpdateAction","type"]},"NeighborRoutes":{"type":"object","properties":{"advertisementInterval":{"type":"integer","description":"Sets the minimum interval between the sending of BGP routing updates. Valid values are from 0 to 600."},"neighborAdvertiseMaps":{"type":"array","description":"Represents neighbor advertise-maps for BGP conditional advertisement feature. The condition is defined by a route map called non-exist-map for conditions that do not exist or by a route map called exist-map for conditions that do exist.","items":{"type":"object","$ref":"#/definitions/NeighborAdvertiseMap"}},"neighborDefaultOriginate":{"type":"object","$ref":"#/definitions/NeighborDefaultOriginate","description":"An instance of type NeighborDefaultOriginate that allows a BGP speaker (the local router) to send the default route 0.0.0.0 to a neighbor for use as a default route."},"removePrivateAs":{"type":"boolean","description":"If true, removes private autonomous system numbers from outbound routing updates. Default value is false."},"type":{"type":"string","default":"neighborroutes"}},"required":["removePrivateAs","type"]},"NeighborTTLSecurityHop":{"type":"object","properties":{"neighborTtlSecurityHops":{"type":"integer","description":"Represents the number of hops that separate the eBGP peers.The TTL value is calculated by the router from the configured hop-count argument. Valid values are from 1 to 254."},"type":{"type":"string","default":"neighborttlsecurityhop"}},"required":["neighborTtlSecurityHops","type"]},"NeighborTimers":{"type":"object","properties":{"keepAliveInterval":{"type":"integer","description":"Represents the frequency (in seconds) with which the device sends keepalive messages to its peer. Valid values are from 0 to 65535. Default value is 60 seconds."},"holdTime":{"type":"integer","description":"Represents the interval (in seconds) after not receiving a keepalive message that the device declares a peer dead. Valid values are from 0 to 65535. Default value is 180 seconds."},"minimumHoldTime":{"type":"integer","description":"Represents the minimum interval (in seconds) after not receiving a keepalive message that the device declares a peer dead. Valid values are from 0 to 65535. Default value is 0 seconds."},"type":{"type":"string","default":"neighbortimers"}},"required":["keepAliveInterval","minimumHoldTime","type","holdTime"]},"NeighborTransportConnectionMode":{"type":"string","enum":["ACTIVE","PASSIVE"]},"NeighborTransportPathMTUDiscovery":{"type":"object","properties":{"disable":{"type":"boolean","description":"If true, disables TCP path MTU discovery. Default value is false"},"type":{"type":"string","default":"neighbortransportpathmtudiscovery"}},"required":["disable","type"]},"FilterProtocol":{"type":"string","enum":["CONNECTED","STATIC","RIP","BGP","OSPF","EIGRP"]},"IncomingRouteFilter":{"type":"object","properties":{"accessList":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An object of type standard access list that defines which networks are to be received and which are to be suppressed in routing updates"},"inInterface":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"Optional, specifies an interface to limit the filter to updates received on that interface"},"type":{"type":"string","default":"incomingroutefilter"}},"required":["accessList","type"]},"OutgoingRouteFilter":{"type":"object","properties":{"accessList":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An object of type standard access list that defines which networks are to be received and which are to be suppressed in routing updates"},"protocol":{"type":"object","$ref":"#/definitions/FilterProtocol","description":"Optional, if specified filters peers and networks learned through the routes of the specified protocol"},"processId":{"type":"string","description":"The identifier of the process if the specified protocol is either OSPF, BGP, or EIGRP"},"type":{"type":"string","default":"outgoingroutefilter"}},"required":["accessList","type"]},"DetectionMechanism":{"type":"string","enum":["DEAD_INTERVAL","HELLO_MULTIPLIER"]},"OSPFDeadIntervalMechanism":{"type":"object","properties":{"helloInterval":{"type":"integer","description":"Specifies the time in seconds in between the hello packets being sent. Ranges from 1 to 8192, default is 10"},"deadInterval":{"type":"integer","description":"Specifies the time in seconds that the hello packets are not seen before a neighbor indicates that the router is down. Ranges from 1 to 8192, default is 4 times hello interval or 40"},"type":{"type":"string","default":"ospfdeadintervalmechanism"}},"required":["deadInterval","helloInterval","type"]},"OSPFHelloMultiplierMechanism":{"type":"object","properties":{"helloMultiplier":{"type":"integer","description":"Specifies the number of hello packets to send in one second. Ranges from 3 to 20"},"type":{"type":"string","default":"ospfhellomultipliermechanism"}},"required":["helloMultiplier","type"]},"OSPFInterfaceSettings":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"deviceInterface":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"The interface for which ospf settings has to be configured. The interface must not be a BVI interface, member of BVI interface, or be passive, or used at high availability configuration and should be in enabled state"},"ospfProtocolConfiguration":{"type":"object","$ref":"#/definitions/OSPFProtocolConfiguration","description":"Represents the configuration to be made for OSPF protocol"},"id":{"type":"string"},"type":{"type":"string","default":"ospfinterfacesettings"}},"required":["deviceInterface","ospfProtocolConfiguration","type"]},"OSPFInterfaceSettingsWrapper":{"allOf":[{"$ref":"#/definitions/OSPFInterfaceSettings"},{"$ref":"#/definitions/LinksWrapper"}]},"OSPFProtocolConfiguration":{"type":"object","properties":{"authentication":{"type":"object","$ref":"#/definitions/AuthenticationBase","description":"The authentication to set for the OSPF protocol. If null, considered as no authentication"},"packetCost":{"type":"integer","description":"Specifies the cost of sending a packet on the given OSPF interface. Ranges from 1 to 65535."},"priority":{"type":"integer","description":"Specifies the priority to help determine the OSPF designated router for a network. Ranges from 0 to 255"},"ptpNonBroadcast":{"type":"boolean","description":"If true, configures the interface network type as point-to-point non-broadcast"},"filterOutgoingLSA":{"type":"boolean","description":"If true, configures the interface to filter outgoing LSAs"},"ignoreMtuMismatch":{"type":"boolean","description":"If true, ignores the MTU mismatch among OSPF neighbors during the database description(DBD) exchange"},"lostNeighborDetectionMechanism":{"type":"object","$ref":"#/definitions/OSPFLostNeighborDetectionMechanism","description":"Represents the configuration for lost neighbor detection mechanism, default is the OSPFDeadIntervalMechanism"},"retransmitInterval":{"type":"integer","description":"The number of seconds between LSA retransmissions for adjacencies belonging to an OSPF interface. Ranges from 1 to 8192, default is 5"},"transmitDelay":{"type":"integer","description":"Sets the estimated number of seconds required to send a link-state update packet on an OSPF interface. Ranges from 1 to 8192, default is 1"},"type":{"type":"string","default":"ospfprotocolconfiguration"}},"required":["retransmitInterval","lostNeighborDetectionMechanism","type","transmitDelay"]},"RouteLevel":{"type":"string","enum":["LEVEL_1","LEVEL_1_2","LEVEL_2"]},"AdministrativeDistance":{"type":"object","properties":{"interArea":{"type":"integer","description":"Administrative distance for inter area routes. Ranges from 1 to 255, default is 110"},"intraArea":{"type":"integer","description":"Administrative distance for inter area routes. Ranges from 1 to 255, default is 110"},"external":{"type":"integer","description":"Administrative distance for external type 5 and type 7 routes. Ranges from 1 to 255, default is 110"},"type":{"type":"string","default":"administrativedistance"}},"required":["external","type","interArea","intraArea"]},"Area":{"type":"object","properties":{"areaId":{"type":"string","description":"The identifier of this area. Can be an IPv4 address or an integer ranging from 0 to 4294967295"},"areaNetworks":{"type":"array","description":"Defines the networks on which OSPF runs for this area","items":{"type":"object","$ref":"#/definitions/AreaNetwork"}},"authentication":{"type":"object","$ref":"#/definitions/Authentication","description":"The authentication to use for this area. Setting NONE has the same effect as not enabling authentication."},"defaultCost":{"type":"integer","description":"Sets the summary default cost for Stub or NSSA area. Ranges from 0 to 16777214"},"filterList":{"type":"array","description":"Represents the configuration to filter prefixes advertised in type 3 link-state advertisements (LSAs) between OSPF areas of an area border router","items":{"type":"object","$ref":"#/definitions/PrefixFilter"}},"areaType":{"type":"object","$ref":"#/definitions/AreaType","description":"Represents the configuration of this area as Stub or NSSA"},"virtualLinks":{"type":"array","description":"Represents the configuration of one or more virtual links from this area. Cannot be configured if the area type is Stub or NSSA","items":{"type":"object","$ref":"#/definitions/VirtualLink"}},"areaRanges":{"type":"array","description":"Represents the configuration of route summarization between areas. For use only with area border routers","items":{"type":"object","$ref":"#/definitions/AreaRange"}},"type":{"type":"string","default":"area"}},"required":["areaId","type"]},"AreaNetwork":{"type":"object","properties":{"ipv4Network":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An IPv4 network object that defines the network on which OSPF should run for a given area"},"tagInterface":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"Optional, if specified, the interface must be in the network identified by given network object. Useful if you want to prevent the changes to this interface when they are not in accordance with the OSPF process running on this interface"},"type":{"type":"string","default":"areanetwork"}},"required":["ipv4Network","type"]},"AreaRange":{"type":"object","properties":{"addressNetwork":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"The network object that defines the network to use as a range for route summarization"},"advertise":{"type":"boolean","description":"If false, sets the address range status to DoNotAdvertise. The Type 3 summary LSA is suppressed, and the component networks remain hidden from other networks. Default is true."},"type":{"type":"string","default":"arearange"}},"required":["addressNetwork","type","advertise"]},"Authentication":{"type":"string","enum":["NONE","PASSWORD","MESSAGE_DIGEST"]},"DefaultInformationOriginate":{"type":"object","properties":{"always":{"type":"boolean","description":"If true, always advertises default route, whether or not default route exists"},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the route metric configuration for this process"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"The RouteMap object to use. Specifies the routing process that generates the default route if the route map is satisfied"},"type":{"type":"string","default":"defaultinformationoriginate"}},"required":["routeMetric","type"]},"FilterDirection":{"type":"string","enum":["IN","OUT"]},"LogAdjacencyChanges":{"type":"object","properties":{"logType":{"type":"object","$ref":"#/definitions/LogType","description":"The type of logging to use when logging the neighbor changes, default is DEFAULT"},"type":{"type":"string","default":"logadjacencychanges"}},"required":["logType","type"]},"LogType":{"type":"string","enum":["DEFAULT","DETAILED"]},"LsaThrottleTimer":{"type":"object","properties":{"initialDelay":{"type":"integer","description":"Delay to generate first occurrence of LSA in milliseconds. Ranges from 0 to 600000, default is 0"},"minimumDelay":{"type":"integer","description":"Minimum delay between originating the same LSA in milliseconds. Ranges from 1 to 600000, default is 5000"},"maximumDelay":{"type":"integer","description":"Maximum delay between originating the same LSA in milliseconds. Ranges from 1 to 600000, default is 5000"},"type":{"type":"string","default":"lsathrottletimer"}},"required":["maximumDelay","initialDelay","type","minimumDelay"]},"MD5Authentication":{"type":"object","properties":{"md5KeyId":{"type":"integer","description":"The identifier to associate with the message-digest key for MD5 authentication. Ranges from 1 to 255"},"md5Key":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An object of type secret that supplies the password to use while configuring the message-digest password for OSPF MD5 authentication. The password can be up to sixteen ascii characters, but cannot start with a number immediately followed by space"},"type":{"type":"string","default":"md5authentication"}},"required":["md5Key","md5KeyId","type"]},"MetricType":{"type":"string","enum":["TYPE_1","TYPE_2"]},"Neighbor":{"type":"object","properties":{"ipAddress":{"type":"string","description":"The IPv4 address of the OSPFv2 neighbor"},"neighborInterface":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"The interface to use to communicate with the neighbor"},"type":{"type":"string","default":"neighbor"}},"required":["neighborInterface","ipAddress","type"]},"NsfGracefulRestart":{"type":"object","properties":{"nsfMechanism":{"type":"object","$ref":"#/definitions/NsfMechanism","description":"NSF Capability Mechanism to use, default is BOTH.<br>If CISCO, device will be configured with Link Local Signalling(lls) block capability<br>If IETF, device will be configured with opaque Link State Advertisement(LSA) capability<br>If Both, device will be configured as both LLS and opaque LSA capable<br>If None, device will be configured as NOT capable of LLS or opaque LSA"},"ietfStrictLsaChecking":{"type":"boolean","description":"If true, enables the strict LSA checking feature that allows a helper router to terminate the graceful restart process if it detects a changed LSA that would cause flooding during the graceful restart process. Strict LSA checking is disabled by default. This setting takes effect only when the Nsf Mechanism is configured as IETF or BOTH"},"type":{"type":"string","default":"nsfgracefulrestart"}},"required":["nsfMechanism","type"]},"NsfMechanism":{"type":"string","enum":["CISCO","IETF","BOTH","NONE"]},"Nssa":{"type":"object","properties":{"noRedistribution":{"type":"boolean","description":"If true, no redistribution into this area"},"noSummary":{"type":"boolean","description":"If true, no summary LSA is sent into this area"},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of type 7 default route that can be used to reach external destinations"},"type":{"type":"string","default":"nssa"}},"required":["type"]},"OSPF":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"processId":{"type":"string","description":"An identifier for the OSPF Process. Must be in the range 1 - 65535 inclusive."},"logAdjacencyChanges":{"type":"object","$ref":"#/definitions/LogAdjacencyChanges","description":"Represents the way adjacency changes must be logged. If null, disables logging for this process"},"processConfiguration":{"type":"object","$ref":"#/definitions/ProcessConfiguration","description":"Represents the advanced configuration for this process"},"areas":{"type":"array","description":"Represents the areas to be configured for this process","items":{"type":"object","$ref":"#/definitions/Area"}},"neighbors":{"type":"array","description":"Represents the neighbors to be configured for this process","items":{"type":"object","$ref":"#/definitions/Neighbor"}},"summaryAddresses":{"type":"array","description":"Represents the summary addresses configured for route summarization when redistributing routes into this process. Each object represents the configuration of the advertisement on one summary route for all redistributed routes included for a network address and mask. Use AreaRange under Area to configure route summarization between OSPF areas","items":{"type":"object","$ref":"#/definitions/SummaryAddress"}},"filterRules":{"type":"array","description":"Represents the configuration of filtering incoming or outgoing routes using access control lists","items":{"type":"object","$ref":"#/definitions/DistributeList"}},"redistributeProtocols":{"type":"array","description":"Represents the configuration of a list of protocols whose routes are redistributed into this process","items":{"type":"object","$ref":"#/definitions/RedistributeProtocol"}},"id":{"type":"string"},"type":{"type":"string","default":"ospf"}},"required":["processId","processConfiguration","type"]},"OSPFWrapper":{"allOf":[{"$ref":"#/definitions/OSPF"},{"$ref":"#/definitions/LinksWrapper"}]},"PasswordAuthentication":{"type":"object","properties":{"authKey":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An object of type secret that supplies the password to use while configuring the plain-text password for OSPF authentication. The password can be up to eight ascii characters, but cannot start with a number immediately followed by space"},"type":{"type":"string","default":"passwordauthentication"}},"required":["authKey","type"]},"PrefixFilter":{"type":"object","properties":{"prefixList":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"The IPv4PrefixList object to use for filtering prefixes advertised in type 3 LSAs between OSPF areas"},"filterDirection":{"type":"object","$ref":"#/definitions/FilterDirection","description":"The direction in which the given prefix list must be applied. IN indicates that the list is applied to prefixes advertised to the specified area from other areas, OUT indicates the prefixes advertised out of the specified area to other areas. Default is IN."},"type":{"type":"string","default":"prefixfilter"}},"required":["prefixList","type","filterDirection"]},"ProcessConfiguration":{"type":"object","properties":{"routerId":{"type":"string","description":"An IPv4 address, used to identify a specific device within an OSPF database. If null, a router id is automatically assigned by the system"},"rfc1583Compatible":{"type":"boolean","description":"If true, calculates summary route costs according to RFC 1583"},"ignoreLsaMospf":{"type":"boolean","description":"If true, suppresses the sending of syslog messages when the router receives unsupported LSA Type 6 MOSPF packets"},"administrativeDistance":{"type":"object","$ref":"#/definitions/AdministrativeDistance","description":"Represents the configuration of administrative distances for OSPF routes"},"timers":{"type":"object","$ref":"#/definitions/Timers","description":"Represents the configuration of timer values for this process"},"defaultInformationOriginate":{"type":"object","$ref":"#/definitions/DefaultInformationOriginate","description":"Represents the configuration of default external routes into OSPF routing domain"},"nsfGracefulRestart":{"type":"object","$ref":"#/definitions/NsfGracefulRestart","description":"Represents the configuration of Non-stop forward capability using either NSF Cisco (RFC 4811 and RFC 4812) or NSF IETF (RFC 3623)"},"type":{"type":"string","default":"processconfiguration"}},"required":["timers","administrativeDistance","type"]},"RouteMetric":{"type":"object","properties":{"metricValue":{"type":"integer","description":"Default metric, specifies the metric used for generating the default route. Ranges from 1 to 16777214, default is 1."},"metricType":{"type":"object","$ref":"#/definitions/MetricType","description":"Specifies the external link type that is associated with the default route that is advertised into the OSPF domain, default is TYPE_2"},"type":{"type":"string","default":"routemetric"}},"required":["metricType","metricValue","type"]},"SpfThrottleTimer":{"type":"object","properties":{"initialDelay":{"type":"integer","description":"Delay between receiving a change to SPF calculation in milliseconds. Ranges from 1 to 600000, default is 5000"},"minimumHoldTime":{"type":"integer","description":"Delay between first and second SPF calculation in milliseconds. Ranges from 1 to 600000, default is 10000"},"maximumWaitTime":{"type":"integer","description":"Maximum wait time in milliseconds for SPF calculations. Ranges from 1 to 600000, default is 10000"},"type":{"type":"string","default":"spfthrottletimer"}},"required":["minimumHoldTime","maximumWaitTime","initialDelay","type"]},"Stub":{"type":"object","properties":{"noSummary":{"type":"boolean","description":"If true, prevents sending a summary link advertisement (LSA Type 3) into the stub area"},"type":{"type":"string","default":"stub"}},"required":["type"]},"SummaryAddress":{"type":"object","properties":{"summaryNetwork":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"The network object to use that acts as an aggregate address for OSPF"},"advertise":{"type":"boolean","description":"If false, not advertised when translating OSPF type-7 LSA. Default is true"},"tagNumber":{"type":"integer","description":"A number to tag the summarized address. Ranges from 0 to 4294967295"},"type":{"type":"string","default":"summaryaddress"}},"required":["summaryNetwork","type","advertise"]},"Timers":{"type":"object","properties":{"lsaArrival":{"type":"integer","description":"The minimum interval in milliseconds between accepting the same LSA from OSPF neighbors. Ranges from 0 to 600000, default is 1000"},"floodPacing":{"type":"integer","description":"The time in milliseconds at which LSAs in the flooding queue are paced in between updates. Ranges from 5 to 100, default is 33"},"lsaGroup":{"type":"integer","description":"The number of seconds in the interval at which LSAs are grouped, refreshed, check summed, or aged. Ranges from 10 to 1800, default is 240"},"retransmission":{"type":"integer","description":"The time in milliseconds at which LSAs in the retransmission queue are paced. Ranges from 5 to 200, default is 66"},"lsaThrottleTimer":{"type":"object","$ref":"#/definitions/LsaThrottleTimer","description":"LSA throttle timer values in milliseconds (initial-delay ≤ min-delay ≤ max-delay)"},"spfThrottleTimer":{"type":"object","$ref":"#/definitions/SpfThrottleTimer","description":"SPF calculation timer values in milliseconds (initial delay ≤ minimum hold time ≤ maximum wait time"},"type":{"type":"string","default":"timers"}},"required":["spfThrottleTimer","lsaThrottleTimer","lsaGroup","retransmission","type","lsaArrival","floodPacing"]},"VirtualLink":{"type":"object","properties":{"routerId":{"type":"string","description":"The router id of the remote device running OSPF"},"authentication":{"type":"object","$ref":"#/definitions/AuthenticationBase","description":"Represents the authentication configuration. If null, indicates no authentication"},"helloInterval":{"type":"integer","description":"Specifies the time in seconds between the hello packets that are sent on an interface. The value must be the same for all routers and access servers that are attached to a common network. Valid values range from 1 to 8192. The default is 10."},"deadInterval":{"type":"integer","description":"Specifies the time in seconds that hello packets are not seen before a neighbor indicates that the router is down. The default is four times the hello interval, or 40 seconds. Valid values range from 1 to 8192."},"retransmitInterval":{"type":"integer","description":"The time in seconds between LSA retransmissions for adjacencies that belong to the interface. The retransmit interval is the expected round-trip delay between any two routers on the attached network. The value must be greater than the expected round-trip delay, and can range from 1 to 8192. The default is 5."},"transmitDelay":{"type":"integer","description":"Specifies the estimated time in seconds that is required to send a link-state update packet on the interface. The integer value must be greater than zero. LSAs in the update packet have their own ages incremented by this amount before transmission. The range of values can be from 1 to 8192. The default is 1."},"type":{"type":"string","default":"virtuallink"}},"required":["retransmitInterval","deadInterval","routerId","helloInterval","type","transmitDelay"]},"IPV4PrefixListFilter":{"type":"object","properties":{"filterDirection":{"type":"object","$ref":"#/definitions/FilterDirection","description":"Applies prefix list to either incoming or outgoing routes. FilterDirection.IN applies prefix list to incoming advertisements from that neighbor. FilterDirection.OUT applies prefix list to outgoing advertisements from that neighbor."},"prefixList":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type {@link IPV4PrefixList} that specifies the IPV4 PrefixList"},"type":{"type":"string","default":"ipv4prefixlistfilter"}},"required":["prefixList","type","filterDirection"]},"IPV6PrefixListFilter":{"type":"object","properties":{"filterDirection":{"type":"object","$ref":"#/definitions/FilterDirection","description":"Applies prefix list to either incoming or outgoing routes. FilterDirection.IN applies prefix list to incoming advertisements from that neighbor. FilterDirection.OUT applies prefix list to outgoing advertisements from that neighbor."},"prefixList":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"An instance of type {@link IPV6PrefixList} that specifies the IPV6 PrefixList"},"type":{"type":"string","default":"ipv6prefixlistfilter"}},"required":["prefixList","type","filterDirection"]},"RedistributeBGP":{"type":"object","properties":{"tagNumber":{"type":"integer","description":"A number to tag the routes redistributed into OSPF. Ranges from 0 to 4294967295"},"subnets":{"type":"boolean","description":"If true, considers subnets for redistribution into OSPF. Default is false."},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of the metrics to use while redistributing routes"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"A route map object that specifies the routing process that generates the default route if the route map is satisfied"},"asNumber":{"type":"string","description":"The AS number of the BGP routing process"},"type":{"type":"string","default":"redistributebgp"}},"required":["asNumber","type"]},"RedistributeConnected":{"type":"object","properties":{"tagNumber":{"type":"integer","description":"A number to tag the routes redistributed into OSPF. Ranges from 0 to 4294967295"},"subnets":{"type":"boolean","description":"If true, considers subnets for redistribution into OSPF. Default is false."},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of the metrics to use while redistributing routes"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"A route map object that specifies the routing process that generates the default route if the route map is satisfied"},"type":{"type":"string","default":"redistributeconnected"}},"required":["type"]},"RedistributeEIGRP":{"type":"object","properties":{"tagNumber":{"type":"integer","description":"A number to tag the routes redistributed into OSPF. Ranges from 0 to 4294967295"},"subnets":{"type":"boolean","description":"If true, considers subnets for redistribution into OSPF. Default is false."},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of the metrics to use while redistributing routes"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"A route map object that specifies the routing process that generates the default route if the route map is satisfied"},"asNumber":{"type":"string","description":"The AS number of the EIGRP routing process"},"type":{"type":"string","default":"redistributeeigrp"}},"required":["asNumber","type"]},"RedistributeISIS":{"type":"object","properties":{"tagNumber":{"type":"integer","description":"A number to tag the routes redistributed into OSPF. Ranges from 0 to 4294967295"},"subnets":{"type":"boolean","description":"If true, considers subnets for redistribution into OSPF. Default is false."},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of the metrics to use while redistributing routes"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"A route map object that specifies the routing process that generates the default route if the route map is satisfied"},"routeLevel":{"type":"object","$ref":"#/definitions/RouteLevel","description":"The routing level for the IS-IS routing process. LEVEL_1 indicates intra-area routing, LEVEL_2 indicates inter-area routing, and LEVEL_1_2 indicates both levels. Default is LEVEL_2"},"type":{"type":"string","default":"redistributeisis"}},"required":["type","routeLevel"]},"RedistributeISISIPv6":{"type":"object","properties":{"tagNumber":{"type":"integer","description":"A number to tag the routes redistributed into OSPF. Ranges from 0 to 4294967295"},"subnets":{"type":"boolean","description":"If true, considers subnets for redistribution into OSPF. Default is false."},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of the metrics to use while redistributing routes"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"A route map object that specifies the routing process that generates the default route if the route map is satisfied"},"routeLevel":{"type":"object","$ref":"#/definitions/RouteLevel","description":"The routing level for the IS-IS routing process. LEVEL_1 indicates intra-area routing, LEVEL_2 indicates inter-area routing, and LEVEL_1_2 indicates both levels. Default is LEVEL_2"},"includeConnected":{"type":"boolean","description":"If true, includes all ISIS enabled IPv6 connected interfaces to be redistributed into this process"},"type":{"type":"string","default":"redistributeisisipv6"}},"required":["includeConnected","type","routeLevel"]},"RedistributeOSPF":{"type":"object","properties":{"tagNumber":{"type":"integer","description":"A number to tag the routes redistributed into OSPF. Ranges from 0 to 4294967295"},"subnets":{"type":"boolean","description":"If true, considers subnets for redistribution into OSPF. Default is false."},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of the metrics to use while redistributing routes"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"A route map object that specifies the routing process that generates the default route if the route map is satisfied"},"processId":{"type":"string","description":"The process id of the OSPF process"},"matchExternal1":{"type":"boolean","description":"If true, redistributes external type 1 routes"},"matchExternal2":{"type":"boolean","description":"If true, redistributes external type 2 routes"},"matchInternal":{"type":"boolean","description":"If true, redistributes OSPF internal routes"},"matchNssaExternal1":{"type":"boolean","description":"If true, redistributes nssa-external type 1 routes"},"matchNssaExternal2":{"type":"boolean","description":"If true, redistributes nssa-external type 2 routes"},"type":{"type":"string","default":"redistributeospf"}},"required":["processId","matchInternal","matchNssaExternal2","matchNssaExternal1","type","matchExternal2","matchExternal1"]},"RedistributeOSPFv3":{"type":"object","properties":{"tagNumber":{"type":"integer","description":"A number to tag the routes redistributed into OSPF. Ranges from 0 to 4294967295"},"subnets":{"type":"boolean","description":"If true, considers subnets for redistribution into OSPF. Default is false."},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of the metrics to use while redistributing routes"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"A route map object that specifies the routing process that generates the default route if the route map is satisfied"},"processId":{"type":"string","description":"The process id of the OSPF process"},"matchExternal1":{"type":"boolean","description":"If true, redistributes external type 1 routes"},"matchExternal2":{"type":"boolean","description":"If true, redistributes external type 2 routes"},"matchInternal":{"type":"boolean","description":"If true, redistributes OSPF internal routes"},"matchNssaExternal1":{"type":"boolean","description":"If true, redistributes nssa-external type 1 routes"},"matchNssaExternal2":{"type":"boolean","description":"If true, redistributes nssa-external type 2 routes"},"includeConnected":{"type":"boolean","description":"If true, includes all OSPFv3 enabled IPv6 connected interfaces to be redistributed into this process"},"type":{"type":"string","default":"redistributeospfv3"}},"required":["includeConnected","processId","matchInternal","matchNssaExternal2","matchNssaExternal1","type","matchExternal2","matchExternal1"]},"RedistributeRIP":{"type":"object","properties":{"tagNumber":{"type":"integer","description":"A number to tag the routes redistributed into OSPF. Ranges from 0 to 4294967295"},"subnets":{"type":"boolean","description":"If true, considers subnets for redistribution into OSPF. Default is false."},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of the metrics to use while redistributing routes"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"A route map object that specifies the routing process that generates the default route if the route map is satisfied"},"type":{"type":"string","default":"redistributerip"}},"required":["type"]},"RedistributeStatic":{"type":"object","properties":{"tagNumber":{"type":"integer","description":"A number to tag the routes redistributed into OSPF. Ranges from 0 to 4294967295"},"subnets":{"type":"boolean","description":"If true, considers subnets for redistribution into OSPF. Default is false."},"routeMetric":{"type":"object","$ref":"#/definitions/RouteMetric","description":"Represents the configuration of the metrics to use while redistributing routes"},"routeMap":{"type":"object","$ref":"#/definitions/ReferenceModel","description":"A route map object that specifies the routing process that generates the default route if the route map is satisfied"},"type":{"type":"string","default":"redistributestatic"}},"required":["type"]},"BlacklistAction":{"type":"string","enum":["BLOCK","MONITOR"]},"FeedUpdateFrequency":{"type":"string","enum":["DISABLED","THIRTY_MINS","ONE_HOUR","TWO_HOURS","FOUR_HOURS","SIX_HOURS","EIGHT_HOURS","TWELVE_HOURS","ONE_DAY","TWO_DAYS","ONE_WEEK"]},"NetworkFeed":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"lastUpdate":{"type":"string"},"updateFrequency":{"type":"object","$ref":"#/definitions/FeedUpdateFrequency"},"feedURL":{"type":"string"},"checksumURL":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"networkfeed"}},"required":["feedURL","type"],"example":{"id":"67a6b46b-3594-5931-8cee-f694738376f3","version":"7105855c-7821-585c-b499-839d20db8294","name":"networkfeed1","checksumURL":"Nesah reshu duata kijofe dohzuola juppecir ke ci roh riogfav ce lef wenisi azucilfa new dowbitdub.","feedURL":"http://iboro.com/ge","updateFrequency":"ONE_WEEK","lastUpdate":"2018-07-10 12:42:21.867Z","type":"networkfeed"}},"NetworkFeedCategory":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"longDescription":{"type":"string"},"shortDescription":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"networkfeedcategory"}},"required":["type"],"example":{"id":"41aedef1-f878-511a-88b1-6a97f8da7683","version":"ddcf49b5-59d1-5871-9d1f-d8bd5133ce0f","name":"networkfeedcategory1","type":"networkfeedcategory","shortDescription":"Josmo cavej kik pufmojpub lut gov uw ceshi rajpeuwi pu lumfomas pe egeego de juuvo birarasor.","longDescription":"Libga wu ki rulutihi fukgu jemoisu ruwuv koeca poc ufu gad tit tospe ganreshek tob olecomal nioksan."}},"NetworkFeedCategoryWrapper":{"allOf":[{"$ref":"#/definitions/NetworkFeedCategory"},{"$ref":"#/definitions/LinksWrapper"}]},"SecurityIntelligenceNetworkPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"whitelist":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"blacklistForBlock":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"securityintelligencenetworkpolicy"}},"required":["type"],"example":{"id":"0ea316eb-527a-5098-a64d-585fa1d4618e","whitelist":[{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}}],"blacklistForBlock":[{"id":"5f628e6e-9c10-55a9-a69b-78d400a47404","version":"10128965-b11b-5330-bcba-fc2ec3888558","name":"networkfeed23","checksumURL":"Iwiovozul jifeen girzi ci oze zekodo cujzo cefeto ze zihdeka muasa li hokano.","feedURL":"http://reah.io/revnil","updateFrequency":"ONE_HOUR","lastUpdate":"2018-07-12 12:42:21.872Z","type":"networkfeed"}],"version":"97086e22-b9cb-5709-ba75-f7e2551f17ba","name":"viovba","type":"securityintelligencenetworkpolicy"}},"SecurityIntelligenceNetworkPolicyWrapper":{"allOf":[{"$ref":"#/definitions/SecurityIntelligenceNetworkPolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"SecurityIntelligencePolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"securityIntelligenceNetworkPolicy":{"type":"object","$ref":"#/definitions/ReferenceModel"},"securityIntelligenceURLPolicy":{"type":"object","$ref":"#/definitions/ReferenceModel"},"logEnabled":{"type":"boolean"},"syslogServer":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"securityintelligencepolicy"}},"required":["securityIntelligenceNetworkPolicy","securityIntelligenceURLPolicy","type"],"example":{"id":"f0b864fa-9530-5dac-b94c-a056e4619934","securityIntelligenceNetworkPolicy":{"id":"0ea316eb-527a-5098-a64d-585fa1d4618e","whitelist":[{"id":"73ee665b-fbee-563d-92d0-c41d4e5fb7f2","name":"Network2","description":"Wavfu uk unlofu daefi ow fi te zebnah abaco so lodtiw kijeh upzesin kew zo eg.","version":"d5877fad-91a9-5848-95bd-509fc9538ec7","type":"networkobject","subType":"NETWORK","value":"166.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}}],"blacklistForBlock":[{"id":"5f628e6e-9c10-55a9-a69b-78d400a47404","version":"10128965-b11b-5330-bcba-fc2ec3888558","name":"networkfeed23","checksumURL":"Iwiovozul jifeen girzi ci oze zekodo cujzo cefeto ze zihdeka muasa li hokano.","feedURL":"http://reah.io/revnil","updateFrequency":"ONE_HOUR","lastUpdate":"2018-07-12 12:42:21.872Z","type":"networkfeed"}],"version":"97086e22-b9cb-5709-ba75-f7e2551f17ba","name":"viovba","type":"securityintelligencenetworkpolicy"},"securityIntelligenceURLPolicy":{"id":"b58aeb8a-9ab0-5cc2-b062-053a08affa7b","whitelist":[{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"blacklistForBlock":[{"id":"ef71cd89-a0fc-5994-aaff-0f427dff92fa","version":"pugvagpugmi","name":"UrlGroup5","description":"Muhzipil korezoki kuwelas fojulcud jum ineteig ob zeluc mekpufes api ajnovawa ro tadi.","objects":[{"id":"0776578c-c6ee-58a3-91de-7d50b64343b8","version":"bimupair","name":"Url7","description":"Mer komad cozmersul el gaze fupfod gij pikukkop kavimgen befowez guwojo bikpogezu ice niruvpo ganal ovo taun.","url":"http://difepfel.io/ovcekwe","type":"urlobject"}],"type":"urlobjectgroup"},{"id":"1ec355c1-47fb-55b1-b8d1-6d6a465821ca","version":"hapevemoco","name":"Url10","description":"Cagsif ju ilawusne kal uw tewwuvmul cu suilu putuz fuwabe wi favig bibothep ti hire gucrak.","url":"http://ni.net/civ","type":"urlobject"},{"id":"e9248457-7eaf-5343-9069-e672bf530f61","version":"5e4d020b-63f5-5cf7-b09a-1223a60908b7","name":"urlfeed3","checksumURL":"Ackurpi tairjif nuabowu teg buuzro tiohumah mogolar mukva divti inabufepu jis decicev zomajpe cufowgo wazatevo ku okrocelo mibuw.","feedURL":"http://hif.com/efasepnu","updateFrequency":"ONE_WEEK","lastUpdate":"2018-07-10 12:42:21.877Z","type":"urlfeed"}],"version":"19d1ac8b-8d22-5601-96b5-4d965ecac9ec","name":"vibeaze","type":"securityintelligenceurlpolicy"},"syslogServer":{"id":"5f0e6c85-c926-5164-b869-521630fab8d0","version":"bf8528ac-8ccc-5ef7-a484-11e827a3cd66","host":"80.207.116.68","port":5897,"deviceInterface":{"mtu":5818,"enabled":true,"description":"Setta biwofega af ihi ebele inowo inagiobo nu it fe heivu lijivok.","name":"diagnostic","id":"f7509b61-168c-5d86-9a4c-8d3a2bb23e90","hardwareName":"Management0/0","macAddress":"249A.16A4.5DED","monitorInterface":true,"standbyMacAddress":"06D4.757D.FF06","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":37,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"0c4e:e907:93c3:ba7a:7842:4899:f454:2a33/32","ipAddress":"41e0:3a60:0ca6:5f1c:cdd5:9c57:4918:682f/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"d039:d6f4:278a:cdd3:b9e3:2711:460f:1555","ipAddress":"7e31:6d3f:5bbc:0d7f:4df6:58b9:26a6:d462"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":56,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"227.88.54.119","standbyIpAddress":"119.107.19.197"}},"version":"e50dac9e-5493-5760-b5e5-294741f3c409","managementInterface":true,"managementOnly":true,"duplexType":"AUTO","speedType":"AUTO","linkState":"DOWN","mode":"PASSIVE","type":"physicalinterface"},"protocol":"UDP","useManagementInterface":false,"type":"syslogserver"},"logEnabled":true,"name":"NGFW-Default-Security-Intelligence-Policy","version":"c6b476ea-d3cd-55eb-ad8b-8541b6555ae3","type":"securityintelligencepolicy"}},"SecurityIntelligencePolicyWrapper":{"allOf":[{"$ref":"#/definitions/SecurityIntelligencePolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"SecurityIntelligenceURLPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"whitelist":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"blacklistForBlock":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"securityintelligenceurlpolicy"}},"required":["type"],"example":{"id":"b58aeb8a-9ab0-5cc2-b062-053a08affa7b","whitelist":[{"id":"ce7eba4c-0b9a-5a3f-bb88-6ce71398fbc8","version":"epozikeccow","name":"UrlGroup1","description":"Kajili nockugda van cikepuh toavah kebpi muwnumo tezotu pelapdec sif fepgo hul sacwav na.","objects":[{"id":"d31c2d0e-3ad0-5053-9a7b-a0ef29eff5f9","version":"ajolouhog","name":"Url8","description":"Kirgirac rireto vu nimu kek bo dosoze tillen wisud kerecfar evibur wen cehpa weg ju doneh.","url":"http://de.co.uk/neni","type":"urlobject"},{"id":"d72bd5cf-710c-5048-b0fa-1bda6746520d","version":"onaisujuja","name":"Url3","description":"Nolze no gavrofkep dog di buc ta oko kon pigu fuezo uzara.","url":"http://gagonofi.edu/letiga","type":"urlobject"}],"type":"urlobjectgroup"}],"blacklistForBlock":[{"id":"ef71cd89-a0fc-5994-aaff-0f427dff92fa","version":"pugvagpugmi","name":"UrlGroup5","description":"Muhzipil korezoki kuwelas fojulcud jum ineteig ob zeluc mekpufes api ajnovawa ro tadi.","objects":[{"id":"0776578c-c6ee-58a3-91de-7d50b64343b8","version":"bimupair","name":"Url7","description":"Mer komad cozmersul el gaze fupfod gij pikukkop kavimgen befowez guwojo bikpogezu ice niruvpo ganal ovo taun.","url":"http://difepfel.io/ovcekwe","type":"urlobject"}],"type":"urlobjectgroup"},{"id":"1ec355c1-47fb-55b1-b8d1-6d6a465821ca","version":"hapevemoco","name":"Url10","description":"Cagsif ju ilawusne kal uw tewwuvmul cu suilu putuz fuwabe wi favig bibothep ti hire gucrak.","url":"http://ni.net/civ","type":"urlobject"},{"id":"e9248457-7eaf-5343-9069-e672bf530f61","version":"5e4d020b-63f5-5cf7-b09a-1223a60908b7","name":"urlfeed3","checksumURL":"Ackurpi tairjif nuabowu teg buuzro tiohumah mogolar mukva divti inabufepu jis decicev zomajpe cufowgo wazatevo ku okrocelo mibuw.","feedURL":"http://hif.com/efasepnu","updateFrequency":"ONE_WEEK","lastUpdate":"2018-07-10 12:42:21.877Z","type":"urlfeed"}],"version":"19d1ac8b-8d22-5601-96b5-4d965ecac9ec","name":"vibeaze","type":"securityintelligenceurlpolicy"}},"SecurityIntelligenceURLPolicyWrapper":{"allOf":[{"$ref":"#/definitions/SecurityIntelligenceURLPolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"SystemFeedObject":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"lastUpdate":{"type":"string"},"updateFrequency":{"type":"object","$ref":"#/definitions/FeedUpdateFrequency"},"id":{"type":"string"},"type":{"type":"string","default":"systemfeedobject"}},"required":["type"]},"SystemFeedObjectWrapper":{"allOf":[{"$ref":"#/definitions/SystemFeedObject"},{"$ref":"#/definitions/LinksWrapper"}]},"URLFeed":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"lastUpdate":{"type":"string"},"updateFrequency":{"type":"object","$ref":"#/definitions/FeedUpdateFrequency"},"feedURL":{"type":"string"},"checksumURL":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"urlfeed"}},"required":["feedURL","type"],"example":{"id":"d4380ea9-8b36-53fc-8a73-bab5fd237b72","version":"52e9af0b-cd4a-5827-ae7c-19e95072ef74","name":"urlfeed1","checksumURL":"Mu vala ijban oc cenpeko vulle taphesip bibzihziz anvihcum liv ukuhavti zefeg hecu.","feedURL":"http://doc.gov/so","updateFrequency":"TWELVE_HOURS","lastUpdate":"2018-07-07 12:42:21.877Z","type":"urlfeed"}},"URLFeedCategory":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"longDescription":{"type":"string"},"shortDescription":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"urlfeedcategory"}},"required":["type"],"example":{"id":"fe1ba0ad-6d1b-5749-bb87-b9c5c2b7a9ef","version":"31eeced9-ac3f-57dc-9bd2-c4bab053be8d","name":"urlfeedcategory1","type":"urlfeedcategory","shortDescription":"Pobzun gi ahiasa bosicus fi muv uciumo gusfucfe obube wupo hadomug efij oz rovocerip ag dicahce.","longDescription":"Ba kiivobew mo ehaur jiwor oppesin keif piz kizkose dow mafezlab cujuak co evoewureh wucure nut bukimjim cukejo."}},"URLFeedCategoryWrapper":{"allOf":[{"$ref":"#/definitions/URLFeedCategory"},{"$ref":"#/definitions/LinksWrapper"}]},"AuthorizationStatus":{"type":"string","enum":["AUTHORIZED","AUTH_EXPIRED","EVAL","NOT_AUTHORIZED","OUT_OF_COMPLIANCE","RENEW_AUTH_FAILED","UNREGISTERED"]},"ConnectionType":{"type":"string","enum":["REGISTER","EVALUATION"]},"FeatureType":{"type":"string","enum":["BASE","MALWARE","THREAT","URLFILTERING","RAVPN"]},"License":{"type":"object","properties":{"version":{"type":"string"},"count":{"type":"integer"},"compliant":{"type":"boolean"},"id":{"type":"string"},"licenseType":{"type":"object","$ref":"#/definitions/LicenseType"},"type":{"type":"string","default":"license"}},"required":["licenseType","count","type"],"example":{"id":"b3ae194b-dd83-5a7e-9771-c0fae5afb930","type":"license","version":"c6a80456-8a08-5616-bfa4-b5e4ce20ee8b","count":1,"compliant":true,"licenseType":"BASE"}},"LicenseWrapper":{"allOf":[{"$ref":"#/definitions/License"},{"$ref":"#/definitions/LinksWrapper"}]},"LicenseJobHistory":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"licensejobhistory"}},"required":["type"]},"LicenseJobHistoryWrapper":{"allOf":[{"$ref":"#/definitions/LicenseJobHistory"},{"$ref":"#/definitions/LinksWrapper"}]},"LicenseRegistrationJobHistory":{"type":"object","properties":{"version":{"type":"string"},"jobName":{"type":"string"},"jobDescription":{"type":"string"},"user":{"type":"string"},"startDateTime":{"type":"string"},"endDateTime":{"type":"string"},"status":{"type":"object","$ref":"#/definitions/JobHistoryEntity$JobHistoryStatus"},"statusMessage":{"type":"string"},"scheduleUuid":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"licenseregistrationjobhistory"}},"required":["type"]},"LicenseType":{"type":"string","enum":["BASE","MALWARE","THREAT","URLFILTERING","APEX","PLUS","VPNOnly"]},"RegistrationStatus":{"type":"string","enum":["EVAL","REGISTERED","RENEW_CERT_FAILED","UNREGISTERED"]},"SmartAgentConnection":{"type":"object","properties":{"version":{"type":"string"},"connectionType":{"type":"object","$ref":"#/definitions/ConnectionType"},"token":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"smartagentconnection"}},"required":["type","connectionType"],"example":{"id":"3b4d496b-6389-55dc-b6ad-dcb67b2d703e","version":"7741a162-7b0e-5a57-add8-36ba2465ebe8","type":"smartagentconnection","token":"68205fbc-135c-5e1c-b82e-70b193a4887d","connectionType":"REGISTER"}},"SmartAgentConnectionWrapper":{"allOf":[{"$ref":"#/definitions/SmartAgentConnection"},{"$ref":"#/definitions/LinksWrapper"}]},"SmartAgentStatus":{"type":"object","properties":{"version":{"type":"string"},"registrationStatus":{"type":"object","$ref":"#/definitions/RegistrationStatus"},"registrationTimeStamp":{"type":"integer"},"authorizationStatus":{"type":"object","$ref":"#/definitions/AuthorizationStatus"},"authorizationTimeStamp":{"type":"integer"},"virtualAccount":{"type":"string"},"exportControl":{"type":"boolean"},"evaluationStartTime":{"type":"integer"},"evaluationRemainingDays":{"type":"integer"},"syncTimeStamp":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"smartagentstatus"}},"required":["type"],"example":{"id":"0b73abad-0104-52f0-b504-c7cde11823d2","type":"smartagentstatus","version":"58293770-2ec9-5bd4-b4fd-bfa22eb10f05","authorizationStatus":"AUTHORIZED","exportControl":true,"registrationStatus":"REGISTERED","evaluationStartTime":1531831341836,"authorizationTimeStamp":1531831341836,"virtualAccount":"dis","evaluationRemainingDays":22,"registrationTimeStamp":1531831341836,"syncTimeStamp":1531831341836}},"SmartAgentStatusWrapper":{"allOf":[{"$ref":"#/definitions/SmartAgentStatus"},{"$ref":"#/definitions/LinksWrapper"}]},"SmartAgentSyncRequest":{"type":"object","properties":{"version":{"type":"string"},"sync":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"smartagentsyncrequest"}},"required":["type","sync"]},"SmartAgentSyncRequestWrapper":{"allOf":[{"$ref":"#/definitions/SmartAgentSyncRequest"},{"$ref":"#/definitions/LinksWrapper"}]},"FlowBit":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"rules":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"flowbit"}},"required":["type"]},"FlowBitState":{"type":"string","enum":["SET","SETX","UNSET","IS_SET","IS_NOT_SET"]},"IPSVariableNetworkGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","default":"ipsvariablenetworkgroup"},"includedNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"excludedNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"}},"required":["type"]},"IPSVariablePortGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","default":"ipsvariableportgroup"},"includedPorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"excludedPorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"}},"required":["type"]},"IPSVariableType":{"type":"string","enum":["PORT_GROUP","NETWORK_GROUP"]},"IntrusionPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"rules":{"type":"object","$ref":"#/definitions/LinksReference"},"id":{"type":"string"},"type":{"type":"string","default":"intrusionpolicy"}},"required":["type"],"example":{"id":"a47cb8f6-fe55-11e4-8e99-ipsN10","name":"Connectivity Over Security","links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10"},"rules":{"links":{"self":"http://url/api/fdm/v2/policy/intrusionpolicies/a47cb8f6-fe55-11e4-8e99-ipsN10/rules/"}},"description":"Connectivity Over Security Layer","type":"intrusionpolicy","version":"f17dd031-7eba-5f6f-8734-300a871471fe"}},"IntrusionPolicyWrapper":{"allOf":[{"$ref":"#/definitions/IntrusionPolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"IntrusionPolicyRuleUpdate":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"ruleConfigs":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"intrusionpolicyruleupdate"}},"required":["type"]},"IntrusionPolicyRuleUpdateWrapper":{"allOf":[{"$ref":"#/definitions/IntrusionPolicyRuleUpdate"},{"$ref":"#/definitions/LinksWrapper"}]},"IntrusionRule":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"gid":{"type":"integer"},"sid":{"type":"integer"},"revision":{"type":"integer"},"msg":{"type":"string"},"ruleData":{"type":"string"},"defaultState":{"type":"object","$ref":"#/definitions/IntrusionRuleState"},"overrideState":{"type":"object","$ref":"#/definitions/IntrusionRuleState"},"id":{"type":"string"},"type":{"type":"string","default":"intrusionrule"}},"required":["type"]},"IntrusionRuleWrapper":{"allOf":[{"$ref":"#/definitions/IntrusionRule"},{"$ref":"#/definitions/LinksWrapper"}]},"IntrusionRuleConfig":{"type":"object","properties":{"state":{"type":"object","$ref":"#/definitions/IntrusionRuleState"},"id":{"type":"string"}}},"IntrusionRuleState":{"type":"string","enum":["DISABLED","ALERT","DROP"]},"IntrusionSettings":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"syslogServer":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"intrusionsettings"}},"required":["type"],"example":{"version":"14cc33d4-6e2d-11e7-966d-1df2f1dcfb38","syslogServer":{"id":"2f33d844-7516-5f6e-87ed-8da737ce2a78","version":"d7f05fd4-062b-5c81-9a97-7de1c7591fda","host":"139.79.31.136","port":5897,"protocol":"TCP","useManagementInterface":true,"type":"syslogserver"},"id":"14cc33d5-6e2d-11e7-966d-47267ec445a9","type":"intrusionsettings","links":{"self":"http://url/api/fdm/v2/object/intrusionsettings/14cc33d5-6e2d-11e7-966d-47267ec445a9"}}},"IntrusionSettingsWrapper":{"allOf":[{"$ref":"#/definitions/IntrusionSettings"},{"$ref":"#/definitions/LinksWrapper"}]},"SRUIntrusionPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"rules":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"advancedConfig":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"sruintrusionpolicy"}},"required":["type"]},"FlowBitRuleRelation":{"type":"object","properties":{"objId":{"type":"integer"},"flowBit":{"type":"object","$ref":"#/definitions/ReferenceModel"},"rule":{"type":"object","$ref":"#/definitions/ReferenceModel"},"state":{"type":"object","$ref":"#/definitions/FlowBitState"}}},"IntrusionRuleRelation":{"type":"object","properties":{"objId":{"type":"integer"},"ipsPolicy":{"type":"object","$ref":"#/definitions/ReferenceModel"},"rule":{"type":"object","$ref":"#/definitions/ReferenceModel"},"ruleState":{"type":"object","$ref":"#/definitions/IntrusionRuleState"}}},"CertificateStatus":{"type":"object","properties":{"isValid":{"type":"object","$ref":"#/definitions/CertificateStatus$CertificateStatusChoice"},"isSelfSigned":{"type":"object","$ref":"#/definitions/CertificateStatus$CertificateStatusChoice"},"type":{"type":"string","default":"certificatestatus"}},"required":["isValid","type","isSelfSigned"]},"CertificateStatus$CertificateStatusChoice":{"type":"string","enum":["YES","NO","ANY"]},"DistinguishedName":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystemDefined":{"type":"boolean"},"dn":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"distinguishedname"}},"required":["dn","type"],"example":{"id":"8b7cc5f7-4306-5c95-b546-47449593b1e9","version":"41245827-09c1-56f0-9f3a-d90de9051908","name":"distinguished_name1","description":"description","dn":"CN=*.citrixonline.com","type":"distinguishedname","isSystemDefined":false}},"DistinguishedNameGroup":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystemDefined":{"type":"boolean"},"distiniguishedNames":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"distinguishednamegroup"}},"required":["type"],"example":{"id":"56d71648-91f6-47d3-b3f3-f92148089cd0","version":"306121d0-28f9-528b-b887-164afc8a3b34","name":"distinguished_name_group_1","description":"description","distiniguishedNames":[{"id":"d7c5af55-a27f-5c0d-b871-b589ef21d57b","version":"2ce6d20b-3a41-597d-ba6a-8470bb305a80","name":"distinguished_name13","description":"description","dn":"CN=gsa.apple.com","type":"distinguishedname","isSystemDefined":false},{"id":"bd2ac8b7-6ffb-52ff-bba3-17ae8c574a9f","version":"c1c10436-3f4c-5761-973c-780e490feeec","name":"distinguished_name10","description":"description","dn":"CN=gsa.apple.com","type":"distinguishedname","isSystemDefined":true}],"isSystemDefined":false,"type":"distinguishednamegroup"}},"SSLPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"undecryptableActions":{"type":"object","$ref":"#/definitions/SSLUndecryptableActions"},"decryptionCACertificate":{"type":"object","$ref":"#/definitions/ReferenceModel"},"internalCertificates":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"defaultAction":{"type":"object","$ref":"#/definitions/SSLPolicyDefaultAction"},"id":{"type":"string"},"type":{"type":"string","default":"sslpolicy"}},"required":["defaultAction","undecryptableActions","type"],"example":{"id":"default-ssl-random-id","type":"sslpolicy","version":"dc207d5a-c82b-54c6-b909-57bc23791864","name":"SSL_Policy_1","sslRules":[],"undecryptableActions":{"type":"sslundecryptableactions","compressedSession":"DO_NOT_DECRYPT","sslV2Session":"BLOCK_WITH_RESET","unknownCipherSuite":"INHERIT_DEFAULT_ACTION","unsupportedCipherSuite":"INHERIT_DEFAULT_ACTION","sessionNotCached":"BLOCK_WITH_RESET","handShakeErrors":"BLOCK","decryptionErrors":"BLOCK"},"decryptionCACertificate":{"id":"4d266d16-14e6-58c4-940a-2246efd34363","name":"Internal CA1","cert":"-----BEGIN CERTIFICATE-----\nMIIDEjCCAnugAwIBAgIJAJ69cfUJsifzMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD\nVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQL\nDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkq\nhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQ0NTJaFw0x\nNjA0MDUxNDQ0NTJaMIGVMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDzAN\nBgNVBAcMBkF1c3RpbjEVMBMGA1UECgwMQURJIGF0IENpc2NvMQwwCgYDVQQLDANB\nREkxHTAbBgNVBAMMFEFESSBUZXN0aW5nIEF0IENpc2NvMSEwHwYJKoZIhvcNAQkB\nFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\nAKk6jiG3XImaQNnVe1zeRbchMVbpBxdDYIRt0Eqvl2HqfAZJDKSw+s080iMC5Dmg\nTvOaZYaf4rc92z/WpMTgiOxmwKLhaw1INzBptxc4JoQPNFG4qUSVIHW9mnoXwluo\naXypJKAgeLukuO5tdUj9Iy4IHabMmJxcQsZ1vJ65cIH5AgMBAAGjezB5MAkGA1Ud\nEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj\nYXRlMB0GA1UdDgQWBBROqbPMUm6cUg+E/ficJa8WkdhcwzAfBgNVHSMEGDAWgBRD\nXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBaoTmcEb14AIcd\nq6R34phLlDP1JRV54NQ5gTXK858dyRE41CHensHSwXlHUg2JJ/LuUhK7h+ST1Qhy\nkFCHNQHh9ojRK34ydIIltGaGGCIZDEgUqhc7IeZ/PSR5252vQaAwDWDxapA2ZsVo\nr9OY0Q7uuCLvNNiQQzvjlnQZ94Rp4A==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqsrdtuAzs/APtjiJefyhxCnheLOFOP8BfvtcdfFNFVj3RP5n30AYGmTT31dTLPeA4dYHgthUImKkxcWIOuJqHlLrEo3fmfEbhy8KehfQ0Pfy+4K/QTB7NU28/K9Hr0Mwz6bUuboby/BvIi1u/ZIzl5KlmJBz/cQMPonD2hte2fwvkqCfhpNl25tMzEpyqCAa4tciUqSXf0Zs63XtcVPBpuGN6vU0QllqxLbzsQ7ShwymBiLnUqX95tWkJCrRIfklEwlbTXyRM5NSjk6EdZeDfX5OHexV4AodbtGZSeQYU7s2vs50khtIWVGr+14dPguWf9ggMCRoX+B9RogfV03IVAgMBAAECggEAfwLTsXQNShiK46uqrx12fgYIYiqKyqps/dEGRw5G94SgIp5sdhP3J9m/q9kTqNa1i80Dgqx5IhhVbFCtYb7CXLex8LahdIJsS35NpZ6OgoDNG0ocB6VcFfNLB3oXjJukFcyD37Sl/Q7RrXrkHZk3radi1Hlyii8Q1AVOgGD9CPBwRaBrjAuJXunJRSnzJ1MuV29PoNSOcQ0o+q26JkZaTcFHt/iVdeBiKFEyfwd6oWTkpRQiUD+Xi/P9XkYud1nou64dvw6XIDpsV7uX07OASHk1fuQjDJLwyO4KlcWBzNb6Z1sE6l1EqHcZKqijcYISElzPGTEVlDkXAT5YxiIjAQKBgQDVYP/8obthBaUBFVkPaZNUzLsjyv9ONOWVHIzw9YVOmC7v2WdrnDgoBkNaV4SdCOYsJW+887nA6zK2208DlRea1fAcZWgItRqvJi9wiqtZAS1BCC+tTliYS3x/wqmFyFRqLK4dIqpbZ52+vEoEMgrDJmzG7k7aXjAm9+JH+MqfBQKBgQDMy0KcdA68h5VlbifLnMbQUJO7Zy081Tdbpgnf02/PaC/HHbYnbn/hWv8TTuoBcEDkh0nl3JRmPKMyF+Aeqj5Xd6A4znRQXq9ZPcOyKYw08VGkf4m41mm2Iq7HcSwhZFlWZWfA3cCU+Z5eTVY7RBQjoJ8Qk6LyRjAmlA5xiMVT0QKBgGVDeXjtUD3FLf+LoA5+bhsqZg2ggvUciW/wcrrP6gnYkz3kkP4yzzu/bStsqVTVKlb9FUA48oiplhHNlnv+v4sNyLvRLEQlnppMpurkBFljA5T/S5EVw1nTSSxgt47z+YvB1IejMfHbBLPGK+I91XmzvJ/T7LwZQwTbUxoQ6if5AoGBAMuoErzteT4pAvuUWQTWCqxchR1nVIhbbKq6arVoWZeDf4fe1ydNbuSXjnQQFQuLKy1YELgC7JzjDlOhhKJaIJbxAqebP/YwwuXXU0ZYpPJ9TPhuUHI833Fd+juiIwWt+l29iDk3DO3ZcpFLDUbww6pOcACXIQMXo4ip0dc78SgRAoGAEb7FK7hqFmBk24Pu5vzKE/BYYD1mY17+zmeFocn2vu89jLYvRGYrvuGn9TgD3zeXjNsAqbMW8Td5F3xnMJ3JHhnAQHd1Wh5VROsXfhtT/Uhl4eCGEkKqM+EEBD6Z3UsZbNFRGEl1xThzdwchLt0WNTD9kuoxWkjV3hjPBnkJlvk=-----END PRIVATE KEY-----","issuerCommonName":"FTD OnBox Team Testing at Cisco","issuerOrganizationUnit":"FTD","subjectCommonName":"FTD Testing At Cisco","subjectOrganization":"FTD at Cisco","subjectOrganizationUnit":"FTD","validityStartDate":"Apr 6 14:44:52 2015 GMT","validityEndDate":"Feb 16 14:44:52 2017 GMT","type":"internalcacertificate","version":"6d05cd7f-3d24-55de-85d1-7d5a97f95f58"},"internalCertificates":[{"id":"2b778d3e-fdfe-55f2-88f9-3f29239683bb","name":"Internal CA2","cert":"-----BEGIN CERTIFICATE-----\nMIIDEjCCAnugAwIBAgIJAJ69cfUJsifzMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD\nVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDjAMBgNVBAoMBUNpc2NvMQwwCgYDVQQL\nDANBREkxIjAgBgNVBAMMGUFESSBUZWFtIFRlc3RpbmcgYXQgQ2lzY28xITAfBgkq\nhkiG9w0BCQEWEnRjaHJpc3RtQGNpc2NvLmNvbTAeFw0xNTA0MDYxNDQ0NTJaFw0x\nNjA0MDUxNDQ0NTJaMIGVMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxDzAN\nBgNVBAcMBkF1c3RpbjEVMBMGA1UECgwMQURJIGF0IENpc2NvMQwwCgYDVQQLDANB\nREkxHTAbBgNVBAMMFEFESSBUZXN0aW5nIEF0IENpc2NvMSEwHwYJKoZIhvcNAQkB\nFhJ0Y2hyaXN0bUBjaXNjby5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\nAKk6jiG3XImaQNnVe1zeRbchMVbpBxdDYIRt0Eqvl2HqfAZJDKSw+s080iMC5Dmg\nTvOaZYaf4rc92z/WpMTgiOxmwKLhaw1INzBptxc4JoQPNFG4qUSVIHW9mnoXwluo\naXypJKAgeLukuO5tdUj9Iy4IHabMmJxcQsZ1vJ65cIH5AgMBAAGjezB5MAkGA1Ud\nEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj\nYXRlMB0GA1UdDgQWBBROqbPMUm6cUg+E/ficJa8WkdhcwzAfBgNVHSMEGDAWgBRD\nXj/hqU0NPpTv1+Z6O7LQixcgxTANBgkqhkiG9w0BAQUFAAOBgQBaoTmcEb14AIcd\nq6R34phLlDP1JRV54NQ5gTXK858dyRE41CHensHSwXlHUg2JJ/LuUhK7h+ST1Qhy\nkFCHNQHh9ojRK34ydIIltGaGGCIZDEgUqhc7IeZ/PSR5252vQaAwDWDxapA2ZsVo\nr9OY0Q7uuCLvNNiQQzvjlnQZ94Rp4A==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqsrdtuAzs/APtjiJefyhxCnheLOFOP8BfvtcdfFNFVj3RP5n30AYGmTT31dTLPeA4dYHgthUImKkxcWIOuJqHlLrEo3fmfEbhy8KehfQ0Pfy+4K/QTB7NU28/K9Hr0Mwz6bUuboby/BvIi1u/ZIzl5KlmJBz/cQMPonD2hte2fwvkqCfhpNl25tMzEpyqCAa4tciUqSXf0Zs63XtcVPBpuGN6vU0QllqxLbzsQ7ShwymBiLnUqX95tWkJCrRIfklEwlbTXyRM5NSjk6EdZeDfX5OHexV4AodbtGZSeQYU7s2vs50khtIWVGr+14dPguWf9ggMCRoX+B9RogfV03IVAgMBAAECggEAfwLTsXQNShiK46uqrx12fgYIYiqKyqps/dEGRw5G94SgIp5sdhP3J9m/q9kTqNa1i80Dgqx5IhhVbFCtYb7CXLex8LahdIJsS35NpZ6OgoDNG0ocB6VcFfNLB3oXjJukFcyD37Sl/Q7RrXrkHZk3radi1Hlyii8Q1AVOgGD9CPBwRaBrjAuJXunJRSnzJ1MuV29PoNSOcQ0o+q26JkZaTcFHt/iVdeBiKFEyfwd6oWTkpRQiUD+Xi/P9XkYud1nou64dvw6XIDpsV7uX07OASHk1fuQjDJLwyO4KlcWBzNb6Z1sE6l1EqHcZKqijcYISElzPGTEVlDkXAT5YxiIjAQKBgQDVYP/8obthBaUBFVkPaZNUzLsjyv9ONOWVHIzw9YVOmC7v2WdrnDgoBkNaV4SdCOYsJW+887nA6zK2208DlRea1fAcZWgItRqvJi9wiqtZAS1BCC+tTliYS3x/wqmFyFRqLK4dIqpbZ52+vEoEMgrDJmzG7k7aXjAm9+JH+MqfBQKBgQDMy0KcdA68h5VlbifLnMbQUJO7Zy081Tdbpgnf02/PaC/HHbYnbn/hWv8TTuoBcEDkh0nl3JRmPKMyF+Aeqj5Xd6A4znRQXq9ZPcOyKYw08VGkf4m41mm2Iq7HcSwhZFlWZWfA3cCU+Z5eTVY7RBQjoJ8Qk6LyRjAmlA5xiMVT0QKBgGVDeXjtUD3FLf+LoA5+bhsqZg2ggvUciW/wcrrP6gnYkz3kkP4yzzu/bStsqVTVKlb9FUA48oiplhHNlnv+v4sNyLvRLEQlnppMpurkBFljA5T/S5EVw1nTSSxgt47z+YvB1IejMfHbBLPGK+I91XmzvJ/T7LwZQwTbUxoQ6if5AoGBAMuoErzteT4pAvuUWQTWCqxchR1nVIhbbKq6arVoWZeDf4fe1ydNbuSXjnQQFQuLKy1YELgC7JzjDlOhhKJaIJbxAqebP/YwwuXXU0ZYpPJ9TPhuUHI833Fd+juiIwWt+l29iDk3DO3ZcpFLDUbww6pOcACXIQMXo4ip0dc78SgRAoGAEb7FK7hqFmBk24Pu5vzKE/BYYD1mY17+zmeFocn2vu89jLYvRGYrvuGn9TgD3zeXjNsAqbMW8Td5F3xnMJ3JHhnAQHd1Wh5VROsXfhtT/Uhl4eCGEkKqM+EEBD6Z3UsZbNFRGEl1xThzdwchLt0WNTD9kuoxWkjV3hjPBnkJlvk=-----END PRIVATE KEY-----","issuerCommonName":"FTD OnBox Team Testing at Cisco","issuerOrganizationUnit":"FTD","subjectCommonName":"FTD Testing At Cisco","subjectOrganization":"FTD at Cisco","subjectOrganizationUnit":"FTD","validityStartDate":"Apr 6 14:44:52 2015 GMT","validityEndDate":"Feb 16 14:44:52 2017 GMT","type":"internalcacertificate","version":"d4f4de1a-52f0-5e77-89c6-72aecb7eba93"}],"defaultAction":{"type":"sslpolicydefaultaction","policyAction":"DO_NOT_DECRYPT","eventLogAction":"LOG_NONE"}}},"SSLPolicyWrapper":{"allOf":[{"$ref":"#/definitions/SSLPolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"SSLPolicyDefaultAction":{"type":"object","properties":{"policyAction":{"type":"object","$ref":"#/definitions/SSLRule$SSLRuleAction"},"eventLogAction":{"type":"object","$ref":"#/definitions/SSLRule$EventLogActionSSL"},"syslogServer":{"type":"object","$ref":"#/definitions/ReferenceModel"},"type":{"type":"string","default":"sslpolicydefaultaction"}},"required":["policyAction","eventLogAction","type"],"example":{"type":"sslpolicydefaultaction","policyAction":"DO_NOT_DECRYPT","eventLogAction":"LOG_NONE"}},"SSLRule":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"ruleId":{"type":"integer"},"sourceZones":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationZones":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"sourceNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"sourcePorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"destinationPorts":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ruleAction":{"type":"object","$ref":"#/definitions/SSLRule$SSLRuleAction"},"eventLogAction":{"type":"object","$ref":"#/definitions/SSLRule$EventLogActionSSL"},"users":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"embeddedAppFilter":{"type":"object","$ref":"#/definitions/EmbeddedAppFilterBase"},"urlCategories":{"type":"array","items":{"type":"object","$ref":"#/definitions/URLCategoryMatcher"}},"subjectDNs":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"issuerDNs":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"certificateStatus":{"type":"object","$ref":"#/definitions/CertificateStatus"},"syslogServer":{"type":"object","$ref":"#/definitions/ReferenceModel"},"sslv3":{"type":"boolean"},"tls10":{"type":"boolean"},"tls11":{"type":"boolean"},"tls12":{"type":"boolean"},"id":{"type":"string"},"type":{"type":"string","default":"sslrule"}},"required":["certificateStatus","sslv3","tls12","type","tls11","tls10"]},"SSLRuleWrapper":{"allOf":[{"$ref":"#/definitions/SSLRule"},{"$ref":"#/definitions/LinksWrapper"}]},"SSLRule$SSLRuleAction":{"type":"string","enum":["DECRYPT_RE_SIGN","DECRYPT_KNOWN_KEY","DO_NOT_DECRYPT","BLOCK"]},"SSLRule$EventLogActionSSL":{"type":"string","enum":["LOG_FLOW_END","LOG_NONE"]},"SSLUndecryptableActions":{"type":"object","properties":{"compressedSession":{"type":"object","$ref":"#/definitions/SSLUndecryptableActions$UndecryptableActionChoice"},"sslV2Session":{"type":"object","$ref":"#/definitions/SSLUndecryptableActions$UndecryptableActionChoice"},"unknownCipherSuite":{"type":"object","$ref":"#/definitions/SSLUndecryptableActions$UndecryptableActionChoice"},"unsupportedCipherSuite":{"type":"object","$ref":"#/definitions/SSLUndecryptableActions$UndecryptableActionChoice"},"sessionNotCached":{"type":"object","$ref":"#/definitions/SSLUndecryptableActions$UndecryptableActionChoice"},"handShakeErrors":{"type":"object","$ref":"#/definitions/SSLUndecryptableActions$UndecryptableActionChoice"},"decryptionErrors":{"type":"object","$ref":"#/definitions/SSLUndecryptableActions$DecryptionErrorsChoice"},"type":{"type":"string","default":"sslundecryptableactions"}},"required":["handShakeErrors","decryptionErrors","sslV2Session","unknownCipherSuite","compressedSession","unsupportedCipherSuite","sessionNotCached","type"],"example":{"type":"sslundecryptableactions","compressedSession":"DO_NOT_DECRYPT","sslV2Session":"BLOCK_WITH_RESET","unknownCipherSuite":"INHERIT_DEFAULT_ACTION","unsupportedCipherSuite":"INHERIT_DEFAULT_ACTION","sessionNotCached":"BLOCK_WITH_RESET","handShakeErrors":"BLOCK","decryptionErrors":"BLOCK"}},"SSLUndecryptableActions$UndecryptableActionChoice":{"type":"string","enum":["INHERIT_DEFAULT_ACTION","DO_NOT_DECRYPT","BLOCK","BLOCK_WITH_RESET"]},"SSLUndecryptableActions$DecryptionErrorsChoice":{"type":"string","enum":["BLOCK","BLOCK_WITH_RESET"]},"TrafficInterruptionCause":{"type":"string","enum":["SSL_ENABLED","SSL_DISABLED","MTU_CHANGED","VDB_UPDATE"]},"TrafficInterruptionReasons":{"type":"object","properties":{"reasons":{"type":"array","items":{"type":"object","$ref":"#/definitions/TrafficInterruptionCause"}},"id":{"type":"string"},"type":{"type":"string","default":"TrafficInterruptionReasons"}},"required":["type"],"example":{"id":"default","version":"71eaa8a4-d6c8-5e2f-8acd-83564345bdc5","reasons":["SSL_DISABLED","MTU_CHANGED","VDB_UPDATE","SRU_UPDATE"],"type":"TrafficInterruptionReasons"}},"TrafficInterruptionReasonsWrapper":{"allOf":[{"$ref":"#/definitions/TrafficInterruptionReasons"},{"$ref":"#/definitions/LinksWrapper"}]},"ConnectTest":{"type":"object","properties":{"destination":{"type":"string"},"connected":{"type":"boolean"},"msg":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"ConnectTest"}},"required":["destination","type"]},"ConnectTestWrapper":{"allOf":[{"$ref":"#/definitions/ConnectTest"},{"$ref":"#/definitions/LinksWrapper"}]},"FileChunkContent":{"type":"object","properties":{"fileId":{"type":"string"},"chunkIndex":{"type":"integer"},"chunkContent":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"FileChunkContent"}},"required":["type"]},"FileChunksInfo":{"type":"object","properties":{"fileId":{"type":"string"},"numberOfChunks":{"type":"integer"},"id":{"type":"string"},"type":{"type":"string","default":"FileChunksInfo"}},"required":["type"]},"UserUtils":{"type":"object"},"AnyConnectClientProfile":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"diskFileName":{"type":"string"},"md5Checksum":{"type":"string"},"id":{"type":"string"},"type":{"type":"string","default":"anyconnectclientprofile"}},"required":["type"],"example":{"name":"AnyConnectClientProfile3","description":"Odota vojnagsis vofrene vi nazmakte ejtuna sip tebot vetounu gi jezanvef va muc kagufpi egumuom ge ves usu.","diskFileName":"diskFileName3","id":"62243f39-59d9-59d2-b9a6-42d557154bde","version":"d0649b9f-d8ee-5fbe-b0a9-5ebe2910ddaa","type":"anyconnectclientprofile"}},"AnyConnectClientProfileWrapper":{"allOf":[{"$ref":"#/definitions/AnyConnectClientProfile"},{"$ref":"#/definitions/LinksWrapper"}]},"AnyConnectGroupPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"banner":{"type":"string"},"maxConnectionTimeout":{"type":"integer"},"idleTimeout":{"type":"integer"},"clientProfiles":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"browserProxyType":{"type":"object","$ref":"#/definitions/AnyConnectGroupPolicy$BrowserProxyType"},"proxyServer":{"type":"string"},"proxyPort":{"type":"integer"},"proxyExceptions":{"type":"array","items":{"type":"object","$ref":"#/definitions/ServerHostAndPort"}},"id":{"type":"string"},"type":{"type":"string","default":"anyconnectgrouppolicy"}},"required":["type","browserProxyType"]},"AnyConnectGroupPolicyWrapper":{"allOf":[{"$ref":"#/definitions/AnyConnectGroupPolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"AnyConnectGroupPolicy$BrowserProxyType":{"type":"string","enum":["NO_PROXY","NO_MODIFY","AUTO_DETECT","USE_SERVER"]},"AnyConnectPackageFile":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"diskFileName":{"type":"string"},"md5Checksum":{"type":"string"},"platformType":{"type":"object","$ref":"#/definitions/AnyConnectPackageFile$PackagePlatformType"},"id":{"type":"string"},"type":{"type":"string","default":"anyconnectpackagefile"}},"required":["platformType","type"]},"AnyConnectPackageFileWrapper":{"allOf":[{"$ref":"#/definitions/AnyConnectPackageFile"},{"$ref":"#/definitions/LinksWrapper"}]},"AnyConnectPackageFile$PackagePlatformType":{"type":"string","enum":["LINUX","MACOS","WINDOWS"]},"AnyConnectPackages":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"packageFiles":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"anyconnectpackages"}},"required":["type"]},"AnyConnectPackagesWrapper":{"allOf":[{"$ref":"#/definitions/AnyConnectPackages"},{"$ref":"#/definitions/LinksWrapper"}]},"AnyConnectProfile":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"groupPolicy":{"type":"object","$ref":"#/definitions/ReferenceModel"},"authenticationIdentitySource":{"type":"object","$ref":"#/definitions/ReferenceModel"},"fallbackLocalIdentitySource":{"type":"object","$ref":"#/definitions/ReferenceModel"},"authMethod":{"type":"object","$ref":"#/definitions/AnyConnectProfile$ClientAuthMethod"},"serverCertificate":{"type":"object","$ref":"#/definitions/ReferenceModel"},"clientCACertificates":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"usernameFromCertificate":{"type":"object","$ref":"#/definitions/AnyConnectProfile$UsernameFromCertificate"},"usernamePrimaryField":{"type":"object","$ref":"#/definitions/AnyConnectProfile$CertificateField"},"usernameSecondaryField":{"type":"object","$ref":"#/definitions/AnyConnectProfile$CertificateField"},"prefillUsernameFromCertificate":{"type":"boolean"},"disablePrefilledUsernameEdit":{"type":"boolean"},"stripGroupFromUsername":{"type":"boolean"},"stripRealmFromUsername":{"type":"boolean"},"outsideInterface":{"type":"object","$ref":"#/definitions/ReferenceModel"},"outsideFqdn":{"type":"string"},"ipv4LocalAddressPool":{"type":"object","$ref":"#/definitions/ReferenceModel"},"ipv6LocalAddressPool":{"type":"object","$ref":"#/definitions/ReferenceModel"},"dnsServers":{"type":"array","items":{"type":"string"}},"domainName":{"type":"string"},"exemptNatRule":{"type":"boolean"},"splitTunnel":{"type":"boolean"},"insideInterfaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"insideNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"id":{"type":"string"},"type":{"type":"string","default":"anyconnectprofile"}},"required":["outsideInterface","splitTunnel","serverCertificate","exemptNatRule","authMethod","type"]},"AnyConnectProfileWrapper":{"allOf":[{"$ref":"#/definitions/AnyConnectProfile"},{"$ref":"#/definitions/LinksWrapper"}]},"AnyConnectProfile$CertificateField":{"type":"string","enum":["NONE","C_COUNTRY","CN_COMMMON_NAME","DNQ_DN_QUALIFIER","EA_EMAIL_ADDRESS","GENQ_GENERATIONAL_QUALIFIER","GN_GIVEN_NAME","I_INITIAL","L_LOCALITY","N_NAME","O_ORGANISATION","OU_ORGANISATIONAL_UNIT","SER_SERIAL_NUMBER","SN_SURNAME","SP_STATE_PROVINCE","T_TITLE","UID_USER_ID","UPN_USER_PRINCIPAL_NAME"]},"AnyConnectProfile$UsernameFromCertificate":{"type":"string","enum":["ENTIRE_DN","SPECIFIED_FIELD"]},"AnyConnectProfile$ClientAuthMethod":{"type":"string","enum":["AAA","CLIENT_CERTIFICATE","AAA_AND_CLIENT_CERTIFICATE"]},"AnyConnectVpnConnection":{"type":"object","properties":{"version":{"type":"string"},"connectionProfile":{"type":"object","$ref":"#/definitions/ReferenceModel"},"groupPolicy":{"type":"object","$ref":"#/definitions/ReferenceModel"},"clientPackages":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"anyconnectvpnconnection"}},"required":["type"]},"AnyConnectVpnConnectionWrapper":{"allOf":[{"$ref":"#/definitions/AnyConnectVpnConnection"},{"$ref":"#/definitions/LinksWrapper"}]},"IkePolicyBase$CliTokenIf":{"type":"object","properties":{"cliToken":{"type":"string"}}},"IkevOnePolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"lifeTime":{"type":"integer"},"priority":{"type":"integer"},"authenticationType":{"type":"object","$ref":"#/definitions/IkevOnePolicy$AuthenticationType"},"encryptionType":{"type":"object","$ref":"#/definitions/IkevOnePolicy$IkevOneEncryptionType"},"hashType":{"type":"object","$ref":"#/definitions/IkevOnePolicy$HashType"},"groupType":{"type":"object","$ref":"#/definitions/IkevOnePolicy$IkevOneGroupType"},"summaryLabel":{"type":"string"},"cryptoRestricted":{"type":"boolean"},"id":{"type":"string"},"isSystemDefined":{"type":"boolean"},"type":{"type":"string","default":"ikevonepolicy"}},"required":["groupType","encryptionType","authenticationType","priority","type","hashType","enabled"],"example":{"id":"9a8fdd91-aadd-5f32-ba4a-77cb2c27cd0b","version":"2f6047e6-31ed-5c83-8936-d2a63c203422","isSystemDefined":false,"name":"IkevOnePolicy2","groupType":"GROUP2","enabled":false,"priority":41457,"hashType":"SHA","authenticationType":"PRE_SHARE","encryptionType":"AES192","lifeTime":565194236,"summaryLabel":"SHA-PRE_SHARE-AES192-GROUP2","cryptoRestricted":true,"type":"ikevonepolicy"}},"IkevOnePolicyWrapper":{"allOf":[{"$ref":"#/definitions/IkevOnePolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"IkevOnePolicy$IkevOneGroupType":{"type":"string","enum":["GROUP1","GROUP2","GROUP5"]},"IkevOnePolicy$HashType":{"type":"string","enum":["SHA","MD5"]},"IkevOnePolicy$IkevOneEncryptionType":{"type":"string","enum":["AES","AES192","AES256","DES","THREE_DES"]},"IkevOnePolicy$AuthenticationType":{"type":"string","enum":["RSA_SIG","PRE_SHARE"]},"IkevOneProposal":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"encryptionMethod":{"type":"object","$ref":"#/definitions/IkevOneProposal$EncryptionMethodType"},"authenticationMethod":{"type":"object","$ref":"#/definitions/IkevOneProposal$AuthenticationMethodType"},"mode":{"type":"object","$ref":"#/definitions/IkevOneProposal$ModeType"},"summaryLabel":{"type":"string"},"cryptoRestricted":{"type":"boolean"},"defaultAssignable":{"type":"boolean"},"id":{"type":"string"},"isSystemDefined":{"type":"boolean"},"type":{"type":"string","default":"ikevoneproposal"}},"required":["mode","authenticationMethod","type","encryptionMethod"],"example":{"id":"aed45e44-5280-52c8-b12c-1eb0f6c2f9f5","version":"a793c940-3689-5e87-b47a-9feefbecfdc0","isSystemDefined":false,"defaultAssignable":true,"name":"IkevOneIPSecProposal2","encryptionMethod":"ESP_3DES","authenticationMethod":"ESP_NONE","mode":"TUNNEL","summaryLabel":"ESP_3DES-ESP_NONE-TUNNEL","cryptoRestricted":true,"type":"ikevoneproposal"}},"IkevOneProposalWrapper":{"allOf":[{"$ref":"#/definitions/IkevOneProposal"},{"$ref":"#/definitions/LinksWrapper"}]},"IkevOneProposal$ModeType":{"type":"string","enum":["TRANSPORT","TUNNEL"]},"IkevOneProposal$AuthenticationMethodType":{"type":"string","enum":["ESP_MD5_HMAC","ESP_NONE","ESP_SHA_HMAC"]},"IkevOneProposal$EncryptionMethodType":{"type":"string","enum":["ESP_3DES","ESP_AES","ESP_AES192","ESP_AES256","ESP_DES","ESP_NULL"]},"IkevTwoPolicy":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"},"lifeTime":{"type":"integer"},"priority":{"type":"integer"},"encryptionTypes":{"type":"array","items":{"type":"object","$ref":"#/definitions/IkevTwoPolicy$IkevTwoEncryptionType"}},"groupTypes":{"type":"array","items":{"type":"object","$ref":"#/definitions/IkevTwoPolicy$IkevTwoGroupType"}},"integrityTypes":{"type":"array","items":{"type":"object","$ref":"#/definitions/IkevTwoPolicy$IntegrityType"}},"prfTypes":{"type":"array","items":{"type":"object","$ref":"#/definitions/IkevTwoPolicy$PrfType"}},"summaryLabel":{"type":"string"},"cryptoRestricted":{"type":"boolean"},"id":{"type":"string"},"isSystemDefined":{"type":"boolean"},"type":{"type":"string","default":"ikevtwopolicy"}},"required":["priority","type","enabled"],"example":{"id":"b0537a7f-23c2-5038-81dd-78d67e5b8c3a","version":"3b4f6bef-1c89-5efe-b3b2-ebf07eeb1b28","isSystemDefined":false,"name":"IkevTwoPolicy2","prfTypes":["SHA","SHA512","MD5","SHA384","SHA256"],"integrityTypes":["SHA384","SHA","SHA256"],"groupTypes":["GROUP14","GROUP21","GROUP19","GROUP2","GROUP24","GROUP1"],"encryptionTypes":["AES_GCM","DES","THREE_DES","AES_GCM192","AES192","AES256"],"enabled":false,"priority":44423,"lifeTime":2017816985,"summaryLabel":"SHA-SHA512-MD5-SHA384-SHA256-SHA384-SHA-SHA256-GROUP14-GROUP21-GROUP19-GROUP2-GROUP24-GROUP1-AES_GCM-DES-THREE_DES-AES_GCM192-AES192-AES256","cryptoRestricted":false,"type":"ikevtwopolicy"}},"IkevTwoPolicyWrapper":{"allOf":[{"$ref":"#/definitions/IkevTwoPolicy"},{"$ref":"#/definitions/LinksWrapper"}]},"IkevTwoPolicy$PrfType":{"type":"string","enum":["SHA","MD5","SHA256","SHA384","SHA512"]},"IkevTwoPolicy$IkevTwoGroupType":{"type":"string","enum":["GROUP1","GROUP2","GROUP5","GROUP14","GROUP19","GROUP20","GROUP21","GROUP24"]},"IkevTwoPolicy$IntegrityType":{"type":"string","enum":["SHA","SHA256","SHA384","SHA512","MD5","NULL"]},"IkevTwoPolicy$IkevTwoEncryptionType":{"type":"string","enum":["AES","AES192","AES256","DES","THREE_DES","AES_GCM","AES_GCM192","AES_GCM256","NULL"]},"IkevTwoProposal":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"encryptionTypes":{"type":"array","items":{"type":"object","$ref":"#/definitions/IkevTwoProposal$IkevTwoProposalEncryptType"}},"integrityTypes":{"type":"array","items":{"type":"object","$ref":"#/definitions/IkevTwoProposal$IkevTwoProposalIntegrityType"}},"summaryLabel":{"type":"string"},"cryptoRestricted":{"type":"boolean"},"defaultAssignable":{"type":"boolean"},"id":{"type":"string"},"isSystemDefined":{"type":"boolean"},"type":{"type":"string","default":"ikevtwoproposal"}},"required":["type"],"example":{"id":"2226f4f6-4395-5b26-9ab1-bdcbab38d45f","version":"8690ce28-660a-5aee-bd43-1b83a1d3c96f","isSystemDefined":false,"defaultAssignable":true,"name":"IkevTwoProposal2","integrityTypes":["MD5"],"encryptionTypes":["AES_GCM","AES_GCM192","AES_GMAC256","AES_GCM256","DES","NULL"],"summaryLabel":"MD5-AES_GCM-AES_GCM192-AES_GMAC256-AES_GCM256-DES-NULL","cryptoRestricted":true,"type":"ikevtwoproposal"}},"IkevTwoProposalWrapper":{"allOf":[{"$ref":"#/definitions/IkevTwoProposal"},{"$ref":"#/definitions/LinksWrapper"}]},"IkevTwoProposal$IkevTwoProposalIntegrityType":{"type":"string","enum":["MD5","SHA1","SHA256","SHA384","SHA512","NULL"]},"IkevTwoProposal$IkevTwoProposalEncryptType":{"type":"string","enum":["THREE_DES","AES","AES192","AES256","AES_GCM","AES_GCM192","AES_GCM256","AES_GMAC","AES_GMAC192","AES_GMAC256","DES","NULL"]},"SToSConnectionProfile":{"type":"object","properties":{"version":{"type":"string"},"name":{"type":"string"},"outsideInterfaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"localNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"remotePeerIpAddress":{"type":"string"},"remoteNetworks":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ikev1Enabled":{"type":"boolean"},"ikev2Enabled":{"type":"boolean"},"ikev1PreSharedKey":{"type":"string"},"diffieHellmanGroup":{"type":"object","$ref":"#/definitions/SToSConnectionProfile$PerfectForwardSecrecyGroupType"},"ikev2LocalPreSharedKey":{"type":"string"},"ikev2RemotePeerPreSharedKey":{"type":"string"},"ikev1Proposals":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"ikev2Proposals":{"type":"array","items":{"type":"object","$ref":"#/definitions/ReferenceModel"}},"interfaceForNatExempt":{"type":"object","$ref":"#/definitions/ReferenceModel"},"id":{"type":"string"},"type":{"type":"string","default":"stosconnectionprofile"}},"required":["outsideInterfaces","ikev1Enabled","ikev2Enabled","type","remotePeerIpAddress"],"example":{"id":"cef975d8-6e7b-5aea-af39-88276d9bdcc6","version":"88947228-8b06-558f-9606-37042c5684ec","name":"SToSConnectionProfile1","ikev1Enabled":false,"ikev2RemotePeerPreSharedKey":"uuid","remotePeerIpAddress":"97.32.171.253","ikev2Enabled":false,"ikev2LocalPreSharedKey":"uuid","ikev1PreSharedKey":"uuid","localNetworks":[{"id":"91eec2e0-40a0-5a21-8e47-895180936601","name":"Network3","description":"Sipato cebda bujno ajnona kata sacigi kirkoc adicazin wewomu hiferkuz wekog ja domkag ovnejegu bihod.","version":"4bd8c9f6-0f14-5c4f-9946-58217f033d54","type":"networkobject","subType":"NETWORK","value":"233.1.1.0/255.255.255.0","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"81e99f9a-e532-5ffe-91f1-89737f0f1f5a","name":"NetworkGroup6","description":"Tatvap no moufuje hu ikobizwa zufukozeh beodumah reka ze mu mewiptuf aste genfoodi gaajdu.","version":"1a381de3-9a0c-58f9-8a89-0ea218312f43","type":"networkobjectgroup","objects":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}},{"id":"ddd54776-03f7-5a08-8a6b-a877fdcadfcd","name":"NetworkGroup3","description":"Mivelos ga co jibken bim cu mub atmo peale ukvu tozuti muwuw musotlo hi du pijahlur zog.","version":"ae91a419-f50d-5045-b27f-83fba29e2d17","type":"networkobjectgroup","objects":[{"id":"de4c912d-0f32-5730-92dd-e6ef7f12a099","name":"Network11","description":"Gisi kalej ih zum midogi gar vezsu reweh od sufmukce siici ki hepvevote ubu feva fabikdol.","version":"dc1b33e1-bb99-5727-85e6-6f30f624ffa2","type":"networkobject","subType":"HOST","value":"42.38.187.218","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"25837b53-40d7-599f-9a1e-0a5391f2662e","name":"Network1","description":"Ser ahpi penul nuszil ojsuvo zavlatha junez afuhi soewuteh ha larhoose lijuto ruhi za murmurgu eznehfa nejag piv.","version":"0761c298-1c3c-5537-971c-17934322192b","type":"networkobject","subType":"HOST","value":"f92d:3cda:6fb3:7e4b:db95:8984:e616:928e","isSystemDefined":true,"metadata":{"referenced":false}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}}],"remoteNetworks":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}},{"id":"81e99f9a-e532-5ffe-91f1-89737f0f1f5a","name":"NetworkGroup6","description":"Tatvap no moufuje hu ikobizwa zufukozeh beodumah reka ze mu mewiptuf aste genfoodi gaajdu.","version":"1a381de3-9a0c-58f9-8a89-0ea218312f43","type":"networkobjectgroup","objects":[{"id":"6f55bc7e-79ee-5271-b299-5eb7db9ece0e","name":"Network14","description":"Naduk tuto zatuli pedufu dowkol gapcetod ehukevnem oszi numudol ubibi pufhubfu ripsitfu.","version":"3ab046cd-f4be-55d8-af7a-7a84bc3f7716","type":"networkobject","subType":"HOST","value":"111.31.129.11","isSystemDefined":true,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}},{"id":"398fb71a-70a8-5ca9-a539-52c3a8dd92f8","name":"NetworkGroup5","description":"Fazahad limutduw foon pacaja usmu ace bidiur nuavu zehbubjaf mana ra ecu nuhsetke voc jakat gozu gezaz love.","version":"87a49ed6-a0fe-586b-bbc7-22dbfe8751fd","type":"networkobjectgroup","objects":[{"id":"884f239a-2976-5e8e-9cb5-5aeb31fc1554","name":"Network15","description":"Rad ladfevhez vucvibbu omeheh hi rulsusva nut diw sikeznag ehazelu witam tocrah irca wavegezi na nidmimle.","version":"7c7865f0-2dcd-5833-a31b-7fe684b3c2ff","type":"networkobject","subType":"HOST","value":"80.87.24.187","isSystemDefined":false,"metadata":{"referenced":false}},{"id":"4e22d897-4214-5a59-adc0-a40ee1363e10","name":"Network5","description":"Kug viuheci tiwihu iberaw rolo januke huwefi jik labam lurepi be nioc ikime.","version":"880073f6-ecc1-5e1e-a50e-625fb47bbcf9","type":"networkobject","subType":"HOST","value":"51ef:0dda:2b5c:2260:6fc7:e9c3:7507:80fe","isSystemDefined":false,"metadata":{"referenced":true}}],"links":{"self":"http://url/api/fdm/v2/networkobject/12345"},"metadata":{"referenced":false}}],"outsideInterfaces":[{"mtu":2652,"enabled":true,"description":"Dijiz mavajmak suhihi ja piobba vigsasu pulasa heka lus nuapoap gar weuluvaz faf duke sojpov pamdaba juhoflon ugosum.","name":"subinterface4name","id":"80110552-0168-5ca1-9539-159176e34426","hardwareName":"SubInterface0/4.5","macAddress":"1753.227B.5D9A","monitorInterface":false,"standbyMacAddress":"FF7B.C256.4778","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"1bb9:5d4d:1200:c9eb:97ff:589e:edd4:16e4/32","ipAddress":"eaba:377e:f390:0e98:800f:a6a7:5709:6b52/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"5189:1c32:5064:5495:0ecf:92dd:9175:944a","ipAddress":"479b:2e4a:a86f:13c2:425b:1e14:b1a3:ddfd"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"STATIC","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":false,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"213.34.152.190","standbyIpAddress":"91.47.228.196"}},"version":"8bcf839f-438a-5cd4-99a7-b6f07ab652a0","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"}],"interfaceForNatExempt":{"mtu":2652,"enabled":true,"description":"De jogmov liw wunehezo wuahhiz oruur pibam cu vomavoc dutaz bebunlec amu.","name":"subinterface15name","id":"e92223a0-0769-587e-9153-c2b516b88c03","hardwareName":"SubInterface0/15.16","macAddress":"4AB2.31C0.B9C9","monitorInterface":true,"standbyMacAddress":"A104.EADB.4287","ipv6":{"dhcpForManagedConfig":false,"enabled":false,"autoConfig":false,"dadAttempts":380,"enableRA":false,"vlan":140,"prefixes":[{"prefix":"sub","type":"ipv6prefix"}],"ipAddresses":[{"type":"haipv6address","standbyIpAddress":"3135:37d2:489e:7b37:30e2:478c:7110:05f3/32","ipAddress":"5229:2b59:f312:4fbd:d31b:83cc:fd80:f77b/32"}],"type":"interfaceipv6","linkLocalAddress":{"type":"haipv6address","standbyIpAddress":"9c71:0c47:ad57:6fe1:03d6:c0b4:4ba3:bf8e","ipAddress":"e40f:d322:3f7b:0de2:3c14:2bb7:819b:8f90"},"dhcpForOtherConfig":false},"ipv4":{"ipType":"DHCP","addressNull":false,"dhcpRouteMetric":44,"defaultRouteUsingDHCP":true,"dhcp":false,"type":"interfaceipv4","ipAddress":{"type":"haipv4address","netmask":"16","ipAddress":"161.116.86.92","standbyIpAddress":"0.24.2.181"}},"version":"465fcd85-12f0-5152-909c-28bc75b11bdf","managementInterface":false,"managementOnly":false,"subIntfId":3710893646,"vlanId":1877,"type":"subinterface"},"type":"stosconnectionprofile"}},"SToSConnectionProfileWrapper":{"allOf":[{"$ref":"#/definitions/SToSConnectionProfile"},{"$ref":"#/definitions/LinksWrapper"}]},"SToSConnectionProfile$PerfectForwardSecrecyGroupType":{"type":"string","enum":["GROUP1","GROUP2","GROUP5","GROUP14","GROUP19","GROUP20","GROUP21","GROUP24"]},"ServerHostAndPort":{"type":"object","properties":{"serverHost":{"type":"string"},"port":{"type":"integer"},"type":{"type":"string","default":"serverhostandport"}},"required":["type","serverHost"]},"NGFWErrorMessage":{"type":"object","properties":{"description":{"type":"string"},"code":{"type":"string"},"location":{"type":"string"}},"required":["description"]},"ErrorResponse":{"type":"object","properties":{"key":{"type":"string","enum":["General","Validation","Deployment"]},"messages":{"type":"array","items":{"type":"object","$ref":"#/definitions/NGFWErrorMessage"}},"severity":{"type":"object","$ref":"#/definitions/ErrorResponse$Severity"}},"required":["key","messages","severity"]},"ErrorResponse$Severity":{"type":"string","enum":["ERROR","WARN"]},"Paging":{"type":"object","properties":{"prev":{"type":"array","items":{"type":"string"}},"next":{"type":"array","items":{"type":"string"}},"limit":{"type":"integer"},"offset":{"type":"integer"},"count":{"type":"integer"},"pages":{"type":"integer"}},"required":["prev","next","limit","offset","count","pages"]},"ErrorWrapper":{"type":"object","required":["error"],"properties":{"error":{"$ref":"#/definitions/ErrorResponse"}}},"LinksWrapper":{"type":"object","required":["links"],"properties":{"links":{"$ref":"#/definitions/Links"}}},"TokenPayloadUnion":{"type":"object","properties":{"grant_type":{"type":"string","enum":["custom_token","refresh_token","revoke_token","password"]},"access_token":{"type":"string"},"desired_expires_in":{"type":"integer"},"desired_refresh_expires_in":{"type":"integer"},"desired_subject":{"type":"string"},"desired_refresh_count":{"type":"integer"},"refresh_token":{"type":"string"},"token_to_revoke":{"type":"string"},"custom_token_id_to_revoke":{"type":"string"},"custom_token_subject_to_revoke":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"}},"required":["grant_type"]},"TokenStatus":{"type":"object","required":["status_code","message"],"properties":{"status_code":{"type":"integer"},"message":{"type":"string"}}},"TokenResponseUnion":{"type":"object","properties":{"access_token":{"type":"string"},"expires_in":{"type":"integer","default":1800},"token_type":{"type":"string","default":"Bearer"},"refresh_token":{"type":"string"},"refresh_expires_in":{"type":"integer","default":2400},"status_code":{"type":"integer"},"message":{"type":"string"}}},"ReferenceModel":{"type":"object","required":["id","type"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"version":{"type":"string"},"name":{"type":"string"}}},"AnyConnectVpnConnectionUncompressedModel":{"type":"object","properties":{"version":{"type":"string"},"connectionProfile":{"type":"object","$ref":"#/definitions/AnyConnectProfile"},"groupPolicy":{"type":"object","$ref":"#/definitions/AnyConnectGroupPolicy"},"clientPackages":{"type":"object","$ref":"#/definitions/AnyConnectPackages"},"id":{"type":"string"},"type":{"type":"string","default":"anyconnectvpnconnection"}},"required":["type"]},"InetAddressBase":{"type":"object","properties":{}},"DeviceLogFilterBase":{"type":"object","properties":{}},"AFAggregateAddress":{"type":"object","properties":{}},"AFBase":{"type":"object","properties":{}},"AFNetworkBase":{"type":"object","properties":{}},"NeighborBase":{"type":"object","properties":{}},"NeighborHops":{"type":"object","properties":{}},"DistributeList":{"type":"object","properties":{}},"OSPFLostNeighborDetectionMechanism":{"type":"object","properties":{}},"AreaType":{"type":"object","properties":{}},"AuthenticationBase":{"type":"object","properties":{}},"PrefixListFilter":{"type":"object","properties":{}},"RedistributeProtocol":{"type":"object","properties":{}}},"tags":[{"name":"AAASetting"},{"name":"ASPathList"},{"name":"AccessPolicy"},{"name":"AccessRule"},{"name":"ActiveDirectoryRealm"},{"name":"ActiveUserSessions"},{"name":"AnyConnectClientProfile"},{"name":"AnyConnectGroupPolicy"},{"name":"AnyConnectPackageFile"},{"name":"AnyConnectPackages"},{"name":"AnyConnectProfile"},{"name":"AnyConnectVpnConnection"},{"name":"Application"},{"name":"ApplicationCategory"},{"name":"ApplicationFilter"},{"name":"ApplicationTag"},{"name":"ArchivedBackup"},{"name":"AuditEntityChange"},{"name":"AuditEvent"},{"name":"BGP"},{"name":"BackupFile"},{"name":"BackupImmediate"},{"name":"BackupScheduled"},{"name":"BaseEntityDiff"},{"name":"BreakHAStatus"},{"name":"BridgeGroupInterface"},{"name":"CertFileUploadStatus"},{"name":"Certificate"},{"name":"CliDeploymentError"},{"name":"Clipboard"},{"name":"CloudCommunicationSettings"},{"name":"CloudConfig"},{"name":"CloudManagement"},{"name":"CloudServicesInfo"},{"name":"Command"},{"name":"CommandAutoComplete"},{"name":"ConnectTest"},{"name":"Continent"},{"name":"Country"},{"name":"DHCPServerContainer"},{"name":"DNS"},{"name":"DNSServerGroup"},{"name":"DataDNSSettings"},{"name":"DataInterfaceManagementAccess"},{"name":"Deployment"},{"name":"DeploymentData"},{"name":"DeploymentStatus"},{"name":"DeviceDNSSettings"},{"name":"DeviceHostname"},{"name":"DeviceLogSettings"},{"name":"DiskUsage"},{"name":"Download"},{"name":"ExpandedCommunityList"},{"name":"ExportConfigJobHistory"},{"name":"ExtendedAccessList"},{"name":"ExternalCACertificate"},{"name":"ExternalCertificate"},{"name":"FeatureInformation"},{"name":"FilePolicy"},{"name":"FileUploadStatus"},{"name":"FlexConfigObject"},{"name":"FlexConfigPolicy"},{"name":"GeoLocation"},{"name":"GeolocationUpdateImmediate"},{"name":"GeolocationUpdateSchedule"},{"name":"HAAction"},{"name":"HAConfiguration"},{"name":"HAFailoverConfiguration"},{"name":"HAStatus"},{"name":"HTTPAccessList"},{"name":"ICMPv4PortObject"},{"name":"ICMPv6PortObject"},{"name":"IPV4PrefixList"},{"name":"IPV6PrefixList"},{"name":"IdentityPolicy"},{"name":"IdentityRule"},{"name":"IdentityServicesEngine"},{"name":"IkevOnePolicy"},{"name":"IkevOneProposal"},{"name":"IkevTwoPolicy"},{"name":"IkevTwoProposal"},{"name":"InitialProvision"},{"name":"Interface"},{"name":"InterfaceInfo"},{"name":"InternalCACertificate"},{"name":"InternalCertificate"},{"name":"IntrusionPolicy"},{"name":"IntrusionPolicyRuleUpdate"},{"name":"IntrusionRule"},{"name":"IntrusionSettings"},{"name":"Job"},{"name":"JobHistoryBackup"},{"name":"JobHistoryCloudManagement"},{"name":"JobHistoryDeployment"},{"name":"JobHistoryEntity"},{"name":"JobHistoryGeolocation"},{"name":"JobHistoryHaConfigSync"},{"name":"JobHistorySruUpdate"},{"name":"JobHistoryVDBUpdate"},{"name":"JoinHAStatus"},{"name":"License"},{"name":"LicenseJobHistory"},{"name":"LocalIdentitySource"},{"name":"ManagementIP"},{"name":"ManualNatRule"},{"name":"ManualNatRuleContainer"},{"name":"NAT"},{"name":"NTP"},{"name":"NTPStatus"},{"name":"NetworkFeedCategory"},{"name":"NetworkObject"},{"name":"NetworkObjectGroup"},{"name":"OSPF"},{"name":"OSPFInterfaceSettings"},{"name":"ObjectNatRule"},{"name":"ObjectNatRuleContainer"},{"name":"PhysicalInterface"},{"name":"PolicyList"},{"name":"PortObject"},{"name":"PortObjectGroup"},{"name":"PostUpgradeFlags"},{"name":"ProtocolObject"},{"name":"RadiusIdentitySource"},{"name":"RadiusIdentitySourceGroup"},{"name":"RestoreImmediate"},{"name":"RolePermission"},{"name":"RouteMap"},{"name":"SRUUpdateImmediate"},{"name":"SRUUpdateSchedule"},{"name":"SSHAccessList"},{"name":"SSLPolicy"},{"name":"SSLRule"},{"name":"SToSConnectionProfile"},{"name":"ScheduleExportConfig"},{"name":"ScheduleTroubleshoot"},{"name":"Secret"},{"name":"SecurityIntelligence"},{"name":"SecurityIntelligenceNetworkPolicy"},{"name":"SecurityIntelligencePolicy"},{"name":"SecurityIntelligenceURLPolicy"},{"name":"SecurityIntelligenceUpdateFeedsImmediate"},{"name":"SecurityIntelligenceUpdateFeedsSchedule"},{"name":"SecurityZone"},{"name":"SmartAgentConnection"},{"name":"SmartAgentStatus"},{"name":"SmartAgentSyncRequest"},{"name":"SmartLicensing"},{"name":"SpecialRealm"},{"name":"StandardAccessList"},{"name":"StandardCommunityList"},{"name":"StaticRouteEntry"},{"name":"StaticRouteEntryContainer"},{"name":"SubInterface"},{"name":"SyslogServer"},{"name":"SystemFeedObject"},{"name":"SystemInformation"},{"name":"TCPPortObject"},{"name":"Telemetry"},{"name":"TestDirectory"},{"name":"TestIdentityServicesEngineConnectivity"},{"name":"TestIdentitySource"},{"name":"TimeZones"},{"name":"Token"},{"name":"TrafficInterruptionReasons"},{"name":"TrafficUser"},{"name":"TrafficUserGroup"},{"name":"TrendingReport"},{"name":"TroubleshootFile"},{"name":"TroubleshootJobHistory"},{"name":"UDPPortObject"},{"name":"URLCategory"},{"name":"URLFeedCategory"},{"name":"URLObject"},{"name":"URLObjectGroup"},{"name":"URLReputation"},{"name":"UnlockBox"},{"name":"Upgrade"},{"name":"UpgradeFile"},{"name":"Upload"},{"name":"User"},{"name":"VDBUpdateImmediate"},{"name":"VDBUpdateSchedule"},{"name":"WebAnalyticsSetting"}],"paths":{"/operational/systeminfo/{objId}":{"get":{"tags":["SystemInformation"],"operationId":"getSystemInformation","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SystemInformationWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/command":{"post":{"tags":["Command"],"operationId":"addCommand","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CommandWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/Command"}}]}},"/operational/commandautocomplete/{objId}":{"get":{"tags":["CommandAutoComplete"],"operationId":"getCommandAutoComplete","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CommandAutoCompleteWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/featureinfo/{objId}":{"get":{"tags":["FeatureInformation"],"operationId":"getFeatureInformation","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FeatureInformationWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/telemetry/{objId}":{"get":{"tags":["Telemetry"],"operationId":"getTelemetry","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TelemetryWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devicesettings/default/httpaccesslists":{"get":{"tags":["HTTPAccessList"],"operationId":"getHTTPAccessListList","responses":{"200":{"description":"","schema":{"type":"object","title":"HTTPAccessListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/HTTPAccessListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/httpaccesslists/{objId}":{"get":{"tags":["HTTPAccessList"],"operationId":"getHTTPAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HTTPAccessListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["HTTPAccessList"],"operationId":"editHTTPAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HTTPAccessListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/HTTPAccessList"}}]}},"/devicesettings/default/sshaccesslists":{"get":{"tags":["SSHAccessList"],"operationId":"getSSHAccessListList","responses":{"200":{"description":"","schema":{"type":"object","title":"SSHAccessListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SSHAccessListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/sshaccesslists/{objId}":{"get":{"tags":["SSHAccessList"],"operationId":"getSSHAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SSHAccessListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SSHAccessList"],"operationId":"editSSHAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SSHAccessListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SSHAccessList"}}]}},"/devicesettings/default/managementaccess":{"get":{"tags":["DataInterfaceManagementAccess"],"operationId":"getDataInterfaceManagementAccessList","responses":{"200":{"description":"","schema":{"type":"object","title":"DataInterfaceManagementAccessList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/DataInterfaceManagementAccessWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["DataInterfaceManagementAccess"],"operationId":"addDataInterfaceManagementAccess","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DataInterfaceManagementAccessWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DataInterfaceManagementAccess"}}]}},"/devicesettings/default/managementaccess/{objId}":{"get":{"tags":["DataInterfaceManagementAccess"],"operationId":"getDataInterfaceManagementAccess","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DataInterfaceManagementAccessWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["DataInterfaceManagementAccess"],"operationId":"editDataInterfaceManagementAccess","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DataInterfaceManagementAccessWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DataInterfaceManagementAccess"}}]},"delete":{"tags":["DataInterfaceManagementAccess"],"operationId":"deleteDataInterfaceManagementAccess","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devicesettings/default/devicehostnames":{"get":{"tags":["DeviceHostname"],"operationId":"getDeviceHostnameList","responses":{"200":{"description":"","schema":{"type":"object","title":"DeviceHostnameList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/DeviceHostnameWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/devicehostnames/{objId}":{"get":{"tags":["DeviceHostname"],"operationId":"getDeviceHostname","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DeviceHostnameWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["DeviceHostname"],"operationId":"editDeviceHostname","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DeviceHostnameWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DeviceHostname"}}]}},"/devicesettings/default/cloudcommunicationsettings":{"get":{"tags":["CloudCommunicationSettings"],"operationId":"getCloudCommunicationSettingsList","responses":{"200":{"description":"","schema":{"type":"object","title":"CloudCommunicationSettingsList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/CloudCommunicationSettingsWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/cloudcommunicationsettings/{objId}":{"get":{"tags":["CloudCommunicationSettings"],"operationId":"getCloudCommunicationSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CloudCommunicationSettingsWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["CloudCommunicationSettings"],"operationId":"editCloudCommunicationSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CloudCommunicationSettingsWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CloudCommunicationSettings"}}]}},"/devicesettings/default/managementips":{"get":{"tags":["ManagementIP"],"operationId":"getManagementIPList","responses":{"200":{"description":"","schema":{"type":"object","title":"ManagementIPList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ManagementIPWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/managementips/{objId}":{"get":{"tags":["ManagementIP"],"operationId":"getManagementIP","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ManagementIPWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["ManagementIP"],"operationId":"editManagementIP","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ManagementIPWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ManagementIP"}}]}},"/object/networks":{"get":{"tags":["NetworkObject"],"operationId":"getNetworkObjectList","responses":{"200":{"description":"","schema":{"type":"object","title":"NetworkObjectList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/NetworkObjectWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["NetworkObject"],"operationId":"addNetworkObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NetworkObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/NetworkObject"}}]}},"/object/networks/{objId}":{"get":{"tags":["NetworkObject"],"operationId":"getNetworkObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NetworkObjectWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["NetworkObject"],"operationId":"editNetworkObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NetworkObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/NetworkObject"}}]},"delete":{"tags":["NetworkObject"],"operationId":"deleteNetworkObject","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/networkgroups":{"get":{"tags":["NetworkObject"],"operationId":"getNetworkObjectGroupList","responses":{"200":{"description":"","schema":{"type":"object","title":"NetworkObjectGroupList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/NetworkObjectGroupWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["NetworkObject"],"operationId":"addNetworkObjectGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NetworkObjectGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/NetworkObjectGroup"}}]}},"/object/networkgroups/{objId}":{"get":{"tags":["NetworkObject"],"operationId":"getNetworkObjectGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NetworkObjectGroupWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["NetworkObject"],"operationId":"editNetworkObjectGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NetworkObjectGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/NetworkObjectGroup"}}]},"delete":{"tags":["NetworkObject"],"operationId":"deleteNetworkObjectGroup","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/tcpports":{"get":{"tags":["PortObject"],"operationId":"getTCPPortObjectList","responses":{"200":{"description":"","schema":{"type":"object","title":"TCPPortObjectList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/TCPPortObjectWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["PortObject"],"operationId":"addTCPPortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TCPPortObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TCPPortObject"}}]}},"/object/tcpports/{objId}":{"get":{"tags":["PortObject"],"operationId":"getTCPPortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TCPPortObjectWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["PortObject"],"operationId":"editTCPPortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TCPPortObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TCPPortObject"}}]},"delete":{"tags":["PortObject"],"operationId":"deleteTCPPortObject","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/udpports":{"get":{"tags":["PortObject"],"operationId":"getUDPPortObjectList","responses":{"200":{"description":"","schema":{"type":"object","title":"UDPPortObjectList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/UDPPortObjectWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["PortObject"],"operationId":"addUDPPortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/UDPPortObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UDPPortObject"}}]}},"/object/udpports/{objId}":{"get":{"tags":["PortObject"],"operationId":"getUDPPortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/UDPPortObjectWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["PortObject"],"operationId":"editUDPPortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/UDPPortObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/UDPPortObject"}}]},"delete":{"tags":["PortObject"],"operationId":"deleteUDPPortObject","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/protocols":{"get":{"tags":["PortObject"],"operationId":"getProtocolObjectList","responses":{"200":{"description":"","schema":{"type":"object","title":"ProtocolObjectList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ProtocolObjectWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["PortObject"],"operationId":"addProtocolObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ProtocolObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ProtocolObject"}}]}},"/object/protocols/{objId}":{"get":{"tags":["PortObject"],"operationId":"getProtocolObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ProtocolObjectWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["PortObject"],"operationId":"editProtocolObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ProtocolObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ProtocolObject"}}]},"delete":{"tags":["PortObject"],"operationId":"deleteProtocolObject","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/icmpv4ports":{"get":{"tags":["PortObject"],"operationId":"getICMPv4PortObjectList","responses":{"200":{"description":"","schema":{"type":"object","title":"ICMPv4PortObjectList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ICMPv4PortObjectWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["PortObject"],"operationId":"addICMPv4PortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ICMPv4PortObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ICMPv4PortObject"}}]}},"/object/icmpv4ports/{objId}":{"get":{"tags":["PortObject"],"operationId":"getICMPv4PortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ICMPv4PortObjectWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["PortObject"],"operationId":"editICMPv4PortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ICMPv4PortObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ICMPv4PortObject"}}]},"delete":{"tags":["PortObject"],"operationId":"deleteICMPv4PortObject","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/icmpv6ports":{"get":{"tags":["PortObject"],"operationId":"getICMPv6PortObjectList","responses":{"200":{"description":"","schema":{"type":"object","title":"ICMPv6PortObjectList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ICMPv6PortObjectWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["PortObject"],"operationId":"addICMPv6PortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ICMPv6PortObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ICMPv6PortObject"}}]}},"/object/icmpv6ports/{objId}":{"get":{"tags":["PortObject"],"operationId":"getICMPv6PortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ICMPv6PortObjectWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["PortObject"],"operationId":"editICMPv6PortObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ICMPv6PortObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ICMPv6PortObject"}}]},"delete":{"tags":["PortObject"],"operationId":"deleteICMPv6PortObject","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/portgroups":{"get":{"tags":["PortObject"],"operationId":"getPortObjectGroupList","responses":{"200":{"description":"","schema":{"type":"object","title":"PortObjectGroupList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/PortObjectGroupWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["PortObject"],"operationId":"addPortObjectGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PortObjectGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/PortObjectGroup"}}]}},"/object/portgroups/{objId}":{"get":{"tags":["PortObject"],"operationId":"getPortObjectGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PortObjectGroupWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["PortObject"],"operationId":"editPortObjectGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PortObjectGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/PortObjectGroup"}}]},"delete":{"tags":["PortObject"],"operationId":"deletePortObjectGroup","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/systemfeedobjects":{"get":{"tags":["SystemFeedObject"],"operationId":"getSystemFeedObjectList","responses":{"200":{"description":"","schema":{"type":"object","title":"SystemFeedObjectList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SystemFeedObjectWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/systemfeedobjects/{objId}":{"get":{"tags":["SystemFeedObject"],"operationId":"getSystemFeedObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SystemFeedObjectWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SystemFeedObject"],"operationId":"editSystemFeedObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SystemFeedObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SystemFeedObject"}}]}},"/object/urlfeedcategories":{"get":{"tags":["URLFeedCategory"],"operationId":"getURLFeedCategoryList","responses":{"200":{"description":"","schema":{"type":"object","title":"URLFeedCategoryList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/URLFeedCategoryWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/urlfeedcategories/{objId}":{"get":{"tags":["URLFeedCategory"],"operationId":"getURLFeedCategory","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/URLFeedCategoryWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/networkfeedcategories":{"get":{"tags":["NetworkFeedCategory"],"operationId":"getNetworkFeedCategoryList","responses":{"200":{"description":"","schema":{"type":"object","title":"NetworkFeedCategoryList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/NetworkFeedCategoryWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/networkfeedcategories/{objId}":{"get":{"tags":["NetworkFeedCategory"],"operationId":"getNetworkFeedCategory","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NetworkFeedCategoryWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/securityzones":{"get":{"tags":["SecurityZone"],"operationId":"getSecurityZoneList","responses":{"200":{"description":"","schema":{"type":"object","title":"SecurityZoneList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SecurityZoneWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SecurityZone"],"operationId":"addSecurityZone","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityZoneWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SecurityZone"}}]}},"/object/securityzones/{objId}":{"get":{"tags":["SecurityZone"],"operationId":"getSecurityZone","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityZoneWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SecurityZone"],"operationId":"editSecurityZone","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityZoneWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SecurityZone"}}]},"delete":{"tags":["SecurityZone"],"operationId":"deleteSecurityZone","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/integration/identityservicesengine":{"get":{"tags":["IdentityServicesEngine"],"operationId":"getIdentityServicesEngineList","responses":{"200":{"description":"","schema":{"type":"object","title":"IdentityServicesEngineList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IdentityServicesEngineWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["IdentityServicesEngine"],"operationId":"addIdentityServicesEngine","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IdentityServicesEngineWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IdentityServicesEngine"}}]}},"/integration/identityservicesengine/{objId}":{"get":{"tags":["IdentityServicesEngine"],"operationId":"getIdentityServicesEngine","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IdentityServicesEngineWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IdentityServicesEngine"],"operationId":"editIdentityServicesEngine","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IdentityServicesEngineWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IdentityServicesEngine"}}]},"delete":{"tags":["IdentityServicesEngine"],"operationId":"deleteIdentityServicesEngine","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/standardaccesslists":{"get":{"tags":["StandardAccessList"],"operationId":"getStandardAccessListList","responses":{"200":{"description":"","schema":{"type":"object","title":"StandardAccessListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/StandardAccessListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["StandardAccessList"],"operationId":"addStandardAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StandardAccessListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/StandardAccessList"}}]}},"/object/standardaccesslists/{objId}":{"get":{"tags":["StandardAccessList"],"operationId":"getStandardAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StandardAccessListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["StandardAccessList"],"operationId":"editStandardAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StandardAccessListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/StandardAccessList"}}]},"delete":{"tags":["StandardAccessList"],"operationId":"deleteStandardAccessList","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/extendedaccesslists":{"get":{"tags":["ExtendedAccessList"],"operationId":"getExtendedAccessListList","responses":{"200":{"description":"","schema":{"type":"object","title":"ExtendedAccessListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ExtendedAccessListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["ExtendedAccessList"],"operationId":"addExtendedAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExtendedAccessListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ExtendedAccessList"}}]}},"/object/extendedaccesslists/{objId}":{"get":{"tags":["ExtendedAccessList"],"operationId":"getExtendedAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExtendedAccessListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["ExtendedAccessList"],"operationId":"editExtendedAccessList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExtendedAccessListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ExtendedAccessList"}}]},"delete":{"tags":["ExtendedAccessList"],"operationId":"deleteExtendedAccessList","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/aspathlists":{"get":{"tags":["ASPathList"],"operationId":"getASPathListList","responses":{"200":{"description":"","schema":{"type":"object","title":"ASPathListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ASPathListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["ASPathList"],"operationId":"addASPathList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ASPathListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ASPathList"}}]}},"/object/aspathlists/{objId}":{"get":{"tags":["ASPathList"],"operationId":"getASPathList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ASPathListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["ASPathList"],"operationId":"editASPathList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ASPathListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ASPathList"}}]},"delete":{"tags":["ASPathList"],"operationId":"deleteASPathList","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/routemaps":{"get":{"tags":["RouteMap"],"operationId":"getRouteMapList","responses":{"200":{"description":"","schema":{"type":"object","title":"RouteMapList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/RouteMapWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["RouteMap"],"operationId":"addRouteMap","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RouteMapWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RouteMap"}}]}},"/object/routemaps/{objId}":{"get":{"tags":["RouteMap"],"operationId":"getRouteMap","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RouteMapWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["RouteMap"],"operationId":"editRouteMap","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RouteMapWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RouteMap"}}]},"delete":{"tags":["RouteMap"],"operationId":"deleteRouteMap","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/standardcommunitylists":{"get":{"tags":["StandardCommunityList"],"operationId":"getStandardCommunityListList","responses":{"200":{"description":"","schema":{"type":"object","title":"StandardCommunityListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/StandardCommunityListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["StandardCommunityList"],"operationId":"addStandardCommunityList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StandardCommunityListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/StandardCommunityList"}}]}},"/object/standardcommunitylists/{objId}":{"get":{"tags":["StandardCommunityList"],"operationId":"getStandardCommunityList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StandardCommunityListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["StandardCommunityList"],"operationId":"editStandardCommunityList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StandardCommunityListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/StandardCommunityList"}}]},"delete":{"tags":["StandardCommunityList"],"operationId":"deleteStandardCommunityList","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/expandedcommunitylists":{"get":{"tags":["ExpandedCommunityList"],"operationId":"getExpandedCommunityListList","responses":{"200":{"description":"","schema":{"type":"object","title":"ExpandedCommunityListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ExpandedCommunityListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["ExpandedCommunityList"],"operationId":"addExpandedCommunityList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExpandedCommunityListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ExpandedCommunityList"}}]}},"/object/expandedcommunitylists/{objId}":{"get":{"tags":["ExpandedCommunityList"],"operationId":"getExpandedCommunityList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExpandedCommunityListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["ExpandedCommunityList"],"operationId":"editExpandedCommunityList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExpandedCommunityListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ExpandedCommunityList"}}]},"delete":{"tags":["ExpandedCommunityList"],"operationId":"deleteExpandedCommunityList","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/ipv4prefixlists":{"get":{"tags":["IPV4PrefixList"],"operationId":"getIPV4PrefixListList","responses":{"200":{"description":"","schema":{"type":"object","title":"IPV4PrefixListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IPV4PrefixListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["IPV4PrefixList"],"operationId":"addIPV4PrefixList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IPV4PrefixListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IPV4PrefixList"}}]}},"/object/ipv4prefixlists/{objId}":{"get":{"tags":["IPV4PrefixList"],"operationId":"getIPV4PrefixList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IPV4PrefixListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IPV4PrefixList"],"operationId":"editIPV4PrefixList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IPV4PrefixListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IPV4PrefixList"}}]},"delete":{"tags":["IPV4PrefixList"],"operationId":"deleteIPV4PrefixList","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/ipv6prefixlists":{"get":{"tags":["IPV6PrefixList"],"operationId":"getIPV6PrefixListList","responses":{"200":{"description":"","schema":{"type":"object","title":"IPV6PrefixListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IPV6PrefixListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["IPV6PrefixList"],"operationId":"addIPV6PrefixList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IPV6PrefixListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IPV6PrefixList"}}]}},"/object/ipv6prefixlists/{objId}":{"get":{"tags":["IPV6PrefixList"],"operationId":"getIPV6PrefixList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IPV6PrefixListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IPV6PrefixList"],"operationId":"editIPV6PrefixList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IPV6PrefixListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IPV6PrefixList"}}]},"delete":{"tags":["IPV6PrefixList"],"operationId":"deleteIPV6PrefixList","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/policylists":{"get":{"tags":["PolicyList"],"operationId":"getPolicyListList","responses":{"200":{"description":"","schema":{"type":"object","title":"PolicyListList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/PolicyListWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["PolicyList"],"operationId":"addPolicyList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PolicyListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/PolicyList"}}]}},"/object/policylists/{objId}":{"get":{"tags":["PolicyList"],"operationId":"getPolicyList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PolicyListWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["PolicyList"],"operationId":"editPolicyList","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PolicyListWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/PolicyList"}}]},"delete":{"tags":["PolicyList"],"operationId":"deletePolicyList","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/interfaces":{"get":{"tags":["Interface"],"operationId":"getPhysicalInterfaceList","responses":{"200":{"description":"","schema":{"type":"object","title":"PhysicalInterfaceList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/PhysicalInterfaceWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devices/default/interfaces/{objId}":{"get":{"tags":["Interface"],"operationId":"getPhysicalInterface","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PhysicalInterfaceWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["Interface"],"operationId":"editPhysicalInterface","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PhysicalInterfaceWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/PhysicalInterface"}}]}},"/object/applications":{"get":{"tags":["Application"],"operationId":"getApplicationList","responses":{"200":{"description":"","schema":{"type":"object","title":"ApplicationList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ApplicationWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/countries":{"get":{"tags":["Country"],"operationId":"getCountryList","responses":{"200":{"description":"","schema":{"type":"object","title":"CountryList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/CountryWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/countries/{objId}":{"get":{"tags":["Country"],"operationId":"getCountry","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CountryWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/continents":{"get":{"tags":["Continent"],"operationId":"getContinentList","responses":{"200":{"description":"","schema":{"type":"object","title":"ContinentList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ContinentWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/continents/{objId}":{"get":{"tags":["Continent"],"operationId":"getContinent","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ContinentWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/applicationtags":{"get":{"tags":["Application"],"operationId":"getApplicationTagList","responses":{"200":{"description":"","schema":{"type":"object","title":"ApplicationTagList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ApplicationTagWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/applicationcategories":{"get":{"tags":["Application"],"operationId":"getApplicationCategoryList","responses":{"200":{"description":"","schema":{"type":"object","title":"ApplicationCategoryList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ApplicationCategoryWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/urlcategories":{"get":{"tags":["URLCategory"],"operationId":"getURLCategoryList","responses":{"200":{"description":"","schema":{"type":"object","title":"URLCategoryList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/URLCategoryWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/urlreputation":{"get":{"tags":["URLReputation"],"operationId":"getURLReputationList","responses":{"200":{"description":"","schema":{"type":"object","title":"URLReputationList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/URLReputationWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/geolocations":{"get":{"tags":["GeoLocation"],"operationId":"getGeoLocationList","responses":{"200":{"description":"","schema":{"type":"object","title":"GeoLocationList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/GeoLocationWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["GeoLocation"],"operationId":"addGeoLocation","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/GeoLocationWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/GeoLocation"}}]}},"/object/geolocations/{objId}":{"get":{"tags":["GeoLocation"],"operationId":"getGeoLocation","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/GeoLocationWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["GeoLocation"],"operationId":"editGeoLocation","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/GeoLocationWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/GeoLocation"}}]},"delete":{"tags":["GeoLocation"],"operationId":"deleteGeoLocation","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/urls":{"get":{"tags":["URLObject"],"operationId":"getURLObjectList","responses":{"200":{"description":"","schema":{"type":"object","title":"URLObjectList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/URLObjectWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["URLObject"],"operationId":"addURLObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/URLObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/URLObject"}}]}},"/object/urls/{objId}":{"get":{"tags":["URLObject"],"operationId":"getURLObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/URLObjectWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["URLObject"],"operationId":"editURLObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/URLObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/URLObject"}}]},"delete":{"tags":["URLObject"],"operationId":"deleteURLObject","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/urlgroups":{"get":{"tags":["URLObject"],"operationId":"getURLObjectGroupList","responses":{"200":{"description":"","schema":{"type":"object","title":"URLObjectGroupList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/URLObjectGroupWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["URLObject"],"operationId":"addURLObjectGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/URLObjectGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/URLObjectGroup"}}]}},"/object/urlgroups/{objId}":{"get":{"tags":["URLObject"],"operationId":"getURLObjectGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/URLObjectGroupWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["URLObject"],"operationId":"editURLObjectGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/URLObjectGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/URLObjectGroup"}}]},"delete":{"tags":["URLObject"],"operationId":"deleteURLObjectGroup","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/deploy":{"get":{"tags":["Deployment"],"operationId":"getDeploymentList","responses":{"200":{"description":"","schema":{"type":"object","title":"DeploymentStatusList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/DeploymentStatusWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["Deployment"],"operationId":"addDeployment","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DeploymentStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[]}},"/operational/deploy/{objId}":{"get":{"tags":["Deployment"],"operationId":"getDeployment","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DeploymentStatusWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Deployment"],"operationId":"deleteDeployment","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/action/ha/join":{"get":{"tags":["JoinHAStatus"],"operationId":"getJoinHAStatusList","responses":{"200":{"description":"","schema":{"type":"object","title":"JoinHAStatusList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/JoinHAStatusWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["JoinHAStatus"],"operationId":"addJoinHAStatus","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JoinHAStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[]}},"/devices/default/action/ha/break":{"get":{"tags":["BreakHAStatus"],"operationId":"getBreakHAStatusList","responses":{"200":{"description":"","schema":{"type":"object","title":"BreakHAStatusList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/BreakHAStatusWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["BreakHAStatus"],"operationId":"addBreakHAStatus","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BreakHAStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"clearIntfs","in":"query","required":false,"type":"boolean"}]}},"/devices/default/action/ha/join/{objId}":{"get":{"tags":["JoinHAStatus"],"operationId":"getJoinHAStatus","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JoinHAStatusWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/action/ha/break/{objId}":{"get":{"tags":["BreakHAStatus"],"operationId":"getBreakHAStatus","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BreakHAStatusWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/action/ha/resume":{"post":{"tags":["HAAction"],"operationId":"startHAResume","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HAStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[]}},"/devices/default/action/ha/suspend":{"post":{"tags":["HAAction"],"operationId":"startHASuspend","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HAStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[]}},"/devices/default/action/ha/failover":{"post":{"tags":["HAAction"],"operationId":"startHAFailover","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HAStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[]}},"/devices/default/action/ha/reset":{"post":{"tags":["HAAction"],"operationId":"addHAStatus","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HAStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[]}},"/operational/deploymentdata/{objId}":{"get":{"tags":["DeploymentData"],"operationId":"getDeploymentData","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DeploymentDataWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/trafficinterruptionreasons/{objId}":{"get":{"tags":["TrafficInterruptionReasons"],"operationId":"getTrafficInterruptionReasons","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TrafficInterruptionReasonsWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/pendingchanges/clipboard/{objId}":{"get":{"tags":["Clipboard"],"operationId":"getClipboard","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ClipboardWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/downloadconfig/{objId}":{"get":{"tags":["Download"],"operationId":"getdownloadconfig","responses":{"200":{"description":"","schema":{"type":"file"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}],"produces":["application/octet-stream"]}},"/action/exportconfig":{"get":{"tags":["ScheduleExportConfig"],"operationId":"getScheduleExportConfigList","responses":{"200":{"description":"","schema":{"type":"object","title":"ScheduleExportConfigList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ScheduleExportConfigWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["ScheduleExportConfig"],"operationId":"addScheduleExportConfig","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ScheduleExportConfigWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ScheduleExportConfig"}}]}},"/jobs/exportconfigjob":{"get":{"tags":["ExportConfigJobHistory"],"operationId":"getExportConfigJobHistoryList","responses":{"200":{"description":"","schema":{"type":"object","title":"ExportConfigJobHistoryList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ExportConfigJobHistoryWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/action/pendingchanges/download/{objId}":{"get":{"tags":["Download"],"operationId":"getdownload","responses":{"200":{"description":"","schema":{"type":"file"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}],"produces":["application/octet-stream"]}},"/operational/pendingchanges":{"get":{"tags":["BaseEntityDiff"],"operationId":"getBaseEntityDiffList","responses":{"200":{"description":"","schema":{"type":"object","title":"BaseEntityDiffList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/BaseEntityDiffWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/operational/auditevents":{"get":{"tags":["AuditEvent"],"operationId":"getAuditEventList","responses":{"200":{"description":"","schema":{"type":"object","title":"AuditEventList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AuditEventWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/operational/auditevents/{objId}":{"get":{"tags":["AuditEvent"],"operationId":"getAuditEvent","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AuditEventWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/auditevents/{parentId}/changes":{"get":{"tags":["AuditEntityChange"],"operationId":"getAuditEntityChangeList","responses":{"200":{"description":"","schema":{"type":"object","title":"AuditEntityChangeList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AuditEntityChangeWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]}},"/operational/deploymenterrors/{objId}":{"get":{"tags":["CliDeploymentError"],"operationId":"getCliDeploymentError","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CliDeploymentErrorWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/backup":{"get":{"tags":["BackupImmediate"],"operationId":"getBackupImmediateList","responses":{"200":{"description":"","schema":{"type":"object","title":"BackupImmediateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/BackupImmediateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["BackupImmediate"],"operationId":"addBackupImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BackupImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BackupImmediate"}}]}},"/action/backup/{objId}":{"get":{"tags":["BackupImmediate"],"operationId":"getBackupImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BackupImmediateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["BackupImmediate"],"operationId":"editBackupImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BackupImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BackupImmediate"}}]},"delete":{"tags":["BackupImmediate"],"operationId":"deleteBackupImmediate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/scheduledbackup":{"get":{"tags":["BackupScheduled"],"operationId":"getBackupScheduledList","responses":{"200":{"description":"","schema":{"type":"object","title":"BackupScheduledList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/BackupScheduledWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["BackupScheduled"],"operationId":"addBackupScheduled","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BackupScheduledWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BackupScheduled"}}]}},"/action/scheduledbackup/{objId}":{"get":{"tags":["BackupScheduled"],"operationId":"getBackupScheduled","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BackupScheduledWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["BackupScheduled"],"operationId":"editBackupScheduled","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BackupScheduledWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BackupScheduled"}}]},"delete":{"tags":["BackupScheduled"],"operationId":"deleteBackupScheduled","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/restore":{"get":{"tags":["RestoreImmediate"],"operationId":"getRestoreImmediateList","responses":{"200":{"description":"","schema":{"type":"object","title":"RestoreImmediateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/RestoreImmediateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["RestoreImmediate"],"operationId":"addRestoreImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RestoreImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RestoreImmediate"}}]}},"/action/restore/{objId}":{"get":{"tags":["RestoreImmediate"],"operationId":"getRestoreImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RestoreImmediateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["RestoreImmediate"],"operationId":"editRestoreImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RestoreImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RestoreImmediate"}}]},"delete":{"tags":["RestoreImmediate"],"operationId":"deleteRestoreImmediate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/managedentity/archivedbackups":{"get":{"tags":["ArchivedBackup"],"operationId":"getArchivedBackupList","responses":{"200":{"description":"","schema":{"type":"object","title":"ArchivedBackupList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ArchivedBackupWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/managedentity/archivedbackups/{objId}":{"get":{"tags":["ArchivedBackup"],"operationId":"getArchivedBackup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ArchivedBackupWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["ArchivedBackup"],"operationId":"deleteArchivedBackup","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/bridgegroupinterfaces":{"get":{"tags":["Interface"],"operationId":"getBridgeGroupInterfaceList","responses":{"200":{"description":"","schema":{"type":"object","title":"BridgeGroupInterfaceList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/BridgeGroupInterfaceWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["Interface"],"operationId":"addBridgeGroupInterface","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BridgeGroupInterfaceWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BridgeGroupInterface"}}]}},"/devices/default/bridgegroupinterfaces/{objId}":{"get":{"tags":["Interface"],"operationId":"getBridgeGroupInterface","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BridgeGroupInterfaceWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["Interface"],"operationId":"editBridgeGroupInterface","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BridgeGroupInterfaceWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BridgeGroupInterface"}}]},"delete":{"tags":["Interface"],"operationId":"deleteBridgeGroupInterface","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/updategeolocation":{"get":{"tags":["GeolocationUpdateImmediate"],"operationId":"getGeolocationUpdateImmediateList","responses":{"200":{"description":"","schema":{"type":"object","title":"GeolocationUpdateImmediateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/GeolocationUpdateImmediateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["GeolocationUpdateImmediate"],"operationId":"addGeolocationUpdateImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/GeolocationUpdateImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/GeolocationUpdateImmediate"}}]}},"/action/updategeolocation/{objId}":{"get":{"tags":["GeolocationUpdateImmediate"],"operationId":"getGeolocationUpdateImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/GeolocationUpdateImmediateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["GeolocationUpdateImmediate"],"operationId":"editGeolocationUpdateImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/GeolocationUpdateImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/GeolocationUpdateImmediate"}}]},"delete":{"tags":["GeolocationUpdateImmediate"],"operationId":"deleteGeolocationUpdateImmediate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/managedentity/geolocationupdateschedules":{"get":{"tags":["GeolocationUpdateSchedule"],"operationId":"getGeolocationUpdateScheduleList","responses":{"200":{"description":"","schema":{"type":"object","title":"GeolocationUpdateScheduleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/GeolocationUpdateScheduleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["GeolocationUpdateSchedule"],"operationId":"addGeolocationUpdateSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/GeolocationUpdateScheduleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/GeolocationUpdateSchedule"}}]}},"/managedentity/geolocationupdateschedules/{objId}":{"get":{"tags":["GeolocationUpdateSchedule"],"operationId":"getGeolocationUpdateSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/GeolocationUpdateScheduleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["GeolocationUpdateSchedule"],"operationId":"editGeolocationUpdateSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/GeolocationUpdateScheduleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/GeolocationUpdateSchedule"}}]},"delete":{"tags":["GeolocationUpdateSchedule"],"operationId":"deleteGeolocationUpdateSchedule","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/updatesru":{"get":{"tags":["SRUUpdateImmediate"],"operationId":"getSRUUpdateImmediateList","responses":{"200":{"description":"","schema":{"type":"object","title":"SRUUpdateImmediateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SRUUpdateImmediateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SRUUpdateImmediate"],"operationId":"addSRUUpdateImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SRUUpdateImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SRUUpdateImmediate"}}]}},"/action/updatesru/{objId}":{"get":{"tags":["SRUUpdateImmediate"],"operationId":"getSRUUpdateImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SRUUpdateImmediateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SRUUpdateImmediate"],"operationId":"editSRUUpdateImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SRUUpdateImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SRUUpdateImmediate"}}]},"delete":{"tags":["SRUUpdateImmediate"],"operationId":"deleteSRUUpdateImmediate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/managedentity/sruupdateschedules":{"get":{"tags":["SRUUpdateSchedule"],"operationId":"getSRUUpdateScheduleList","responses":{"200":{"description":"","schema":{"type":"object","title":"SRUUpdateScheduleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SRUUpdateScheduleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SRUUpdateSchedule"],"operationId":"addSRUUpdateSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SRUUpdateScheduleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SRUUpdateSchedule"}}]}},"/managedentity/sruupdateschedules/{objId}":{"get":{"tags":["SRUUpdateSchedule"],"operationId":"getSRUUpdateSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SRUUpdateScheduleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SRUUpdateSchedule"],"operationId":"editSRUUpdateSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SRUUpdateScheduleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SRUUpdateSchedule"}}]},"delete":{"tags":["SRUUpdateSchedule"],"operationId":"deleteSRUUpdateSchedule","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/updatevdb":{"get":{"tags":["VDBUpdateImmediate"],"operationId":"getVDBUpdateImmediateList","responses":{"200":{"description":"","schema":{"type":"object","title":"VDBUpdateImmediateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/VDBUpdateImmediateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["VDBUpdateImmediate"],"operationId":"addVDBUpdateImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/VDBUpdateImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/VDBUpdateImmediate"}}]}},"/action/updatevdb/{objId}":{"get":{"tags":["VDBUpdateImmediate"],"operationId":"getVDBUpdateImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/VDBUpdateImmediateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["VDBUpdateImmediate"],"operationId":"editVDBUpdateImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/VDBUpdateImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/VDBUpdateImmediate"}}]},"delete":{"tags":["VDBUpdateImmediate"],"operationId":"deleteVDBUpdateImmediate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/managedentity/vdbupdateschedules":{"get":{"tags":["VDBUpdateSchedule"],"operationId":"getVDBUpdateScheduleList","responses":{"200":{"description":"","schema":{"type":"object","title":"VDBUpdateScheduleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/VDBUpdateScheduleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["VDBUpdateSchedule"],"operationId":"addVDBUpdateSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/VDBUpdateScheduleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/VDBUpdateSchedule"}}]}},"/managedentity/vdbupdateschedules/{objId}":{"get":{"tags":["VDBUpdateSchedule"],"operationId":"getVDBUpdateSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/VDBUpdateScheduleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["VDBUpdateSchedule"],"operationId":"editVDBUpdateSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/VDBUpdateScheduleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/VDBUpdateSchedule"}}]},"delete":{"tags":["VDBUpdateSchedule"],"operationId":"deleteVDBUpdateSchedule","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/securityintelligenceupdatefeeds":{"get":{"tags":["SecurityIntelligenceUpdateFeedsImmediate"],"operationId":"getSecurityIntelligenceUpdateFeedsImmediateList","responses":{"200":{"description":"","schema":{"type":"object","title":"SecurityIntelligenceUpdateFeedsImmediateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SecurityIntelligenceUpdateFeedsImmediateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SecurityIntelligenceUpdateFeedsImmediate"],"operationId":"addSecurityIntelligenceUpdateFeedsImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceUpdateFeedsImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SecurityIntelligenceUpdateFeedsImmediate"}}]}},"/action/securityintelligenceupdatefeeds/{objId}":{"get":{"tags":["SecurityIntelligenceUpdateFeedsImmediate"],"operationId":"getSecurityIntelligenceUpdateFeedsImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceUpdateFeedsImmediateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SecurityIntelligenceUpdateFeedsImmediate"],"operationId":"editSecurityIntelligenceUpdateFeedsImmediate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceUpdateFeedsImmediateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SecurityIntelligenceUpdateFeedsImmediate"}}]},"delete":{"tags":["SecurityIntelligenceUpdateFeedsImmediate"],"operationId":"deleteSecurityIntelligenceUpdateFeedsImmediate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/managedentity/securityintelligencefeedsupdateschedules":{"get":{"tags":["SecurityIntelligenceUpdateFeedsSchedule"],"operationId":"getSecurityIntelligenceUpdateFeedsScheduleList","responses":{"200":{"description":"","schema":{"type":"object","title":"SecurityIntelligenceUpdateFeedsScheduleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SecurityIntelligenceUpdateFeedsScheduleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SecurityIntelligenceUpdateFeedsSchedule"],"operationId":"addSecurityIntelligenceUpdateFeedsSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceUpdateFeedsScheduleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SecurityIntelligenceUpdateFeedsSchedule"}}]}},"/managedentity/securityintelligencefeedsupdateschedules/{objId}":{"get":{"tags":["SecurityIntelligenceUpdateFeedsSchedule"],"operationId":"getSecurityIntelligenceUpdateFeedsSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceUpdateFeedsScheduleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SecurityIntelligenceUpdateFeedsSchedule"],"operationId":"editSecurityIntelligenceUpdateFeedsSchedule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceUpdateFeedsScheduleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SecurityIntelligenceUpdateFeedsSchedule"}}]},"delete":{"tags":["SecurityIntelligenceUpdateFeedsSchedule"],"operationId":"deleteSecurityIntelligenceUpdateFeedsSchedule","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/jobs":{"get":{"tags":["Job"],"operationId":"getJobHistoryEntityList","responses":{"200":{"description":"","schema":{"type":"object","title":"JobHistoryEntityList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/JobHistoryEntityWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/jobs/backups":{"get":{"tags":["Job"],"operationId":"getJobHistoryBackupList","responses":{"200":{"description":"","schema":{"type":"object","title":"JobHistoryBackupList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/JobHistoryBackupWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/jobs/backups/{objId}":{"get":{"tags":["Job"],"operationId":"getJobHistoryBackup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JobHistoryBackupWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Job"],"operationId":"deleteJobHistoryBackup","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/jobs/geolocationupdates":{"get":{"tags":["Job"],"operationId":"getJobHistoryGeolocationList","responses":{"200":{"description":"","schema":{"type":"object","title":"JobHistoryGeolocationList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/JobHistoryGeolocationWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/jobs/geolocationupdates/{objId}":{"get":{"tags":["Job"],"operationId":"getJobHistoryGeolocation","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JobHistoryGeolocationWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Job"],"operationId":"deleteJobHistoryGeolocation","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/jobs/sruupdates":{"get":{"tags":["Job"],"operationId":"getJobHistorySruUpdateList","responses":{"200":{"description":"","schema":{"type":"object","title":"JobHistorySruUpdateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/JobHistorySruUpdateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/jobs/sruupdates/{objId}":{"get":{"tags":["Job"],"operationId":"getJobHistorySruUpdate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JobHistorySruUpdateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Job"],"operationId":"deleteJobHistorySruUpdate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/jobs/vdbupdates":{"get":{"tags":["Job"],"operationId":"getJobHistoryVDBUpdateList","responses":{"200":{"description":"","schema":{"type":"object","title":"JobHistoryVDBUpdateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/JobHistoryVDBUpdateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/jobs/vdbupdates/{objId}":{"get":{"tags":["Job"],"operationId":"getJobHistoryVDBUpdate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JobHistoryVDBUpdateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Job"],"operationId":"deleteJobHistoryVDBUpdate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/jobs/deployments":{"get":{"tags":["Job"],"operationId":"getJobHistoryDeploymentList","responses":{"200":{"description":"","schema":{"type":"object","title":"JobHistoryDeploymentList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/JobHistoryDeploymentWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/jobs/deployments/{objId}":{"get":{"tags":["Job"],"operationId":"getJobHistoryDeployment","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JobHistoryDeploymentWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Job"],"operationId":"deleteJobHistoryDeployment","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/jobs/licenseregistrations":{"get":{"tags":["Job"],"operationId":"getLicenseJobHistoryList","responses":{"200":{"description":"","schema":{"type":"object","title":"LicenseJobHistoryList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/LicenseJobHistoryWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/jobs/licenseregistrations/{objId}":{"get":{"tags":["Job"],"operationId":"getLicenseJobHistory","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/LicenseJobHistoryWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Job"],"operationId":"deleteLicenseJobHistory","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/jobs/cloudmanagementupdates":{"get":{"tags":["Job"],"operationId":"getJobHistoryCloudManagementList","responses":{"200":{"description":"","schema":{"type":"object","title":"JobHistoryCloudManagementList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/JobHistoryCloudManagementWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/jobs/cloudmanagementupdates/{objId}":{"get":{"tags":["Job"],"operationId":"getJobHistoryCloudManagement","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JobHistoryCloudManagementWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Job"],"operationId":"deleteJobHistoryCloudManagement","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/jobs/haconfigsync":{"get":{"tags":["Job"],"operationId":"getJobHistoryHaConfigSyncList","responses":{"200":{"description":"","schema":{"type":"object","title":"JobHistoryHaConfigSyncList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/JobHistoryHaConfigSyncWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/jobs/haconfigsync/{objId}":{"get":{"tags":["Job"],"operationId":"getJobHistoryHaConfigSync","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JobHistoryHaConfigSyncWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Job"],"operationId":"deleteJobHistoryHaConfigSync","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/jobs/{objId}":{"get":{"tags":["Job"],"operationId":"getJobHistoryEntity","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/JobHistoryEntityWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["Job"],"operationId":"deleteJobHistoryEntity","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/applicationfilters":{"get":{"tags":["Application"],"operationId":"getApplicationFilterList","responses":{"200":{"description":"","schema":{"type":"object","title":"ApplicationFilterList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ApplicationFilterWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["Application"],"operationId":"addApplicationFilter","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ApplicationFilterWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ApplicationFilter"}}]}},"/object/applicationfilters/{objId}":{"get":{"tags":["Application"],"operationId":"getApplicationFilter","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ApplicationFilterWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["Application"],"operationId":"editApplicationFilter","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ApplicationFilterWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ApplicationFilter"}}]},"delete":{"tags":["Application"],"operationId":"deleteApplicationFilter","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/filepolicies":{"get":{"tags":["FilePolicy"],"operationId":"getFilePolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"FilePolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/FilePolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/filepolicies/{objId}":{"get":{"tags":["FilePolicy"],"operationId":"getFilePolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FilePolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/intrusionpolicies":{"get":{"tags":["IntrusionPolicy"],"operationId":"getIntrusionPolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"IntrusionPolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IntrusionPolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/intrusionpolicies/{objId}":{"get":{"tags":["IntrusionPolicy"],"operationId":"getIntrusionPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IntrusionPolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/intrusionpolicies/{parentId}/intrusionrules":{"get":{"tags":["IntrusionPolicy"],"operationId":"getIntrusionRuleList","responses":{"200":{"description":"","schema":{"type":"object","title":"IntrusionRuleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IntrusionRuleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]}},"/policy/intrusionpolicies/{parentId}/intrusionrules/{objId}":{"get":{"tags":["IntrusionPolicy"],"operationId":"getIntrusionRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IntrusionRuleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/intrusionpolicies/{objId}/ruleupdates":{"put":{"tags":["IntrusionPolicy"],"operationId":"editIntrusionPolicyRuleUpdate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IntrusionPolicyRuleUpdateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IntrusionPolicyRuleUpdate"}}]}},"/object/intrusionsettings":{"get":{"tags":["IntrusionSettings"],"operationId":"getIntrusionSettingsList","responses":{"200":{"description":"","schema":{"type":"object","title":"IntrusionSettingsList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IntrusionSettingsWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/intrusionsettings/{objId}":{"get":{"tags":["IntrusionSettings"],"operationId":"getIntrusionSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IntrusionSettingsWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IntrusionSettings"],"operationId":"editIntrusionSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IntrusionSettingsWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IntrusionSettings"}}]}},"/policy/accesspolicies/{parentId}/accessrules":{"get":{"tags":["AccessPolicy"],"operationId":"getAccessRuleList","responses":{"200":{"description":"","schema":{"type":"object","title":"AccessRuleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AccessRuleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]},"post":{"tags":["AccessPolicy"],"operationId":"addAccessRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AccessRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AccessRule"}}]}},"/policy/accesspolicies/{parentId}/accessrules/{objId}":{"get":{"tags":["AccessPolicy"],"operationId":"getAccessRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AccessRuleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["AccessPolicy"],"operationId":"editAccessRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AccessRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AccessRule"}}]},"delete":{"tags":["AccessPolicy"],"operationId":"deleteAccessRule","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/accesspolicies":{"get":{"tags":["AccessPolicy"],"operationId":"getAccessPolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"AccessPolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AccessPolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/accesspolicies/{objId}":{"get":{"tags":["AccessPolicy"],"operationId":"getAccessPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AccessPolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["AccessPolicy"],"operationId":"editAccessPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AccessPolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AccessPolicy"}}]}},"/policy/manualnatpolicies/{parentId}/manualnatrules":{"get":{"tags":["NAT"],"operationId":"getManualNatRuleList","responses":{"200":{"description":"","schema":{"type":"object","title":"ManualNatRuleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ManualNatRuleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]},"post":{"tags":["NAT"],"operationId":"addManualNatRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ManualNatRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ManualNatRule"}}]}},"/policy/manualnatpolicies/{parentId}/manualnatrules/{objId}":{"get":{"tags":["NAT"],"operationId":"getManualNatRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ManualNatRuleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["NAT"],"operationId":"editManualNatRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ManualNatRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ManualNatRule"}}]},"delete":{"tags":["NAT"],"operationId":"deleteManualNatRule","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/manualnatpolicies":{"get":{"tags":["NAT"],"operationId":"getManualNatRuleContainerList","responses":{"200":{"description":"","schema":{"type":"object","title":"ManualNatRuleContainerList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ManualNatRuleContainerWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/manualnatpolicies/{objId}":{"get":{"tags":["NAT"],"operationId":"getManualNatRuleContainer","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ManualNatRuleContainerWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/objectnatpolicies/{parentId}/objectnatrules":{"get":{"tags":["NAT"],"operationId":"getObjectNatRuleList","responses":{"200":{"description":"","schema":{"type":"object","title":"ObjectNatRuleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ObjectNatRuleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]},"post":{"tags":["NAT"],"operationId":"addObjectNatRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ObjectNatRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ObjectNatRule"}}]}},"/policy/objectnatpolicies/{parentId}/objectnatrules/{objId}":{"get":{"tags":["NAT"],"operationId":"getObjectNatRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ObjectNatRuleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["NAT"],"operationId":"editObjectNatRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ObjectNatRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ObjectNatRule"}}]},"delete":{"tags":["NAT"],"operationId":"deleteObjectNatRule","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/objectnatpolicies":{"get":{"tags":["NAT"],"operationId":"getObjectNatRuleContainerList","responses":{"200":{"description":"","schema":{"type":"object","title":"ObjectNatRuleContainerList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ObjectNatRuleContainerWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/objectnatpolicies/{objId}":{"get":{"tags":["NAT"],"operationId":"getObjectNatRuleContainer","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ObjectNatRuleContainerWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/interfaces/{parentId}/subinterfaces":{"get":{"tags":["Interface"],"operationId":"getSubInterfaceList","responses":{"200":{"description":"","schema":{"type":"object","title":"SubInterfaceList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SubInterfaceWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]},"post":{"tags":["Interface"],"operationId":"addSubInterface","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SubInterfaceWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SubInterface"}}]}},"/devices/default/interfaces/{parentId}/subinterfaces/{objId}":{"get":{"tags":["Interface"],"operationId":"getSubInterface","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SubInterfaceWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["Interface"],"operationId":"editSubInterface","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SubInterfaceWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SubInterface"}}]},"delete":{"tags":["Interface"],"operationId":"deleteSubInterface","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/uploaddiskfile":{"post":{"tags":["Upload"],"operationId":"postuploaddiskfile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FileUploadStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"formData","name":"fileToUpload","type":"file"}],"consumes":["multipart/form-data"]}},"/action/downloaddiskfile/{objId}":{"get":{"tags":["Download"],"operationId":"getdownloaddiskfile","responses":{"200":{"description":"","schema":{"type":"file"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}],"produces":["application/octet-stream"]}},"/object/anyconnectclientprofiles":{"get":{"tags":["AnyConnectClientProfile"],"operationId":"getAnyConnectClientProfileList","responses":{"200":{"description":"","schema":{"type":"object","title":"AnyConnectClientProfileList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AnyConnectClientProfileWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["AnyConnectClientProfile"],"operationId":"addAnyConnectClientProfile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectClientProfileWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AnyConnectClientProfile"}}]}},"/object/anyconnectclientprofiles/{objId}":{"get":{"tags":["AnyConnectClientProfile"],"operationId":"getAnyConnectClientProfile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectClientProfileWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["AnyConnectClientProfile"],"operationId":"editAnyConnectClientProfile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectClientProfileWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AnyConnectClientProfile"}}]},"delete":{"tags":["AnyConnectClientProfile"],"operationId":"deleteAnyConnectClientProfile","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/anyconnectpackagefiles":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectPackageFileList","responses":{"200":{"description":"","schema":{"type":"object","title":"AnyConnectPackageFileList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AnyConnectPackageFileWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["AnyConnectVpnConnection"],"operationId":"addAnyConnectPackageFile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectPackageFileWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AnyConnectPackageFile"}}]}},"/devices/default/anyconnectpackagefiles/{objId}":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectPackageFile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectPackageFileWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["AnyConnectVpnConnection"],"operationId":"editAnyConnectPackageFile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectPackageFileWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AnyConnectPackageFile"}}]},"delete":{"tags":["AnyConnectVpnConnection"],"operationId":"deleteAnyConnectPackageFile","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/anyconnectpackages":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectPackagesList","responses":{"200":{"description":"","schema":{"type":"object","title":"AnyConnectPackagesList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AnyConnectPackagesWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["AnyConnectVpnConnection"],"operationId":"addAnyConnectPackages","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectPackagesWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AnyConnectPackages"}}]}},"/devices/default/anyconnectpackages/{objId}":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectPackages","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectPackagesWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["AnyConnectVpnConnection"],"operationId":"editAnyConnectPackages","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectPackagesWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AnyConnectPackages"}}]},"delete":{"tags":["AnyConnectVpnConnection"],"operationId":"deleteAnyConnectPackages","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/anyconnectprofiles":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectProfileList","responses":{"200":{"description":"","schema":{"type":"object","title":"AnyConnectProfileList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AnyConnectProfileWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devices/default/anyconnectprofiles/{objId}":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectProfile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectProfileWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["AnyConnectVpnConnection"],"operationId":"deleteAnyConnectProfile","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/anyconnectgrouppolicies":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectGroupPolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"AnyConnectGroupPolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AnyConnectGroupPolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devices/default/anyconnectgrouppolicies/{objId}":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectGroupPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectGroupPolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["AnyConnectVpnConnection"],"operationId":"deleteAnyConnectGroupPolicy","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/anyconnectvpnconnections":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectVpnConnectionList","responses":{"200":{"description":"","schema":{"type":"object","title":"AnyConnectVpnConnectionList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AnyConnectVpnConnectionWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["AnyConnectVpnConnection"],"operationId":"addAnyConnectVpnConnection","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectVpnConnectionWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AnyConnectVpnConnectionUncompressedModel"}}]}},"/devices/default/anyconnectvpnconnections/{objId}":{"get":{"tags":["AnyConnectVpnConnection"],"operationId":"getAnyConnectVpnConnection","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectVpnConnectionWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["AnyConnectVpnConnection"],"operationId":"editAnyConnectVpnConnection","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AnyConnectVpnConnectionWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AnyConnectVpnConnectionUncompressedModel"}}]},"delete":{"tags":["AnyConnectVpnConnection"],"operationId":"deleteAnyConnectVpnConnection","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/ikev1policies":{"get":{"tags":["IkevOnePolicy"],"operationId":"getIkevOnePolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"IkevOnePolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IkevOnePolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["IkevOnePolicy"],"operationId":"addIkevOnePolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevOnePolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IkevOnePolicy"}}]}},"/object/ikev1policies/{objId}":{"get":{"tags":["IkevOnePolicy"],"operationId":"getIkevOnePolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevOnePolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IkevOnePolicy"],"operationId":"editIkevOnePolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevOnePolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IkevOnePolicy"}}]},"delete":{"tags":["IkevOnePolicy"],"operationId":"deleteIkevOnePolicy","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/ikev1proposals":{"get":{"tags":["IkevOneProposal"],"operationId":"getIkevOneProposalList","responses":{"200":{"description":"","schema":{"type":"object","title":"IkevOneProposalList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IkevOneProposalWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["IkevOneProposal"],"operationId":"addIkevOneProposal","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevOneProposalWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IkevOneProposal"}}]}},"/object/ikev1proposals/{objId}":{"get":{"tags":["IkevOneProposal"],"operationId":"getIkevOneProposal","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevOneProposalWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IkevOneProposal"],"operationId":"editIkevOneProposal","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevOneProposalWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IkevOneProposal"}}]},"delete":{"tags":["IkevOneProposal"],"operationId":"deleteIkevOneProposal","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/ikev2policies":{"get":{"tags":["IkevTwoPolicy"],"operationId":"getIkevTwoPolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"IkevTwoPolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IkevTwoPolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["IkevTwoPolicy"],"operationId":"addIkevTwoPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevTwoPolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IkevTwoPolicy"}}]}},"/object/ikev2policies/{objId}":{"get":{"tags":["IkevTwoPolicy"],"operationId":"getIkevTwoPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevTwoPolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IkevTwoPolicy"],"operationId":"editIkevTwoPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevTwoPolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IkevTwoPolicy"}}]},"delete":{"tags":["IkevTwoPolicy"],"operationId":"deleteIkevTwoPolicy","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/ikev2proposals":{"get":{"tags":["IkevTwoProposal"],"operationId":"getIkevTwoProposalList","responses":{"200":{"description":"","schema":{"type":"object","title":"IkevTwoProposalList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IkevTwoProposalWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["IkevTwoProposal"],"operationId":"addIkevTwoProposal","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevTwoProposalWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IkevTwoProposal"}}]}},"/object/ikev2proposals/{objId}":{"get":{"tags":["IkevTwoProposal"],"operationId":"getIkevTwoProposal","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevTwoProposalWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IkevTwoProposal"],"operationId":"editIkevTwoProposal","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IkevTwoProposalWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IkevTwoProposal"}}]},"delete":{"tags":["IkevTwoProposal"],"operationId":"deleteIkevTwoProposal","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/s2sconnectionprofiles":{"get":{"tags":["SToSConnectionProfile"],"operationId":"getSToSConnectionProfileList","responses":{"200":{"description":"","schema":{"type":"object","title":"SToSConnectionProfileList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SToSConnectionProfileWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SToSConnectionProfile"],"operationId":"addSToSConnectionProfile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SToSConnectionProfileWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SToSConnectionProfile"}}]}},"/devices/default/s2sconnectionprofiles/{objId}":{"get":{"tags":["SToSConnectionProfile"],"operationId":"getSToSConnectionProfile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SToSConnectionProfileWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SToSConnectionProfile"],"operationId":"editSToSConnectionProfile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SToSConnectionProfileWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SToSConnectionProfile"}}]},"delete":{"tags":["SToSConnectionProfile"],"operationId":"deleteSToSConnectionProfile","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/users":{"get":{"tags":["User"],"operationId":"getUserList","responses":{"200":{"description":"","schema":{"type":"object","title":"UserList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/UserWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["User"],"operationId":"addUser","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/UserWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/User"}}]}},"/object/users/{objId}":{"get":{"tags":["User"],"operationId":"getUser","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/UserWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["User"],"operationId":"editUser","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/UserWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/User"}}]},"delete":{"tags":["User"],"operationId":"deleteUser","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devicesettings/default/ntp":{"get":{"tags":["NTP"],"operationId":"getNTPList","responses":{"200":{"description":"","schema":{"type":"object","title":"NTPList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/NTPWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/ntp/{objId}":{"get":{"tags":["NTP"],"operationId":"getNTP","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NTPWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["NTP"],"operationId":"editNTP","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NTPWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/NTP"}}]}},"/devicesettings/default/logsettings":{"get":{"tags":["DeviceLogSettings"],"operationId":"getDeviceLogSettingsList","responses":{"200":{"description":"","schema":{"type":"object","title":"DeviceLogSettingsList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/DeviceLogSettingsWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/logsettings/{objId}":{"get":{"tags":["DeviceLogSettings"],"operationId":"getDeviceLogSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DeviceLogSettingsWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["DeviceLogSettings"],"operationId":"editDeviceLogSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DeviceLogSettingsWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DeviceLogSettings"}}]}},"/object/syslogalerts":{"get":{"tags":["SyslogServer"],"operationId":"getSyslogServerList","responses":{"200":{"description":"","schema":{"type":"object","title":"SyslogServerList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SyslogServerWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SyslogServer"],"operationId":"addSyslogServer","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SyslogServerWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SyslogServer"}}]}},"/object/syslogalerts/{objId}":{"get":{"tags":["SyslogServer"],"operationId":"getSyslogServer","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SyslogServerWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SyslogServer"],"operationId":"editSyslogServer","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SyslogServerWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SyslogServer"}}]},"delete":{"tags":["SyslogServer"],"operationId":"deleteSyslogServer","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/timezones/{objId}":{"get":{"tags":["TimeZones"],"operationId":"getTimeZones","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TimeZonesWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/diskusage/{objId}":{"get":{"tags":["DiskUsage"],"operationId":"getDiskUsage","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DiskUsageWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/monitor/trendingreports/{objId}":{"get":{"tags":["TrendingReport"],"operationId":"getTrendingReport","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TrendingReportWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"time_duration","in":"query","required":false,"type":"integer"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/mgmtdnssettings":{"get":{"tags":["DNS"],"operationId":"getDeviceDNSSettingsList","responses":{"200":{"description":"","schema":{"type":"object","title":"DeviceDNSSettingsList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/DeviceDNSSettingsWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devices/default/mgmtdnssettings/{objId}":{"get":{"tags":["DNS"],"operationId":"getDeviceDNSSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DeviceDNSSettingsWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["DNS"],"operationId":"editDeviceDNSSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DeviceDNSSettingsWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DeviceDNSSettings"}}]}},"/devices/default/datadnssettings":{"get":{"tags":["DNS"],"operationId":"getDataDNSSettingsList","responses":{"200":{"description":"","schema":{"type":"object","title":"DataDNSSettingsList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/DataDNSSettingsWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devices/default/datadnssettings/{objId}":{"get":{"tags":["DNS"],"operationId":"getDataDNSSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DataDNSSettingsWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["DNS"],"operationId":"editDataDNSSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DataDNSSettingsWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DataDNSSettings"}}]}},"/object/dnsservergroups":{"get":{"tags":["DNS"],"operationId":"getDNSServerGroupList","responses":{"200":{"description":"","schema":{"type":"object","title":"DNSServerGroupList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/DNSServerGroupWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["DNS"],"operationId":"addDNSServerGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DNSServerGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DNSServerGroup"}}]}},"/object/dnsservergroups/{objId}":{"get":{"tags":["DNS"],"operationId":"getDNSServerGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DNSServerGroupWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["DNS"],"operationId":"editDNSServerGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DNSServerGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DNSServerGroup"}}]},"delete":{"tags":["DNS"],"operationId":"deleteDNSServerGroup","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/identitypolicies/{parentId}/identityrules":{"get":{"tags":["IdentityPolicy"],"operationId":"getIdentityRuleList","responses":{"200":{"description":"","schema":{"type":"object","title":"IdentityRuleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IdentityRuleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]},"post":{"tags":["IdentityPolicy"],"operationId":"addIdentityRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IdentityRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IdentityRule"}}]}},"/policy/identitypolicies/{parentId}/identityrules/{objId}":{"get":{"tags":["IdentityPolicy"],"operationId":"getIdentityRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IdentityRuleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IdentityPolicy"],"operationId":"editIdentityRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IdentityRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IdentityRule"}}]},"delete":{"tags":["IdentityPolicy"],"operationId":"deleteIdentityRule","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/identitypolicies":{"get":{"tags":["IdentityPolicy"],"operationId":"getIdentityPolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"IdentityPolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/IdentityPolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/identitypolicies/{objId}":{"get":{"tags":["IdentityPolicy"],"operationId":"getIdentityPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IdentityPolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["IdentityPolicy"],"operationId":"editIdentityPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/IdentityPolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/IdentityPolicy"}}]}},"/object/internalcertificates":{"get":{"tags":["Certificate"],"operationId":"getInternalCertificateList","responses":{"200":{"description":"","schema":{"type":"object","title":"InternalCertificateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/InternalCertificateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["Certificate"],"operationId":"addInternalCertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InternalCertificateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InternalCertificate"}}]}},"/object/internalcertificates/{objId}":{"get":{"tags":["Certificate"],"operationId":"getInternalCertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InternalCertificateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["Certificate"],"operationId":"editInternalCertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InternalCertificateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InternalCertificate"}}]},"delete":{"tags":["Certificate"],"operationId":"deleteInternalCertificate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/internalcacertificates":{"get":{"tags":["Certificate"],"operationId":"getInternalCACertificateList","responses":{"200":{"description":"","schema":{"type":"object","title":"InternalCACertificateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/InternalCACertificateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["Certificate"],"operationId":"addInternalCACertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InternalCACertificateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InternalCACertificate"}}]}},"/object/internalcacertificates/{objId}":{"get":{"tags":["Certificate"],"operationId":"getInternalCACertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InternalCACertificateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["Certificate"],"operationId":"editInternalCACertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InternalCACertificateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InternalCACertificate"}}]},"delete":{"tags":["Certificate"],"operationId":"deleteInternalCACertificate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/downloadinternalcacertificate/{objId}":{"get":{"tags":["Download"],"operationId":"getdownloadinternalcacertificate","responses":{"200":{"description":"","schema":{"type":"file"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}],"produces":["application/octet-stream"]}},"/object/externalcertificates":{"get":{"tags":["Certificate"],"operationId":"getExternalCertificateList","responses":{"200":{"description":"","schema":{"type":"object","title":"ExternalCertificateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ExternalCertificateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["Certificate"],"operationId":"addExternalCertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExternalCertificateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ExternalCertificate"}}]}},"/object/externalcertificates/{objId}":{"get":{"tags":["Certificate"],"operationId":"getExternalCertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExternalCertificateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["Certificate"],"operationId":"editExternalCertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExternalCertificateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ExternalCertificate"}}]},"delete":{"tags":["Certificate"],"operationId":"deleteExternalCertificate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/externalcacertificates":{"get":{"tags":["Certificate"],"operationId":"getExternalCACertificateList","responses":{"200":{"description":"","schema":{"type":"object","title":"ExternalCACertificateList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ExternalCACertificateWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["Certificate"],"operationId":"addExternalCACertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExternalCACertificateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ExternalCACertificate"}}]}},"/object/externalcacertificates/{objId}":{"get":{"tags":["Certificate"],"operationId":"getExternalCACertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExternalCACertificateWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["Certificate"],"operationId":"editExternalCACertificate","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ExternalCACertificateWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ExternalCACertificate"}}]},"delete":{"tags":["Certificate"],"operationId":"deleteExternalCACertificate","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/realms":{"get":{"tags":["ActiveDirectoryRealm"],"operationId":"getActiveDirectoryRealmList","responses":{"200":{"description":"","schema":{"type":"object","title":"ActiveDirectoryRealmList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ActiveDirectoryRealmWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["ActiveDirectoryRealm"],"operationId":"addActiveDirectoryRealm","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ActiveDirectoryRealmWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ActiveDirectoryRealm"}}]}},"/object/realms/{objId}":{"get":{"tags":["ActiveDirectoryRealm"],"operationId":"getActiveDirectoryRealm","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ActiveDirectoryRealmWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["ActiveDirectoryRealm"],"operationId":"editActiveDirectoryRealm","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ActiveDirectoryRealmWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ActiveDirectoryRealm"}}]}},"/object/specialrealms":{"get":{"tags":["SpecialRealm"],"operationId":"getSpecialRealmList","responses":{"200":{"description":"","schema":{"type":"object","title":"SpecialRealmList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SpecialRealmWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/specialrealms/{objId}":{"get":{"tags":["SpecialRealm"],"operationId":"getSpecialRealm","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SpecialRealmWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/realms/{parentId}/trafficusers":{"get":{"tags":["TrafficUser"],"operationId":"getRealmTrafficUserList","responses":{"200":{"description":"","schema":{"type":"object","title":"RealmTrafficUserList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/TrafficUserWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]}},"/object/realms/{parentId}/trafficusers/{objId}":{"get":{"tags":["TrafficUser"],"operationId":"getRealmTrafficUser","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TrafficUserWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/specialrealms/{parentId}/trafficusers":{"get":{"tags":["TrafficUser"],"operationId":"getSpecialRealmTrafficUserList","responses":{"200":{"description":"","schema":{"type":"object","title":"SpecialRealmTrafficUserList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/TrafficUserWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]}},"/object/specialrealms/{parentId}/trafficusers/{objId}":{"get":{"tags":["TrafficUser"],"operationId":"getSpecialRealmTrafficUser","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TrafficUserWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/realms/{parentId}/trafficusergroups":{"get":{"tags":["TrafficUserGroup"],"operationId":"getTrafficUserGroupList","responses":{"200":{"description":"","schema":{"type":"object","title":"TrafficUserGroupList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/TrafficUserGroupWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]}},"/object/realms/{parentId}/trafficusergroups/{objId}":{"get":{"tags":["TrafficUserGroup"],"operationId":"getTrafficUserGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TrafficUserGroupWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/routing/{parentId}/staticrouteentries":{"get":{"tags":["StaticRouteEntry"],"operationId":"getStaticRouteEntryList","responses":{"200":{"description":"","schema":{"type":"object","title":"StaticRouteEntryList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/StaticRouteEntryWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]},"post":{"tags":["StaticRouteEntry"],"operationId":"addStaticRouteEntry","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StaticRouteEntryWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/StaticRouteEntry"}}]}},"/devices/default/routing/{parentId}/staticrouteentries/{objId}":{"get":{"tags":["StaticRouteEntry"],"operationId":"getStaticRouteEntry","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StaticRouteEntryWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["StaticRouteEntry"],"operationId":"editStaticRouteEntry","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StaticRouteEntryWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/StaticRouteEntry"}}]},"delete":{"tags":["StaticRouteEntry"],"operationId":"deleteStaticRouteEntry","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/routing":{"get":{"tags":["StaticRouteEntryContainer"],"operationId":"getStaticRouteEntryContainerList","responses":{"200":{"description":"","schema":{"type":"object","title":"StaticRouteEntryContainerList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/StaticRouteEntryContainerWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devices/default/routing/{objId}":{"get":{"tags":["StaticRouteEntryContainer"],"operationId":"getStaticRouteEntryContainer","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/StaticRouteEntryContainerWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/connecttest/{objId}":{"get":{"tags":["ConnectTest"],"operationId":"getConnectTest","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ConnectTestWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/downloadtroubleshoot/{objId}":{"get":{"tags":["Download"],"operationId":"getdownloadtroubleshoot","responses":{"200":{"description":"","schema":{"type":"file"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}],"produces":["application/octet-stream"]}},"/action/troubleshoot":{"get":{"tags":["ScheduleTroubleshoot"],"operationId":"getScheduleTroubleshootList","responses":{"200":{"description":"","schema":{"type":"object","title":"ScheduleTroubleshootList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ScheduleTroubleshootWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["ScheduleTroubleshoot"],"operationId":"addScheduleTroubleshoot","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ScheduleTroubleshootWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ScheduleTroubleshoot"}}]}},"/managedentity/jobs/troubleshootjob":{"get":{"tags":["TroubleshootJobHistory"],"operationId":"getTroubleshootJobHistoryList","responses":{"200":{"description":"","schema":{"type":"object","title":"TroubleshootJobHistoryList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/TroubleshootJobHistoryWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/action/troubleshoot/{objId}":{"get":{"tags":["ScheduleTroubleshoot"],"operationId":"getScheduleTroubleshoot","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ScheduleTroubleshootWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["ScheduleTroubleshoot"],"operationId":"editScheduleTroubleshoot","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ScheduleTroubleshootWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/ScheduleTroubleshoot"}}]},"delete":{"tags":["ScheduleTroubleshoot"],"operationId":"deleteScheduleTroubleshoot","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/managedentity/upgradefiles":{"get":{"tags":["UpgradeFile"],"operationId":"getUpgradeFileList","responses":{"200":{"description":"","schema":{"type":"object","title":"UpgradeFileList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/UpgradeFileWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/managedentity/upgradefiles/{objId}":{"get":{"tags":["UpgradeFile"],"operationId":"getUpgradeFile","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/UpgradeFileWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["UpgradeFile"],"operationId":"deleteUpgradeFile","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/upgrade":{"post":{"tags":["Upgrade"],"operationId":"startUpgrade","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}}}},"/devicesettings/default/dhcpservercontainers":{"get":{"tags":["DHCPServerContainer"],"operationId":"getDHCPServerContainerList","responses":{"200":{"description":"","schema":{"type":"object","title":"DHCPServerContainerList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/DHCPServerContainerWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/dhcpservercontainers/{objId}":{"get":{"tags":["DHCPServerContainer"],"operationId":"getDHCPServerContainer","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DHCPServerContainerWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["DHCPServerContainer"],"operationId":"editDHCPServerContainer","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/DHCPServerContainerWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/DHCPServerContainer"}}]}},"/devicesettings/default/cloudconfig":{"get":{"tags":["CloudConfig"],"operationId":"getCloudConfigList","responses":{"200":{"description":"","schema":{"type":"object","title":"CloudConfigList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/CloudConfigWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/cloudconfig/{objId}":{"get":{"tags":["CloudConfig"],"operationId":"getCloudConfig","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CloudConfigWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["CloudConfig"],"operationId":"editCloudConfig","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CloudConfigWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CloudConfig"}}]}},"/action/uploadcert":{"post":{"tags":["CertFileUploadStatus"],"operationId":"postuploadcert","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CertFileUploadStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"formData","name":"fileToUpload","type":"file"}],"consumes":["multipart/form-data"]}},"/license/smartagentconnections":{"get":{"tags":["SmartLicensing"],"operationId":"getSmartAgentConnectionList","responses":{"200":{"description":"","schema":{"type":"object","title":"SmartAgentConnectionList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SmartAgentConnectionWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SmartLicensing"],"operationId":"addSmartAgentConnection","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SmartAgentConnectionWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SmartAgentConnection"}}]}},"/license/smartagentconnections/{objId}":{"get":{"tags":["SmartLicensing"],"operationId":"getSmartAgentConnection","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SmartAgentConnectionWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SmartLicensing"],"operationId":"editSmartAgentConnection","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SmartAgentConnectionWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SmartAgentConnection"}}]},"delete":{"tags":["SmartLicensing"],"operationId":"deleteSmartAgentConnection","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/license/smartagentstatuses":{"get":{"tags":["SmartLicensing"],"operationId":"getSmartAgentStatusList","responses":{"200":{"description":"","schema":{"type":"object","title":"SmartAgentStatusList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SmartAgentStatusWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/license/smartagentstatuses/{objId}":{"get":{"tags":["SmartLicensing"],"operationId":"getSmartAgentStatus","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SmartAgentStatusWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/license/smartlicenses":{"get":{"tags":["SmartLicensing"],"operationId":"getLicenseList","responses":{"200":{"description":"","schema":{"type":"object","title":"LicenseList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/LicenseWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SmartLicensing"],"operationId":"addLicense","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/LicenseWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/License"}}]}},"/license/smartlicenses/{objId}":{"get":{"tags":["SmartLicensing"],"operationId":"getLicense","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/LicenseWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["SmartLicensing"],"operationId":"deleteLicense","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/license/smartagentsyncrequests":{"get":{"tags":["SmartLicensing"],"operationId":"getSmartAgentSyncRequestList","responses":{"200":{"description":"","schema":{"type":"object","title":"SmartAgentSyncRequestList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SmartAgentSyncRequestWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["SmartLicensing"],"operationId":"addSmartAgentSyncRequest","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SmartAgentSyncRequestWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SmartAgentSyncRequest"}}]}},"/license/smartagentsyncrequests/{objId}":{"get":{"tags":["SmartLicensing"],"operationId":"getSmartAgentSyncRequest","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SmartAgentSyncRequestWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/uploadbackup":{"post":{"tags":["Upload"],"operationId":"postuploadbackup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FileUploadStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"formData","name":"fileToUpload","type":"file"}],"consumes":["multipart/form-data"]}},"/action/downloadbackup/{objId}":{"get":{"tags":["Download"],"operationId":"getdownloadbackup","responses":{"200":{"description":"","schema":{"type":"file"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}],"produces":["application/octet-stream"]}},"/action/testrealm":{"post":{"tags":["TestDirectory"],"operationId":"addTestDirectory","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TestDirectoryWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TestDirectory"}}]}},"/action/testidentityservicesengineconnectivity":{"post":{"tags":["TestIdentityServicesEngineConnectivity"],"operationId":"addTestIdentityServicesEngineConnectivity","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TestIdentityServicesEngineConnectivityWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TestIdentityServicesEngineConnectivity"}}]}},"/operational/ntpstatus/{objId}":{"get":{"tags":["NTPStatus"],"operationId":"getNTPStatus","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/NTPStatusWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/interfaceinfo/{objId}":{"get":{"tags":["InterfaceInfo"],"operationId":"getInterfaceInfo","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InterfaceInfoWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/uploadupgrade":{"post":{"tags":["Upload"],"operationId":"postuploadupgrade","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FileUploadStatusWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"formData","name":"fileToUpload","type":"file"}],"consumes":["multipart/form-data"]}},"/action/cloudmanagement":{"get":{"tags":["CloudManagement"],"operationId":"getCloudManagementList","responses":{"200":{"description":"","schema":{"type":"object","title":"CloudManagementList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/CloudManagementWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["CloudManagement"],"operationId":"addCloudManagement","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CloudManagementWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CloudManagement"}}]}},"/action/cloudmanagement/{objId}":{"get":{"tags":["CloudManagement"],"operationId":"getCloudManagement","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CloudManagementWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["CloudManagement"],"operationId":"editCloudManagement","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CloudManagementWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/CloudManagement"}}]},"delete":{"tags":["CloudManagement"],"operationId":"deleteCloudManagement","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/sslpolicies":{"get":{"tags":["SSLPolicy"],"operationId":"getSSLPolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"SSLPolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SSLPolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/sslpolicies/{objId}":{"get":{"tags":["SSLPolicy"],"operationId":"getSSLPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SSLPolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SSLPolicy"],"operationId":"editSSLPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SSLPolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SSLPolicy"}}]}},"/policy/sslpolicies/{parentId}/sslrules":{"get":{"tags":["SSLPolicy"],"operationId":"getSSLRuleList","responses":{"200":{"description":"","schema":{"type":"object","title":"SSLRuleList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SSLRuleWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"},{"name":"parentId","in":"path","required":true,"type":"string"}]},"post":{"tags":["SSLPolicy"],"operationId":"addSSLRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SSLRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SSLRule"}}]}},"/policy/sslpolicies/{parentId}/sslrules/{objId}":{"get":{"tags":["SSLPolicy"],"operationId":"getSSLRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SSLRuleWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SSLPolicy"],"operationId":"editSSLRule","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SSLRuleWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"at","in":"query","required":false,"type":"integer"},{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SSLRule"}}]},"delete":{"tags":["SSLPolicy"],"operationId":"deleteSSLRule","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"parentId","in":"path","required":true,"type":"string"},{"name":"objId","in":"path","required":true,"type":"string"}]}},"/policy/securityintelligencepolicies":{"get":{"tags":["SecurityIntelligence"],"operationId":"getSecurityIntelligencePolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"SecurityIntelligencePolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SecurityIntelligencePolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/securityintelligencepolicies/{objId}":{"get":{"tags":["SecurityIntelligence"],"operationId":"getSecurityIntelligencePolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligencePolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SecurityIntelligence"],"operationId":"editSecurityIntelligencePolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligencePolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SecurityIntelligencePolicy"}}]}},"/policy/securityintelligencenetworkpolicies":{"get":{"tags":["SecurityIntelligence"],"operationId":"getSecurityIntelligenceNetworkPolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"SecurityIntelligenceNetworkPolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SecurityIntelligenceNetworkPolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/securityintelligencenetworkpolicies/{objId}":{"get":{"tags":["SecurityIntelligence"],"operationId":"getSecurityIntelligenceNetworkPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceNetworkPolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SecurityIntelligence"],"operationId":"editSecurityIntelligenceNetworkPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceNetworkPolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SecurityIntelligenceNetworkPolicy"}}]}},"/policy/securityintelligenceurlpolicies":{"get":{"tags":["SecurityIntelligence"],"operationId":"getSecurityIntelligenceURLPolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"SecurityIntelligenceURLPolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SecurityIntelligenceURLPolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/policy/securityintelligenceurlpolicies/{objId}":{"get":{"tags":["SecurityIntelligence"],"operationId":"getSecurityIntelligenceURLPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceURLPolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["SecurityIntelligence"],"operationId":"editSecurityIntelligenceURLPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecurityIntelligenceURLPolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/SecurityIntelligenceURLPolicy"}}]}},"/managemententity/postupgradeflags":{"get":{"tags":["PostUpgradeFlags"],"operationId":"getPostUpgradeFlagsList","responses":{"200":{"description":"","schema":{"type":"object","title":"PostUpgradeFlagsList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/PostUpgradeFlagsWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/managemententity/postupgradeflags/{objId}":{"get":{"tags":["PostUpgradeFlags"],"operationId":"getPostUpgradeFlags","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PostUpgradeFlagsWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["PostUpgradeFlags"],"operationId":"editPostUpgradeFlags","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/PostUpgradeFlagsWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/PostUpgradeFlags"}}]}},"/devices/default/routing/virtualrouters/default/ospf":{"get":{"tags":["OSPF"],"operationId":"getOSPFList","responses":{"200":{"description":"","schema":{"type":"object","title":"OSPFList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/OSPFWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["OSPF"],"operationId":"addOSPF","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/OSPFWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/OSPF"}}]}},"/devices/default/routing/virtualrouters/default/ospf/{objId}":{"get":{"tags":["OSPF"],"operationId":"getOSPF","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/OSPFWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["OSPF"],"operationId":"editOSPF","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/OSPFWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/OSPF"}}]},"delete":{"tags":["OSPF"],"operationId":"deleteOSPF","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/routing/virtualrouters/default/ospfinterfacesettings":{"get":{"tags":["OSPFInterfaceSettings"],"operationId":"getOSPFInterfaceSettingsList","responses":{"200":{"description":"","schema":{"type":"object","title":"OSPFInterfaceSettingsList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/OSPFInterfaceSettingsWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["OSPFInterfaceSettings"],"operationId":"addOSPFInterfaceSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/OSPFInterfaceSettingsWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/OSPFInterfaceSettings"}}]}},"/devices/default/routing/virtualrouters/default/ospfinterfacesettings/{objId}":{"get":{"tags":["OSPFInterfaceSettings"],"operationId":"getOSPFInterfaceSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/OSPFInterfaceSettingsWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["OSPFInterfaceSettings"],"operationId":"editOSPFInterfaceSettings","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/OSPFInterfaceSettingsWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/OSPFInterfaceSettings"}}]},"delete":{"tags":["OSPFInterfaceSettings"],"operationId":"deleteOSPFInterfaceSettings","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/routing/virtualrouters/default/bgp":{"get":{"tags":["BGP"],"operationId":"getBGPList","responses":{"200":{"description":"","schema":{"type":"object","title":"BGPList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/BGPWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["BGP"],"operationId":"addBGP","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BGPWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BGP"}}]}},"/devices/default/routing/virtualrouters/default/bgp/{objId}":{"get":{"tags":["BGP"],"operationId":"getBGP","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BGPWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["BGP"],"operationId":"editBGP","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/BGPWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/BGP"}}]},"delete":{"tags":["BGP"],"operationId":"deleteBGP","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/flexconfigobjects":{"get":{"tags":["FlexConfigObject"],"operationId":"getFlexConfigObjectList","responses":{"200":{"description":"","schema":{"type":"object","title":"FlexConfigObjectList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/FlexConfigObjectWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["FlexConfigObject"],"operationId":"addFlexConfigObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FlexConfigObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/FlexConfigObject"}}]}},"/object/flexconfigobjects/{objId}":{"get":{"tags":["FlexConfigObject"],"operationId":"getFlexConfigObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FlexConfigObjectWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["FlexConfigObject"],"operationId":"editFlexConfigObject","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FlexConfigObjectWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/FlexConfigObject"}}]},"delete":{"tags":["FlexConfigObject"],"operationId":"deleteFlexConfigObject","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/flexconfigpolicies":{"get":{"tags":["FlexConfigPolicy"],"operationId":"getFlexConfigPolicyList","responses":{"200":{"description":"","schema":{"type":"object","title":"FlexConfigPolicyList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/FlexConfigPolicyWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["FlexConfigPolicy"],"operationId":"addFlexConfigPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FlexConfigPolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/FlexConfigPolicy"}}]}},"/object/flexconfigpolicies/{objId}":{"get":{"tags":["FlexConfigPolicy"],"operationId":"getFlexConfigPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FlexConfigPolicyWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["FlexConfigPolicy"],"operationId":"editFlexConfigPolicy","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/FlexConfigPolicyWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/FlexConfigPolicy"}}]},"delete":{"tags":["FlexConfigPolicy"],"operationId":"deleteFlexConfigPolicy","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/secrets":{"get":{"tags":["Secret"],"operationId":"getSecretList","responses":{"200":{"description":"","schema":{"type":"object","title":"SecretList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/SecretWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["Secret"],"operationId":"addSecret","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecretWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/Secret"}}]}},"/object/secrets/{objId}":{"get":{"tags":["Secret"],"operationId":"getSecret","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecretWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["Secret"],"operationId":"editSecret","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/SecretWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/Secret"}}]},"delete":{"tags":["Secret"],"operationId":"deleteSecret","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/cloudservicesinfo/{objId}":{"get":{"tags":["CloudServicesInfo"],"operationId":"getCloudServicesInfo","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/CloudServicesInfoWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devices/default/ha/configurations":{"get":{"tags":["HAConfiguration"],"operationId":"getHAConfigurationList","responses":{"200":{"description":"","schema":{"type":"object","title":"HAConfigurationList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/HAConfigurationWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devices/default/ha/configurations/{objId}":{"get":{"tags":["HAConfiguration"],"operationId":"getHAConfiguration","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HAConfigurationWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["HAConfiguration"],"operationId":"editHAConfiguration","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HAConfigurationWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/HAConfiguration"}}]}},"/devices/default/ha/failoverconfigurations":{"get":{"tags":["HAFailoverConfiguration"],"operationId":"getHAFailoverConfigurationList","responses":{"200":{"description":"","schema":{"type":"object","title":"HAFailoverConfigurationList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/HAFailoverConfigurationWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devices/default/ha/failoverconfigurations/{objId}":{"get":{"tags":["HAFailoverConfiguration"],"operationId":"getHAFailoverConfiguration","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HAFailoverConfigurationWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["HAFailoverConfiguration"],"operationId":"editHAFailoverConfiguration","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HAFailoverConfigurationWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/HAFailoverConfiguration"}}]}},"/devices/default/operational/ha/status/{objId}":{"get":{"tags":["HAStatus"],"operationId":"getHAStatus","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/HAStatusWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/radiusidentitysources":{"get":{"tags":["RadiusIdentitySource"],"operationId":"getRadiusIdentitySourceList","responses":{"200":{"description":"","schema":{"type":"object","title":"RadiusIdentitySourceList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/RadiusIdentitySourceWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["RadiusIdentitySource"],"operationId":"addRadiusIdentitySource","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RadiusIdentitySourceWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RadiusIdentitySource"}}]}},"/object/radiusidentitysources/{objId}":{"get":{"tags":["RadiusIdentitySource"],"operationId":"getRadiusIdentitySource","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RadiusIdentitySourceWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["RadiusIdentitySource"],"operationId":"editRadiusIdentitySource","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RadiusIdentitySourceWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RadiusIdentitySource"}}]},"delete":{"tags":["RadiusIdentitySource"],"operationId":"deleteRadiusIdentitySource","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/object/localidentitysources":{"get":{"tags":["LocalIdentitySource"],"operationId":"getLocalIdentitySourceList","responses":{"200":{"description":"","schema":{"type":"object","title":"LocalIdentitySourceList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/LocalIdentitySourceWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/object/localidentitysources/{objId}":{"get":{"tags":["LocalIdentitySource"],"operationId":"getLocalIdentitySource","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/LocalIdentitySourceWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/action/testidentitysource":{"post":{"tags":["TestIdentitySource"],"operationId":"addTestIdentitySource","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/TestIdentitySourceWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TestIdentitySource"}}]}},"/action/activeusersessions":{"get":{"tags":["ActiveUserSessions"],"operationId":"getActiveUserSessionsList","responses":{"200":{"description":"","schema":{"type":"object","title":"ActiveUserSessionsList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/ActiveUserSessionsWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/action/activeusersessions/{objId}":{"get":{"tags":["ActiveUserSessions"],"operationId":"getActiveUserSessions","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/ActiveUserSessionsWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"delete":{"tags":["ActiveUserSessions"],"operationId":"deleteActiveUserSessions","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devicesettings/default/aaasettings":{"get":{"tags":["AAASetting"],"operationId":"getAAASettingList","responses":{"200":{"description":"","schema":{"type":"object","title":"AAASettingList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/AAASettingWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/aaasettings/{objId}":{"get":{"tags":["AAASetting"],"operationId":"getAAASetting","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AAASettingWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["AAASetting"],"operationId":"editAAASetting","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/AAASettingWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/AAASetting"}}]}},"/object/radiusidentitysourcegroups":{"get":{"tags":["RadiusIdentitySourceGroup"],"operationId":"getRadiusIdentitySourceGroupList","responses":{"200":{"description":"","schema":{"type":"object","title":"RadiusIdentitySourceGroupList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/RadiusIdentitySourceGroupWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["RadiusIdentitySourceGroup"],"operationId":"addRadiusIdentitySourceGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RadiusIdentitySourceGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RadiusIdentitySourceGroup"}}]}},"/object/radiusidentitysourcegroups/{objId}":{"get":{"tags":["RadiusIdentitySourceGroup"],"operationId":"getRadiusIdentitySourceGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RadiusIdentitySourceGroupWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["RadiusIdentitySourceGroup"],"operationId":"editRadiusIdentitySourceGroup","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RadiusIdentitySourceGroupWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/RadiusIdentitySourceGroup"}}]},"delete":{"tags":["RadiusIdentitySourceGroup"],"operationId":"deleteRadiusIdentitySourceGroup","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/operational/rolepermissions":{"get":{"tags":["RolePermission"],"operationId":"getRolePermissionList","responses":{"200":{"description":"","schema":{"type":"object","title":"RolePermissionList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/RolePermissionWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/operational/rolepermissions/{objId}":{"get":{"tags":["RolePermission"],"operationId":"getRolePermission","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/RolePermissionWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/devicesettings/default/webanalyticssettings":{"get":{"tags":["WebAnalyticsSetting"],"operationId":"getWebAnalyticsSettingList","responses":{"200":{"description":"","schema":{"type":"object","title":"WebAnalyticsSettingList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/WebAnalyticsSettingWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]}},"/devicesettings/default/webanalyticssettings/{objId}":{"get":{"tags":["WebAnalyticsSetting"],"operationId":"getWebAnalyticsSetting","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/WebAnalyticsSettingWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["WebAnalyticsSetting"],"operationId":"editWebAnalyticsSetting","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/WebAnalyticsSettingWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/WebAnalyticsSetting"}}]}},"/devices/default/action/provision":{"get":{"tags":["UnlockBox"],"operationId":"getInitialProvisionList","responses":{"200":{"description":"","schema":{"type":"object","title":"InitialProvisionList","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/InitialProvisionWrapper"}},"paging":{"$ref":"#/definitions/Paging"}},"required":["items","paging"]}}},"parameters":[{"name":"offset","in":"query","required":false,"type":"integer"},{"name":"limit","in":"query","required":false,"type":"integer"},{"name":"sort","in":"query","required":false,"type":"string"},{"name":"filter","in":"query","required":false,"type":"string"}]},"post":{"tags":["UnlockBox"],"operationId":"addInitialProvision","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InitialProvisionWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InitialProvision"}}]}},"/devices/default/action/provision/{objId}":{"get":{"tags":["InitialProvision"],"operationId":"getInitialProvision","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InitialProvisionWrapper"}},"404":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]},"put":{"tags":["InitialProvision"],"operationId":"editInitialProvision","responses":{"200":{"description":"","schema":{"type":"object","$ref":"#/definitions/InitialProvisionWrapper"}},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"},{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/InitialProvision"}}]},"delete":{"tags":["InitialProvision"],"operationId":"deleteInitialProvision","responses":{"204":{"description":""},"422":{"description":"","schema":{"type":"object","$ref":"#/definitions/ErrorWrapper"}}},"parameters":[{"name":"objId","in":"path","required":true,"type":"string"}]}},"/fdm/token":{"post":{"operationId":"token","tags":["Token"],"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/TokenPayloadUnion"}}],"responses":{"200":{"description":"","schema":{"$ref":"#/definitions/TokenResponseUnion","type":"object"}},"400":{"description":"","schema":{"$ref":"#/definitions/TokenStatus","type":"object"}}}}}}} \ No newline at end of file
diff --git a/test/units/module_utils/network/ftd/test_device.py b/test/units/module_utils/network/ftd/test_device.py
deleted file mode 100644
index 3cbe0d61da..0000000000
--- a/test/units/module_utils/network/ftd/test_device.py
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-import pytest
-
-pytest.importorskip("kick")
-
-from ansible.module_utils.network.ftd.device import FtdPlatformFactory, FtdModel, FtdAsa5500xPlatform, \
- Ftd2100Platform, AbstractFtdPlatform
-from units.modules.network.ftd.test_ftd_install import DEFAULT_MODULE_PARAMS
-
-
-class TestFtdModel(object):
-
- def test_has_value_should_return_true_for_existing_models(self):
- assert FtdModel.FTD_2120 in FtdModel.supported_models()
- assert FtdModel.FTD_ASA5516_X in FtdModel.supported_models()
-
- def test_has_value_should_return_false_for_non_existing_models(self):
- assert 'nonExistingModel' not in FtdModel.supported_models()
- assert None not in FtdModel.supported_models()
-
-
-class TestFtdPlatformFactory(object):
-
- @pytest.fixture(autouse=True)
- def mock_devices(self, mocker):
- mocker.patch('ansible.module_utils.network.ftd.device.Kp')
- mocker.patch('ansible.module_utils.network.ftd.device.Ftd5500x')
-
- def test_factory_should_return_corresponding_platform(self):
- ftd_platform = FtdPlatformFactory.create(FtdModel.FTD_ASA5508_X, dict(DEFAULT_MODULE_PARAMS))
- assert type(ftd_platform) is FtdAsa5500xPlatform
- ftd_platform = FtdPlatformFactory.create(FtdModel.FTD_2130, dict(DEFAULT_MODULE_PARAMS))
- assert type(ftd_platform) is Ftd2100Platform
-
- def test_factory_should_raise_error_with_not_supported_model(self):
- with pytest.raises(ValueError) as ex:
- FtdPlatformFactory.create('nonExistingModel', dict(DEFAULT_MODULE_PARAMS))
- assert "FTD model 'nonExistingModel' is not supported by this module." == ex.value.args[0]
-
-
-class TestAbstractFtdPlatform(object):
-
- def test_install_ftd_image_raise_error_on_abstract_class(self):
- with pytest.raises(NotImplementedError):
- AbstractFtdPlatform().install_ftd_image(dict(DEFAULT_MODULE_PARAMS))
-
- def test_supports_ftd_model_should_return_true_for_supported_models(self):
- assert Ftd2100Platform.supports_ftd_model(FtdModel.FTD_2120)
- assert FtdAsa5500xPlatform.supports_ftd_model(FtdModel.FTD_ASA5516_X)
-
- def test_supports_ftd_model_should_return_false_for_non_supported_models(self):
- assert not AbstractFtdPlatform.supports_ftd_model(FtdModel.FTD_2120)
- assert not Ftd2100Platform.supports_ftd_model(FtdModel.FTD_ASA5508_X)
- assert not FtdAsa5500xPlatform.supports_ftd_model(FtdModel.FTD_2120)
-
- def test_parse_rommon_file_location(self):
- server, path = AbstractFtdPlatform.parse_rommon_file_location('tftp://1.2.3.4/boot/rommon-boot.foo')
- assert '1.2.3.4' == server
- assert '/boot/rommon-boot.foo' == path
-
- def test_parse_rommon_file_location_should_fail_for_non_tftp_protocol(self):
- with pytest.raises(ValueError) as ex:
- AbstractFtdPlatform.parse_rommon_file_location('http://1.2.3.4/boot/rommon-boot.foo')
- assert 'The ROMMON image must be downloaded from TFTP server' in str(ex.value)
-
-
-class TestFtd2100Platform(object):
-
- @pytest.fixture
- def kp_mock(self, mocker):
- return mocker.patch('ansible.module_utils.network.ftd.device.Kp')
-
- @pytest.fixture
- def module_params(self):
- return dict(DEFAULT_MODULE_PARAMS)
-
- def test_install_ftd_image_should_call_kp_module(self, kp_mock, module_params):
- ftd = FtdPlatformFactory.create(FtdModel.FTD_2110, module_params)
- ftd.install_ftd_image(module_params)
-
- assert kp_mock.called
- assert kp_mock.return_value.ssh_console.called
- ftd_line = kp_mock.return_value.ssh_console.return_value
- assert ftd_line.baseline_fp2k_ftd.called
- assert ftd_line.disconnect.called
-
- def test_install_ftd_image_should_call_disconnect_when_install_fails(self, kp_mock, module_params):
- ftd_line = kp_mock.return_value.ssh_console.return_value
- ftd_line.baseline_fp2k_ftd.side_effect = Exception('Something went wrong')
-
- ftd = FtdPlatformFactory.create(FtdModel.FTD_2120, module_params)
- with pytest.raises(Exception):
- ftd.install_ftd_image(module_params)
-
- assert ftd_line.baseline_fp2k_ftd.called
- assert ftd_line.disconnect.called
-
-
-class TestFtdAsa5500xPlatform(object):
-
- @pytest.fixture
- def asa5500x_mock(self, mocker):
- return mocker.patch('ansible.module_utils.network.ftd.device.Ftd5500x')
-
- @pytest.fixture
- def module_params(self):
- return dict(DEFAULT_MODULE_PARAMS)
-
- def test_install_ftd_image_should_call_kp_module(self, asa5500x_mock, module_params):
- ftd = FtdPlatformFactory.create(FtdModel.FTD_ASA5508_X, module_params)
- ftd.install_ftd_image(module_params)
-
- assert asa5500x_mock.called
- assert asa5500x_mock.return_value.ssh_console.called
- ftd_line = asa5500x_mock.return_value.ssh_console.return_value
- assert ftd_line.rommon_to_new_image.called
- assert ftd_line.disconnect.called
-
- def test_install_ftd_image_should_call_disconnect_when_install_fails(self, asa5500x_mock, module_params):
- ftd_line = asa5500x_mock.return_value.ssh_console.return_value
- ftd_line.rommon_to_new_image.side_effect = Exception('Something went wrong')
-
- ftd = FtdPlatformFactory.create(FtdModel.FTD_ASA5516_X, module_params)
- with pytest.raises(Exception):
- ftd.install_ftd_image(module_params)
-
- assert ftd_line.rommon_to_new_image.called
- assert ftd_line.disconnect.called
diff --git a/test/units/module_utils/network/ftd/test_fdm_swagger_parser.py b/test/units/module_utils/network/ftd/test_fdm_swagger_parser.py
deleted file mode 100644
index 8a292881a5..0000000000
--- a/test/units/module_utils/network/ftd/test_fdm_swagger_parser.py
+++ /dev/null
@@ -1,379 +0,0 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-import copy
-import os
-import unittest
-
-from ansible.module_utils.network.ftd.common import HTTPMethod
-from ansible.module_utils.network.ftd.fdm_swagger_client import FdmSwaggerParser
-
-DIR_PATH = os.path.dirname(os.path.realpath(__file__))
-TEST_DATA_FOLDER = os.path.join(DIR_PATH, 'test_data')
-
-base = {
- 'basePath': "/api/fdm/v2",
- 'definitions': {"NetworkObject": {"type": "object",
- "properties": {"version": {"type": "string"}, "name": {"type": "string"},
- "description": {"type": "string"},
- "subType": {"type": "object",
- "$ref": "#/definitions/NetworkObjectType"},
- "value": {"type": "string"},
- "isSystemDefined": {"type": "boolean"},
- "dnsResolution": {"type": "object",
- "$ref": "#/definitions/FQDNDNSResolution"},
- "id": {"type": "string"},
- "type": {"type": "string", "default": "networkobject"}},
- "required": ["subType", "type", "value", "name"]},
- "NetworkObjectWrapper": {
- "allOf": [{"$ref": "#/definitions/NetworkObject"}, {"$ref": "#/definitions/LinksWrapper"}]}
- },
- 'paths': {
- "/object/networks": {
- "get": {"tags": ["NetworkObject"],
- "operationId": "getNetworkObjectList",
- "responses": {
- "200": {
- "description": "",
- "schema": {"type": "object",
- "title": "NetworkObjectList",
- "properties": {
- "items": {
- "type": "array",
- "items": {"$ref": "#/definitions/NetworkObjectWrapper"}},
- "paging": {
- "$ref": "#/definitions/Paging"}},
- "required": ["items", "paging"]}}},
- "parameters": [
- {"name": "offset", "in": "query", "required": False, "type": "integer"},
- {"name": "limit", "in": "query", "required": False, "type": "integer"},
- {"name": "sort", "in": "query", "required": False, "type": "string"},
- {"name": "filter", "in": "query", "required": False, "type": "string"}]},
- "post": {"tags": ["NetworkObject"], "operationId": "addNetworkObject",
- "responses": {
- "200": {"description": "",
- "schema": {"type": "object",
- "$ref": "#/definitions/NetworkObjectWrapper"}},
- "422": {"description": "",
- "schema": {"type": "object", "$ref": "#/definitions/ErrorWrapper"}}},
- "parameters": [{"in": "body", "name": "body",
- "required": True,
- "schema": {"$ref": "#/definitions/NetworkObject"}}]}
- },
- "/object/networks/{objId}": {
- "get": {"tags": ["NetworkObject"], "operationId": "getNetworkObject",
- "responses": {"200": {"description": "",
- "schema": {"type": "object",
- "$ref": "#/definitions/NetworkObjectWrapper"}},
- "404": {"description": "",
- "schema": {"type": "object",
- "$ref": "#/definitions/ErrorWrapper"}}},
- "parameters": [{"name": "objId", "in": "path", "required": True,
- "type": "string"}]},
-
- "put": {"tags": ["NetworkObject"], "operationId": "editNetworkObject",
- "responses": {"200": {"description": "",
- "schema": {"type": "object",
- "$ref": "#/definitions/NetworkObjectWrapper"}},
- "422": {"description": "",
- "schema": {"type": "object",
- "$ref": "#/definitions/ErrorWrapper"}}},
- "parameters": [{"name": "objId", "in": "path", "required": True,
- "type": "string"},
- {"in": "body", "name": "body", "required": True,
- "schema": {"$ref": "#/definitions/NetworkObject"}}]},
- "delete": {"tags": ["NetworkObject"], "operationId": "deleteNetworkObject",
- "responses": {"204": {"description": ""},
- "422": {"description": "",
- "schema": {"type": "object",
- "$ref": "#/definitions/ErrorWrapper"}}},
- "parameters": [{"name": "objId", "in": "path", "required": True,
- "type": "string"}]}}}
-}
-
-
-def _get_objects(base_object, key_names):
- return dict((_key, base_object[_key]) for _key in key_names)
-
-
-class TestFdmSwaggerParser(unittest.TestCase):
-
- def test_simple_object(self):
- self._data = copy.deepcopy(base)
-
- self.fdm_data = FdmSwaggerParser().parse_spec(self._data)
-
- expected_operations = {
- 'getNetworkObjectList': {
- 'method': HTTPMethod.GET,
- 'url': '/api/fdm/v2/object/networks',
- 'modelName': 'NetworkObject',
- 'parameters': {
- 'path': {},
- 'query': {
- 'offset': {
- 'required': False,
- 'type': 'integer'
- },
- 'limit': {
- 'required': False,
- 'type': 'integer'
- },
- 'sort': {
- 'required': False,
- 'type': 'string'
- },
- 'filter': {
- 'required': False,
- 'type': 'string'
- }
- }
- },
- 'returnMultipleItems': True,
- "tags": ["NetworkObject"]
- },
- 'addNetworkObject': {
- 'method': HTTPMethod.POST,
- 'url': '/api/fdm/v2/object/networks',
- 'modelName': 'NetworkObject',
- 'parameters': {'path': {},
- 'query': {}},
- 'returnMultipleItems': False,
- "tags": ["NetworkObject"]
- },
- 'getNetworkObject': {
- 'method': HTTPMethod.GET,
- 'url': '/api/fdm/v2/object/networks/{objId}',
- 'modelName': 'NetworkObject',
- 'parameters': {
- 'path': {
- 'objId': {
- 'required': True,
- 'type': "string"
- }
- },
- 'query': {}
- },
- 'returnMultipleItems': False,
- "tags": ["NetworkObject"]
- },
- 'editNetworkObject': {
- 'method': HTTPMethod.PUT,
- 'url': '/api/fdm/v2/object/networks/{objId}',
- 'modelName': 'NetworkObject',
- 'parameters': {
- 'path': {
- 'objId': {
- 'required': True,
- 'type': "string"
- }
- },
- 'query': {}
- },
- 'returnMultipleItems': False,
- "tags": ["NetworkObject"]
- },
- 'deleteNetworkObject': {
- 'method': HTTPMethod.DELETE,
- 'url': '/api/fdm/v2/object/networks/{objId}',
- 'modelName': 'NetworkObject',
- 'parameters': {
- 'path': {
- 'objId': {
- 'required': True,
- 'type': "string"
- }
- },
- 'query': {}
- },
- 'returnMultipleItems': False,
- "tags": ["NetworkObject"]
- }
- }
- assert sorted(['NetworkObject', 'NetworkObjectWrapper']) == sorted(self.fdm_data['models'].keys())
- assert expected_operations == self.fdm_data['operations']
- assert {'NetworkObject': expected_operations} == self.fdm_data['model_operations']
-
- def test_simple_object_with_documentation(self):
- api_spec = copy.deepcopy(base)
- docs = {
- 'definitions': {
- 'NetworkObject': {
- 'description': 'Description for Network Object',
- 'properties': {'name': 'Description for name field'}
- }
- },
- 'paths': {
- '/object/networks': {
- 'get': {
- 'description': 'Description for getNetworkObjectList operation',
- 'parameters': [{'name': 'offset', 'description': 'Description for offset field'}]
- },
- 'post': {'description': 'Description for addNetworkObject operation'}
- }
- }
- }
-
- self.fdm_data = FdmSwaggerParser().parse_spec(api_spec, docs)
-
- assert 'Description for Network Object' == self.fdm_data['models']['NetworkObject']['description']
- assert '' == self.fdm_data['models']['NetworkObjectWrapper']['description']
- network_properties = self.fdm_data['models']['NetworkObject']['properties']
- assert '' == network_properties['id']['description']
- assert not network_properties['id']['required']
- assert 'Description for name field' == network_properties['name']['description']
- assert network_properties['name']['required']
-
- ops = self.fdm_data['operations']
- assert 'Description for getNetworkObjectList operation' == ops['getNetworkObjectList']['description']
- assert 'Description for addNetworkObject operation' == ops['addNetworkObject']['description']
- assert '' == ops['deleteNetworkObject']['description']
-
- get_op_params = ops['getNetworkObjectList']['parameters']
- assert 'Description for offset field' == get_op_params['query']['offset']['description']
- assert '' == get_op_params['query']['limit']['description']
-
- def test_model_operations_should_contain_all_operations(self):
- data = {
- 'basePath': '/v2/',
- 'definitions': {
- 'Model1': {"type": "object"},
- 'Model2': {"type": "object"},
- 'Model3': {"type": "object"}
- },
- 'paths': {
- 'path1': {
- 'get': {
- 'operationId': 'getSomeModelList',
- "responses": {
- "200": {"description": "",
- "schema": {"type": "object",
- "title": "NetworkObjectList",
- "properties": {
- "items": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Model1"
- }
- }
- }}
- }
- }
- },
- "post": {
- "operationId": "addSomeModel",
- "parameters": [{"in": "body",
- "name": "body",
- "schema": {"$ref": "#/definitions/Model2"}
- }]}
- },
- 'path2/{id}': {
- "get": {"operationId": "getSomeModel",
- "responses": {"200": {"description": "",
- "schema": {"type": "object",
- "$ref": "#/definitions/Model3"}},
- }
- },
- "put": {"operationId": "editSomeModel",
- "parameters": [{"in": "body",
- "name": "body",
- "schema": {"$ref": "#/definitions/Model1"}}
- ]},
- "delete": {
- "operationId": "deleteModel3",
- }},
- 'path3': {
- "delete": {
- "operationId": "deleteNoneModel",
- }
- }
- }
- }
-
- expected_operations = {
- 'getSomeModelList': {
- 'method': HTTPMethod.GET,
- 'url': '/v2/path1',
- 'modelName': 'Model1',
- 'returnMultipleItems': True,
- 'tags': []
- },
- 'addSomeModel': {
- 'method': HTTPMethod.POST,
- 'url': '/v2/path1',
- 'modelName': 'Model2',
- 'parameters': {
- 'path': {},
- 'query': {}
- },
- 'returnMultipleItems': False,
- 'tags': []
- },
- 'getSomeModel': {
- 'method': HTTPMethod.GET,
- 'url': '/v2/path2/{id}',
- 'modelName': 'Model3',
- 'returnMultipleItems': False,
- 'tags': []
- },
- 'editSomeModel': {
- 'method': HTTPMethod.PUT,
- 'url': '/v2/path2/{id}',
- 'modelName': 'Model1',
- 'parameters': {
- 'path': {},
- 'query': {}
- },
- 'returnMultipleItems': False,
- 'tags': []
- },
- 'deleteModel3': {
- 'method': HTTPMethod.DELETE,
- 'url': '/v2/path2/{id}',
- 'modelName': 'Model3',
- 'returnMultipleItems': False,
- 'tags': []
- },
- 'deleteNoneModel': {
- 'method': HTTPMethod.DELETE,
- 'url': '/v2/path3',
- 'modelName': None,
- 'returnMultipleItems': False,
- 'tags': []
- }
- }
-
- fdm_data = FdmSwaggerParser().parse_spec(data)
- assert sorted(['Model1', 'Model2', 'Model3']) == sorted(fdm_data['models'].keys())
- assert expected_operations == fdm_data['operations']
- assert {
- 'Model1': {
- 'getSomeModelList': expected_operations['getSomeModelList'],
- 'editSomeModel': expected_operations['editSomeModel'],
- },
- 'Model2': {
- 'addSomeModel': expected_operations['addSomeModel']
- },
- 'Model3': {
- 'getSomeModel': expected_operations['getSomeModel'],
- 'deleteModel3': expected_operations['deleteModel3']
- },
- None: {
- 'deleteNoneModel': expected_operations['deleteNoneModel']
- }
- } == fdm_data['model_operations']
diff --git a/test/units/module_utils/network/ftd/test_fdm_swagger_validator.py b/test/units/module_utils/network/ftd/test_fdm_swagger_validator.py
deleted file mode 100644
index 70cc7aa16e..0000000000
--- a/test/units/module_utils/network/ftd/test_fdm_swagger_validator.py
+++ /dev/null
@@ -1,1120 +0,0 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-import copy
-import os
-import unittest
-
-import pytest
-from ansible.module_utils.network.ftd.fdm_swagger_client import FdmSwaggerValidator, IllegalArgumentException
-
-DIR_PATH = os.path.dirname(os.path.realpath(__file__))
-TEST_DATA_FOLDER = os.path.join(DIR_PATH, 'test_data')
-
-mock_data = {
- 'models': {
- 'ReferenceModel': {'type': 'object', 'required': ['id', 'type'],
- 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string'},
- 'version': {'type': 'string'}, 'name': {'type': 'string'}}},
- 'FQDNDNSResolution': {'type': 'string', 'enum': ['IPV4_ONLY', 'IPV6_ONLY', 'IPV4_AND_IPV6']},
- 'NetworkObjectType': {'type': 'string', 'enum': ['HOST', 'NETWORK', 'IPRANGE', 'FQDN']},
- 'NetworkObject': {'type': 'object',
- 'properties': {'version': {'type': 'string'},
- 'name': {'type': 'string'},
- 'description': {'type': 'string'},
- 'subType': {'type': 'object',
- '$ref': '#/definitions/NetworkObjectType'},
- 'value': {'type': 'string'},
- 'isSystemDefined': {'type': 'boolean'},
- 'dnsResolution': {'type': 'object',
- '$ref': '#/definitions/FQDNDNSResolution'},
- 'objects': {'type': 'array',
- 'items': {'type': 'object',
- '$ref': '#/definitions/ReferenceModel'}},
- 'id': {'type': 'string'},
- 'type': {'type': 'string',
- 'default': 'networkobject'}},
- 'required': ['subType', 'type', 'value']}
- },
- 'operations': {
- 'getNetworkObjectList': {
- 'method': 'get',
- 'url': '/api/fdm/v2/object/networks',
- 'modelName': 'NetworkObject',
- 'parameters': {
- 'path': {
- 'objId': {
- 'required': True,
- 'type': "string"
- }
- },
- 'query': {
- 'offset': {
- 'required': False,
- 'type': 'integer'
- },
- 'limit': {
- 'required': True,
- 'type': 'integer'
- },
- 'sort': {
- 'required': False,
- 'type': 'string'
- },
- 'filter': {
- 'required': False,
- 'type': 'string'
- }
- }
- }
- }
- }
-}
-
-nested_mock_data1 = {
- 'models': {
- 'model1': {
- 'type': 'object',
- 'properties': {
- 'f_string': {'type': 'string'},
- 'f_number': {'type': 'number'},
- 'f_boolean': {'type': 'boolean'},
- 'f_integer': {'type': 'integer'}
- },
- 'required': ['f_string']
- },
- 'TestModel': {
- 'type': 'object',
- 'properties': {
- 'nested_model': {'type': 'object',
- '$ref': '#/definitions/model1'},
- 'f_integer': {'type': 'integer'}
- },
- 'required': ['nested_model']
- }
- },
- 'operations': {
- 'getdata': {
- 'modelName': 'TestModel'
- }
- }
-}
-
-
-def sort_validator_rez(data):
- if 'required' in data:
- data['required'] = sorted(data['required'])
- if 'invalid_type' in data:
- data['invalid_type'] = sorted(data['invalid_type'],
- key=lambda k: '{0}{1}{2}'.format(k['path'], ['expected_type'],
- ['actually_value']))
-
- return data
-
-
-class TestFdmSwaggerValidator(unittest.TestCase):
-
- @staticmethod
- def check_illegal_argument_exception(cb, msg):
- with pytest.raises(IllegalArgumentException) as ctx:
- cb()
- assert msg == str(ctx.value)
-
- def test_path_params_valid(self):
- self.url_data_valid(method='validate_path_params', parameters_type='path')
-
- def test_query_params_valid(self):
- self.url_data_valid(method='validate_query_params', parameters_type='query')
-
- @staticmethod
- def url_data_valid(method, parameters_type):
- local_mock_spec = {
- 'models': {},
- 'operations': {
- 'getNetwork': {
- 'method': 'get',
- 'parameters': {
- parameters_type: {
- 'objId': {
- 'required': True,
- 'type': "string"
- },
- 'p_integer': {
- 'required': False,
- 'type': "integer"
- },
- 'p_boolean': {
- 'required': False,
- 'type': "boolean"
- },
- 'p_number': {
- 'required': False,
- 'type': "number"
- }
- }
- }
- }
- }
- }
- data = {
- 'objId': "value1",
- 'p_integer': 1,
- 'p_boolean': True,
- 'p_number': 2.3
- }
- validator = FdmSwaggerValidator(local_mock_spec)
- valid, rez = getattr(validator, method)('getNetwork', data)
- assert valid
- assert rez is None
-
- def test_path_params_required_fields(self):
- self.url_data_required_fields(method='validate_path_params', parameters_type='path')
-
- def test_query_params_required_fields(self):
- self.url_data_required_fields(method='validate_query_params', parameters_type='query')
-
- @staticmethod
- def url_data_required_fields(method, parameters_type):
- local_mock_spec = {
- 'models': {},
- 'operations': {
- 'getNetwork': {
- 'method': 'get',
- 'parameters': {
- parameters_type: {
- 'objId': {
- 'required': True,
- 'type': "string"
- },
- 'parentId': {
- 'required': True,
- 'type': "string"
- },
- 'someParam': {
- 'required': False,
- 'type': "string"
- },
- 'p_integer': {
- 'required': False,
- 'type': "integer"
- },
- 'p_boolean': {
- 'required': False,
- 'type': "boolean"
- },
- 'p_number': {
- 'required': False,
- 'type': "number"
- }
- }
- }
- }
- }
- }
- validator = FdmSwaggerValidator(local_mock_spec)
- valid, rez = getattr(validator, method)('getNetwork', None)
- assert not valid
- assert sort_validator_rez({
- 'required': ['objId', 'parentId']
- }) == sort_validator_rez(rez)
- valid, rez = getattr(validator, method)('getNetwork', {})
- assert not valid
- assert sort_validator_rez({
- 'required': ['objId', 'parentId']
- }) == sort_validator_rez(rez)
- data = {
- 'someParam': "test"
- }
- valid, rez = getattr(validator, method)('getNetwork', data)
- assert not valid
- assert sort_validator_rez({
- 'required': ['objId', 'parentId']
- }) == sort_validator_rez(rez)
-
- def test_path_params_invalid_params(self):
- self.url_params_invalid_params(method='validate_path_params', parameters_type='path')
-
- def test_query_params_invalid_params(self):
- self.url_params_invalid_params(method='validate_query_params', parameters_type='query')
-
- @staticmethod
- def url_params_invalid_params(method, parameters_type):
- local_mock_spec = {
- 'models': {},
- 'operations': {
- 'getNetwork': {
- 'method': 'get',
- 'parameters': {
- parameters_type: {
- 'objId': {
- 'required': True,
- 'type': "string"
- },
- 'parentId': {
- 'required': True,
- 'type': "string"
- },
- 'someParam': {
- 'required': False,
- 'type': "string"
- },
- 'p_integer': {
- 'required': False,
- 'type': "integer"
- },
- 'p_boolean': {
- 'required': False,
- 'type': "boolean"
- },
- 'p_number': {
- 'required': False,
- 'type': "number"
- }
- }
- }
- }
- }
- }
- validator = FdmSwaggerValidator(local_mock_spec)
- data = {
- 'objId': 1,
- 'parentId': True,
- 'someParam': [],
- 'p_integer': 1.2,
- 'p_boolean': 0,
- 'p_number': False
- }
- valid, rez = getattr(validator, method)('getNetwork', data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'objId',
- 'expected_type': 'string',
- 'actually_value': 1
- },
- {
- 'path': 'parentId',
- 'expected_type': 'string',
- 'actually_value': True
- },
- {
- 'path': 'someParam',
- 'expected_type': 'string',
- 'actually_value': []
- },
- {
- 'path': 'p_integer',
- 'expected_type': 'integer',
- 'actually_value': 1.2
- },
- {
- 'path': 'p_boolean',
- 'expected_type': 'boolean',
- 'actually_value': 0
- },
- {
- 'path': 'p_number',
- 'expected_type': 'number',
- 'actually_value': False
- }
- ]
- }) == sort_validator_rez(rez)
- data = {
- 'objId': {},
- 'parentId': 0,
- 'someParam': 1.2,
- 'p_integer': True,
- 'p_boolean': 1,
- 'p_number': True
- }
- valid, rez = getattr(validator, method)('getNetwork', data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'objId',
- 'expected_type': 'string',
- 'actually_value': {}
- },
- {
- 'path': 'parentId',
- 'expected_type': 'string',
- 'actually_value': 0
- },
- {
- 'path': 'someParam',
- 'expected_type': 'string',
- 'actually_value': 1.2
- },
- {
- 'path': 'p_integer',
- 'expected_type': 'integer',
- 'actually_value': True
- },
- {
- 'path': 'p_boolean',
- 'expected_type': 'boolean',
- 'actually_value': 1
- },
- {
- 'path': 'p_number',
- 'expected_type': 'number',
- 'actually_value': True
- }
- ]
- }) == sort_validator_rez(rez)
- data = {
- 'objId': {},
- 'parentId': 0,
- 'someParam': 1.2,
- 'p_integer': "1",
- 'p_boolean': "",
- 'p_number': "2.1"
- }
- valid, rez = getattr(validator, method)('getNetwork', data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'objId',
- 'expected_type': 'string',
- 'actually_value': {}
- },
- {
- 'path': 'parentId',
- 'expected_type': 'string',
- 'actually_value': 0
- },
- {
- 'path': 'someParam',
- 'expected_type': 'string',
- 'actually_value': 1.2
- },
- {
- 'path': 'p_boolean',
- 'expected_type': 'boolean',
- 'actually_value': ""
- }
- ]
- }) == sort_validator_rez(rez)
-
- data = {
- 'objId': "123",
- 'parentId': "1",
- 'someParam': None,
- 'p_integer': None
- }
- valid, rez = getattr(validator, method)('getNetwork', data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'someParam',
- 'expected_type': 'string',
- 'actually_value': None
- },
- {
- 'path': 'p_integer',
- 'expected_type': 'integer',
- 'actually_value': None
- }
- ]
- }) == sort_validator_rez(rez)
-
- def test_validate_path_params_method_with_empty_data(self):
- self.validate_url_data_with_empty_data(method='validate_path_params', parameters_type='path')
-
- def test_validate_query_params_method_with_empty_data(self):
- self.validate_url_data_with_empty_data(method='validate_query_params', parameters_type='query')
-
- def validate_url_data_with_empty_data(self, method, parameters_type):
- local_mock_spec = {
- 'models': {},
- 'operations': {
- 'getNetwork': {
- 'method': 'get',
- 'parameters': {
- parameters_type: {
- 'objId': {
- 'required': True,
- 'type': "string"
- }
- }
- }
- }
- }
- }
- validator = FdmSwaggerValidator(local_mock_spec)
- valid, rez = getattr(validator, method)('getNetwork', None)
- assert not valid
- assert {'required': ['objId']} == rez
-
- self.check_illegal_argument_exception(lambda: getattr(validator, method)('getNetwork', ''),
- "The params parameter must be a dict")
-
- self.check_illegal_argument_exception(lambda: getattr(validator, method)('getNetwork', []),
- "The params parameter must be a dict")
-
- valid, rez = getattr(validator, method)('getNetwork', {})
- assert not valid
- assert {'required': ['objId']} == rez
-
- self.check_illegal_argument_exception(lambda: getattr(validator, method)(None, {'name': 'test'}),
- "The operation_name parameter must be a non-empty string")
-
- self.check_illegal_argument_exception(lambda: getattr(validator, method)('', {'name': 'test'}),
- "The operation_name parameter must be a non-empty string")
-
- self.check_illegal_argument_exception(lambda: getattr(validator, method)([], {'name': 'test'}),
- "The operation_name parameter must be a non-empty string")
-
- self.check_illegal_argument_exception(lambda: getattr(validator, method)({}, {'name': 'test'}),
- "The operation_name parameter must be a non-empty string")
-
- self.check_illegal_argument_exception(
- lambda: getattr(validator, method)('operation_does_not_exist', {'name': 'test'}),
- "operation_does_not_exist operation does not support")
-
- def test_validate_data_method_with_empty_data(self):
- validator = FdmSwaggerValidator(mock_data)
- valid, rez = validator.validate_data('getNetworkObjectList', None)
- assert not valid
- assert sort_validator_rez({
- 'required': ['subType', 'type', 'value']
- }) == sort_validator_rez(rez)
-
- self.check_illegal_argument_exception(lambda: validator.validate_data('getNetworkObjectList', ''),
- "The data parameter must be a dict")
-
- self.check_illegal_argument_exception(lambda: validator.validate_data('getNetworkObjectList', []),
- "The data parameter must be a dict")
- valid, rez = validator.validate_data('getNetworkObjectList', {})
- assert not valid
- assert sort_validator_rez({
- 'required': ['subType', 'type', 'value']
- }) == sort_validator_rez(rez)
-
- self.check_illegal_argument_exception(lambda: validator.validate_data(None, {'name': 'test'}),
- "The operation_name parameter must be a non-empty string")
-
- self.check_illegal_argument_exception(lambda: validator.validate_data('', {'name': 'test'}),
- "The operation_name parameter must be a non-empty string")
-
- self.check_illegal_argument_exception(lambda: validator.validate_data([], {'name': 'test'}),
- "The operation_name parameter must be a non-empty string")
-
- self.check_illegal_argument_exception(lambda: validator.validate_data({}, {'name': 'test'}),
- "The operation_name parameter must be a non-empty string")
-
- self.check_illegal_argument_exception(
- lambda: validator.validate_data('operation_does_not_exist', {'name': 'test'}),
- "operation_does_not_exist operation does not support")
-
- def test_errors_for_required_fields(self):
- data = {
- 'name': 'test'
- }
- valid, rez = FdmSwaggerValidator(mock_data).validate_data('getNetworkObjectList', data)
- assert not valid
- assert sort_validator_rez({
- 'required': ['subType', 'type', 'value']
- }) == sort_validator_rez(rez)
-
- def test_errors_if_no_data_was_passed(self):
- data = {}
- valid, rez = FdmSwaggerValidator(mock_data).validate_data('getNetworkObjectList', data)
- assert not valid
- assert sort_validator_rez({
- 'required': ['subType', 'type', 'value']
- }) == sort_validator_rez(rez)
-
- def test_errors_if_one_required_field_is_empty(self):
- data = {
- 'subType': 'NETWORK',
- 'value': '1.1.1.1'
- }
- valid, rez = FdmSwaggerValidator(mock_data).validate_data('getNetworkObjectList', data)
- assert not valid
- assert {'required': ['type']} == rez
-
- def test_types_of_required_fields_are_incorrect(self):
- data = {
- 'subType': True,
- 'type': 1,
- 'value': False
- }
- valid, rez = FdmSwaggerValidator(mock_data).validate_data('getNetworkObjectList', data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'subType',
- 'expected_type': 'enum',
- 'actually_value': True
- },
- {
- 'path': 'value',
- 'expected_type': 'string',
- 'actually_value': False
- },
- {
- 'path': 'type',
- 'expected_type': 'string',
- 'actually_value': 1
- }
- ]
- }) == sort_validator_rez(rez)
- data = {
- 'subType': {},
- 'type': [],
- 'value': {}
- }
- valid, rez = FdmSwaggerValidator(mock_data).validate_data('getNetworkObjectList', data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'subType',
- 'expected_type': 'enum',
- 'actually_value': {}
- },
- {
- 'path': 'value',
- 'expected_type': 'string',
- 'actually_value': {}
- },
- {
- 'path': 'type',
- 'expected_type': 'string',
- 'actually_value': []
- }
- ]
- }) == sort_validator_rez(rez)
-
- def test_pass_only_required_fields(self):
- data = {
- 'subType': 'NETWORK',
- 'type': 'networkobject',
- 'value': '1.1.1.1'
- }
- valid, rez = FdmSwaggerValidator(mock_data).validate_data('getNetworkObjectList', data)
- assert valid
- assert rez is None
-
- def test_pass_only_required_fields_with_none_values(self):
- data = {
- 'subType': 'NETWORK',
- 'type': 'networkobject',
- 'value': None
- }
- valid, rez = FdmSwaggerValidator(mock_data).validate_data('getNetworkObjectList', data)
- assert not valid
- assert {'required': ['value']} == rez
-
- def test_pass_no_data_with_no_required_fields(self):
- spec = copy.deepcopy(mock_data)
- del spec['models']['NetworkObject']['required']
-
- valid, rez = FdmSwaggerValidator(spec).validate_data('getNetworkObjectList', {})
-
- assert valid
- assert rez is None
-
- def test_pass_all_fields_with_correct_data(self):
- data = {
- 'id': 'id-di',
- 'version': 'v',
- 'name': 'test_name',
- 'subType': 'NETWORK',
- 'type': 'networkobject',
- 'value': '1.1.1.1',
- 'description': 'des',
- 'isSystemDefined': False,
- 'dnsResolution': 'IPV4_ONLY',
- 'objects': [{
- 'type': 'port',
- 'id': 'fs-sf'
- }]
- }
- valid, rez = FdmSwaggerValidator(mock_data).validate_data('getNetworkObjectList', data)
- assert valid
- assert rez is None
-
- def test_array_data_is_not_correct(self):
- data = {
- 'name': 'test_name',
- 'subType': 'NETWORK',
- 'type': 'networkobject',
- 'value': '1.1.1.1',
- 'objects': [
- {
- 'id': 'fs-sf'
- },
- {
- 'type': 'type'
- },
- {},
- {
- 'id': 1,
- 'type': True
- },
- [],
- 'test'
- ]
- }
- valid, rez = FdmSwaggerValidator(mock_data).validate_data('getNetworkObjectList', data)
- assert not valid
- assert sort_validator_rez({
- 'required': ['objects[0].type', 'objects[1].id', 'objects[2].id', 'objects[2].type'],
- 'invalid_type': [
- {
- 'path': 'objects[3].id',
- 'expected_type': 'string',
- 'actually_value': 1
- },
- {
- 'path': 'objects[3].type',
- 'expected_type': 'string',
- 'actually_value': True
- },
- {
- 'path': 'objects[4]',
- 'expected_type': 'object',
- 'actually_value': []
- },
- {
- 'path': 'objects[5]',
- 'expected_type': 'object',
- 'actually_value': 'test'
- }
- ]
- }) == sort_validator_rez(rez)
-
- def test_simple_types(self):
- local_mock_data = {
- 'models': {
- 'TestModel': {
- 'type': 'object',
- 'properties': {
- 'f_string': {'type': 'string'},
- 'f_number': {'type': 'number'},
- 'f_boolean': {'type': 'boolean'},
- 'f_integer': {'type': 'integer'}
- },
- 'required': []
- }
- },
- 'operations': {
- 'getdata': {
- 'modelName': 'TestModel'
- }
- }
- }
- valid_data = {
- "f_string": "test",
- "f_number": 2.2,
- "f_boolean": False,
- "f_integer": 1
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', valid_data)
- assert valid
- assert rez is None
-
- valid_data = {
- "f_string": "",
- "f_number": 0,
- "f_boolean": True,
- "f_integer": 0
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', valid_data)
- assert valid
- assert rez is None
-
- valid_data = {
- "f_string": "0",
- "f_number": 100,
- "f_boolean": True,
- "f_integer": 2
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', valid_data)
- assert valid
- assert rez is None
-
- valid_data = {
- "f_string": None,
- "f_number": None,
- "f_boolean": None,
- "f_integer": None
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', valid_data)
- assert valid
- assert rez is None
-
- def test_invalid_simple_types(self):
- local_mock_data = {
- 'models': {
- 'TestModel': {
- 'type': 'object',
- 'properties': {
- 'f_string': {'type': 'string'},
- 'f_number': {'type': 'number'},
- 'f_boolean': {'type': 'boolean'},
- 'f_integer': {'type': 'integer'}
- },
- 'required': []
- }
- },
- 'operations': {
- 'getdata': {
- 'modelName': 'TestModel'
- }
- }
- }
- invalid_data = {
- "f_string": True,
- "f_number": True,
- "f_boolean": 1,
- "f_integer": True
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', invalid_data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'f_string',
- 'expected_type': 'string',
- 'actually_value': True
- },
- {
- 'path': 'f_number',
- 'expected_type': 'number',
- 'actually_value': True
- },
- {
- 'path': 'f_boolean',
- 'expected_type': 'boolean',
- 'actually_value': 1
- },
- {
- 'path': 'f_integer',
- 'expected_type': 'integer',
- 'actually_value': True
- }
- ]
- }) == sort_validator_rez(rez)
-
- invalid_data = {
- "f_string": 1,
- "f_number": False,
- "f_boolean": 0,
- "f_integer": "test"
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', invalid_data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'f_string',
- 'expected_type': 'string',
- 'actually_value': 1
- },
- {
- 'path': 'f_number',
- 'expected_type': 'number',
- 'actually_value': False
- },
- {
- 'path': 'f_boolean',
- 'expected_type': 'boolean',
- 'actually_value': 0
- },
- {
- 'path': 'f_integer',
- 'expected_type': 'integer',
- 'actually_value': "test"
- }
- ]
- }) == sort_validator_rez(rez)
-
- invalid_data = {
- "f_string": False,
- "f_number": "1",
- "f_boolean": "",
- "f_integer": "1.2"
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', invalid_data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'f_string',
- 'expected_type': 'string',
- 'actually_value': False
- },
- {
- 'path': 'f_boolean',
- 'expected_type': 'boolean',
- 'actually_value': ""
- },
- {
- 'path': 'f_integer',
- 'expected_type': 'integer',
- 'actually_value': '1.2'
- }
- ]
- }) == sort_validator_rez(rez)
-
- def test_nested_required_fields(self):
- valid_data = {
- 'nested_model': {
- 'f_string': "test"
- }
- }
-
- valid, rez = FdmSwaggerValidator(nested_mock_data1).validate_data('getdata', valid_data)
- assert valid
- assert rez is None
-
- def test_invalid_nested_required_fields(self):
- invalid_data = {
- 'f_integer': 2
- }
-
- valid, rez = FdmSwaggerValidator(nested_mock_data1).validate_data('getdata', invalid_data)
- assert not valid
- assert {'required': ['nested_model']} == rez
-
- invalid_data = {
- 'nested_model': {
- 'f_number': 1.2
- }
- }
-
- valid, rez = FdmSwaggerValidator(nested_mock_data1).validate_data('getdata', invalid_data)
- assert not valid
- assert {'required': ['nested_model.f_string']} == rez
-
- def test_invalid_type_in_nested_fields(self):
- invalid_data = {
- 'nested_model': {
- "f_string": 1,
- "f_number": "ds",
- "f_boolean": 1.3,
- "f_integer": True
- }
- }
-
- valid, rez = FdmSwaggerValidator(nested_mock_data1).validate_data('getdata', invalid_data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'nested_model.f_string',
- 'expected_type': 'string',
- 'actually_value': 1
- },
- {
- 'path': 'nested_model.f_number',
- 'expected_type': 'number',
- 'actually_value': "ds"
- },
- {
- 'path': 'nested_model.f_boolean',
- 'expected_type': 'boolean',
- 'actually_value': 1.3
- },
- {
- 'path': 'nested_model.f_integer',
- 'expected_type': 'integer',
- 'actually_value': True
- }
- ]
-
- }) == sort_validator_rez(rez)
-
- def test_few_levels_nested_fields(self):
- local_mock_data = {
- 'models': {
- 'Model2': {
- 'type': 'object',
- 'required': ['ms', 'ts'],
- 'properties': {
- 'ms': {'type': 'array',
- 'items': {
- 'type': 'object',
- '$ref': '#/definitions/ReferenceModel'}},
- 'ts': {'type': 'array',
- 'items': {
- 'type': 'object',
- '$ref': '#/definitions/ReferenceModel'}}
- }
- },
- 'NetworkObjectType': {'type': 'string', 'enum': ['HOST', 'NETWORK', 'IPRANGE', 'FQDN']},
- 'Fragment': {'type': 'object',
- 'required': ['type', 'objects', 'subType', 'object'],
- 'properties': {
- 'objects': {'type': 'array',
- 'items': {
- 'type': 'object',
- '$ref': '#/definitions/ReferenceModel'}},
- 'object': {'type': 'object',
- '$ref': '#/definitions/Model2'},
- 'subType': {'type': 'object',
- '$ref': '#/definitions/NetworkObjectType'},
- 'type': {'type': 'string'},
- 'value': {'type': 'number'},
- 'name': {'type': 'string'}}},
- 'ReferenceModel': {'type': 'object', 'required': ['id', 'type'],
- 'properties': {
- 'id': {'type': 'string'},
- 'type': {'type': 'string'},
- 'version': {'type': 'string'},
- 'name': {'type': 'string'}}},
- 'model1': {
- 'type': 'object',
- 'properties': {
- 'f_string': {'type': 'string'},
- 'f_number': {'type': 'number'},
- 'f_boolean': {'type': 'boolean'},
- 'f_integer': {'type': 'integer'},
- 'objects': {'type': 'array',
- 'items': {
- 'type': 'object',
- '$ref': '#/definitions/ReferenceModel'}},
- 'fragments': {'type': 'array',
- 'items': {
- 'type': 'object',
- '$ref': '#/definitions/Fragment'}}
- },
- 'required': ['f_string', 'objects', 'fragments']
- },
- 'TestModel': {
- 'type': 'object',
- 'properties': {
- 'nested_model': {'type': 'object',
- '$ref': '#/definitions/model1'},
- 'f_integer': {'type': 'integer'}
- },
- 'required': ['nested_model']
- }
- },
- 'operations': {
- 'getdata': {
- 'modelName': 'TestModel'
- }
- }
- }
-
- valid_data = {
- "nested_model": {
- 'objects': [{
- 'type': 't1',
- 'id': 'id1'
- }],
- 'fragments': [{
- 'type': "test",
- 'subType': 'NETWORK',
- 'object': {
- 'ts': [],
- 'ms': [{
- 'type': "tt",
- 'id': 'id'
- }]
- },
- 'objects': [{
- 'type': 't',
- 'id': 'id'
- }]
- }],
- 'f_string': '1'
- }
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', valid_data)
- assert valid
- assert rez is None
-
- valid_data = {
- "nested_model": {
- 'objects': [{
- 'type': 't1',
- 'id': 'id1'
- }],
- 'fragments': [{
- 'type': "test",
- 'subType': 'NETWORK',
- 'object': {
- 'ms': {}
- },
- 'objects': [{
- 'type': 't',
- 'id': 'id'
- }]
- }],
- 'f_string': '1'
- }
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', valid_data)
- assert not valid
- assert sort_validator_rez({
- 'required': ['nested_model.fragments[0].object.ts'],
- 'invalid_type': [{
- 'path': 'nested_model.fragments[0].object.ms',
- 'expected_type': 'array',
- 'actually_value': {}
- }]
- }) == sort_validator_rez(rez)
-
- valid_data = {
- "nested_model": {
- 'objects': [{
- 'type': 't1',
- 'id': 'id1'
- }],
- 'fragments': [{
- 'type': "test",
- 'subType': 'NETWORK',
- 'object': [],
- 'objects': {}
- }],
- 'f_string': '1'
- }
- }
-
- valid, rez = FdmSwaggerValidator(local_mock_data).validate_data('getdata', valid_data)
- assert not valid
- assert sort_validator_rez({
- 'invalid_type': [
- {
- 'path': 'nested_model.fragments[0].objects',
- 'expected_type': 'array',
- 'actually_value': {}
- },
- {
- 'path': 'nested_model.fragments[0].object',
- 'expected_type': 'object',
- 'actually_value': []}
- ]}) == sort_validator_rez(rez)
diff --git a/test/units/module_utils/network/ftd/test_fdm_swagger_with_real_data.py b/test/units/module_utils/network/ftd/test_fdm_swagger_with_real_data.py
deleted file mode 100644
index b3ae50dd7e..0000000000
--- a/test/units/module_utils/network/ftd/test_fdm_swagger_with_real_data.py
+++ /dev/null
@@ -1,75 +0,0 @@
-import json
-import os
-import unittest
-
-from ansible.module_utils.network.ftd.fdm_swagger_client import FdmSwaggerValidator, FdmSwaggerParser
-DIR_PATH = os.path.dirname(os.path.realpath(__file__))
-TEST_DATA_FOLDER = os.path.join(DIR_PATH, 'test_data')
-
-
-class TestFdmSwagger(unittest.TestCase):
-
- def setUp(self):
- self.init_mock_data()
-
- def init_mock_data(self):
- with open(os.path.join(TEST_DATA_FOLDER, 'ngfw_with_ex.json'), 'rb') as f:
- self.base_data = json.loads(f.read().decode('utf-8'))
-
- def test_with_all_data(self):
- fdm_data = FdmSwaggerParser().parse_spec(self.base_data)
- validator = FdmSwaggerValidator(fdm_data)
- models = fdm_data['models']
- operations = fdm_data['operations']
-
- invalid = set({})
- for operation in operations:
- model_name = operations[operation]['modelName']
- method = operations[operation]['method']
- if method != 'get' and model_name in models:
- if 'example' in models[model_name]:
- example = models[model_name]['example']
- try:
- valid, rez = validator.validate_data(operation, example)
- assert valid
- except Exception:
- invalid.add(model_name)
- assert invalid == set(['TCPPortObject',
- 'UDPPortObject',
- 'ICMPv4PortObject',
- 'ICMPv6PortObject',
- 'StandardAccessList',
- 'ExtendedAccessList',
- 'ASPathList',
- 'RouteMap',
- 'StandardCommunityList',
- 'ExpandedCommunityList',
- 'IPV4PrefixList',
- 'IPV6PrefixList',
- 'PolicyList',
- 'SyslogServer',
- 'HAConfiguration',
- 'TestIdentitySource'])
-
- def test_parse_all_data(self):
- self.fdm_data = FdmSwaggerParser().parse_spec(self.base_data)
- operations = self.fdm_data['operations']
- without_model_name = []
- expected_operations_counter = 0
- for key in self.base_data['paths']:
- operation = self.base_data['paths'][key]
- for dummy in operation:
- expected_operations_counter += 1
-
- for key in operations:
- operation = operations[key]
- if not operation['modelName']:
- without_model_name.append(operation['url'])
-
- if operation['modelName'] == '_File' and 'download' not in operation['url']:
- self.fail('File type can be defined for download operation only')
-
- assert sorted(['/api/fdm/v2/operational/deploy/{objId}', '/api/fdm/v2/action/upgrade']) == sorted(
- without_model_name)
- assert sorted(self.fdm_data['model_operations'][None].keys()) == sorted(['deleteDeployment', 'startUpgrade'])
- assert expected_operations_counter == len(operations)
diff --git a/test/units/module_utils/network/ftd/test_upsert_functionality.py b/test/units/module_utils/network/ftd/test_upsert_functionality.py
deleted file mode 100644
index 543ea8cea3..0000000000
--- a/test/units/module_utils/network/ftd/test_upsert_functionality.py
+++ /dev/null
@@ -1,886 +0,0 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import absolute_import
-
-import copy
-import json
-import unittest
-
-import pytest
-from units.compat import mock
-
-from ansible.module_utils.network.ftd.common import FtdServerError, HTTPMethod, ResponseParams, FtdConfigurationError
-from ansible.module_utils.network.ftd.configuration import DUPLICATE_NAME_ERROR_MESSAGE, UNPROCESSABLE_ENTITY_STATUS, \
- MULTIPLE_DUPLICATES_FOUND_ERROR, BaseConfigurationResource, FtdInvalidOperationNameError, QueryParams, \
- ADD_OPERATION_NOT_SUPPORTED_ERROR, ParamName
-from ansible.module_utils.network.ftd.fdm_swagger_client import ValidationError
-
-ADD_RESPONSE = {'status': 'Object added'}
-EDIT_RESPONSE = {'status': 'Object edited'}
-DELETE_RESPONSE = {'status': 'Object deleted'}
-GET_BY_FILTER_RESPONSE = [{'name': 'foo', 'description': 'bar'}]
-ARBITRARY_RESPONSE = {'status': 'Arbitrary request sent'}
-
-
-class TestUpsertOperationUnitTests(unittest.TestCase):
-
- @mock.patch.object(BaseConfigurationResource, '_fetch_system_info')
- def setUp(self, fetch_system_info_mock):
- self._conn = mock.MagicMock()
- self._resource = BaseConfigurationResource(self._conn)
- fetch_system_info_mock.return_value = {
- 'databaseInfo': {
- 'buildVersion': '6.3.0'
- }
- }
-
- def test_get_operation_name(self):
- operation_a = mock.MagicMock()
- operation_b = mock.MagicMock()
-
- def checker_wrapper(expected_object):
- def checker(obj, *args, **kwargs):
- return obj == expected_object
-
- return checker
-
- operations = {
- operation_a: "spec",
- operation_b: "spec"
- }
-
- assert operation_a == self._resource._get_operation_name(checker_wrapper(operation_a), operations)
- assert operation_b == self._resource._get_operation_name(checker_wrapper(operation_b), operations)
- assert self._resource._get_operation_name(checker_wrapper(None), operations) is None
-
- @mock.patch.object(BaseConfigurationResource, "_get_operation_name")
- @mock.patch.object(BaseConfigurationResource, "add_object")
- def test_add_upserted_object(self, add_object_mock, get_operation_mock):
- model_operations = mock.MagicMock()
- params = mock.MagicMock()
- add_op_name = get_operation_mock.return_value
-
- assert add_object_mock.return_value == self._resource._add_upserted_object(model_operations, params)
-
- get_operation_mock.assert_called_once_with(
- self._resource._operation_checker.is_add_operation,
- model_operations)
- add_object_mock.assert_called_once_with(add_op_name, params)
-
- @mock.patch.object(BaseConfigurationResource, "_get_operation_name")
- @mock.patch.object(BaseConfigurationResource, "add_object")
- def test_add_upserted_object_with_no_add_operation(self, add_object_mock, get_operation_mock):
- model_operations = mock.MagicMock()
- get_operation_mock.return_value = None
-
- with pytest.raises(FtdConfigurationError) as exc_info:
- self._resource._add_upserted_object(model_operations, mock.MagicMock())
- assert ADD_OPERATION_NOT_SUPPORTED_ERROR in str(exc_info.value)
-
- get_operation_mock.assert_called_once_with(self._resource._operation_checker.is_add_operation, model_operations)
- add_object_mock.assert_not_called()
-
- @mock.patch.object(BaseConfigurationResource, "_get_operation_name")
- @mock.patch.object(BaseConfigurationResource, "edit_object")
- @mock.patch("ansible.module_utils.network.ftd.configuration.copy_identity_properties")
- @mock.patch("ansible.module_utils.network.ftd.configuration._set_default")
- def test_edit_upserted_object(self, _set_default_mock, copy_properties_mock, edit_object_mock, get_operation_mock):
- model_operations = mock.MagicMock()
- existing_object = mock.MagicMock()
- params = {
- 'path_params': {},
- 'data': {}
- }
-
- result = self._resource._edit_upserted_object(model_operations, existing_object, params)
-
- assert result == edit_object_mock.return_value
-
- _set_default_mock.assert_has_calls([
- mock.call(params, 'path_params', {}),
- mock.call(params, 'data', {})
- ])
- get_operation_mock.assert_called_once_with(
- self._resource._operation_checker.is_edit_operation,
- model_operations
- )
- copy_properties_mock.assert_called_once_with(
- existing_object,
- params['data']
- )
- edit_object_mock.assert_called_once_with(
- get_operation_mock.return_value,
- params
- )
-
- @mock.patch("ansible.module_utils.network.ftd.configuration.OperationChecker.is_upsert_operation_supported")
- @mock.patch.object(BaseConfigurationResource, "get_operation_specs_by_model_name")
- @mock.patch.object(BaseConfigurationResource, "_find_object_matching_params")
- @mock.patch.object(BaseConfigurationResource, "_add_upserted_object")
- @mock.patch.object(BaseConfigurationResource, "_edit_upserted_object")
- def test_upsert_object_successfully_added(self, edit_mock, add_mock, find_object, get_operation_mock,
- is_upsert_supported_mock):
- params = mock.MagicMock()
-
- is_upsert_supported_mock.return_value = True
- find_object.return_value = None
-
- result = self._resource.upsert_object('upsertFoo', params)
-
- assert result == add_mock.return_value
- self._conn.get_model_spec.assert_called_once_with('Foo')
- is_upsert_supported_mock.assert_called_once_with(get_operation_mock.return_value)
- get_operation_mock.assert_called_once_with('Foo')
- find_object.assert_called_once_with('Foo', params)
- add_mock.assert_called_once_with(get_operation_mock.return_value, params)
- edit_mock.assert_not_called()
-
- @mock.patch("ansible.module_utils.network.ftd.configuration.equal_objects")
- @mock.patch("ansible.module_utils.network.ftd.configuration.OperationChecker.is_upsert_operation_supported")
- @mock.patch.object(BaseConfigurationResource, "get_operation_specs_by_model_name")
- @mock.patch.object(BaseConfigurationResource, "_find_object_matching_params")
- @mock.patch.object(BaseConfigurationResource, "_add_upserted_object")
- @mock.patch.object(BaseConfigurationResource, "_edit_upserted_object")
- def test_upsert_object_successfully_edited(self, edit_mock, add_mock, find_object, get_operation_mock,
- is_upsert_supported_mock, equal_objects_mock):
- params = mock.MagicMock()
- existing_obj = mock.MagicMock()
-
- is_upsert_supported_mock.return_value = True
- find_object.return_value = existing_obj
- equal_objects_mock.return_value = False
-
- result = self._resource.upsert_object('upsertFoo', params)
-
- assert result == edit_mock.return_value
- self._conn.get_model_spec.assert_called_once_with('Foo')
- get_operation_mock.assert_called_once_with('Foo')
- is_upsert_supported_mock.assert_called_once_with(get_operation_mock.return_value)
- add_mock.assert_not_called()
- equal_objects_mock.assert_called_once_with(existing_obj, params[ParamName.DATA])
- edit_mock.assert_called_once_with(get_operation_mock.return_value, existing_obj, params)
-
- @mock.patch("ansible.module_utils.network.ftd.configuration.equal_objects")
- @mock.patch("ansible.module_utils.network.ftd.configuration.OperationChecker.is_upsert_operation_supported")
- @mock.patch.object(BaseConfigurationResource, "get_operation_specs_by_model_name")
- @mock.patch.object(BaseConfigurationResource, "_find_object_matching_params")
- @mock.patch.object(BaseConfigurationResource, "_add_upserted_object")
- @mock.patch.object(BaseConfigurationResource, "_edit_upserted_object")
- def test_upsert_object_returned_without_modifications(self, edit_mock, add_mock, find_object, get_operation_mock,
- is_upsert_supported_mock, equal_objects_mock):
- params = mock.MagicMock()
- existing_obj = mock.MagicMock()
-
- is_upsert_supported_mock.return_value = True
- find_object.return_value = existing_obj
- equal_objects_mock.return_value = True
-
- result = self._resource.upsert_object('upsertFoo', params)
-
- assert result == existing_obj
- self._conn.get_model_spec.assert_called_once_with('Foo')
- get_operation_mock.assert_called_once_with('Foo')
- is_upsert_supported_mock.assert_called_once_with(get_operation_mock.return_value)
- add_mock.assert_not_called()
- equal_objects_mock.assert_called_once_with(existing_obj, params[ParamName.DATA])
- edit_mock.assert_not_called()
-
- @mock.patch("ansible.module_utils.network.ftd.configuration.OperationChecker.is_upsert_operation_supported")
- @mock.patch.object(BaseConfigurationResource, "get_operation_specs_by_model_name")
- @mock.patch.object(BaseConfigurationResource, "_find_object_matching_params")
- @mock.patch.object(BaseConfigurationResource, "_add_upserted_object")
- @mock.patch.object(BaseConfigurationResource, "_edit_upserted_object")
- def test_upsert_object_not_supported(self, edit_mock, add_mock, find_object, get_operation_mock,
- is_upsert_supported_mock):
- params = mock.MagicMock()
-
- is_upsert_supported_mock.return_value = False
-
- self.assertRaises(
- FtdInvalidOperationNameError,
- self._resource.upsert_object, 'upsertFoo', params
- )
-
- self._conn.get_model_spec.assert_called_once_with('Foo')
- get_operation_mock.assert_called_once_with('Foo')
- is_upsert_supported_mock.assert_called_once_with(get_operation_mock.return_value)
- find_object.assert_not_called()
- add_mock.assert_not_called()
- edit_mock.assert_not_called()
-
- @mock.patch("ansible.module_utils.network.ftd.configuration.OperationChecker.is_upsert_operation_supported")
- @mock.patch.object(BaseConfigurationResource, "get_operation_specs_by_model_name")
- @mock.patch.object(BaseConfigurationResource, "_find_object_matching_params")
- @mock.patch.object(BaseConfigurationResource, "_add_upserted_object")
- @mock.patch.object(BaseConfigurationResource, "_edit_upserted_object")
- def test_upsert_object_when_model_not_supported(self, edit_mock, add_mock, find_object, get_operation_mock,
- is_upsert_supported_mock):
- params = mock.MagicMock()
- self._conn.get_model_spec.return_value = None
-
- self.assertRaises(
- FtdInvalidOperationNameError,
- self._resource.upsert_object, 'upsertNonExisting', params
- )
-
- self._conn.get_model_spec.assert_called_once_with('NonExisting')
- get_operation_mock.assert_not_called()
- is_upsert_supported_mock.assert_not_called()
- find_object.assert_not_called()
- add_mock.assert_not_called()
- edit_mock.assert_not_called()
-
- @mock.patch("ansible.module_utils.network.ftd.configuration.equal_objects")
- @mock.patch("ansible.module_utils.network.ftd.configuration.OperationChecker.is_upsert_operation_supported")
- @mock.patch.object(BaseConfigurationResource, "get_operation_specs_by_model_name")
- @mock.patch.object(BaseConfigurationResource, "_find_object_matching_params")
- @mock.patch.object(BaseConfigurationResource, "_add_upserted_object")
- @mock.patch.object(BaseConfigurationResource, "_edit_upserted_object")
- def test_upsert_object_with_fatal_error_during_edit(self, edit_mock, add_mock, find_object, get_operation_mock,
- is_upsert_supported_mock, equal_objects_mock):
- params = mock.MagicMock()
- existing_obj = mock.MagicMock()
-
- is_upsert_supported_mock.return_value = True
- find_object.return_value = existing_obj
- equal_objects_mock.return_value = False
- edit_mock.side_effect = FtdConfigurationError("Some object edit error")
-
- self.assertRaises(
- FtdConfigurationError,
- self._resource.upsert_object, 'upsertFoo', params
- )
-
- is_upsert_supported_mock.assert_called_once_with(get_operation_mock.return_value)
- self._conn.get_model_spec.assert_called_once_with('Foo')
- get_operation_mock.assert_called_once_with('Foo')
- find_object.assert_called_once_with('Foo', params)
- add_mock.assert_not_called()
- edit_mock.assert_called_once_with(get_operation_mock.return_value, existing_obj, params)
-
- @mock.patch("ansible.module_utils.network.ftd.configuration.OperationChecker.is_upsert_operation_supported")
- @mock.patch.object(BaseConfigurationResource, "get_operation_specs_by_model_name")
- @mock.patch.object(BaseConfigurationResource, "_find_object_matching_params")
- @mock.patch.object(BaseConfigurationResource, "_add_upserted_object")
- @mock.patch.object(BaseConfigurationResource, "_edit_upserted_object")
- def test_upsert_object_with_fatal_error_during_add(self, edit_mock, add_mock, find_object, get_operation_mock,
- is_upsert_supported_mock):
- params = mock.MagicMock()
-
- is_upsert_supported_mock.return_value = True
- find_object.return_value = None
-
- error = FtdConfigurationError("Obj duplication error")
- add_mock.side_effect = error
-
- self.assertRaises(
- FtdConfigurationError,
- self._resource.upsert_object, 'upsertFoo', params
- )
-
- is_upsert_supported_mock.assert_called_once_with(get_operation_mock.return_value)
- self._conn.get_model_spec.assert_called_once_with('Foo')
- get_operation_mock.assert_called_once_with('Foo')
- find_object.assert_called_once_with('Foo', params)
- add_mock.assert_called_once_with(get_operation_mock.return_value, params)
- edit_mock.assert_not_called()
-
-
-# functional tests below
-class TestUpsertOperationFunctionalTests(object):
-
- @pytest.fixture(autouse=True)
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_configuration.Connection')
- connection_instance = connection_class_mock.return_value
- connection_instance.validate_data.return_value = True, None
- connection_instance.validate_query_params.return_value = True, None
- connection_instance.validate_path_params.return_value = True, None
- return connection_instance
-
- def test_module_should_create_object_when_upsert_operation_and_object_does_not_exist(self, connection_mock):
- url = '/test'
-
- operations = {
- 'getObjectList': {
- 'method': HTTPMethod.GET,
- 'url': url,
- 'modelName': 'Object',
- 'returnMultipleItems': True},
- 'addObject': {
- 'method': HTTPMethod.POST,
- 'modelName': 'Object',
- 'url': url},
- 'editObject': {
- 'method': HTTPMethod.PUT,
- 'modelName': 'Object',
- 'url': '/test/{objId}'},
- 'otherObjectOperation': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': '/test/{objId}',
- 'returnMultipleItems': False
- }
- }
-
- def get_operation_spec(name):
- return operations[name]
-
- def request_handler(url_path=None, http_method=None, body_params=None, path_params=None, query_params=None):
- if http_method == HTTPMethod.POST:
- assert url_path == url
- assert body_params == params['data']
- assert query_params == {}
- assert path_params == params['path_params']
- return {
- ResponseParams.SUCCESS: True,
- ResponseParams.RESPONSE: ADD_RESPONSE
- }
- elif http_method == HTTPMethod.GET:
- return {
- ResponseParams.SUCCESS: True,
- ResponseParams.RESPONSE: {'items': []}
- }
- else:
- assert False
-
- connection_mock.get_operation_spec = get_operation_spec
-
- connection_mock.get_operation_specs_by_model_name.return_value = operations
- connection_mock.send_request = request_handler
- params = {
- 'operation': 'upsertObject',
- 'data': {'id': '123', 'name': 'testObject', 'type': 'object'},
- 'path_params': {'objId': '123'},
- 'register_as': 'test_var'
- }
-
- result = self._resource_execute_operation(params, connection=connection_mock)
-
- assert ADD_RESPONSE == result
-
- def test_module_should_fail_when_no_model(self, connection_mock):
- connection_mock.get_model_spec.return_value = None
- params = {
- 'operation': 'upsertObject',
- 'data': {'id': '123', 'name': 'testObject', 'type': 'object'},
- 'path_params': {'objId': '123'},
- 'register_as': 'test_var'
- }
-
- with pytest.raises(FtdInvalidOperationNameError) as exc_info:
- self._resource_execute_operation(params, connection=connection_mock)
- assert 'upsertObject' == exc_info.value.operation_name
-
- def test_module_should_fail_when_no_add_operation_and_no_object(self, connection_mock):
- url = '/test'
-
- operations = {
- 'getObjectList': {
- 'method': HTTPMethod.GET,
- 'url': url,
- 'modelName': 'Object',
- 'returnMultipleItems': True},
- 'editObject': {
- 'method': HTTPMethod.PUT,
- 'modelName': 'Object',
- 'url': '/test/{objId}'},
- 'otherObjectOperation': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': '/test/{objId}',
- 'returnMultipleItems': False
- }}
-
- def get_operation_spec(name):
- return operations[name]
-
- connection_mock.get_operation_spec = get_operation_spec
-
- connection_mock.get_operation_specs_by_model_name.return_value = operations
- connection_mock.send_request.return_value = {
- ResponseParams.SUCCESS: True,
- ResponseParams.RESPONSE: {'items': []}
- }
- params = {
- 'operation': 'upsertObject',
- 'data': {'id': '123', 'name': 'testObject', 'type': 'object'},
- 'path_params': {'objId': '123'},
- 'register_as': 'test_var'
- }
-
- with pytest.raises(FtdConfigurationError) as exc_info:
- self._resource_execute_operation(params, connection=connection_mock)
- assert ADD_OPERATION_NOT_SUPPORTED_ERROR in str(exc_info.value)
-
- # test when object exists but with different fields(except id)
- def test_module_should_update_object_when_upsert_operation_and_object_exists(self, connection_mock):
- url = '/test'
- obj_id = '456'
- version = 'test_version'
- url_with_id_templ = '{0}/{1}'.format(url, '{objId}')
-
- new_value = '0000'
- old_value = '1111'
- params = {
- 'operation': 'upsertObject',
- 'data': {'name': 'testObject', 'value': new_value, 'type': 'object'},
- 'register_as': 'test_var'
- }
-
- def request_handler(url_path=None, http_method=None, body_params=None, path_params=None, query_params=None):
- if http_method == HTTPMethod.POST:
- assert url_path == url
- assert body_params == params['data']
- assert query_params == {}
- assert path_params == {}
- return {
- ResponseParams.SUCCESS: False,
- ResponseParams.RESPONSE: DUPLICATE_NAME_ERROR_MESSAGE,
- ResponseParams.STATUS_CODE: UNPROCESSABLE_ENTITY_STATUS
- }
- elif http_method == HTTPMethod.GET:
- is_get_list_req = url_path == url
- is_get_req = url_path == url_with_id_templ
- assert is_get_req or is_get_list_req
-
- if is_get_list_req:
- assert body_params == {}
- assert query_params == {QueryParams.FILTER: 'name:testObject', 'limit': 10, 'offset': 0}
- assert path_params == {}
- elif is_get_req:
- assert body_params == {}
- assert query_params == {}
- assert path_params == {'objId': obj_id}
-
- return {
- ResponseParams.SUCCESS: True,
- ResponseParams.RESPONSE: {
- 'items': [
- {'name': 'testObject', 'value': old_value, 'type': 'object', 'id': obj_id,
- 'version': version}
- ]
- }
- }
- elif http_method == HTTPMethod.PUT:
- assert url_path == url_with_id_templ
- return {
- ResponseParams.SUCCESS: True,
- ResponseParams.RESPONSE: body_params
- }
- else:
- assert False
-
- operations = {
- 'getObjectList': {'method': HTTPMethod.GET, 'url': url, 'modelName': 'Object', 'returnMultipleItems': True},
- 'addObject': {'method': HTTPMethod.POST, 'modelName': 'Object', 'url': url},
- 'editObject': {'method': HTTPMethod.PUT, 'modelName': 'Object', 'url': url_with_id_templ},
- 'otherObjectOperation': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': url_with_id_templ,
- 'returnMultipleItems': False}
- }
-
- def get_operation_spec(name):
- return operations[name]
-
- connection_mock.get_operation_spec = get_operation_spec
- connection_mock.get_operation_specs_by_model_name.return_value = operations
-
- connection_mock.send_request = request_handler
- expected_val = {'name': 'testObject', 'value': new_value, 'type': 'object', 'id': obj_id, 'version': version}
-
- result = self._resource_execute_operation(params, connection=connection_mock)
-
- assert expected_val == result
-
- # test when object exists and all fields have the same value
- def test_module_should_not_update_object_when_upsert_operation_and_object_exists_with_the_same_fields(
- self, connection_mock):
- url = '/test'
- url_with_id_templ = '{0}/{1}'.format(url, '{objId}')
-
- params = {
- 'operation': 'upsertObject',
- 'data': {'name': 'testObject', 'value': '3333', 'type': 'object'},
- 'register_as': 'test_var'
- }
-
- expected_val = copy.deepcopy(params['data'])
- expected_val['version'] = 'test_version'
- expected_val['id'] = 'test_id'
-
- def request_handler(url_path=None, http_method=None, body_params=None, path_params=None, query_params=None):
- if http_method == HTTPMethod.POST:
- assert url_path == url
- assert body_params == params['data']
- assert query_params == {}
- assert path_params == {}
- return {
- ResponseParams.SUCCESS: False,
- ResponseParams.RESPONSE: DUPLICATE_NAME_ERROR_MESSAGE,
- ResponseParams.STATUS_CODE: UNPROCESSABLE_ENTITY_STATUS
- }
- elif http_method == HTTPMethod.GET:
- assert url_path == url
- assert body_params == {}
- assert query_params == {QueryParams.FILTER: 'name:testObject', 'limit': 10, 'offset': 0}
- assert path_params == {}
-
- return {
- ResponseParams.SUCCESS: True,
- ResponseParams.RESPONSE: {
- 'items': [expected_val]
- }
- }
- else:
- assert False
-
- operations = {
- 'getObjectList': {'method': HTTPMethod.GET, 'modelName': 'Object', 'url': url, 'returnMultipleItems': True},
- 'addObject': {'method': HTTPMethod.POST, 'modelName': 'Object', 'url': url},
- 'editObject': {'method': HTTPMethod.PUT, 'modelName': 'Object', 'url': url_with_id_templ},
- 'otherObjectOperation': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': url_with_id_templ,
- 'returnMultipleItems': False}
- }
-
- def get_operation_spec(name):
- return operations[name]
-
- connection_mock.get_operation_spec = get_operation_spec
- connection_mock.get_operation_specs_by_model_name.return_value = operations
- connection_mock.send_request = request_handler
-
- result = self._resource_execute_operation(params, connection=connection_mock)
-
- assert expected_val == result
-
- def test_module_should_fail_when_upsert_operation_is_not_supported(self, connection_mock):
- connection_mock.get_operation_specs_by_model_name.return_value = {
- 'addObject': {'method': HTTPMethod.POST, 'modelName': 'Object', 'url': '/test'},
- 'editObject': {'method': HTTPMethod.PUT, 'modelName': 'Object', 'url': '/test/{objId}'},
- 'otherObjectOperation': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': '/test/{objId}',
- 'returnMultipleItems': False}
- }
- operation_name = 'upsertObject'
- params = {
- 'operation': operation_name,
- 'data': {'id': '123', 'name': 'testObject', 'type': 'object'},
- 'path_params': {'objId': '123'},
- 'register_as': 'test_var'
- }
-
- result = self._resource_execute_operation_with_expected_failure(
- expected_exception_class=FtdInvalidOperationNameError,
- params=params, connection=connection_mock)
-
- connection_mock.send_request.assert_not_called()
- assert operation_name == result.operation_name
-
- # when create operation raised FtdConfigurationError exception without id and version
- def test_module_should_fail_when_upsert_operation_and_failed_create_without_id_and_version(self, connection_mock):
- url = '/test'
- url_with_id_templ = '{0}/{1}'.format(url, '{objId}')
-
- params = {
- 'operation': 'upsertObject',
- 'data': {'name': 'testObject', 'value': '3333', 'type': 'object'},
- 'register_as': 'test_var'
- }
-
- def request_handler(url_path=None, http_method=None, body_params=None, path_params=None, query_params=None):
- if http_method == HTTPMethod.POST:
- assert url_path == url
- assert body_params == params['data']
- assert query_params == {}
- assert path_params == {}
- return {
- ResponseParams.SUCCESS: False,
- ResponseParams.RESPONSE: DUPLICATE_NAME_ERROR_MESSAGE,
- ResponseParams.STATUS_CODE: UNPROCESSABLE_ENTITY_STATUS
- }
- elif http_method == HTTPMethod.GET:
- assert url_path == url
- assert body_params == {}
- assert query_params == {QueryParams.FILTER: 'name:testObject', 'limit': 10, 'offset': 0}
- assert path_params == {}
-
- return {
- ResponseParams.SUCCESS: True,
- ResponseParams.RESPONSE: {
- 'items': []
- }
- }
- else:
- assert False
-
- operations = {
- 'getObjectList': {'method': HTTPMethod.GET, 'modelName': 'Object', 'url': url, 'returnMultipleItems': True},
- 'addObject': {'method': HTTPMethod.POST, 'modelName': 'Object', 'url': url},
- 'editObject': {'method': HTTPMethod.PUT, 'modelName': 'Object', 'url': url_with_id_templ},
- 'otherObjectOperation': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': url_with_id_templ,
- 'returnMultipleItems': False}
- }
-
- def get_operation_spec(name):
- return operations[name]
-
- connection_mock.get_operation_spec = get_operation_spec
- connection_mock.get_operation_specs_by_model_name.return_value = operations
- connection_mock.send_request = request_handler
-
- result = self._resource_execute_operation_with_expected_failure(
- expected_exception_class=FtdServerError,
- params=params, connection=connection_mock)
-
- assert result.code == 422
- assert result.response == 'Validation failed due to a duplicate name'
-
- def test_module_should_fail_when_upsert_operation_and_failed_update_operation(self, connection_mock):
- url = '/test'
- obj_id = '456'
- version = 'test_version'
- url_with_id_templ = '{0}/{1}'.format(url, '{objId}')
-
- error_code = 404
-
- new_value = '0000'
- old_value = '1111'
- params = {
- 'operation': 'upsertObject',
- 'data': {'name': 'testObject', 'value': new_value, 'type': 'object'},
- 'register_as': 'test_var'
- }
-
- error_msg = 'test error'
-
- def request_handler(url_path=None, http_method=None, body_params=None, path_params=None, query_params=None):
- if http_method == HTTPMethod.POST:
- assert url_path == url
- assert body_params == params['data']
- assert query_params == {}
- assert path_params == {}
- return {
- ResponseParams.SUCCESS: False,
- ResponseParams.RESPONSE: DUPLICATE_NAME_ERROR_MESSAGE,
- ResponseParams.STATUS_CODE: UNPROCESSABLE_ENTITY_STATUS
- }
- elif http_method == HTTPMethod.GET:
- is_get_list_req = url_path == url
- is_get_req = url_path == url_with_id_templ
- assert is_get_req or is_get_list_req
-
- if is_get_list_req:
- assert body_params == {}
- assert query_params == {QueryParams.FILTER: 'name:testObject', 'limit': 10, 'offset': 0}
- elif is_get_req:
- assert body_params == {}
- assert query_params == {}
- assert path_params == {'objId': obj_id}
-
- return {
- ResponseParams.SUCCESS: True,
- ResponseParams.RESPONSE: {
- 'items': [
- {'name': 'testObject', 'value': old_value, 'type': 'object', 'id': obj_id,
- 'version': version}
- ]
- }
- }
- elif http_method == HTTPMethod.PUT:
- assert url_path == url_with_id_templ
- raise FtdServerError(error_msg, error_code)
- else:
- assert False
-
- operations = {
- 'getObjectList': {'method': HTTPMethod.GET, 'modelName': 'Object', 'url': url, 'returnMultipleItems': True},
- 'addObject': {'method': HTTPMethod.POST, 'modelName': 'Object', 'url': url},
- 'editObject': {'method': HTTPMethod.PUT, 'modelName': 'Object', 'url': url_with_id_templ},
- 'otherObjectOperation': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': url_with_id_templ,
- 'returnMultipleItems': False}
- }
-
- def get_operation_spec(name):
- return operations[name]
-
- connection_mock.get_operation_spec = get_operation_spec
- connection_mock.get_operation_specs_by_model_name.return_value = operations
- connection_mock.send_request = request_handler
-
- result = self._resource_execute_operation_with_expected_failure(
- expected_exception_class=FtdServerError,
- params=params, connection=connection_mock)
-
- assert result.code == error_code
- assert result.response == error_msg
-
- def test_module_should_fail_when_upsert_operation_and_invalid_data_for_create_operation(self, connection_mock):
- new_value = '0000'
- params = {
- 'operation': 'upsertObject',
- 'data': {'name': 'testObject', 'value': new_value, 'type': 'object'},
- 'register_as': 'test_var'
- }
-
- connection_mock.send_request.assert_not_called()
-
- operations = {
- 'getObjectList': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': 'sd',
- 'returnMultipleItems': True},
- 'addObject': {'method': HTTPMethod.POST, 'modelName': 'Object', 'url': 'sdf'},
- 'editObject': {'method': HTTPMethod.PUT, 'modelName': 'Object', 'url': 'sadf'},
- 'otherObjectOperation': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': 'sdfs',
- 'returnMultipleItems': False}
- }
-
- def get_operation_spec(name):
- return operations[name]
-
- connection_mock.get_operation_spec = get_operation_spec
- connection_mock.get_operation_specs_by_model_name.return_value = operations
-
- report = {
- 'required': ['objects[0].type'],
- 'invalid_type': [
- {
- 'path': 'objects[3].id',
- 'expected_type': 'string',
- 'actually_value': 1
- }
- ]
- }
- connection_mock.validate_data.return_value = (False, json.dumps(report, sort_keys=True, indent=4))
- key = 'Invalid data provided'
-
- result = self._resource_execute_operation_with_expected_failure(
- expected_exception_class=ValidationError,
- params=params, connection=connection_mock)
-
- assert len(result.args) == 1
- assert key in result.args[0]
- assert json.loads(result.args[0][key]) == {
- 'invalid_type': [{'actually_value': 1, 'expected_type': 'string', 'path': 'objects[3].id'}],
- 'required': ['objects[0].type']
- }
-
- def test_module_should_fail_when_upsert_operation_and_few_objects_found_by_filter(self, connection_mock):
- url = '/test'
- url_with_id_templ = '{0}/{1}'.format(url, '{objId}')
-
- sample_obj = {'name': 'testObject', 'value': '3333', 'type': 'object'}
- params = {
- 'operation': 'upsertObject',
- 'data': sample_obj,
- 'register_as': 'test_var'
- }
-
- def request_handler(url_path=None, http_method=None, body_params=None, path_params=None, query_params=None):
- if http_method == HTTPMethod.POST:
- assert url_path == url
- assert body_params == params['data']
- assert query_params == {}
- assert path_params == {}
- return {
- ResponseParams.SUCCESS: False,
- ResponseParams.RESPONSE: DUPLICATE_NAME_ERROR_MESSAGE,
- ResponseParams.STATUS_CODE: UNPROCESSABLE_ENTITY_STATUS
- }
- elif http_method == HTTPMethod.GET:
- assert url_path == url
- assert body_params == {}
- assert query_params == {QueryParams.FILTER: 'name:testObject', 'limit': 10, 'offset': 0}
- assert path_params == {}
-
- return {
- ResponseParams.SUCCESS: True,
- ResponseParams.RESPONSE: {
- 'items': [sample_obj, sample_obj]
- }
- }
- else:
- assert False
-
- operations = {
- 'getObjectList': {'method': HTTPMethod.GET, 'modelName': 'Object', 'url': url, 'returnMultipleItems': True},
- 'addObject': {'method': HTTPMethod.POST, 'modelName': 'Object', 'url': url},
- 'editObject': {'method': HTTPMethod.PUT, 'modelName': 'Object', 'url': url_with_id_templ},
- 'otherObjectOperation': {
- 'method': HTTPMethod.GET,
- 'modelName': 'Object',
- 'url': url_with_id_templ,
- 'returnMultipleItems': False}
- }
-
- def get_operation_spec(name):
- return operations[name]
-
- connection_mock.get_operation_spec = get_operation_spec
- connection_mock.get_operation_specs_by_model_name.return_value = operations
- connection_mock.send_request = request_handler
-
- result = self._resource_execute_operation_with_expected_failure(
- expected_exception_class=FtdConfigurationError,
- params=params, connection=connection_mock)
-
- assert result.msg is MULTIPLE_DUPLICATES_FOUND_ERROR
- assert result.obj is None
-
- @staticmethod
- def _resource_execute_operation(params, connection):
-
- with mock.patch.object(BaseConfigurationResource, '_fetch_system_info') as fetch_system_info_mock:
- fetch_system_info_mock.return_value = {
- 'databaseInfo': {
- 'buildVersion': '6.3.0'
- }
- }
- resource = BaseConfigurationResource(connection)
- op_name = params['operation']
-
- resp = resource.execute_operation(op_name, params)
-
- return resp
-
- def _resource_execute_operation_with_expected_failure(self, expected_exception_class, params, connection):
- with pytest.raises(expected_exception_class) as ex:
- self._resource_execute_operation(params, connection)
- # 'ex' here is the instance of '_pytest._code.code.ExceptionInfo' but not <expected_exception_class>
- # actual instance of <expected_exception_class> is in the value attribute of 'ex'. That's why we should return
- # 'ex.value' here, so it can be checked in a test later.
- return ex.value
diff --git a/test/units/module_utils/network/netscaler/test_netscaler.py b/test/units/module_utils/network/netscaler/test_netscaler.py
deleted file mode 100644
index 44082245f7..0000000000
--- a/test/units/module_utils/network/netscaler/test_netscaler.py
+++ /dev/null
@@ -1,175 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat import unittest
-from units.compat.mock import Mock
-
-
-from ansible.module_utils.network.netscaler.netscaler import ConfigProxy, get_immutables_intersection, ensure_feature_is_enabled, log, loglines
-
-
-class TestNetscalerConfigProxy(unittest.TestCase):
-
- def test_values_copied_to_actual(self):
- actual = Mock()
- client = Mock()
- values = {
- 'some_key': 'some_value',
- }
- ConfigProxy(
- actual=actual,
- client=client,
- attribute_values_dict=values,
- readwrite_attrs=['some_key']
- )
- self.assertEqual(actual.some_key, values['some_key'], msg='Failed to pass correct value from values dict')
-
- def test_none_values_not_copied_to_actual(self):
- actual = Mock()
- client = Mock()
- actual.key_for_none = 'initial'
- print('actual %s' % actual.key_for_none)
- values = {
- 'key_for_none': None,
- }
- print('value %s' % actual.key_for_none)
- ConfigProxy(
- actual=actual,
- client=client,
- attribute_values_dict=values,
- readwrite_attrs=['key_for_none']
- )
- self.assertEqual(actual.key_for_none, 'initial')
-
- def test_missing_from_values_dict_not_copied_to_actual(self):
- actual = Mock()
- client = Mock()
- values = {
- 'irrelevant_key': 'irrelevant_value',
- }
- print('value %s' % actual.key_for_none)
- ConfigProxy(
- actual=actual,
- client=client,
- attribute_values_dict=values,
- readwrite_attrs=['key_for_none']
- )
- print('none %s' % getattr(actual, 'key_for_none'))
- self.assertIsInstance(actual.key_for_none, Mock)
-
- def test_bool_yes_no_transform(self):
- actual = Mock()
- client = Mock()
- values = {
- 'yes_key': True,
- 'no_key': False,
- }
- transforms = {
- 'yes_key': ['bool_yes_no'],
- 'no_key': ['bool_yes_no']
- }
- ConfigProxy(
- actual=actual,
- client=client,
- attribute_values_dict=values,
- readwrite_attrs=['yes_key', 'no_key'],
- transforms=transforms,
- )
- actual_values = [actual.yes_key, actual.no_key]
- self.assertListEqual(actual_values, ['YES', 'NO'])
-
- def test_bool_on_off_transform(self):
- actual = Mock()
- client = Mock()
- values = {
- 'on_key': True,
- 'off_key': False,
- }
- transforms = {
- 'on_key': ['bool_on_off'],
- 'off_key': ['bool_on_off']
- }
- ConfigProxy(
- actual=actual,
- client=client,
- attribute_values_dict=values,
- readwrite_attrs=['on_key', 'off_key'],
- transforms=transforms,
- )
- actual_values = [actual.on_key, actual.off_key]
- self.assertListEqual(actual_values, ['ON', 'OFF'])
-
- def test_callable_transform(self):
- actual = Mock()
- client = Mock()
- values = {
- 'transform_key': 'hello',
- 'transform_chain': 'hello',
- }
- transforms = {
- 'transform_key': [lambda v: v.upper()],
- 'transform_chain': [lambda v: v.upper(), lambda v: v[:4]]
- }
- ConfigProxy(
- actual=actual,
- client=client,
- attribute_values_dict=values,
- readwrite_attrs=['transform_key', 'transform_chain'],
- transforms=transforms,
- )
- actual_values = [actual.transform_key, actual.transform_chain]
- self.assertListEqual(actual_values, ['HELLO', 'HELL'])
-
-
-class TestNetscalerModuleUtils(unittest.TestCase):
-
- def test_immutables_intersection(self):
- actual = Mock()
- client = Mock()
- values = {
- 'mutable_key': 'some value',
- 'immutable_key': 'some other value',
- }
- proxy = ConfigProxy(
- actual=actual,
- client=client,
- attribute_values_dict=values,
- readwrite_attrs=['mutable_key', 'immutable_key'],
- immutable_attrs=['immutable_key'],
- )
- keys_to_check = ['mutable_key', 'immutable_key', 'non_existant_key']
- result = get_immutables_intersection(proxy, keys_to_check)
- self.assertListEqual(result, ['immutable_key'])
-
- def test_ensure_feature_is_enabled(self):
- client = Mock()
- attrs = {'get_enabled_features.return_value': ['GSLB']}
- client.configure_mock(**attrs)
- ensure_feature_is_enabled(client, 'GSLB')
- ensure_feature_is_enabled(client, 'LB')
- client.enable_features.assert_called_once_with('LB')
-
- def test_log_function(self):
- messages = [
- 'First message',
- 'Second message',
- ]
- log(messages[0])
- log(messages[1])
- self.assertListEqual(messages, loglines, msg='Log messages not recorded correctly')
diff --git a/test/units/module_utils/network/nos/test_nos.py b/test/units/module_utils/network/nos/test_nos.py
deleted file mode 100644
index 9a0ee28e47..0000000000
--- a/test/units/module_utils/network/nos/test_nos.py
+++ /dev/null
@@ -1,148 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from mock import MagicMock, patch, call
-
-from units.compat import unittest
-from ansible.module_utils.network.nos import nos
-
-
-class TestPluginCLIConfNOS(unittest.TestCase):
- """ Test class for NOS CLI Conf Methods
- """
-
- def test_get_connection_established(self):
- """ Test get_connection with established connection
- """
- module = MagicMock()
- connection = nos.get_connection(module)
- self.assertEqual(connection, module.nos_connection)
-
- @patch('ansible.module_utils.network.nos.nos.Connection')
- def test_get_connection_new(self, connection):
- """ Test get_connection with new connection
- """
- socket_path = "little red riding hood"
- module = MagicMock(spec=[
- 'fail_json',
- ])
- module._socket_path = socket_path
-
- connection().get_capabilities.return_value = '{"network_api": "cliconf"}'
- returned_connection = nos.get_connection(module)
- connection.assert_called_with(socket_path)
- self.assertEqual(returned_connection, module.nos_connection)
-
- @patch('ansible.module_utils.network.nos.nos.Connection')
- def test_get_connection_incorrect_network_api(self, connection):
- """ Test get_connection with incorrect network_api response
- """
- socket_path = "little red riding hood"
- module = MagicMock(spec=[
- 'fail_json',
- ])
- module._socket_path = socket_path
- module.fail_json.side_effect = TypeError
-
- connection().get_capabilities.return_value = '{"network_api": "nope"}'
-
- with self.assertRaises(TypeError):
- nos.get_connection(module)
-
- @patch('ansible.module_utils.network.nos.nos.Connection')
- def test_get_capabilities(self, connection):
- """ Test get_capabilities
- """
- socket_path = "little red riding hood"
- module = MagicMock(spec=[
- 'fail_json',
- ])
- module._socket_path = socket_path
- module.fail_json.side_effect = TypeError
-
- capabilities = {'network_api': 'cliconf'}
-
- connection().get_capabilities.return_value = json.dumps(capabilities)
-
- capabilities_returned = nos.get_capabilities(module)
-
- self.assertEqual(capabilities, capabilities_returned)
-
- @patch('ansible.module_utils.network.nos.nos.Connection')
- def test_run_commands(self, connection):
- """ Test get_capabilities
- """
- module = MagicMock()
-
- commands = [
- 'hello',
- 'dolly',
- 'well hello',
- 'dolly',
- 'its so nice to have you back',
- 'where you belong',
- ]
-
- responses = [
- 'Dolly, never go away again1',
- 'Dolly, never go away again2',
- 'Dolly, never go away again3',
- 'Dolly, never go away again4',
- 'Dolly, never go away again5',
- 'Dolly, never go away again6',
- ]
-
- module.nos_connection.get.side_effect = responses
-
- run_command_responses = nos.run_commands(module, commands)
-
- calls = []
-
- for command in commands:
- calls.append(call(
- command,
- None,
- None
- ))
-
- module.nos_connection.get.assert_has_calls(calls)
-
- self.assertEqual(responses, run_command_responses)
-
- @patch('ansible.module_utils.network.nos.nos.Connection')
- def test_load_config(self, connection):
- """ Test load_config
- """
- module = MagicMock()
-
- commands = [
- 'what does it take',
- 'to be',
- 'number one?',
- 'two is not a winner',
- 'and three nobody remember',
- ]
-
- nos.load_config(module, commands)
-
- module.nos_connection.edit_config.assert_called_once_with(commands)
diff --git a/test/units/module_utils/network/nso/test_nso.py b/test/units/module_utils/network/nso/test_nso.py
deleted file mode 100644
index 77df728f7f..0000000000
--- a/test/units/module_utils/network/nso/test_nso.py
+++ /dev/null
@@ -1,659 +0,0 @@
-# Copyright (c) 2017 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import (absolute_import, division, print_function)
-
-import json
-
-from units.compat.mock import patch
-from units.compat import unittest
-from ansible.module_utils.network.nso import nso
-
-
-MODULE_PREFIX_MAP = '''
-{
- "ansible-nso": "an",
- "test": "test",
- "tailf-ncs": "ncs"
-}
-'''
-
-
-SCHEMA_DATA = {
- '/an:id-name-leaf': '''
-{
- "meta": {
- "prefix": "an",
- "namespace": "http://github.com/ansible/nso",
- "types": {
- "http://github.com/ansible/nso:id-name-t": [
- {
- "name": "http://github.com/ansible/nso:id-name-t",
- "enumeration": [
- {
- "label": "id-one"
- },
- {
- "label": "id-two"
- }
- ]
- },
- {
- "name": "identityref"
- }
- ]
- },
- "keypath": "/an:id-name-leaf"
- },
- "data": {
- "kind": "leaf",
- "type": {
- "namespace": "http://github.com/ansible/nso",
- "name": "id-name-t"
- },
- "name": "id-name-leaf",
- "qname": "an:id-name-leaf"
- }
-}''',
- '/an:id-name-values': '''
-{
- "meta": {
- "prefix": "an",
- "namespace": "http://github.com/ansible/nso",
- "types": {},
- "keypath": "/an:id-name-values"
- },
- "data": {
- "kind": "container",
- "name": "id-name-values",
- "qname": "an:id-name-values",
- "children": [
- {
- "kind": "list",
- "name": "id-name-value",
- "qname": "an:id-name-value",
- "key": [
- "name"
- ]
- }
- ]
- }
-}
-''',
- '/an:id-name-values/id-name-value': '''
-{
- "meta": {
- "prefix": "an",
- "namespace": "http://github.com/ansible/nso",
- "types": {
- "http://github.com/ansible/nso:id-name-t": [
- {
- "name": "http://github.com/ansible/nso:id-name-t",
- "enumeration": [
- {
- "label": "id-one"
- },
- {
- "label": "id-two"
- }
- ]
- },
- {
- "name": "identityref"
- }
- ]
- },
- "keypath": "/an:id-name-values/id-name-value"
- },
- "data": {
- "kind": "list",
- "name": "id-name-value",
- "qname": "an:id-name-value",
- "key": [
- "name"
- ],
- "children": [
- {
- "kind": "key",
- "name": "name",
- "qname": "an:name",
- "type": {
- "namespace": "http://github.com/ansible/nso",
- "name": "id-name-t"
- }
- },
- {
- "kind": "leaf",
- "type": {
- "primitive": true,
- "name": "string"
- },
- "name": "value",
- "qname": "an:value"
- }
- ]
- }
-}
-''',
- '/test:test': '''
-{
- "meta": {
- "types": {
- "http://example.com/test:t15": [
- {
- "leaf_type":[
- {
- "name":"string"
- }
- ],
- "list_type":[
- {
- "name":"http://example.com/test:t15",
- "leaf-list":true
- }
- ]
- }
- ]
- }
- },
- "data": {
- "kind": "list",
- "name":"test",
- "qname":"test:test",
- "key":["name"],
- "children": [
- {
- "kind": "key",
- "name": "name",
- "qname": "test:name",
- "type": {"name":"string","primitive":true}
- },
- {
- "kind": "choice",
- "name": "test-choice",
- "qname": "test:test-choice",
- "cases": [
- {
- "kind": "case",
- "name": "direct-child-case",
- "qname":"test:direct-child-case",
- "children":[
- {
- "kind": "leaf",
- "name": "direct-child",
- "qname": "test:direct-child",
- "type": {"name":"string","primitive":true}
- }
- ]
- },
- {
- "kind":"case","name":"nested-child-case","qname":"test:nested-child-case",
- "children": [
- {
- "kind": "choice",
- "name": "nested-choice",
- "qname": "test:nested-choice",
- "cases": [
- {
- "kind":"case","name":"nested-child","qname":"test:nested-child",
- "children": [
- {
- "kind": "leaf",
- "name":"nested-child",
- "qname":"test:nested-child",
- "type":{"name":"string","primitive":true}}
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "kind":"leaf-list",
- "name":"device-list",
- "qname":"test:device-list",
- "type": {
- "namespace":"http://example.com/test",
- "name":"t15"
- }
- }
- ]
- }
-}
-''',
- '/test:test/device-list': '''
-{
- "meta": {
- "types": {
- "http://example.com/test:t15": [
- {
- "leaf_type":[
- {
- "name":"string"
- }
- ],
- "list_type":[
- {
- "name":"http://example.com/test:t15",
- "leaf-list":true
- }
- ]
- }
- ]
- }
- },
- "data": {
- "kind":"leaf-list",
- "name":"device-list",
- "qname":"test:device-list",
- "type": {
- "namespace":"http://example.com/test",
- "name":"t15"
- }
- }
-}
-''',
- '/test:deps': '''
-{
- "meta": {
- },
- "data": {
- "kind":"container",
- "name":"deps",
- "qname":"test:deps",
- "children": [
- {
- "kind": "leaf",
- "type": {
- "primitive": true,
- "name": "string"
- },
- "name": "a",
- "qname": "test:a",
- "deps": ["/test:deps/c"]
- },
- {
- "kind": "leaf",
- "type": {
- "primitive": true,
- "name": "string"
- },
- "name": "b",
- "qname": "test:b",
- "deps": ["/test:deps/a"]
- },
- {
- "kind": "leaf",
- "type": {
- "primitive": true,
- "name": "string"
- },
- "name": "c",
- "qname": "test:c"
- }
- ]
- }
-}
-'''
-}
-
-
-class MockResponse(object):
- def __init__(self, method, params, code, body, headers=None):
- if headers is None:
- headers = {}
-
- self.method = method
- self.params = params
-
- self.code = code
- self.body = body
- self.headers = dict(headers)
-
- def read(self):
- return self.body
-
-
-def mock_call(calls, url, timeout, validate_certs, data=None, headers=None, method=None):
- result = calls[0]
- del calls[0]
-
- request = json.loads(data)
- if result.method != request['method']:
- raise ValueError('expected method {0}({1}), got {2}({3})'.format(
- result.method, result.params,
- request['method'], request['params']))
-
- for key, value in result.params.items():
- if key not in request['params']:
- raise ValueError('{0} not in parameters'.format(key))
- if value != request['params'][key]:
- raise ValueError('expected {0} to be {1}, got {2}'.format(
- key, value, request['params'][key]))
-
- return result
-
-
-def get_schema_response(path):
- return MockResponse(
- 'get_schema', {'path': path}, 200, '{{"result": {0}}}'.format(
- SCHEMA_DATA[path]))
-
-
-class TestJsonRpc(unittest.TestCase):
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_exists(self, open_url_mock):
- calls = [
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- MockResponse('exists', {'path': '/exists'}, 200, '{"result": {"exists": true}}'),
- MockResponse('exists', {'path': '/not-exists'}, 200, '{"result": {"exists": false}}')
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
- client = nso.JsonRpc('http://localhost:8080/jsonrpc', 10, False)
- self.assertEqual(True, client.exists('/exists'))
- self.assertEqual(False, client.exists('/not-exists'))
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_exists_data_not_found(self, open_url_mock):
- calls = [
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- MockResponse('exists', {'path': '/list{missing-parent}/list{child}'}, 200, '{"error":{"type":"data.not_found"}}')
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
- client = nso.JsonRpc('http://localhost:8080/jsonrpc', 10, False)
- self.assertEqual(False, client.exists('/list{missing-parent}/list{child}'))
-
- self.assertEqual(0, len(calls))
-
-
-class TestValueBuilder(unittest.TestCase):
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_identityref_leaf(self, open_url_mock):
- calls = [
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- get_schema_response('/an:id-name-leaf'),
- MockResponse('get_module_prefix_map', {}, 200, '{{"result": {0}}}'.format(MODULE_PREFIX_MAP))
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
-
- parent = "/an:id-name-leaf"
- schema_data = json.loads(
- SCHEMA_DATA['/an:id-name-leaf'])
- schema = schema_data['data']
-
- vb = nso.ValueBuilder(nso.JsonRpc('http://localhost:8080/jsonrpc', 10, False))
- vb.build(parent, None, 'ansible-nso:id-two', schema)
- values = list(vb.values)
- self.assertEqual(1, len(values))
- value = values[0]
- self.assertEqual(parent, value.path)
- self.assertEqual('set', value.state)
- self.assertEqual('an:id-two', value.value)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_identityref_key(self, open_url_mock):
- calls = [
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- get_schema_response('/an:id-name-values/id-name-value'),
- MockResponse('get_module_prefix_map', {}, 200, '{{"result": {0}}}'.format(MODULE_PREFIX_MAP)),
- MockResponse('exists', {'path': '/an:id-name-values/id-name-value{an:id-one}'}, 200, '{"result": {"exists": true}}')
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
-
- parent = "/an:id-name-values"
- schema_data = json.loads(
- SCHEMA_DATA['/an:id-name-values/id-name-value'])
- schema = schema_data['data']
-
- vb = nso.ValueBuilder(nso.JsonRpc('http://localhost:8080/jsonrpc', 10, False))
- vb.build(parent, 'id-name-value', [{'name': 'ansible-nso:id-one', 'value': '1'}], schema)
- values = list(vb.values)
- self.assertEqual(1, len(values))
- value = values[0]
- self.assertEqual('{0}/id-name-value{{an:id-one}}/value'.format(parent), value.path)
- self.assertEqual('set', value.state)
- self.assertEqual('1', value.value)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nested_choice(self, open_url_mock):
- calls = [
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- get_schema_response('/test:test'),
- MockResponse('exists', {'path': '/test:test{direct}'}, 200, '{"result": {"exists": true}}'),
- MockResponse('exists', {'path': '/test:test{nested}'}, 200, '{"result": {"exists": true}}')
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
-
- parent = "/test:test"
- schema_data = json.loads(
- SCHEMA_DATA['/test:test'])
- schema = schema_data['data']
-
- vb = nso.ValueBuilder(nso.JsonRpc('http://localhost:8080/jsonrpc', 10, False))
- vb.build(parent, None, [{'name': 'direct', 'direct-child': 'direct-value'},
- {'name': 'nested', 'nested-child': 'nested-value'}], schema)
- values = list(vb.values)
- self.assertEqual(2, len(values))
- value = values[0]
- self.assertEqual('{0}{{direct}}/direct-child'.format(parent), value.path)
- self.assertEqual('set', value.state)
- self.assertEqual('direct-value', value.value)
-
- value = values[1]
- self.assertEqual('{0}{{nested}}/nested-child'.format(parent), value.path)
- self.assertEqual('set', value.state)
- self.assertEqual('nested-value', value.value)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_leaf_list_type(self, open_url_mock):
- calls = [
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.4"}'),
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- get_schema_response('/test:test')
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
-
- parent = "/test:test"
- schema_data = json.loads(
- SCHEMA_DATA['/test:test'])
- schema = schema_data['data']
-
- vb = nso.ValueBuilder(nso.JsonRpc('http://localhost:8080/jsonrpc', 10, False))
- vb.build(parent, None, {'device-list': ['one', 'two']}, schema)
- values = list(vb.values)
- self.assertEqual(1, len(values))
- value = values[0]
- self.assertEqual('{0}/device-list'.format(parent), value.path)
- self.assertEqual(['one', 'two'], value.value)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_leaf_list_type_45(self, open_url_mock):
- calls = [
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- get_schema_response('/test:test/device-list')
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
-
- parent = "/test:test"
- schema_data = json.loads(
- SCHEMA_DATA['/test:test'])
- schema = schema_data['data']
-
- vb = nso.ValueBuilder(nso.JsonRpc('http://localhost:8080/jsonrpc', 10, False))
- vb.build(parent, None, {'device-list': ['one', 'two']}, schema)
- values = list(vb.values)
- self.assertEqual(3, len(values))
- value = values[0]
- self.assertEqual('{0}/device-list'.format(parent), value.path)
- self.assertEqual(nso.State.ABSENT, value.state)
- value = values[1]
- self.assertEqual('{0}/device-list{{one}}'.format(parent), value.path)
- self.assertEqual(nso.State.PRESENT, value.state)
- value = values[2]
- self.assertEqual('{0}/device-list{{two}}'.format(parent), value.path)
- self.assertEqual(nso.State.PRESENT, value.state)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_sort_by_deps(self, open_url_mock):
- calls = [
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- get_schema_response('/test:deps')
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
-
- parent = "/test:deps"
- schema_data = json.loads(
- SCHEMA_DATA['/test:deps'])
- schema = schema_data['data']
-
- values = {
- 'a': '1',
- 'b': '2',
- 'c': '3',
- }
-
- vb = nso.ValueBuilder(nso.JsonRpc('http://localhost:8080/jsonrpc', 10, False))
- vb.build(parent, None, values, schema)
- values = list(vb.values)
- self.assertEqual(3, len(values))
- value = values[0]
- self.assertEqual('{0}/c'.format(parent), value.path)
- self.assertEqual('3', value.value)
- value = values[1]
- self.assertEqual('{0}/a'.format(parent), value.path)
- self.assertEqual('1', value.value)
- value = values[2]
- self.assertEqual('{0}/b'.format(parent), value.path)
- self.assertEqual('2', value.value)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_sort_by_deps_not_included(self, open_url_mock):
- calls = [
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- get_schema_response('/test:deps')
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
-
- parent = "/test:deps"
- schema_data = json.loads(
- SCHEMA_DATA['/test:deps'])
- schema = schema_data['data']
-
- values = {
- 'a': '1',
- 'b': '2'
- }
-
- vb = nso.ValueBuilder(nso.JsonRpc('http://localhost:8080/jsonrpc', 10, False))
- vb.build(parent, None, values, schema)
- values = list(vb.values)
- self.assertEqual(2, len(values))
- value = values[0]
- self.assertEqual('{0}/a'.format(parent), value.path)
- self.assertEqual('1', value.value)
- value = values[1]
- self.assertEqual('{0}/b'.format(parent), value.path)
- self.assertEqual('2', value.value)
-
- self.assertEqual(0, len(calls))
-
-
-class TestVerifyVersion(unittest.TestCase):
- def test_valid_versions(self):
- self.assertTrue(nso.verify_version_str('5.0', [(4, 6), (4, 5, 1)]))
- self.assertTrue(nso.verify_version_str('5.1.1', [(4, 6), (4, 5, 1)]))
- self.assertTrue(nso.verify_version_str('5.1.1.2', [(4, 6), (4, 5, 1)]))
- self.assertTrue(nso.verify_version_str('4.6', [(4, 6), (4, 5, 1)]))
- self.assertTrue(nso.verify_version_str('4.6.2', [(4, 6), (4, 5, 1)]))
- self.assertTrue(nso.verify_version_str('4.6.2.1', [(4, 6), (4, 5, 1)]))
- self.assertTrue(nso.verify_version_str('4.5.1', [(4, 6), (4, 5, 1)]))
- self.assertTrue(nso.verify_version_str('4.5.2', [(4, 6), (4, 5, 1)]))
- self.assertTrue(nso.verify_version_str('4.5.1.2', [(4, 6), (4, 5, 1)]))
-
- def test_invalid_versions(self):
- self.assertFalse(nso.verify_version_str('4.4', [(4, 6), (4, 5, 1)]))
- self.assertFalse(nso.verify_version_str('4.4.1', [(4, 6), (4, 5, 1)]))
- self.assertFalse(nso.verify_version_str('4.4.1.2', [(4, 6), (4, 5, 1)]))
- self.assertFalse(nso.verify_version_str('4.5.0', [(4, 6), (4, 5, 1)]))
-
-
-class TestValueSort(unittest.TestCase):
- def test_sort_parent_depend(self):
- values = [
- nso.ValueBuilder.Value('/test/list{entry}', '/test/list', 'CREATE', ['']),
- nso.ValueBuilder.Value('/test/list{entry}/description', '/test/list/description', 'TEST', ['']),
- nso.ValueBuilder.Value('/test/entry', '/test/entry', 'VALUE', ['/test/list', '/test/list/name'])
- ]
-
- result = [v.path for v in nso.ValueBuilder.sort_values(values)]
-
- self.assertEqual(['/test/list{entry}', '/test/entry', '/test/list{entry}/description'], result)
-
- def test_sort_break_direct_cycle(self):
- values = [
- nso.ValueBuilder.Value('/test/a', '/test/a', 'VALUE', ['/test/c']),
- nso.ValueBuilder.Value('/test/b', '/test/b', 'VALUE', ['/test/a']),
- nso.ValueBuilder.Value('/test/c', '/test/c', 'VALUE', ['/test/a'])
- ]
-
- result = [v.path for v in nso.ValueBuilder.sort_values(values)]
-
- self.assertEqual(['/test/a', '/test/b', '/test/c'], result)
-
- def test_sort_break_indirect_cycle(self):
- values = [
- nso.ValueBuilder.Value('/test/c', '/test/c', 'VALUE', ['/test/a']),
- nso.ValueBuilder.Value('/test/a', '/test/a', 'VALUE', ['/test/b']),
- nso.ValueBuilder.Value('/test/b', '/test/b', 'VALUE', ['/test/c'])
- ]
-
- result = [v.path for v in nso.ValueBuilder.sort_values(values)]
-
- self.assertEqual(['/test/a', '/test/c', '/test/b'], result)
-
- def test_sort_depend_on_self(self):
- values = [
- nso.ValueBuilder.Value('/test/a', '/test/a', 'VALUE', ['/test/a']),
- nso.ValueBuilder.Value('/test/b', '/test/b', 'VALUE', [])
- ]
-
- result = [v.path for v in nso.ValueBuilder.sort_values(values)]
-
- self.assertEqual(['/test/a', '/test/b'], result)
diff --git a/test/units/module_utils/network/slxos/test_slxos.py b/test/units/module_utils/network/slxos/test_slxos.py
deleted file mode 100644
index 3bb807ce99..0000000000
--- a/test/units/module_utils/network/slxos/test_slxos.py
+++ /dev/null
@@ -1,148 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from mock import MagicMock, patch, call
-
-from units.compat import unittest
-from ansible.module_utils.network.slxos import slxos
-
-
-class TestPluginCLIConfSLXOS(unittest.TestCase):
- """ Test class for SLX-OS CLI Conf Methods
- """
-
- def test_get_connection_established(self):
- """ Test get_connection with established connection
- """
- module = MagicMock()
- connection = slxos.get_connection(module)
- self.assertEqual(connection, module.slxos_connection)
-
- @patch('ansible.module_utils.network.slxos.slxos.Connection')
- def test_get_connection_new(self, connection):
- """ Test get_connection with new connection
- """
- socket_path = "little red riding hood"
- module = MagicMock(spec=[
- 'fail_json',
- ])
- module._socket_path = socket_path
-
- connection().get_capabilities.return_value = '{"network_api": "cliconf"}'
- returned_connection = slxos.get_connection(module)
- connection.assert_called_with(socket_path)
- self.assertEqual(returned_connection, module.slxos_connection)
-
- @patch('ansible.module_utils.network.slxos.slxos.Connection')
- def test_get_connection_incorrect_network_api(self, connection):
- """ Test get_connection with incorrect network_api response
- """
- socket_path = "little red riding hood"
- module = MagicMock(spec=[
- 'fail_json',
- ])
- module._socket_path = socket_path
- module.fail_json.side_effect = TypeError
-
- connection().get_capabilities.return_value = '{"network_api": "nope"}'
-
- with self.assertRaises(TypeError):
- slxos.get_connection(module)
-
- @patch('ansible.module_utils.network.slxos.slxos.Connection')
- def test_get_capabilities(self, connection):
- """ Test get_capabilities
- """
- socket_path = "little red riding hood"
- module = MagicMock(spec=[
- 'fail_json',
- ])
- module._socket_path = socket_path
- module.fail_json.side_effect = TypeError
-
- capabilities = {'network_api': 'cliconf'}
-
- connection().get_capabilities.return_value = json.dumps(capabilities)
-
- capabilities_returned = slxos.get_capabilities(module)
-
- self.assertEqual(capabilities, capabilities_returned)
-
- @patch('ansible.module_utils.network.slxos.slxos.Connection')
- def test_run_commands(self, connection):
- """ Test get_capabilities
- """
- module = MagicMock()
-
- commands = [
- 'hello',
- 'dolly',
- 'well hello',
- 'dolly',
- 'its so nice to have you back',
- 'where you belong',
- ]
-
- responses = [
- 'Dolly, never go away again1',
- 'Dolly, never go away again2',
- 'Dolly, never go away again3',
- 'Dolly, never go away again4',
- 'Dolly, never go away again5',
- 'Dolly, never go away again6',
- ]
-
- module.slxos_connection.get.side_effect = responses
-
- run_command_responses = slxos.run_commands(module, commands)
-
- calls = []
-
- for command in commands:
- calls.append(call(
- command,
- None,
- None
- ))
-
- module.slxos_connection.get.assert_has_calls(calls)
-
- self.assertEqual(responses, run_command_responses)
-
- @patch('ansible.module_utils.network.slxos.slxos.Connection')
- def test_load_config(self, connection):
- """ Test load_config
- """
- module = MagicMock()
-
- commands = [
- 'what does it take',
- 'to be',
- 'number one?',
- 'two is not a winner',
- 'and three nobody remember',
- ]
-
- slxos.load_config(module, commands)
-
- module.slxos_connection.edit_config.assert_called_once_with(commands)
diff --git a/test/units/module_utils/postgresql/test_postgres.py b/test/units/module_utils/postgresql/test_postgres.py
deleted file mode 100644
index d0ca60c1d2..0000000000
--- a/test/units/module_utils/postgresql/test_postgres.py
+++ /dev/null
@@ -1,322 +0,0 @@
-# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-import pytest
-
-import ansible.module_utils.postgres as pg
-
-
-INPUT_DICT = dict(
- session_role=dict(default=''),
- login_user=dict(default='postgres'),
- login_password=dict(default='test', no_log=True),
- login_host=dict(default='test'),
- login_unix_socket=dict(default=''),
- port=dict(type='int', default=5432, aliases=['login_port']),
- ssl_mode=dict(
- default='prefer',
- choices=['allow', 'disable', 'prefer', 'require', 'verify-ca', 'verify-full']
- ),
- ca_cert=dict(aliases=['ssl_rootcert']),
-)
-
-EXPECTED_DICT = dict(
- user=dict(default='postgres'),
- password=dict(default='test', no_log=True),
- host=dict(default='test'),
- port=dict(type='int', default=5432, aliases=['login_port']),
- sslmode=dict(
- default='prefer',
- choices=['allow', 'disable', 'prefer', 'require', 'verify-ca', 'verify-full']
- ),
- sslrootcert=dict(aliases=['ssl_rootcert']),
-)
-
-
-class TestPostgresCommonArgSpec():
-
- """
- Namespace for testing postgresql_common_arg_spec() function.
- """
-
- def test_postgres_common_argument_spec(self):
- """
- Test for postgresql_common_arg_spec() function.
-
- The tested function just returns a dictionary with the default
- parameters and their values for PostgreSQL modules.
- The return and expected dictionaries must be compared.
- """
- expected_dict = dict(
- login_user=dict(default='postgres'),
- login_password=dict(default='', no_log=True),
- login_host=dict(default=''),
- login_unix_socket=dict(default=''),
- port=dict(type='int', default=5432, aliases=['login_port']),
- ssl_mode=dict(
- default='prefer',
- choices=['allow', 'disable', 'prefer', 'require', 'verify-ca', 'verify-full']
- ),
- ca_cert=dict(aliases=['ssl_rootcert']),
- )
- assert pg.postgres_common_argument_spec() == expected_dict
-
-
-@pytest.fixture
-def m_psycopg2():
- """Return mock object for psycopg2 emulation."""
- global Cursor
- Cursor = None
-
- class Cursor():
- def __init__(self):
- self.passed_query = None
-
- def execute(self, query):
- self.passed_query = query
-
- def close(self):
- pass
-
- global DbConnection
- DbConnection = None
-
- class DbConnection():
- def __init__(self):
- pass
-
- def cursor(self, cursor_factory=None):
- return Cursor()
-
- def set_session(self, autocommit=None):
- pass
-
- def set_isolation_level(self, isolevel):
- pass
-
- class Extras():
- def __init__(self):
- self.DictCursor = True
-
- class Extensions():
- def __init__(self):
- self.ISOLATION_LEVEL_AUTOCOMMIT = True
-
- class DummyPsycopg2():
- def __init__(self):
- self.__version__ = '2.4.3'
- self.extras = Extras()
- self.extensions = Extensions()
-
- def connect(self, host=None, port=None, user=None,
- password=None, sslmode=None, sslrootcert=None):
- if user == 'Exception':
- raise Exception()
-
- return DbConnection()
-
- return DummyPsycopg2()
-
-
-class TestEnsureReqLibs():
-
- """
- Namespace for testing ensure_required_libs() function.
-
- If there is something wrong with libs, the function invokes fail_json()
- method of AnsibleModule object passed as an argument called 'module'.
- Therefore we must check:
- 1. value of err_msg attribute of m_ansible_module mock object.
- """
-
- @pytest.fixture(scope='class')
- def m_ansible_module(self):
- """Return an object of dummy AnsibleModule class."""
- class Dummym_ansible_module():
- def __init__(self):
- self.params = {'ca_cert': False}
- self.err_msg = ''
-
- def fail_json(self, msg):
- self.err_msg = msg
-
- return Dummym_ansible_module()
-
- def test_ensure_req_libs_has_not_psycopg2(self, m_ansible_module):
- """Test ensure_required_libs() with psycopg2 is None."""
- # HAS_PSYCOPG2 is False by default
- pg.ensure_required_libs(m_ansible_module)
- assert 'Failed to import the required Python library (psycopg2)' in m_ansible_module.err_msg
-
- def test_ensure_req_libs_has_psycopg2(self, m_ansible_module, monkeypatch):
- """Test ensure_required_libs() with psycopg2 is not None."""
- monkeypatch.setattr(pg, 'HAS_PSYCOPG2', True)
-
- pg.ensure_required_libs(m_ansible_module)
- assert m_ansible_module.err_msg == ''
-
- def test_ensure_req_libs_ca_cert(self, m_ansible_module, m_psycopg2, monkeypatch):
- """
- Test with module.params['ca_cert'], psycopg2 version is suitable.
- """
- m_ansible_module.params['ca_cert'] = True
- monkeypatch.setattr(pg, 'HAS_PSYCOPG2', True)
- monkeypatch.setattr(pg, 'psycopg2', m_psycopg2)
-
- pg.ensure_required_libs(m_ansible_module)
- assert m_ansible_module.err_msg == ''
-
- def test_ensure_req_libs_ca_cert_low_psycopg2_ver(self, m_ansible_module, m_psycopg2, monkeypatch):
- """
- Test with module.params['ca_cert'], psycopg2 version is wrong.
- """
- m_ansible_module.params['ca_cert'] = True
- monkeypatch.setattr(pg, 'HAS_PSYCOPG2', True)
- # Set wrong psycopg2 version number:
- psycopg2 = m_psycopg2
- psycopg2.__version__ = '2.4.2'
- monkeypatch.setattr(pg, 'psycopg2', psycopg2)
-
- pg.ensure_required_libs(m_ansible_module)
- assert 'psycopg2 must be at least 2.4.3' in m_ansible_module.err_msg
-
-
-@pytest.fixture(scope='class')
-def m_ansible_module():
- """Return an object of dummy AnsibleModule class."""
- class DummyAnsibleModule():
- def __init__(self):
- self.params = pg.postgres_common_argument_spec()
- self.err_msg = ''
- self.warn_msg = ''
-
- def fail_json(self, msg):
- self.err_msg = msg
-
- def warn(self, msg):
- self.warn_msg = msg
-
- return DummyAnsibleModule()
-
-
-class TestConnectToDb():
-
- """
- Namespace for testing connect_to_db() function.
-
- When some connection errors occure connect_to_db() caught any of them
- and invoke fail_json() or warn() methods of AnsibleModule object
- depending on the passed parameters.
- connect_to_db may return db_connection object or None if errors occured.
- Therefore we must check:
- 1. Values of err_msg and warn_msg attributes of m_ansible_module mock object.
- 2. Types of return objects (db_connection and cursor).
- """
-
- def test_connect_to_db(self, m_ansible_module, monkeypatch, m_psycopg2):
- """Test connect_to_db(), common test."""
- monkeypatch.setattr(pg, 'HAS_PSYCOPG2', True)
- monkeypatch.setattr(pg, 'psycopg2', m_psycopg2)
-
- conn_params = pg.get_conn_params(m_ansible_module, m_ansible_module.params)
- db_connection = pg.connect_to_db(m_ansible_module, conn_params)
- cursor = db_connection.cursor()
- # if errors, db_connection returned as None:
- assert isinstance(db_connection, DbConnection)
- assert isinstance(cursor, Cursor)
- assert m_ansible_module.err_msg == ''
- # The default behaviour, normal in this case:
- assert 'Database name has not been passed' in m_ansible_module.warn_msg
-
- def test_session_role(self, m_ansible_module, monkeypatch, m_psycopg2):
- """Test connect_to_db(), switch on session_role."""
- monkeypatch.setattr(pg, 'HAS_PSYCOPG2', True)
- monkeypatch.setattr(pg, 'psycopg2', m_psycopg2)
-
- m_ansible_module.params['session_role'] = 'test_role'
- conn_params = pg.get_conn_params(m_ansible_module, m_ansible_module.params)
- db_connection = pg.connect_to_db(m_ansible_module, conn_params)
- cursor = db_connection.cursor()
- # if errors, db_connection returned as None:
- assert isinstance(db_connection, DbConnection)
- assert isinstance(cursor, Cursor)
- assert m_ansible_module.err_msg == ''
- # The default behaviour, normal in this case:
- assert 'Database name has not been passed' in m_ansible_module.warn_msg
-
- def test_fail_on_conn_true(self, m_ansible_module, monkeypatch, m_psycopg2):
- """
- Test connect_to_db(), fail_on_conn arg passed as True (the default behavior).
- """
- monkeypatch.setattr(pg, 'HAS_PSYCOPG2', True)
- monkeypatch.setattr(pg, 'psycopg2', m_psycopg2)
-
- m_ansible_module.params['login_user'] = 'Exception' # causes Exception
-
- conn_params = pg.get_conn_params(m_ansible_module, m_ansible_module.params)
- db_connection = pg.connect_to_db(m_ansible_module, conn_params, fail_on_conn=True)
-
- assert 'unable to connect to database' in m_ansible_module.err_msg
- assert db_connection is None
-
- def test_fail_on_conn_false(self, m_ansible_module, monkeypatch, m_psycopg2):
- """
- Test connect_to_db(), fail_on_conn arg passed as False.
- """
- monkeypatch.setattr(pg, 'HAS_PSYCOPG2', True)
- monkeypatch.setattr(pg, 'psycopg2', m_psycopg2)
-
- m_ansible_module.params['login_user'] = 'Exception' # causes Exception
-
- conn_params = pg.get_conn_params(m_ansible_module, m_ansible_module.params)
- db_connection = pg.connect_to_db(m_ansible_module, conn_params, fail_on_conn=False)
-
- assert m_ansible_module.err_msg == ''
- assert 'PostgreSQL server is unavailable' in m_ansible_module.warn_msg
- assert db_connection is None
-
- def test_autocommit_true(self, m_ansible_module, monkeypatch, m_psycopg2):
- """
- Test connect_to_db(), autocommit arg passed as True (the default is False).
- """
- monkeypatch.setattr(pg, 'HAS_PSYCOPG2', True)
-
- # case 1: psycopg2.__version >= 2.4.2 (the default in m_psycopg2)
- monkeypatch.setattr(pg, 'psycopg2', m_psycopg2)
-
- conn_params = pg.get_conn_params(m_ansible_module, m_ansible_module.params)
- db_connection = pg.connect_to_db(m_ansible_module, conn_params, autocommit=True)
- cursor = db_connection.cursor()
-
- # if errors, db_connection returned as None:
- assert isinstance(db_connection, DbConnection)
- assert isinstance(cursor, Cursor)
- assert m_ansible_module.err_msg == ''
-
- # case 2: psycopg2.__version < 2.4.2
- m_psycopg2.__version__ = '2.4.1'
- monkeypatch.setattr(pg, 'psycopg2', m_psycopg2)
-
- conn_params = pg.get_conn_params(m_ansible_module, m_ansible_module.params)
- db_connection = pg.connect_to_db(m_ansible_module, conn_params, autocommit=True)
- cursor = db_connection.cursor()
-
- # if errors, db_connection returned as None:
- assert isinstance(db_connection, DbConnection)
- assert isinstance(cursor, Cursor)
- assert 'psycopg2 must be at least 2.4.3' in m_ansible_module.err_msg
-
-
-class TestGetConnParams():
-
- """Namespace for testing get_conn_params() function."""
-
- def test_get_conn_params_def(self, m_ansible_module):
- """Test get_conn_params(), warn_db_default kwarg is default."""
- assert pg.get_conn_params(m_ansible_module, INPUT_DICT) == EXPECTED_DICT
- assert m_ansible_module.warn_msg == 'Database name has not been passed, used default database to connect to.'
-
- def test_get_conn_params_warn_db_def_false(self, m_ansible_module):
- """Test get_conn_params(), warn_db_default kwarg is False."""
- assert pg.get_conn_params(m_ansible_module, INPUT_DICT, warn_db_default=False) == EXPECTED_DICT
- assert m_ansible_module.warn_msg == ''
diff --git a/test/units/module_utils/remote_management/dellemc/test_ome.py b/test/units/module_utils/remote_management/dellemc/test_ome.py
deleted file mode 100644
index c79e54c841..0000000000
--- a/test/units/module_utils/remote_management/dellemc/test_ome.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# -*- coding: utf-8 -*-
-
-#
-# Dell EMC OpenManage Ansible Modules
-# Version 2.0
-# Copyright (C) 2019 Dell Inc.
-
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# All rights reserved. Dell, EMC, and other trademarks are trademarks of Dell Inc. or its subsidiaries.
-# Other trademarks may be trademarks of their respective owners.
-#
-
-from __future__ import absolute_import
-
-import pytest
-from ansible.module_utils.urls import ConnectionError, SSLValidationError
-from ansible.module_utils.six.moves.urllib.error import URLError, HTTPError
-from ansible.module_utils.remote_management.dellemc.ome import RestOME
-from units.compat.mock import MagicMock
-import json
-
-
-class TestRestOME(object):
- @pytest.fixture
- def mock_response(self):
- mock_response = MagicMock()
- mock_response.getcode.return_value = 200
- mock_response.headers = mock_response.getheaders.return_value = {'X-Auth-Token': 'token_id'}
- mock_response.read.return_value = json.dumps({"value": "data"})
- return mock_response
-
- def test_invoke_request_with_session(self, mock_response, mocker):
- mocker.patch('ansible.module_utils.remote_management.dellemc.ome.open_url',
- return_value=mock_response)
- module_params = {'hostname': '192.168.0.1', 'username': 'username',
- 'password': 'password', "port": 443}
- req_session = True
- with RestOME(module_params, req_session) as obj:
- response = obj.invoke_request("/testpath", "GET")
- assert response.status_code == 200
- assert response.json_data == {"value": "data"}
- assert response.success is True
-
- def test_invoke_request_without_session(self, mock_response, mocker):
- mocker.patch('ansible.module_utils.remote_management.dellemc.ome.open_url',
- return_value=mock_response)
- module_params = {'hostname': '192.168.0.1', 'username': 'username',
- 'password': 'password', "port": 443}
- req_session = False
- with RestOME(module_params, req_session) as obj:
- response = obj.invoke_request("/testpath", "GET")
- assert response.status_code == 200
- assert response.json_data == {"value": "data"}
- assert response.success is True
-
- @pytest.mark.parametrize("exc", [URLError, SSLValidationError, ConnectionError])
- def test_invoke_request_error_case_handling(self, exc, mock_response, mocker):
- open_url_mock = mocker.patch('ansible.module_utils.remote_management.dellemc.ome.open_url',
- return_value=mock_response)
- open_url_mock.side_effect = exc("test")
- module_params = {'hostname': '192.168.0.1', 'username': 'username',
- 'password': 'password', "port": 443}
- req_session = False
- with pytest.raises(exc) as e:
- with RestOME(module_params, req_session) as obj:
- obj.invoke_request("/testpath", "GET")
-
- def test_invoke_request_http_error_handling(self, mock_response, mocker):
- open_url_mock = mocker.patch('ansible.module_utils.remote_management.dellemc.ome.open_url',
- return_value=mock_response)
- open_url_mock.side_effect = HTTPError('http://testhost.com/', 400,
- 'Bad Request Error', {}, None)
- module_params = {'hostname': '192.168.0.1', 'username': 'username',
- 'password': 'password', "port": 443}
- req_session = False
- with pytest.raises(HTTPError) as e:
- with RestOME(module_params, req_session) as obj:
- obj.invoke_request("/testpath", "GET")
diff --git a/test/units/module_utils/test_database.py b/test/units/module_utils/test_database.py
deleted file mode 100644
index 7a59d470a5..0000000000
--- a/test/units/module_utils/test_database.py
+++ /dev/null
@@ -1,100 +0,0 @@
-import pytest
-
-from ansible.module_utils.database import (
- pg_quote_identifier,
- SQLParseError,
-)
-
-# These are all valid strings
-# The results are based on interpreting the identifier as a table name
-VALID = {
- # User quoted
- '"public.table"': '"public.table"',
- '"public"."table"': '"public"."table"',
- '"schema test"."table test"': '"schema test"."table test"',
-
- # We quote part
- 'public.table': '"public"."table"',
- '"public".table': '"public"."table"',
- 'public."table"': '"public"."table"',
- 'schema test.table test': '"schema test"."table test"',
- '"schema test".table test': '"schema test"."table test"',
- 'schema test."table test"': '"schema test"."table test"',
-
- # Embedded double quotes
- 'table "test"': '"table ""test"""',
- 'public."table ""test"""': '"public"."table ""test"""',
- 'public.table "test"': '"public"."table ""test"""',
- 'schema "test".table': '"schema ""test"""."table"',
- '"schema ""test""".table': '"schema ""test"""."table"',
- '"""wat"""."""test"""': '"""wat"""."""test"""',
- # Sigh, handle these as well:
- '"no end quote': '"""no end quote"',
- 'schema."table': '"schema"."""table"',
- '"schema.table': '"""schema"."table"',
- 'schema."table.something': '"schema"."""table"."something"',
-
- # Embedded dots
- '"schema.test"."table.test"': '"schema.test"."table.test"',
- '"schema.".table': '"schema."."table"',
- '"schema."."table"': '"schema."."table"',
- 'schema.".table"': '"schema".".table"',
- '"schema".".table"': '"schema".".table"',
- '"schema.".".table"': '"schema.".".table"',
- # These are valid but maybe not what the user intended
- '."table"': '".""table"""',
- 'table.': '"table."',
-}
-
-INVALID = {
- ('test.too.many.dots', 'table'): 'PostgreSQL does not support table with more than 3 dots',
- ('"test.too".many.dots', 'database'): 'PostgreSQL does not support database with more than 1 dots',
- ('test.too."many.dots"', 'database'): 'PostgreSQL does not support database with more than 1 dots',
- ('"test"."too"."many"."dots"', 'database'): "PostgreSQL does not support database with more than 1 dots",
- ('"test"."too"."many"."dots"', 'schema'): "PostgreSQL does not support schema with more than 2 dots",
- ('"test"."too"."many"."dots"', 'table'): "PostgreSQL does not support table with more than 3 dots",
- ('"test"."too"."many"."dots"."for"."column"', 'column'): "PostgreSQL does not support column with more than 4 dots",
- ('"table "invalid" double quote"', 'table'): 'User escaped identifiers must escape extra quotes',
- ('"schema "invalid"""."table "invalid"', 'table'): 'User escaped identifiers must escape extra quotes',
- ('"schema."table"', 'table'): 'User escaped identifiers must escape extra quotes',
- ('"schema".', 'table'): 'Identifier name unspecified or unquoted trailing dot',
-}
-
-HOW_MANY_DOTS = (
- ('role', 'role', '"role"',
- 'PostgreSQL does not support role with more than 1 dots'),
- ('db', 'database', '"db"',
- 'PostgreSQL does not support database with more than 1 dots'),
- ('db.schema', 'schema', '"db"."schema"',
- 'PostgreSQL does not support schema with more than 2 dots'),
- ('db.schema.table', 'table', '"db"."schema"."table"',
- 'PostgreSQL does not support table with more than 3 dots'),
- ('db.schema.table.column', 'column', '"db"."schema"."table"."column"',
- 'PostgreSQL does not support column with more than 4 dots'),
-)
-
-VALID_QUOTES = ((test, VALID[test]) for test in sorted(VALID))
-INVALID_QUOTES = ((test[0], test[1], INVALID[test]) for test in sorted(INVALID))
-
-
-@pytest.mark.parametrize("identifier, quoted_identifier", VALID_QUOTES)
-def test_valid_quotes(identifier, quoted_identifier):
- assert pg_quote_identifier(identifier, 'table') == quoted_identifier
-
-
-@pytest.mark.parametrize("identifier, id_type, msg", INVALID_QUOTES)
-def test_invalid_quotes(identifier, id_type, msg):
- with pytest.raises(SQLParseError) as ex:
- pg_quote_identifier(identifier, id_type)
-
- ex.match(msg)
-
-
-@pytest.mark.parametrize("identifier, id_type, quoted_identifier, msg", HOW_MANY_DOTS)
-def test_how_many_dots(identifier, id_type, quoted_identifier, msg):
- assert pg_quote_identifier(identifier, id_type) == quoted_identifier
-
- with pytest.raises(SQLParseError) as ex:
- pg_quote_identifier('%s.more' % identifier, id_type)
-
- ex.match(msg)
diff --git a/test/units/module_utils/test_hetzner.py b/test/units/module_utils/test_hetzner.py
deleted file mode 100644
index fa099c3971..0000000000
--- a/test/units/module_utils/test_hetzner.py
+++ /dev/null
@@ -1,265 +0,0 @@
-# Copyright: (c) 2017 Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-import copy
-import json
-import pytest
-
-from mock import MagicMock
-from ansible.module_utils import hetzner
-
-
-class ModuleFailException(Exception):
- def __init__(self, msg, **kwargs):
- super(ModuleFailException, self).__init__(msg)
- self.fail_msg = msg
- self.fail_kwargs = kwargs
-
-
-def get_module_mock():
- def f(msg, **kwargs):
- raise ModuleFailException(msg, **kwargs)
-
- module = MagicMock()
- module.fail_json = f
- module.from_json = json.loads
- return module
-
-
-# ########################################################################################
-
-FETCH_URL_JSON_SUCCESS = [
- (
- (None, dict(
- body=json.dumps(dict(
- a='b'
- )).encode('utf-8'),
- )),
- None,
- (dict(
- a='b'
- ), None)
- ),
- (
- (None, dict(
- body=json.dumps(dict(
- error=dict(
- code="foo",
- status=400,
- message="bar",
- ),
- a='b'
- )).encode('utf-8'),
- )),
- ['foo'],
- (dict(
- error=dict(
- code="foo",
- status=400,
- message="bar",
- ),
- a='b'
- ), 'foo')
- ),
-]
-
-
-FETCH_URL_JSON_FAIL = [
- (
- (None, dict(
- body=json.dumps(dict(
- error=dict(
- code="foo",
- status=400,
- message="bar",
- ),
- )).encode('utf-8'),
- )),
- None,
- 'Request failed: 400 foo (bar)'
- ),
- (
- (None, dict(
- body=json.dumps(dict(
- error=dict(
- code="foo",
- status=400,
- message="bar",
- ),
- )).encode('utf-8'),
- )),
- ['bar'],
- 'Request failed: 400 foo (bar)'
- ),
-]
-
-
-@pytest.mark.parametrize("return_value, accept_errors, result", FETCH_URL_JSON_SUCCESS)
-def test_fetch_url_json(monkeypatch, return_value, accept_errors, result):
- module = get_module_mock()
- hetzner.fetch_url = MagicMock(return_value=return_value)
-
- assert hetzner.fetch_url_json(module, 'https://foo/bar', accept_errors=accept_errors) == result
-
-
-@pytest.mark.parametrize("return_value, accept_errors, result", FETCH_URL_JSON_FAIL)
-def test_fetch_url_json_fail(monkeypatch, return_value, accept_errors, result):
- module = get_module_mock()
- hetzner.fetch_url = MagicMock(return_value=return_value)
-
- with pytest.raises(ModuleFailException) as exc:
- hetzner.fetch_url_json(module, 'https://foo/bar', accept_errors=accept_errors)
-
- assert exc.value.fail_msg == result
- assert exc.value.fail_kwargs == dict()
-
-
-# ########################################################################################
-
-GET_FAILOVER_SUCCESS = [
- (
- '1.2.3.4',
- (None, dict(
- body=json.dumps(dict(
- failover=dict(
- active_server_ip='1.1.1.1',
- ip='1.2.3.4',
- netmask='255.255.255.255',
- )
- )).encode('utf-8'),
- )),
- '1.1.1.1',
- dict(
- active_server_ip='1.1.1.1',
- ip='1.2.3.4',
- netmask='255.255.255.255',
- )
- ),
-]
-
-
-GET_FAILOVER_FAIL = [
- (
- '1.2.3.4',
- (None, dict(
- body=json.dumps(dict(
- error=dict(
- code="foo",
- status=400,
- message="bar",
- ),
- )).encode('utf-8'),
- )),
- 'Request failed: 400 foo (bar)'
- ),
-]
-
-
-@pytest.mark.parametrize("ip, return_value, result, record", GET_FAILOVER_SUCCESS)
-def test_get_failover_record(monkeypatch, ip, return_value, result, record):
- module = get_module_mock()
- hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
-
- assert hetzner.get_failover_record(module, ip) == record
-
-
-@pytest.mark.parametrize("ip, return_value, result", GET_FAILOVER_FAIL)
-def test_get_failover_record_fail(monkeypatch, ip, return_value, result):
- module = get_module_mock()
- hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
-
- with pytest.raises(ModuleFailException) as exc:
- hetzner.get_failover_record(module, ip)
-
- assert exc.value.fail_msg == result
- assert exc.value.fail_kwargs == dict()
-
-
-@pytest.mark.parametrize("ip, return_value, result, record", GET_FAILOVER_SUCCESS)
-def test_get_failover(monkeypatch, ip, return_value, result, record):
- module = get_module_mock()
- hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
-
- assert hetzner.get_failover(module, ip) == result
-
-
-@pytest.mark.parametrize("ip, return_value, result", GET_FAILOVER_FAIL)
-def test_get_failover_fail(monkeypatch, ip, return_value, result):
- module = get_module_mock()
- hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
-
- with pytest.raises(ModuleFailException) as exc:
- hetzner.get_failover(module, ip)
-
- assert exc.value.fail_msg == result
- assert exc.value.fail_kwargs == dict()
-
-
-# ########################################################################################
-
-SET_FAILOVER_SUCCESS = [
- (
- '1.2.3.4',
- '1.1.1.1',
- (None, dict(
- body=json.dumps(dict(
- failover=dict(
- active_server_ip='1.1.1.2',
- )
- )).encode('utf-8'),
- )),
- ('1.1.1.2', True)
- ),
- (
- '1.2.3.4',
- '1.1.1.1',
- (None, dict(
- body=json.dumps(dict(
- error=dict(
- code="FAILOVER_ALREADY_ROUTED",
- status=400,
- message="Failover already routed",
- ),
- )).encode('utf-8'),
- )),
- ('1.1.1.1', False)
- ),
-]
-
-
-SET_FAILOVER_FAIL = [
- (
- '1.2.3.4',
- '1.1.1.1',
- (None, dict(
- body=json.dumps(dict(
- error=dict(
- code="foo",
- status=400,
- message="bar",
- ),
- )).encode('utf-8'),
- )),
- 'Request failed: 400 foo (bar)'
- ),
-]
-
-
-@pytest.mark.parametrize("ip, value, return_value, result", SET_FAILOVER_SUCCESS)
-def test_set_failover(monkeypatch, ip, value, return_value, result):
- module = get_module_mock()
- hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
-
- assert hetzner.set_failover(module, ip, value) == result
-
-
-@pytest.mark.parametrize("ip, value, return_value, result", SET_FAILOVER_FAIL)
-def test_set_failover_fail(monkeypatch, ip, value, return_value, result):
- module = get_module_mock()
- hetzner.fetch_url = MagicMock(return_value=copy.deepcopy(return_value))
-
- with pytest.raises(ModuleFailException) as exc:
- hetzner.set_failover(module, ip, value)
-
- assert exc.value.fail_msg == result
- assert exc.value.fail_kwargs == dict()
diff --git a/test/units/module_utils/test_known_hosts.py b/test/units/module_utils/test_known_hosts.py
deleted file mode 100644
index 04ace4268e..0000000000
--- a/test/units/module_utils/test_known_hosts.py
+++ /dev/null
@@ -1,116 +0,0 @@
-# -*- coding: utf-8 -*-
-# (c) 2015, Michael Scherer <mscherer@redhat.com>
-# Copyright (c) 2017 Ansible Project
-# 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 pytest
-
-from ansible.module_utils import known_hosts
-
-
-URLS = {
- 'ssh://one.example.org/example.git': {
- 'is_ssh_url': True,
- 'get_fqdn': 'one.example.org',
- 'add_host_key_cmd': " -t rsa one.example.org",
- 'port': None,
- },
- 'ssh+git://two.example.org/example.git': {
- 'is_ssh_url': True,
- 'get_fqdn': 'two.example.org',
- 'add_host_key_cmd': " -t rsa two.example.org",
- 'port': None,
- },
- 'rsync://three.example.org/user/example.git': {
- 'is_ssh_url': False,
- 'get_fqdn': 'three.example.org',
- 'add_host_key_cmd': None, # not called for non-ssh urls
- 'port': None,
- },
- 'git@four.example.org:user/example.git': {
- 'is_ssh_url': True,
- 'get_fqdn': 'four.example.org',
- 'add_host_key_cmd': " -t rsa four.example.org",
- 'port': None,
- },
- 'git+ssh://five.example.org/example.git': {
- 'is_ssh_url': True,
- 'get_fqdn': 'five.example.org',
- 'add_host_key_cmd': " -t rsa five.example.org",
- 'port': None,
- },
- 'ssh://six.example.org:21/example.org': {
- # ssh on FTP Port?
- 'is_ssh_url': True,
- 'get_fqdn': 'six.example.org',
- 'add_host_key_cmd': " -t rsa -p 21 six.example.org",
- 'port': '21',
- },
- 'ssh://[2001:DB8::abcd:abcd]/example.git': {
- 'is_ssh_url': True,
- 'get_fqdn': '[2001:DB8::abcd:abcd]',
- 'add_host_key_cmd': " -t rsa [2001:DB8::abcd:abcd]",
- 'port': None,
- },
- 'ssh://[2001:DB8::abcd:abcd]:22/example.git': {
- 'is_ssh_url': True,
- 'get_fqdn': '[2001:DB8::abcd:abcd]',
- 'add_host_key_cmd': " -t rsa -p 22 [2001:DB8::abcd:abcd]",
- 'port': '22',
- },
- 'username@[2001:DB8::abcd:abcd]/example.git': {
- 'is_ssh_url': True,
- 'get_fqdn': '[2001:DB8::abcd:abcd]',
- 'add_host_key_cmd': " -t rsa [2001:DB8::abcd:abcd]",
- 'port': None,
- },
- 'username@[2001:DB8::abcd:abcd]:path/example.git': {
- 'is_ssh_url': True,
- 'get_fqdn': '[2001:DB8::abcd:abcd]',
- 'add_host_key_cmd': " -t rsa [2001:DB8::abcd:abcd]",
- 'port': None,
- },
- 'ssh://internal.git.server:7999/repos/repo.git': {
- 'is_ssh_url': True,
- 'get_fqdn': 'internal.git.server',
- 'add_host_key_cmd': " -t rsa -p 7999 internal.git.server",
- 'port': '7999',
- },
-}
-
-
-@pytest.mark.parametrize('url, is_ssh_url', ((k, URLS[k]['is_ssh_url']) for k in sorted(URLS)))
-def test_is_ssh_url(url, is_ssh_url):
- assert known_hosts.is_ssh_url(url) == is_ssh_url
-
-
-@pytest.mark.parametrize('url, fqdn, port', ((k, URLS[k]['get_fqdn'], URLS[k]['port']) for k in sorted(URLS)))
-def test_get_fqdn_and_port(url, fqdn, port):
- assert known_hosts.get_fqdn_and_port(url) == (fqdn, port)
-
-
-@pytest.mark.parametrize('fqdn, port, add_host_key_cmd, stdin',
- ((URLS[k]['get_fqdn'], URLS[k]['port'], URLS[k]['add_host_key_cmd'], {})
- for k in sorted(URLS) if URLS[k]['is_ssh_url']),
- indirect=['stdin'])
-def test_add_host_key(am, mocker, fqdn, port, add_host_key_cmd):
- get_bin_path = mocker.MagicMock()
- get_bin_path.return_value = keyscan_cmd = "/custom/path/ssh-keyscan"
- am.get_bin_path = get_bin_path
-
- run_command = mocker.MagicMock()
- run_command.return_value = (0, "Needs output, otherwise thinks ssh-keyscan timed out'", "")
- am.run_command = run_command
-
- append_to_file = mocker.MagicMock()
- append_to_file.return_value = (None,)
- am.append_to_file = append_to_file
-
- mocker.patch('os.path.isdir', return_value=True)
- mocker.patch('os.path.exists', return_value=True)
-
- known_hosts.add_host_key(am, fqdn, port=port)
- run_command.assert_called_with(keyscan_cmd + add_host_key_cmd)
diff --git a/test/units/module_utils/test_kubevirt.py b/test/units/module_utils/test_kubevirt.py
deleted file mode 100644
index 07c1a5424d..0000000000
--- a/test/units/module_utils/test_kubevirt.py
+++ /dev/null
@@ -1,51 +0,0 @@
-import json
-import pytest
-
-from ansible.module_utils import kubevirt as mymodule
-
-
-def test_simple_merge_dicts():
- dict1 = {'labels': {'label1': 'value'}}
- dict2 = {'labels': {'label2': 'value'}}
- dict3 = json.dumps({'labels': {'label1': 'value', 'label2': 'value'}}, sort_keys=True)
- assert dict3 == json.dumps(dict(mymodule.KubeVirtRawModule.merge_dicts(dict1, dict2)), sort_keys=True)
-
-
-def test_simple_multi_merge_dicts():
- dict1 = {'labels': {'label1': 'value', 'label3': 'value'}}
- dict2 = {'labels': {'label2': 'value'}}
- dict3 = json.dumps({'labels': {'label1': 'value', 'label2': 'value', 'label3': 'value'}}, sort_keys=True)
- assert dict3 == json.dumps(dict(mymodule.KubeVirtRawModule.merge_dicts(dict1, dict2)), sort_keys=True)
-
-
-def test_double_nested_merge_dicts():
- dict1 = {'metadata': {'labels': {'label1': 'value', 'label3': 'value'}}}
- dict2 = {'metadata': {'labels': {'label2': 'value'}}}
- dict3 = json.dumps({'metadata': {'labels': {'label1': 'value', 'label2': 'value', 'label3': 'value'}}}, sort_keys=True)
- assert dict3 == json.dumps(dict(mymodule.KubeVirtRawModule.merge_dicts(dict1, dict2)), sort_keys=True)
-
-
-@pytest.mark.parametrize("lval, operations, rval, result", [
- ('v1', ['<', '<='], 'v2', True),
- ('v1', ['>', '>=', '=='], 'v2', False),
- ('v1', ['>'], 'v1alpha1', True),
- ('v1', ['==', '<', '<='], 'v1alpha1', False),
- ('v1beta5', ['==', '<=', '>='], 'v1beta5', True),
- ('v1beta5', ['<', '>', '!='], 'v1beta5', False),
-
-])
-def test_kubeapiversion_comparisons(lval, operations, rval, result):
- KubeAPIVersion = mymodule.KubeAPIVersion
- for op in operations:
- test = '(KubeAPIVersion("{0}") {1} KubeAPIVersion("{2}")) == {3}'.format(lval, op, rval, result)
- assert eval(test)
-
-
-@pytest.mark.parametrize("ver", ('nope', 'v1delta7', '1.5', 'v1beta', 'v'))
-def test_kubeapiversion_unsupported_versions(ver):
- threw = False
- try:
- mymodule.KubeAPIVersion(ver)
- except ValueError:
- threw = True
- assert threw
diff --git a/test/units/module_utils/test_utm_utils.py b/test/units/module_utils/test_utm_utils.py
deleted file mode 100644
index 5bad47ab88..0000000000
--- a/test/units/module_utils/test_utm_utils.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# This code is part of Ansible, but is an independent component.
-# This particular file snippet, and this file snippet only, is BSD licensed.
-# Modules you write using this snippet, which is embedded dynamically by Ansible
-# still belong to the author of the module, and may assign their own license
-# to the complete work.
-#
-# Copyright: (c) 2018, Johannes Brunswicker <johannes.brunswicker@gmail.com>
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from ansible.module_utils.utm_utils import UTM
-
-
-class FakeModule:
- def __init__(self, params):
- self.params = params
-
-
-def test_combine_headers_returns_only_default():
- expected = {"Accept": "application/json", "Content-type": "application/json"}
- module = FakeModule(
- params={'utm_protocol': 'utm_protocol', 'utm_host': 'utm_host', 'utm_port': 1234, 'utm_token': 'utm_token',
- 'name': 'FakeName', 'headers': {}})
- result = UTM(module, "endpoint", [])._combine_headers()
- assert result == expected
-
-
-def test_combine_headers_returns_only_default2():
- expected = {"Accept": "application/json", "Content-type": "application/json"}
- module = FakeModule(
- params={'utm_protocol': 'utm_protocol', 'utm_host': 'utm_host', 'utm_port': 1234, 'utm_token': 'utm_token',
- 'name': 'FakeName'})
- result = UTM(module, "endpoint", [])._combine_headers()
- assert result == expected
-
-
-def test_combine_headers_returns_combined():
- expected = {"Accept": "application/json", "Content-type": "application/json",
- "extraHeader": "extraHeaderValue"}
- module = FakeModule(params={'utm_protocol': 'utm_protocol', 'utm_host': 'utm_host', 'utm_port': 1234,
- 'utm_token': 'utm_token', 'name': 'FakeName',
- "headers": {"extraHeader": "extraHeaderValue"}})
- result = UTM(module, "endpoint", [])._combine_headers()
- assert result == expected
diff --git a/test/units/module_utils/xenserver/FakeAnsibleModule.py b/test/units/module_utils/xenserver/FakeAnsibleModule.py
deleted file mode 100644
index b02ad4a136..0000000000
--- a/test/units/module_utils/xenserver/FakeAnsibleModule.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-
-class AnsibleModuleException(Exception):
- def __init__(self, *args, **kwargs):
- self.args = args
- self.kwargs = kwargs
-
-
-class ExitJsonException(AnsibleModuleException):
- pass
-
-
-class FailJsonException(AnsibleModuleException):
- pass
-
-
-class FakeAnsibleModule:
- def __init__(self, params=None, check_mode=False):
- self.params = params
- self.check_mode = check_mode
-
- def exit_json(self, *args, **kwargs):
- raise ExitJsonException(*args, **kwargs)
-
- def fail_json(self, *args, **kwargs):
- raise FailJsonException(*args, **kwargs)
diff --git a/test/units/module_utils/xenserver/FakeXenAPI.py b/test/units/module_utils/xenserver/FakeXenAPI.py
deleted file mode 100644
index dc657a6a09..0000000000
--- a/test/units/module_utils/xenserver/FakeXenAPI.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-FAKE_API_VERSION = "1.1"
-
-
-class Failure(Exception):
- def __init__(self, details):
- self.details = details
-
- def __str__(self):
- return str(self.details)
-
-
-class Session(object):
- def __init__(self, uri, transport=None, encoding=None, verbose=0,
- allow_none=1, ignore_ssl=False):
-
- self.transport = transport
- self._session = None
- self.last_login_method = None
- self.last_login_params = None
- self.API_version = FAKE_API_VERSION
-
- def _get_api_version(self):
- return FAKE_API_VERSION
-
- def _login(self, method, params):
- self._session = "OpaqueRef:fake-xenapi-session-ref"
- self.last_login_method = method
- self.last_login_params = params
- self.API_version = self._get_api_version()
-
- def _logout(self):
- self._session = None
- self.last_login_method = None
- self.last_login_params = None
- self.API_version = FAKE_API_VERSION
-
- def xenapi_request(self, methodname, params):
- if methodname.startswith('login'):
- self._login(methodname, params)
- return None
- elif methodname == 'logout' or methodname == 'session.logout':
- self._logout()
- return None
- else:
- # Should be patched with mocker.patch().
- return None
-
- def __getattr__(self, name):
- if name == 'handle':
- return self._session
- elif name == 'xenapi':
- # Should be patched with mocker.patch().
- return None
- elif name.startswith('login') or name.startswith('slave_local'):
- return lambda *params: self._login(name, params)
- elif name == 'logout':
- return self._logout
-
-
-def xapi_local():
- return Session("http://_var_lib_xcp_xapi/")
diff --git a/test/units/module_utils/xenserver/common.py b/test/units/module_utils/xenserver/common.py
deleted file mode 100644
index ea58c6455b..0000000000
--- a/test/units/module_utils/xenserver/common.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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
-
-
-def fake_xenapi_ref(xenapi_class):
- return "OpaqueRef:fake-xenapi-%s-ref" % xenapi_class
-
-
-testcase_bad_xenapi_refs = {
- "params": [
- None,
- '',
- 'OpaqueRef:NULL',
- ],
- "ids": [
- 'none',
- 'empty',
- 'ref-null',
- ],
-}
diff --git a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-1-facts.json b/test/units/module_utils/xenserver/fixtures/ansible-test-vm-1-facts.json
deleted file mode 100644
index add2dcf4b0..0000000000
--- a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-1-facts.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "cdrom": {
- "type": "none"
- },
- "customization_agent": "native",
- "disks": [
- {
- "name": "ansible-test-vm-1-C",
- "name_desc": "C:\\",
- "os_device": "xvda",
- "size": 42949672960,
- "sr": "Ansible Test Storage 1",
- "sr_uuid": "767b30e4-f8db-a83d-8ba7-f5e6e732e06f",
- "vbd_userdevice": "0"
- }
- ],
- "domid": "143",
- "folder": "/Ansible/Test",
- "hardware": {
- "memory_mb": 2048,
- "num_cpu_cores_per_socket": 2,
- "num_cpus": 2
- },
- "home_server": "",
- "is_template": false,
- "name": "ansible-test-vm-1",
- "name_desc": "Created by Ansible",
- "networks": [
- {
- "gateway": "10.0.0.1",
- "gateway6": "",
- "ip": "10.0.0.2",
- "ip6": [
- "fe80:0000:0000:0000:11e1:12c9:ef3b:75a0"
- ],
- "mac": "7a:a6:48:1e:31:46",
- "mtu": "1500",
- "name": "Host internal management network",
- "netmask": "255.255.255.0",
- "prefix": "24",
- "prefix6": "",
- "vif_device": "0"
- }
- ],
- "other_config": {
- "base_template_name": "Windows Server 2016 (64-bit)",
- "folder": "/Ansible/Test",
- "import_task": "OpaqueRef:e43eb71c-45d6-5351-09ff-96e4fb7d0fa5",
- "install-methods": "cdrom",
- "instant": "true",
- "mac_seed": "366fe8e0-878b-4320-8731-90d1ed3c0b93"
- },
- "platform": {
- "acpi": "1",
- "apic": "true",
- "cores-per-socket": "2",
- "device_id": "0002",
- "hpet": "true",
- "nx": "true",
- "pae": "true",
- "timeoffset": "-28800",
- "vga": "std",
- "videoram": "8",
- "viridian": "true",
- "viridian_reference_tsc": "true",
- "viridian_time_ref_count": "true"
- },
- "state": "poweredon",
- "uuid": "81c373d7-a407-322f-911b-31386eb5215d",
- "xenstore_data": {
- "vm-data": ""
- }
-}
diff --git a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-1-params.json b/test/units/module_utils/xenserver/fixtures/ansible-test-vm-1-params.json
deleted file mode 100644
index 7097696685..0000000000
--- a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-1-params.json
+++ /dev/null
@@ -1,707 +0,0 @@
-{
- "SR": {
- "OpaqueRef:f746e964-e0fe-c36d-d60b-6897cfde583f": {
- "PBDs": [],
- "VDIs": [],
- "allowed_operations": [
- "unplug",
- "plug",
- "pbd_create",
- "update",
- "pbd_destroy",
- "vdi_resize",
- "vdi_clone",
- "scan",
- "vdi_snapshot",
- "vdi_mirror",
- "vdi_create",
- "vdi_destroy"
- ],
- "blobs": {},
- "clustered": false,
- "content_type": "",
- "current_operations": {},
- "introduced_by": "OpaqueRef:NULL",
- "is_tools_sr": false,
- "local_cache_enabled": false,
- "name_description": "",
- "name_label": "Ansible Test Storage 1",
- "other_config": {
- "auto-scan": "false"
- },
- "physical_size": "2521133219840",
- "physical_utilisation": "1551485632512",
- "shared": true,
- "sm_config": {
- "allocation": "thick",
- "devserial": "scsi-3600a098038302d353624495242443848",
- "multipathable": "true",
- "use_vhd": "true"
- },
- "tags": [],
- "type": "lvmohba",
- "uuid": "767b30e4-f8db-a83d-8ba7-f5e6e732e06f",
- "virtual_allocation": "1556925644800"
- }
- },
- "VBD": {
- "OpaqueRef:1c0a7c6d-09e5-9b2c-bbe3-9a73aadcff9f": {
- "VDI": "OpaqueRef:NULL",
- "VM": "OpaqueRef:43a1b8d4-da96-cb08-10f5-fb368abed19c",
- "allowed_operations": [
- "attach",
- "unpause",
- "insert",
- "pause"
- ],
- "bootable": false,
- "current_operations": {},
- "currently_attached": true,
- "device": "xvdd",
- "empty": true,
- "metrics": "OpaqueRef:1a36eae4-87c8-0945-cee9-c85a71fd843f",
- "mode": "RO",
- "other_config": {},
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "storage_lock": false,
- "type": "CD",
- "unpluggable": true,
- "userdevice": "3",
- "uuid": "e6aacd53-a2c8-649f-b405-93fcb811411a"
- },
- "OpaqueRef:ea4a4088-19c3-6db6-ebdf-c3c0ee4405a3": {
- "VDI": "OpaqueRef:fd20510d-e9ca-b966-3b98-4ae547dacf9a",
- "VM": "OpaqueRef:43a1b8d4-da96-cb08-10f5-fb368abed19c",
- "allowed_operations": [
- "attach",
- "unpause",
- "unplug",
- "unplug_force",
- "pause"
- ],
- "bootable": true,
- "current_operations": {},
- "currently_attached": true,
- "device": "xvda",
- "empty": false,
- "metrics": "OpaqueRef:ddbd70d4-7dde-b51e-6208-eb434b300009",
- "mode": "RW",
- "other_config": {
- "owner": "true"
- },
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "storage_lock": false,
- "type": "Disk",
- "unpluggable": true,
- "userdevice": "0",
- "uuid": "ffd6de9c-c416-1d52-3e9d-3bcbf567245e"
- }
- },
- "VDI": {
- "OpaqueRef:fd20510d-e9ca-b966-3b98-4ae547dacf9a": {
- "SR": "OpaqueRef:f746e964-e0fe-c36d-d60b-6897cfde583f",
- "VBDs": [
- "OpaqueRef:ea4a4088-19c3-6db6-ebdf-c3c0ee4405a3"
- ],
- "allow_caching": false,
- "allowed_operations": [
- "clone",
- "snapshot"
- ],
- "crash_dumps": [],
- "current_operations": {},
- "is_a_snapshot": false,
- "is_tools_iso": false,
- "location": "b807f67b-3f37-4a6e-ad6c-033f812ab093",
- "managed": true,
- "metadata_latest": false,
- "metadata_of_pool": "",
- "missing": false,
- "name_description": "C:\\",
- "name_label": "ansible-test-vm-1-C",
- "on_boot": "persist",
- "other_config": {},
- "parent": "OpaqueRef:NULL",
- "physical_utilisation": "43041947648",
- "read_only": false,
- "sharable": false,
- "sm_config": {
- "host_OpaqueRef:07a8da76-f1cf-f3b5-a531-6b751384f770": "RW",
- "read-caching-enabled-on-92ac8132-276b-4d0f-9d3a-54db51e4a438": "false",
- "read-caching-reason-92ac8132-276b-4d0f-9d3a-54db51e4a438": "LICENSE_RESTRICTION",
- "vdi_type": "vhd"
- },
- "snapshot_of": "OpaqueRef:NULL",
- "snapshot_time": "19700101T00:00:00Z",
- "snapshots": [],
- "storage_lock": false,
- "tags": [],
- "type": "system",
- "uuid": "b807f67b-3f37-4a6e-ad6c-033f812ab093",
- "virtual_size": "42949672960",
- "xenstore_data": {}
- }
- },
- "VIF": {
- "OpaqueRef:38da2120-6086-5043-8383-ab0a53ede42a": {
- "MAC": "7a:a6:48:1e:31:46",
- "MAC_autogenerated": false,
- "MTU": "1500",
- "VM": "OpaqueRef:43a1b8d4-da96-cb08-10f5-fb368abed19c",
- "allowed_operations": [
- "attach",
- "unplug"
- ],
- "current_operations": {},
- "currently_attached": true,
- "device": "0",
- "ipv4_addresses": [
- "10.0.0.2/24"
- ],
- "ipv4_allowed": [],
- "ipv4_configuration_mode": "Static",
- "ipv4_gateway": "10.0.0.1",
- "ipv6_addresses": [
- ""
- ],
- "ipv6_allowed": [],
- "ipv6_configuration_mode": "None",
- "ipv6_gateway": "",
- "locking_mode": "network_default",
- "metrics": "OpaqueRef:15502939-df0f-0095-1ce3-e51367199d27",
- "network": "OpaqueRef:8a404c5e-5673-ab69-5d6f-5a35a33b8724",
- "other_config": {},
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "uuid": "bd108d25-488a-f9b5-4c7b-02d40f1e38a8"
- }
- },
- "VM": {
- "OpaqueRef:43a1b8d4-da96-cb08-10f5-fb368abed19c": {
- "HVM_boot_params": {
- "order": "dc"
- },
- "HVM_boot_policy": "BIOS order",
- "HVM_shadow_multiplier": 1.0,
- "PCI_bus": "",
- "PV_args": "",
- "PV_bootloader": "",
- "PV_bootloader_args": "",
- "PV_kernel": "",
- "PV_legacy_args": "",
- "PV_ramdisk": "",
- "VBDs": [
- "OpaqueRef:1c0a7c6d-09e5-9b2c-bbe3-9a73aadcff9f",
- "OpaqueRef:ea4a4088-19c3-6db6-ebdf-c3c0ee4405a3"
- ],
- "VCPUs_at_startup": "2",
- "VCPUs_max": "2",
- "VCPUs_params": {},
- "VGPUs": [],
- "VIFs": [
- "OpaqueRef:38da2120-6086-5043-8383-ab0a53ede42a"
- ],
- "VTPMs": [],
- "actions_after_crash": "restart",
- "actions_after_reboot": "restart",
- "actions_after_shutdown": "destroy",
- "affinity": "OpaqueRef:NULL",
- "allowed_operations": [
- "changing_dynamic_range",
- "migrate_send",
- "pool_migrate",
- "changing_VCPUs_live",
- "suspend",
- "hard_reboot",
- "hard_shutdown",
- "clean_reboot",
- "clean_shutdown",
- "pause",
- "checkpoint",
- "snapshot"
- ],
- "appliance": "OpaqueRef:NULL",
- "attached_PCIs": [],
- "bios_strings": {
- "bios-vendor": "Xen",
- "bios-version": "",
- "hp-rombios": "",
- "oem-1": "Xen",
- "oem-2": "MS_VM_CERT/SHA1/bdbeb6e0a816d43fa6d3fe8aaef04c2bad9d3e3d",
- "system-manufacturer": "Xen",
- "system-product-name": "HVM domU",
- "system-serial-number": "",
- "system-version": ""
- },
- "blobs": {},
- "blocked_operations": {},
- "children": [],
- "consoles": [
- "OpaqueRef:4fa7d34e-1fb6-9e88-1b21-41a3c6550d8b"
- ],
- "crash_dumps": [],
- "current_operations": {},
- "domarch": "",
- "domid": "143",
- "generation_id": "3274224479562869847:6952848762503845513",
- "guest_metrics": "OpaqueRef:453f21be-954d-2ca8-e38e-09741e91350c",
- "ha_always_run": false,
- "ha_restart_priority": "",
- "hardware_platform_version": "0",
- "has_vendor_device": false,
- "is_a_snapshot": false,
- "is_a_template": false,
- "is_control_domain": false,
- "is_default_template": false,
- "is_snapshot_from_vmpp": false,
- "is_vmss_snapshot": false,
- "last_boot_CPU_flags": {
- "features": "17cbfbff-f7fa3223-2d93fbff-00000023-00000001-000007ab-00000000-00000000-00001000-0c000000",
- "vendor": "GenuineIntel"
- },
- "last_booted_record": "",
- "memory_dynamic_max": "2147483648",
- "memory_dynamic_min": "2147483648",
- "memory_overhead": "20971520",
- "memory_static_max": "2147483648",
- "memory_static_min": "1073741824",
- "memory_target": "2147483648",
- "metrics": "OpaqueRef:6eede779-4e55-7cfb-8b8a-e4b9becf770b",
- "name_description": "Created by Ansible",
- "name_label": "ansible-test-vm-1",
- "order": "0",
- "other_config": {
- "base_template_name": "Windows Server 2016 (64-bit)",
- "folder": "/Ansible/Test",
- "import_task": "OpaqueRef:e43eb71c-45d6-5351-09ff-96e4fb7d0fa5",
- "install-methods": "cdrom",
- "instant": "true",
- "mac_seed": "366fe8e0-878b-4320-8731-90d1ed3c0b93"
- },
- "parent": "OpaqueRef:NULL",
- "platform": {
- "acpi": "1",
- "apic": "true",
- "cores-per-socket": "2",
- "device_id": "0002",
- "hpet": "true",
- "nx": "true",
- "pae": "true",
- "timeoffset": "-28800",
- "vga": "std",
- "videoram": "8",
- "viridian": "true",
- "viridian_reference_tsc": "true",
- "viridian_time_ref_count": "true"
- },
- "power_state": "Running",
- "protection_policy": "OpaqueRef:NULL",
- "recommendations": "<restrictions><restriction field=\"memory-static-max\" max=\"1649267441664\"/><restriction field=\"vcpus-max\" max=\"32\"/><restriction field=\"has-vendor-device\" value=\"true\"/><restriction max=\"255\" property=\"number-of-vbds\"/><restriction max=\"7\" property=\"number-of-vifs\"/></restrictions>",
- "reference_label": "windows-server-2016-64bit",
- "requires_reboot": false,
- "resident_on": "OpaqueRef:07a8da76-f1cf-f3b5-a531-6b751384f770",
- "shutdown_delay": "0",
- "snapshot_info": {},
- "snapshot_metadata": "",
- "snapshot_of": "OpaqueRef:NULL",
- "snapshot_schedule": "OpaqueRef:NULL",
- "snapshot_time": "19700101T00:00:00Z",
- "snapshots": [],
- "start_delay": "0",
- "suspend_SR": "OpaqueRef:NULL",
- "suspend_VDI": "OpaqueRef:NULL",
- "tags": [],
- "transportable_snapshot_id": "",
- "user_version": "1",
- "uuid": "81c373d7-a407-322f-911b-31386eb5215d",
- "version": "0",
- "xenstore_data": {
- "vm-data": ""
- }
- }
- },
- "VM_guest_metrics": {
- "OpaqueRef:453f21be-954d-2ca8-e38e-09741e91350c": {
- "PV_drivers_detected": true,
- "PV_drivers_up_to_date": true,
- "PV_drivers_version": {
- "build": "1020",
- "major": "7",
- "micro": "0",
- "minor": "1"
- },
- "can_use_hotplug_vbd": "yes",
- "can_use_hotplug_vif": "yes",
- "disks": {},
- "last_updated": "20190113T19:40:34Z",
- "live": true,
- "memory": {},
- "networks": {
- "0/ip": "10.0.0.2",
- "0/ipv6/0": "fe80:0000:0000:0000:11e1:12c9:ef3b:75a0"
- },
- "os_version": {
- "distro": "windows",
- "major": "6",
- "minor": "2",
- "name": "Microsoft Windows Server 2016 Standard|C:\\Windows|\\Device\\Harddisk0\\Partition2",
- "spmajor": "0",
- "spminor": "0"
- },
- "other": {
- "data-ts": "1",
- "error": "WTSQueryUserToken : 1008 failed.",
- "feature-balloon": "1",
- "feature-poweroff": "1",
- "feature-reboot": "1",
- "feature-s3": "1",
- "feature-s4": "1",
- "feature-setcomputername": "1",
- "feature-static-ip-setting": "1",
- "feature-suspend": "1",
- "feature-ts": "1",
- "feature-ts2": "1",
- "feature-xs-batcmd": "1",
- "has-vendor-device": "0",
- "platform-feature-multiprocessor-suspend": "1"
- },
- "other_config": {},
- "uuid": "9ea6803f-12ca-3d6a-47b7-c90a33b67b98"
- }
- },
- "VM_metrics": {
- "OpaqueRef:6eede779-4e55-7cfb-8b8a-e4b9becf770b": {
- "VCPUs_CPU": {},
- "VCPUs_flags": {},
- "VCPUs_number": "2",
- "VCPUs_params": {},
- "VCPUs_utilisation": {},
- "hvm": true,
- "install_time": "20190113T19:31:47Z",
- "last_updated": "19700101T00:00:00Z",
- "memory_actual": "2147475456",
- "nested_virt": false,
- "nomigrate": false,
- "other_config": {},
- "start_time": "20190113T19:38:59Z",
- "state": [],
- "uuid": "c67fadf7-8143-0c92-c772-cd3901c18e70"
- }
- },
- "host": {
- "OpaqueRef:07a8da76-f1cf-f3b5-a531-6b751384f770": {
- "API_version_major": "2",
- "API_version_minor": "7",
- "API_version_vendor": "XenSource",
- "API_version_vendor_implementation": {},
- "PBDs": [],
- "PCIs": [],
- "PGPUs": [],
- "PIFs": [],
- "address": "10.0.0.1",
- "allowed_operations": [
- "vm_migrate",
- "provision",
- "vm_resume",
- "evacuate",
- "vm_start"
- ],
- "bios_strings": {},
- "blobs": {},
- "capabilities": [
- "xen-3.0-x86_64",
- "xen-3.0-x86_32p",
- "hvm-3.0-x86_32",
- "hvm-3.0-x86_32p",
- "hvm-3.0-x86_64",
- ""
- ],
- "chipset_info": {
- "iommu": "true"
- },
- "control_domain": "OpaqueRef:a2a31555-f232-822b-8f36-10d75d44b79c",
- "cpu_configuration": {},
- "cpu_info": {
- "cpu_count": "40",
- "family": "6",
- "features": "7ffefbff-bfebfbff-00000021-2c100800",
- "features_hvm": "17cbfbff-f7fa3223-2d93fbff-00000023-00000001-000007ab-00000000-00000000-00001000-0c000000",
- "features_pv": "17c9cbf5-f6f83203-2191cbf5-00000023-00000001-00000329-00000000-00000000-00001000-0c000000",
- "flags": "fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc eagerfpu pni pclmulqdq monitor est ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb pln pts dtherm fsgsbase bmi1 avx2 bmi2 erms xsaveopt cqm_llc cqm_occup_llc",
- "model": "63",
- "modelname": "Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz",
- "socket_count": "2",
- "speed": "2597.064",
- "stepping": "2",
- "vendor": "GenuineIntel"
- },
- "crash_dump_sr": "OpaqueRef:ed72d7bf-4e53-67fc-17f5-e27b203042ba",
- "crashdumps": [],
- "current_operations": {},
- "display": "enabled",
- "edition": "free",
- "enabled": true,
- "external_auth_configuration": {},
- "external_auth_service_name": "",
- "external_auth_type": "",
- "features": [],
- "guest_VCPUs_params": {},
- "ha_network_peers": [],
- "ha_statefiles": [],
- "host_CPUs": [
- "OpaqueRef:f7e744f6-a6f9-c460-999a-c27e1395e2e0",
- "OpaqueRef:f6e5dcf0-0453-8f3f-88c1-7ad6e2ef3dd1",
- "OpaqueRef:f27a52fb-5feb-173d-1a07-d1735a83c2cc",
- "OpaqueRef:ed65327a-508a-ccfc-dba6-2a0175cb2432",
- "OpaqueRef:e41d2f2a-fe9e-72cb-8104-b22d6d314b13",
- "OpaqueRef:e1988469-b814-5d10-17a6-bfd7c62d2b5f",
- "OpaqueRef:d73967dc-b8d8-b47b-39f4-d599fdcabf55",
- "OpaqueRef:cba9ebd9-40dc-0611-d1bb-aa661bd0bf70",
- "OpaqueRef:c53d3110-4085-60af-8300-d879818789f7",
- "OpaqueRef:bee0cf87-7df6-79a6-94e8-36f98e69ad20",
- "OpaqueRef:bde28e83-213f-0e65-b6ad-0ae1ecebb98d",
- "OpaqueRef:bbfefe67-f65f-98cb-c3fc-cb8ea0588006",
- "OpaqueRef:b38ac595-afea-0ca0-49a0-9f5ef2368e3b",
- "OpaqueRef:b14ef333-78b1-193d-02da-dc9bfed36912",
- "OpaqueRef:afd478bf-57b9-0c79-f257-50aeb81504f1",
- "OpaqueRef:a307cd3a-2132-2e42-4ebc-cc1c7780736d",
- "OpaqueRef:a1a9df7d-88ba-64fd-a55c-0f6472e1753f",
- "OpaqueRef:a0e39c9c-3e0b-fa03-e5d0-93a09aa77393",
- "OpaqueRef:9fd5719b-36ab-8e25-7756-20a496ccb331",
- "OpaqueRef:9ac4195d-ac07-cfe2-bc19-27ee54cf91fb",
- "OpaqueRef:98c5c00c-1e2d-e22b-842e-79e85ce07873",
- "OpaqueRef:961129bf-e695-f206-7297-64f9007a64f3",
- "OpaqueRef:64368b4c-3488-2808-f0b3-42f2a656df2b",
- "OpaqueRef:620dabc0-d7c5-0dc8-52df-3be25194c2fb",
- "OpaqueRef:5cee2759-dd8e-7e1a-0727-21e196584030",
- "OpaqueRef:58f70163-863d-5787-ffbb-2416cb16ca1e",
- "OpaqueRef:4462f848-f396-653d-67f9-2bed13be2c58",
- "OpaqueRef:40e800c2-19db-7cd8-c045-5ae93f908cae",
- "OpaqueRef:3f84278b-dec6-ded0-1a33-4daa0ce75a2f",
- "OpaqueRef:3ef14992-62f6-e1f0-5715-0ee02a834a9c",
- "OpaqueRef:3e274c24-c55b-06f5-2c8f-415421043ab2",
- "OpaqueRef:35ff27da-f286-7b70-adc1-a200880bb79f",
- "OpaqueRef:2511aa53-8660-e442-3cd2-305982d1f751",
- "OpaqueRef:21d234e3-138c-81ca-9ed8-febc81b874e9",
- "OpaqueRef:1f9b4ee3-dcc7-114e-b401-dc3e94c07efa",
- "OpaqueRef:1b94a981-d340-dd07-41c2-b3ff3c545fed",
- "OpaqueRef:197ad104-64a8-5af3-8c7a-95f3d301aadd",
- "OpaqueRef:1672e747-dc4b-737b-ddcf-0a373f966012",
- "OpaqueRef:12ced494-a225-7584-456b-739331bb5114",
- "OpaqueRef:0139ff72-62ac-1a6a-8f6f-cb01d8a4ee92"
- ],
- "hostname": "ansible-test-host-1",
- "license_params": {
- "address1": "",
- "address2": "",
- "city": "",
- "company": "",
- "country": "",
- "enable_xha": "true",
- "expiry": "20291231T23:00:00Z",
- "grace": "no",
- "license_type": "",
- "name": "",
- "platform_filter": "false",
- "postalcode": "",
- "productcode": "",
- "regular_nag_dialog": "false",
- "restrict_ad": "false",
- "restrict_batch_hotfix_apply": "true",
- "restrict_checkpoint": "false",
- "restrict_cifs": "true",
- "restrict_connection": "false",
- "restrict_cpu_masking": "false",
- "restrict_dmc": "false",
- "restrict_dr": "false",
- "restrict_email_alerting": "false",
- "restrict_equalogic": "false",
- "restrict_export_resource_data": "true",
- "restrict_gpu": "false",
- "restrict_guest_agent_auto_update": "true",
- "restrict_guest_ip_setting": "false",
- "restrict_health_check": "false",
- "restrict_historical_performance": "false",
- "restrict_hotfix_apply": "false",
- "restrict_integrated_gpu_passthrough": "false",
- "restrict_intellicache": "false",
- "restrict_lab": "false",
- "restrict_live_patching": "true",
- "restrict_marathon": "false",
- "restrict_nested_virt": "true",
- "restrict_netapp": "false",
- "restrict_pci_device_for_auto_update": "true",
- "restrict_pool_attached_storage": "false",
- "restrict_pooling": "false",
- "restrict_pvs_proxy": "true",
- "restrict_qos": "false",
- "restrict_rbac": "false",
- "restrict_read_caching": "true",
- "restrict_set_vcpus_number_live": "true",
- "restrict_ssl_legacy_switch": "false",
- "restrict_stage": "false",
- "restrict_storage_xen_motion": "false",
- "restrict_storagelink": "false",
- "restrict_storagelink_site_recovery": "false",
- "restrict_vgpu": "true",
- "restrict_vif_locking": "false",
- "restrict_vlan": "false",
- "restrict_vm_memory_introspection": "true",
- "restrict_vmpr": "false",
- "restrict_vmss": "false",
- "restrict_vss": "false",
- "restrict_vswitch_controller": "false",
- "restrict_web_selfservice": "true",
- "restrict_web_selfservice_manager": "true",
- "restrict_wlb": "true",
- "restrict_xcm": "true",
- "restrict_xen_motion": "false",
- "serialnumber": "",
- "sku_marketing_name": "Citrix XenServer",
- "sku_type": "free",
- "sockets": "2",
- "state": "",
- "version": ""
- },
- "license_server": {
- "address": "localhost",
- "port": "27000"
- },
- "local_cache_sr": "OpaqueRef:ed72d7bf-4e53-67fc-17f5-e27b203042ba",
- "logging": {},
- "memory_overhead": "4606619648",
- "metrics": "OpaqueRef:82b6937a-60c2-96d8-4e78-9f9a1143033f",
- "name_description": "",
- "name_label": "ansible-test-host-1",
- "other_config": {
- "agent_start_time": "1532019557.",
- "boot_time": "1530023264.",
- "iscsi_iqn": "iqn.2018-06.com.example:c8bac750",
- "last_blob_sync_time": "1547394076.36",
- "multipathhandle": "dmp",
- "multipathing": "true"
- },
- "patches": [
- "OpaqueRef:f74ca18d-cfb7-e4fe-e5c4-819843de11e2",
- "OpaqueRef:f53ff05e-8dd8-3a15-d3b0-8dcf6004fbe2",
- "OpaqueRef:ed7f38da-1a50-a48b-60bf-933cabe8d7bc",
- "OpaqueRef:e7bb1462-51a5-1aaf-3b56-11b8ebd83a94",
- "OpaqueRef:d87b343b-6ba3-db8b-b80e-e02319ba5924",
- "OpaqueRef:ccb00450-ed04-4eaa-e6d7-130ef3722374",
- "OpaqueRef:b79b8864-11d9-1d5f-09e5-a66d7b64b9e2",
- "OpaqueRef:9bebcc7d-61ae-126b-3be0-9156026e586f",
- "OpaqueRef:740a1156-b991-00b8-ef50-fdbb22a4d911",
- "OpaqueRef:71def430-754b-2bfb-6c93-ec3b67b754e4",
- "OpaqueRef:6c73b00d-df66-1740-9578-2b14e46297ba",
- "OpaqueRef:6a53d2ae-3d6b-32ed-705f-fd53f1304470",
- "OpaqueRef:35a67684-b094-1c77-beff-8237d87c7a27",
- "OpaqueRef:33da42c2-c421-9859-79b7-ce9b6c394a1b",
- "OpaqueRef:2baa6b4b-9bbe-c1b2-23ce-c8c831ac581d",
- "OpaqueRef:2ac3beea-dee2-44e7-9f67-5fd216e593a0",
- "OpaqueRef:1bd8f24b-3190-6e7a-b36e-e2998197d062",
- "OpaqueRef:1694ea26-4930-6ca1-036e-273438375de9",
- "OpaqueRef:09813f03-0c6f-a6af-768f-ef4cdde2c641"
- ],
- "power_on_config": {},
- "power_on_mode": "",
- "resident_VMs": [],
- "sched_policy": "credit",
- "software_version": {
- "build_number": "release/falcon/master/8",
- "date": "2017-05-11",
- "db_schema": "5.120",
- "dbv": "2017.0517",
- "hostname": "f7d02093adae",
- "linux": "4.4.0+10",
- "network_backend": "openvswitch",
- "platform_name": "XCP",
- "platform_version": "2.3.0",
- "product_brand": "XenServer",
- "product_version": "7.2.0",
- "product_version_text": "7.2",
- "product_version_text_short": "7.2",
- "xapi": "1.9",
- "xen": "4.7.5-2.12",
- "xencenter_max": "2.7",
- "xencenter_min": "2.7"
- },
- "ssl_legacy": true,
- "supported_bootloaders": [
- "pygrub",
- "eliloader"
- ],
- "suspend_image_sr": "OpaqueRef:ed72d7bf-4e53-67fc-17f5-e27b203042ba",
- "tags": [],
- "updates": [
- "OpaqueRef:b71938bf-4c4f-eb17-7e78-588e71297a74",
- "OpaqueRef:91cfa47b-52f9-a4e3-4e78-52e3eb3e5141",
- "OpaqueRef:e2209ae9-5362-3a20-f691-9294144e49f2",
- "OpaqueRef:6ac77a0f-f079-8067-85cc-c9ae2f8dcca9",
- "OpaqueRef:a17e721d-faf4-6ad1-c617-dd4899279534",
- "OpaqueRef:6c9b814c-e1c2-b8be-198f-de358686b10a",
- "OpaqueRef:fbaabbfe-88d5-d89b-5b3f-d6374601ca71",
- "OpaqueRef:9eccc765-9726-d220-96b1-2e85adf77ecc",
- "OpaqueRef:204558d7-dce0-2304-bdc5-80ec5fd7e3c3",
- "OpaqueRef:65b14ae7-f440-0c4d-4af9-c7946b90fd2f",
- "OpaqueRef:0760c608-b02e-743a-18a1-fa8f205374d6",
- "OpaqueRef:1ced32ca-fec4-8b44-0e8f-753c97f2d93f",
- "OpaqueRef:3fffd7c7-f4d1-6b03-a5b8-d75211bb7b8f",
- "OpaqueRef:01befb95-412e-e9dd-5b5d-edd50df61cb1",
- "OpaqueRef:a3f9481e-fe3d-1f00-235f-44d404f51128",
- "OpaqueRef:507ee5fc-59d3-e635-21d5-98a5cace4bf2",
- "OpaqueRef:7b4b5da1-54af-d0c4-3fea-394b4257bffe",
- "OpaqueRef:f61edc83-91d9-a161-113f-00c110196238",
- "OpaqueRef:7efce157-9b93-d116-f3f8-7eb0c6fb1a79"
- ],
- "updates_requiring_reboot": [],
- "uuid": "92ac8132-276b-4d0f-9d3a-54db51e4a438",
- "virtual_hardware_platform_versions": [
- "0",
- "1",
- "2"
- ]
- }
- },
- "network": {
- "OpaqueRef:8a404c5e-5673-ab69-5d6f-5a35a33b8724": {
- "MTU": "1500",
- "PIFs": [],
- "VIFs": [],
- "allowed_operations": [],
- "assigned_ips": {
- "OpaqueRef:8171dad1-f902-ec00-7ba2-9f92d8aa75ab": "169.254.0.3",
- "OpaqueRef:9754a0ed-e100-d224-6a70-a55a9c2cedf9": "169.254.0.2"
- },
- "blobs": {},
- "bridge": "xenapi",
- "current_operations": {},
- "default_locking_mode": "unlocked",
- "managed": true,
- "name_description": "Network on which guests will be assigned a private link-local IP address which can be used to talk XenAPI",
- "name_label": "Host internal management network",
- "other_config": {
- "ip_begin": "169.254.0.1",
- "ip_end": "169.254.255.254",
- "is_guest_installer_network": "true",
- "is_host_internal_management_network": "true",
- "netmask": "255.255.0.0"
- },
- "tags": [],
- "uuid": "dbb96525-944f-0d1a-54ed-e65cb6d07450"
- }
- }
-}
diff --git a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-2-facts.json b/test/units/module_utils/xenserver/fixtures/ansible-test-vm-2-facts.json
deleted file mode 100644
index 607212c05d..0000000000
--- a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-2-facts.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- "cdrom": {
- "type": "none"
- },
- "customization_agent": "custom",
- "disks": [
- {
- "name": "ansible-test-vm-2-root",
- "name_desc": "/",
- "os_device": "xvda",
- "size": 10737418240,
- "sr": "Ansible Test Storage 1",
- "sr_uuid": "767b30e4-f8db-a83d-8ba7-f5e6e732e06f",
- "vbd_userdevice": "0"
- },
- {
- "name": "ansible-test-vm-2-mysql",
- "name_desc": "/var/lib/mysql",
- "os_device": "xvdb",
- "size": 1073741824,
- "sr": "Ansible Test Storage 1",
- "sr_uuid": "767b30e4-f8db-a83d-8ba7-f5e6e732e06f",
- "vbd_userdevice": "1"
- }
- ],
- "domid": "140",
- "folder": "/Ansible/Test",
- "hardware": {
- "memory_mb": 1024,
- "num_cpu_cores_per_socket": 1,
- "num_cpus": 1
- },
- "home_server": "ansible-test-host-2",
- "is_template": false,
- "name": "ansible-test-vm-2",
- "name_desc": "Created by Ansible",
- "networks": [
- {
- "gateway": "10.0.0.1",
- "gateway6": "",
- "ip": "169.254.0.2",
- "ip6": [],
- "mac": "16:87:31:70:d6:31",
- "mtu": "1500",
- "name": "Host internal management network",
- "netmask": "255.255.255.0",
- "prefix": "24",
- "prefix6": "",
- "vif_device": "0"
- }
- ],
- "other_config": {
- "base_template_name": "CentOS 7",
- "folder": "/Ansible/Test",
- "import_task": "OpaqueRef:cf1402d3-b6c1-d908-fe62-06502e3b311a",
- "install-methods": "cdrom,nfs,http,ftp",
- "instant": "true",
- "linux_template": "true",
- "mac_seed": "0ab46664-f519-5383-166e-e4ea485ede7d"
- },
- "platform": {
- "acpi": "1",
- "apic": "true",
- "cores-per-socket": "1",
- "device_id": "0001",
- "nx": "true",
- "pae": "true",
- "timeoffset": "0",
- "vga": "std",
- "videoram": "8",
- "viridian": "false"
- },
- "state": "poweredon",
- "uuid": "0a05d5ad-3e4b-f0dc-6101-8c56623958bc",
- "xenstore_data": {
- "vm-data": "",
- "vm-data/networks": "",
- "vm-data/networks/0": "",
- "vm-data/networks/0/gateway": "10.0.0.1",
- "vm-data/networks/0/ip": "10.0.0.3",
- "vm-data/networks/0/mac": "16:87:31:70:d6:31",
- "vm-data/networks/0/name": "Host internal management network",
- "vm-data/networks/0/netmask": "255.255.255.0",
- "vm-data/networks/0/prefix": "24",
- "vm-data/networks/0/type": "static"
- }
-}
diff --git a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-2-params.json b/test/units/module_utils/xenserver/fixtures/ansible-test-vm-2-params.json
deleted file mode 100644
index 10615f40ac..0000000000
--- a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-2-params.json
+++ /dev/null
@@ -1,771 +0,0 @@
-{
- "SR": {
- "OpaqueRef:f746e964-e0fe-c36d-d60b-6897cfde583f": {
- "PBDs": [],
- "VDIs": [],
- "allowed_operations": [
- "unplug",
- "plug",
- "pbd_create",
- "update",
- "pbd_destroy",
- "vdi_resize",
- "vdi_clone",
- "scan",
- "vdi_snapshot",
- "vdi_mirror",
- "vdi_create",
- "vdi_destroy"
- ],
- "blobs": {},
- "clustered": false,
- "content_type": "",
- "current_operations": {},
- "introduced_by": "OpaqueRef:NULL",
- "is_tools_sr": false,
- "local_cache_enabled": false,
- "name_description": "",
- "name_label": "Ansible Test Storage 1",
- "other_config": {
- "auto-scan": "false"
- },
- "physical_size": "2521133219840",
- "physical_utilisation": "1551485632512",
- "shared": true,
- "sm_config": {
- "allocation": "thick",
- "devserial": "scsi-3600a098038302d353624495242443848",
- "multipathable": "true",
- "use_vhd": "true"
- },
- "tags": [],
- "type": "lvmohba",
- "uuid": "767b30e4-f8db-a83d-8ba7-f5e6e732e06f",
- "virtual_allocation": "1556925644800"
- }
- },
- "VBD": {
- "OpaqueRef:510e214e-f0ba-3bc9-7834-a4f4d3fa33ef": {
- "VDI": "OpaqueRef:NULL",
- "VM": "OpaqueRef:08632af0-473e-5106-f400-7910229e49be",
- "allowed_operations": [
- "attach",
- "unpause",
- "insert",
- "pause"
- ],
- "bootable": false,
- "current_operations": {},
- "currently_attached": true,
- "device": "xvdd",
- "empty": true,
- "metrics": "OpaqueRef:1075bebe-ba71-66ef-ba30-8afbc83bc6b5",
- "mode": "RO",
- "other_config": {},
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "storage_lock": false,
- "type": "CD",
- "unpluggable": true,
- "userdevice": "3",
- "uuid": "79ee1d8e-944b-3bfd-ba4c-a0c165d84f3d"
- },
- "OpaqueRef:6bc2c353-f132-926d-6e9b-e4d1d55a3760": {
- "VDI": "OpaqueRef:102bef39-b134-d23a-9a50-490e1dbca8f7",
- "VM": "OpaqueRef:08632af0-473e-5106-f400-7910229e49be",
- "allowed_operations": [
- "attach",
- "unpause",
- "pause"
- ],
- "bootable": true,
- "current_operations": {},
- "currently_attached": true,
- "device": "xvda",
- "empty": false,
- "metrics": "OpaqueRef:1c71ccde-d7e9-10fb-569c-993b880fa790",
- "mode": "RW",
- "other_config": {
- "owner": ""
- },
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "storage_lock": false,
- "type": "Disk",
- "unpluggable": false,
- "userdevice": "0",
- "uuid": "932fdf6d-7ac5-45e8-a48e-694af75726f1"
- },
- "OpaqueRef:9bd6decd-2e55-b55e-387d-c40aa67ff151": {
- "VDI": "OpaqueRef:87b45ac6-af36-f4fd-6ebd-a08bed9001e4",
- "VM": "OpaqueRef:08632af0-473e-5106-f400-7910229e49be",
- "allowed_operations": [
- "attach",
- "unpause",
- "unplug",
- "unplug_force",
- "pause"
- ],
- "bootable": false,
- "current_operations": {},
- "currently_attached": true,
- "device": "xvdb",
- "empty": false,
- "metrics": "OpaqueRef:b8424146-d3ea-4850-db9a-47f0059c10ac",
- "mode": "RW",
- "other_config": {},
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "storage_lock": false,
- "type": "Disk",
- "unpluggable": true,
- "userdevice": "1",
- "uuid": "c0c1e648-3690-e1fb-9f47-24b4df0cb458"
- }
- },
- "VDI": {
- "OpaqueRef:102bef39-b134-d23a-9a50-490e1dbca8f7": {
- "SR": "OpaqueRef:f746e964-e0fe-c36d-d60b-6897cfde583f",
- "VBDs": [
- "OpaqueRef:6bc2c353-f132-926d-6e9b-e4d1d55a3760"
- ],
- "allow_caching": false,
- "allowed_operations": [
- "clone",
- "snapshot"
- ],
- "crash_dumps": [],
- "current_operations": {},
- "is_a_snapshot": false,
- "is_tools_iso": false,
- "location": "fa1202b8-326f-4235-802e-fafbed66b26b",
- "managed": true,
- "metadata_latest": false,
- "metadata_of_pool": "",
- "missing": false,
- "name_description": "/",
- "name_label": "ansible-test-vm-2-root",
- "on_boot": "persist",
- "other_config": {},
- "parent": "OpaqueRef:NULL",
- "physical_utilisation": "10766778368",
- "read_only": false,
- "sharable": false,
- "sm_config": {
- "host_OpaqueRef:e87be804-57a1-532e-56ac-6c4910957be0": "RW",
- "read-caching-enabled-on-dff6702e-bcb6-4704-8dd4-952e8c883365": "false",
- "read-caching-reason-dff6702e-bcb6-4704-8dd4-952e8c883365": "LICENSE_RESTRICTION",
- "vdi_type": "vhd"
- },
- "snapshot_of": "OpaqueRef:NULL",
- "snapshot_time": "19700101T00:00:00Z",
- "snapshots": [],
- "storage_lock": false,
- "tags": [],
- "type": "system",
- "uuid": "fa1202b8-326f-4235-802e-fafbed66b26b",
- "virtual_size": "10737418240",
- "xenstore_data": {}
- },
- "OpaqueRef:87b45ac6-af36-f4fd-6ebd-a08bed9001e4": {
- "SR": "OpaqueRef:f746e964-e0fe-c36d-d60b-6897cfde583f",
- "VBDs": [
- "OpaqueRef:9bd6decd-2e55-b55e-387d-c40aa67ff151"
- ],
- "allow_caching": false,
- "allowed_operations": [
- "clone",
- "snapshot"
- ],
- "crash_dumps": [],
- "current_operations": {},
- "is_a_snapshot": false,
- "is_tools_iso": false,
- "location": "ab3a4d72-f498-4687-86ce-ca937046db76",
- "managed": true,
- "metadata_latest": false,
- "metadata_of_pool": "",
- "missing": false,
- "name_description": "/var/lib/mysql",
- "name_label": "ansible-test-vm-2-mysql",
- "on_boot": "persist",
- "other_config": {},
- "parent": "OpaqueRef:NULL",
- "physical_utilisation": "1082130432",
- "read_only": false,
- "sharable": false,
- "sm_config": {
- "host_OpaqueRef:e87be804-57a1-532e-56ac-6c4910957be0": "RW",
- "read-caching-enabled-on-dff6702e-bcb6-4704-8dd4-952e8c883365": "false",
- "read-caching-reason-dff6702e-bcb6-4704-8dd4-952e8c883365": "LICENSE_RESTRICTION",
- "vdi_type": "vhd"
- },
- "snapshot_of": "OpaqueRef:NULL",
- "snapshot_time": "19700101T00:00:00Z",
- "snapshots": [],
- "storage_lock": false,
- "tags": [],
- "type": "user",
- "uuid": "ab3a4d72-f498-4687-86ce-ca937046db76",
- "virtual_size": "1073741824",
- "xenstore_data": {}
- }
- },
- "VIF": {
- "OpaqueRef:9754a0ed-e100-d224-6a70-a55a9c2cedf9": {
- "MAC": "16:87:31:70:d6:31",
- "MAC_autogenerated": false,
- "MTU": "1500",
- "VM": "OpaqueRef:08632af0-473e-5106-f400-7910229e49be",
- "allowed_operations": [
- "attach",
- "unplug"
- ],
- "current_operations": {},
- "currently_attached": true,
- "device": "0",
- "ipv4_addresses": [],
- "ipv4_allowed": [],
- "ipv4_configuration_mode": "None",
- "ipv4_gateway": "",
- "ipv6_addresses": [],
- "ipv6_allowed": [],
- "ipv6_configuration_mode": "None",
- "ipv6_gateway": "",
- "locking_mode": "network_default",
- "metrics": "OpaqueRef:d74d5f20-f0ab-ee36-9a74-496ffb994232",
- "network": "OpaqueRef:8a404c5e-5673-ab69-5d6f-5a35a33b8724",
- "other_config": {},
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "uuid": "07b70134-9396-94fc-5105-179b430ce4f8"
- }
- },
- "VM": {
- "OpaqueRef:08632af0-473e-5106-f400-7910229e49be": {
- "HVM_boot_params": {
- "order": "cdn"
- },
- "HVM_boot_policy": "BIOS order",
- "HVM_shadow_multiplier": 1.0,
- "PCI_bus": "",
- "PV_args": "",
- "PV_bootloader": "",
- "PV_bootloader_args": "",
- "PV_kernel": "",
- "PV_legacy_args": "",
- "PV_ramdisk": "",
- "VBDs": [
- "OpaqueRef:510e214e-f0ba-3bc9-7834-a4f4d3fa33ef",
- "OpaqueRef:9bd6decd-2e55-b55e-387d-c40aa67ff151",
- "OpaqueRef:6bc2c353-f132-926d-6e9b-e4d1d55a3760"
- ],
- "VCPUs_at_startup": "1",
- "VCPUs_max": "1",
- "VCPUs_params": {},
- "VGPUs": [],
- "VIFs": [
- "OpaqueRef:9754a0ed-e100-d224-6a70-a55a9c2cedf9"
- ],
- "VTPMs": [],
- "actions_after_crash": "restart",
- "actions_after_reboot": "restart",
- "actions_after_shutdown": "destroy",
- "affinity": "OpaqueRef:e87be804-57a1-532e-56ac-6c4910957be0",
- "allowed_operations": [
- "changing_dynamic_range",
- "migrate_send",
- "pool_migrate",
- "changing_VCPUs_live",
- "suspend",
- "hard_reboot",
- "hard_shutdown",
- "clean_reboot",
- "clean_shutdown",
- "pause",
- "checkpoint",
- "snapshot"
- ],
- "appliance": "OpaqueRef:NULL",
- "attached_PCIs": [],
- "bios_strings": {
- "bios-vendor": "Xen",
- "bios-version": "",
- "hp-rombios": "",
- "oem-1": "Xen",
- "oem-2": "MS_VM_CERT/SHA1/bdbeb6e0a816d43fa6d3fe8aaef04c2bad9d3e3d",
- "system-manufacturer": "Xen",
- "system-product-name": "HVM domU",
- "system-serial-number": "",
- "system-version": ""
- },
- "blobs": {},
- "blocked_operations": {},
- "children": [],
- "consoles": [
- "OpaqueRef:2a24e023-a856-de30-aea3-2024bacdc71f"
- ],
- "crash_dumps": [],
- "current_operations": {},
- "domarch": "",
- "domid": "140",
- "generation_id": "",
- "guest_metrics": "OpaqueRef:150d2dfa-b634-7965-92ab-31fc26382683",
- "ha_always_run": false,
- "ha_restart_priority": "",
- "hardware_platform_version": "0",
- "has_vendor_device": false,
- "is_a_snapshot": false,
- "is_a_template": false,
- "is_control_domain": false,
- "is_default_template": false,
- "is_snapshot_from_vmpp": false,
- "is_vmss_snapshot": false,
- "last_boot_CPU_flags": {
- "features": "17cbfbff-f7fa3223-2d93fbff-00000023-00000001-000007ab-00000000-00000000-00001000-0c000000",
- "vendor": "GenuineIntel"
- },
- "last_booted_record": "",
- "memory_dynamic_max": "1073741824",
- "memory_dynamic_min": "1073741824",
- "memory_overhead": "11534336",
- "memory_static_max": "1073741824",
- "memory_static_min": "1073741824",
- "memory_target": "1073741824",
- "metrics": "OpaqueRef:b56b460b-6476-304d-b143-ce543ffab828",
- "name_description": "Created by Ansible",
- "name_label": "ansible-test-vm-2",
- "order": "0",
- "other_config": {
- "base_template_name": "CentOS 7",
- "folder": "/Ansible/Test",
- "import_task": "OpaqueRef:cf1402d3-b6c1-d908-fe62-06502e3b311a",
- "install-methods": "cdrom,nfs,http,ftp",
- "instant": "true",
- "linux_template": "true",
- "mac_seed": "0ab46664-f519-5383-166e-e4ea485ede7d"
- },
- "parent": "OpaqueRef:NULL",
- "platform": {
- "acpi": "1",
- "apic": "true",
- "cores-per-socket": "1",
- "device_id": "0001",
- "nx": "true",
- "pae": "true",
- "timeoffset": "0",
- "vga": "std",
- "videoram": "8",
- "viridian": "false"
- },
- "power_state": "Running",
- "protection_policy": "OpaqueRef:NULL",
- "recommendations": "<restrictions><restriction field=\"memory-static-max\" max=\"549755813888\" /><restriction field=\"vcpus-max\" max=\"16\" /><restriction property=\"number-of-vbds\" max=\"16\" /><restriction property=\"number-of-vifs\" max=\"7\" /><restriction field=\"allow-gpu-passthrough\" value=\"0\" /></restrictions>",
- "reference_label": "",
- "requires_reboot": false,
- "resident_on": "OpaqueRef:e87be804-57a1-532e-56ac-6c4910957be0",
- "shutdown_delay": "0",
- "snapshot_info": {},
- "snapshot_metadata": "",
- "snapshot_of": "OpaqueRef:NULL",
- "snapshot_schedule": "OpaqueRef:NULL",
- "snapshot_time": "19700101T00:00:00Z",
- "snapshots": [],
- "start_delay": "0",
- "suspend_SR": "OpaqueRef:NULL",
- "suspend_VDI": "OpaqueRef:NULL",
- "tags": [],
- "transportable_snapshot_id": "",
- "user_version": "1",
- "uuid": "0a05d5ad-3e4b-f0dc-6101-8c56623958bc",
- "version": "0",
- "xenstore_data": {
- "vm-data": "",
- "vm-data/networks": "",
- "vm-data/networks/0": "",
- "vm-data/networks/0/gateway": "10.0.0.1",
- "vm-data/networks/0/ip": "10.0.0.3",
- "vm-data/networks/0/mac": "16:87:31:70:d6:31",
- "vm-data/networks/0/name": "Host internal management network",
- "vm-data/networks/0/netmask": "255.255.255.0",
- "vm-data/networks/0/prefix": "24",
- "vm-data/networks/0/type": "static"
- }
- }
- },
- "VM_guest_metrics": {
- "OpaqueRef:150d2dfa-b634-7965-92ab-31fc26382683": {
- "PV_drivers_detected": true,
- "PV_drivers_up_to_date": true,
- "PV_drivers_version": {
- "build": "90977",
- "major": "6",
- "micro": "0",
- "minor": "5"
- },
- "can_use_hotplug_vbd": "unspecified",
- "can_use_hotplug_vif": "unspecified",
- "disks": {},
- "last_updated": "20190113T19:36:26Z",
- "live": true,
- "memory": {},
- "networks": {
- "0/ip": "169.254.0.2"
- },
- "os_version": {
- "distro": "centos",
- "major": "7",
- "minor": "2",
- "name": "CentOS Linux release 7.2.1511 (Core)",
- "uname": "3.10.0-327.22.2.el7.x86_64"
- },
- "other": {
- "feature-balloon": "1",
- "feature-shutdown": "1",
- "feature-suspend": "1",
- "feature-vcpu-hotplug": "1",
- "has-vendor-device": "0",
- "platform-feature-multiprocessor-suspend": "1"
- },
- "other_config": {},
- "uuid": "5c9d1be5-7eee-88f2-46c3-df1d44f9cdb5"
- }
- },
- "VM_metrics": {
- "OpaqueRef:b56b460b-6476-304d-b143-ce543ffab828": {
- "VCPUs_CPU": {},
- "VCPUs_flags": {},
- "VCPUs_number": "1",
- "VCPUs_params": {},
- "VCPUs_utilisation": {},
- "hvm": true,
- "install_time": "20190113T19:32:46Z",
- "last_updated": "19700101T00:00:00Z",
- "memory_actual": "1073729536",
- "nested_virt": false,
- "nomigrate": false,
- "other_config": {},
- "start_time": "20190113T19:35:15Z",
- "state": [],
- "uuid": "876dd44c-aad1-97bf-9ee5-4cd58eac7163"
- }
- },
- "host": {
- "OpaqueRef:e87be804-57a1-532e-56ac-6c4910957be0": {
- "API_version_major": "2",
- "API_version_minor": "7",
- "API_version_vendor": "XenSource",
- "API_version_vendor_implementation": {},
- "PBDs": [],
- "PCIs": [],
- "PGPUs": [],
- "PIFs": [],
- "address": "10.0.0.1",
- "allowed_operations": [
- "vm_migrate",
- "provision",
- "vm_resume",
- "evacuate",
- "vm_start"
- ],
- "bios_strings": {},
- "blobs": {},
- "capabilities": [
- "xen-3.0-x86_64",
- "xen-3.0-x86_32p",
- "hvm-3.0-x86_32",
- "hvm-3.0-x86_32p",
- "hvm-3.0-x86_64",
- ""
- ],
- "chipset_info": {
- "iommu": "true"
- },
- "control_domain": "OpaqueRef:ffcc92a1-8fde-df6f-a501-44b37811286b",
- "cpu_configuration": {},
- "cpu_info": {
- "cpu_count": "40",
- "family": "6",
- "features": "7ffefbff-bfebfbff-00000021-2c100800",
- "features_hvm": "17cbfbff-f7fa3223-2d93fbff-00000023-00000001-000007ab-00000000-00000000-00001000-0c000000",
- "features_pv": "17c9cbf5-f6f83203-2191cbf5-00000023-00000001-00000329-00000000-00000000-00001000-0c000000",
- "flags": "fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc eagerfpu pni pclmulqdq monitor est ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb pln pts dtherm fsgsbase bmi1 avx2 bmi2 erms xsaveopt cqm_llc cqm_occup_llc",
- "model": "63",
- "modelname": "Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz",
- "socket_count": "2",
- "speed": "2597.070",
- "stepping": "2",
- "vendor": "GenuineIntel"
- },
- "crash_dump_sr": "OpaqueRef:0b984cec-a36c-ce84-7b34-9f0088352d55",
- "crashdumps": [],
- "current_operations": {},
- "display": "enabled",
- "edition": "free",
- "enabled": true,
- "external_auth_configuration": {},
- "external_auth_service_name": "",
- "external_auth_type": "",
- "features": [],
- "guest_VCPUs_params": {},
- "ha_network_peers": [],
- "ha_statefiles": [],
- "host_CPUs": [
- "OpaqueRef:ec3ba9c4-9b57-236b-3eaa-b157affc1621",
- "OpaqueRef:e6de7ab3-f4ad-f271-e51b-e3d8c041d3fb",
- "OpaqueRef:e519ef88-bf41-86ac-16b3-c178cb4b78b1",
- "OpaqueRef:e48f1bc1-98ba-89e5-ab69-821c625f7f82",
- "OpaqueRef:e2659936-3de6-dbca-cc44-4af50960b2b7",
- "OpaqueRef:d0da1e31-20ac-4aff-8897-e80df8200648",
- "OpaqueRef:cec473ba-41a8-439d-b397-be0c60467b5d",
- "OpaqueRef:ce88014d-b06c-c959-0624-04d79b791885",
- "OpaqueRef:c656ca58-41fe-3689-d322-174aa5798beb",
- "OpaqueRef:c0a21f14-8f46-19de-1cf4-530a34c4aa17",
- "OpaqueRef:bf70c061-7b45-0497-7ef6-65a236e898e8",
- "OpaqueRef:b7a2ba0f-f11b-3633-ad47-4f5f76a600a8",
- "OpaqueRef:b4fef1fa-3aae-9790-f47e-6a17f645339c",
- "OpaqueRef:b4594721-f8f4-4475-61c5-4efeec1733f1",
- "OpaqueRef:9dcba36f-c29f-478f-f578-d1ea347410a6",
- "OpaqueRef:987897e8-1184-917e-6a5f-e205d0c739e5",
- "OpaqueRef:90f06d64-be18-7fdf-36ba-bbd696a26cf3",
- "OpaqueRef:90150bc1-e604-4cd4-35ad-9cfa8e985de3",
- "OpaqueRef:838f4ad4-8ad2-0d6c-a74e-26baa461de3d",
- "OpaqueRef:736fb523-d347-e8c0-089b-c9811d3c1195",
- "OpaqueRef:7137b479-87d4-9097-a684-e54cc4de5d09",
- "OpaqueRef:6e08fa1d-7d7b-d9be-1574-ffe95bd515fd",
- "OpaqueRef:6b9e6ecd-54e5-4248-5aea-ee5b99248818",
- "OpaqueRef:65d56b24-3445-b444-5125-c91e6966fd29",
- "OpaqueRef:60908eca-1e5c-c938-5b76-e8ff9d8899ab",
- "OpaqueRef:46e96878-c076-2164-2373-6cdd108c2436",
- "OpaqueRef:40ccdaf4-6008-2b83-92cb-ca197f73433f",
- "OpaqueRef:3bc8133a-ccb2-6790-152f-b3f577517751",
- "OpaqueRef:38c8edd8-0621-76de-53f6-86bef2a9e05c",
- "OpaqueRef:342c1bab-a211-a0eb-79a5-780bd5ad1f23",
- "OpaqueRef:1e20e6d0-5502-0dff-4f17-5d35eb833af1",
- "OpaqueRef:176baafa-0e63-7000-f754-25e2a6b74959",
- "OpaqueRef:16cab1a2-0111-b2af-6dfe-3724b79e6b6b",
- "OpaqueRef:0f213647-8362-9c5e-e99b-0ebaefc609ce",
- "OpaqueRef:0e019819-b41f-0bfb-d4ee-dd5484fea9b6",
- "OpaqueRef:0d39212f-82ba-190c-b304-19b3fa491fff",
- "OpaqueRef:087ce3ad-3b66-ae1e-3130-3ae640dcc638",
- "OpaqueRef:0730f24c-87ed-8296-8f14-3036e5ad2357",
- "OpaqueRef:04c27426-4895-39a7-9ade-ef33d3721c26",
- "OpaqueRef:017b27bf-0270-19e7-049a-5a9b3bb54898"
- ],
- "hostname": "ansible-test-host-2",
- "license_params": {
- "address1": "",
- "address2": "",
- "city": "",
- "company": "",
- "country": "",
- "enable_xha": "true",
- "expiry": "20291231T23:00:00Z",
- "grace": "no",
- "license_type": "",
- "name": "",
- "platform_filter": "false",
- "postalcode": "",
- "productcode": "",
- "regular_nag_dialog": "false",
- "restrict_ad": "false",
- "restrict_batch_hotfix_apply": "true",
- "restrict_checkpoint": "false",
- "restrict_cifs": "true",
- "restrict_connection": "false",
- "restrict_cpu_masking": "false",
- "restrict_dmc": "false",
- "restrict_dr": "false",
- "restrict_email_alerting": "false",
- "restrict_equalogic": "false",
- "restrict_export_resource_data": "true",
- "restrict_gpu": "false",
- "restrict_guest_agent_auto_update": "true",
- "restrict_guest_ip_setting": "false",
- "restrict_health_check": "false",
- "restrict_historical_performance": "false",
- "restrict_hotfix_apply": "false",
- "restrict_integrated_gpu_passthrough": "false",
- "restrict_intellicache": "false",
- "restrict_lab": "false",
- "restrict_live_patching": "true",
- "restrict_marathon": "false",
- "restrict_nested_virt": "true",
- "restrict_netapp": "false",
- "restrict_pci_device_for_auto_update": "true",
- "restrict_pool_attached_storage": "false",
- "restrict_pooling": "false",
- "restrict_pvs_proxy": "true",
- "restrict_qos": "false",
- "restrict_rbac": "false",
- "restrict_read_caching": "true",
- "restrict_set_vcpus_number_live": "true",
- "restrict_ssl_legacy_switch": "false",
- "restrict_stage": "false",
- "restrict_storage_xen_motion": "false",
- "restrict_storagelink": "false",
- "restrict_storagelink_site_recovery": "false",
- "restrict_vgpu": "true",
- "restrict_vif_locking": "false",
- "restrict_vlan": "false",
- "restrict_vm_memory_introspection": "true",
- "restrict_vmpr": "false",
- "restrict_vmss": "false",
- "restrict_vss": "false",
- "restrict_vswitch_controller": "false",
- "restrict_web_selfservice": "true",
- "restrict_web_selfservice_manager": "true",
- "restrict_wlb": "true",
- "restrict_xcm": "true",
- "restrict_xen_motion": "false",
- "serialnumber": "",
- "sku_marketing_name": "Citrix XenServer",
- "sku_type": "free",
- "sockets": "2",
- "state": "",
- "version": ""
- },
- "license_server": {
- "address": "localhost",
- "port": "27000"
- },
- "local_cache_sr": "OpaqueRef:0b984cec-a36c-ce84-7b34-9f0088352d55",
- "logging": {},
- "memory_overhead": "4865126400",
- "metrics": "OpaqueRef:f55653cb-92eb-8257-f2ee-7a2d1c2d6aef",
- "name_description": "",
- "name_label": "ansible-test-host-2",
- "other_config": {
- "agent_start_time": "1532019582.",
- "boot_time": "1528986759.",
- "iscsi_iqn": "iqn.2018-06.com.example:87b7637d",
- "last_blob_sync_time": "1547394065.41",
- "multipathhandle": "dmp",
- "multipathing": "true"
- },
- "patches": [
- "OpaqueRef:f5bd18b6-1423-893a-5d7f-7095338e6a2d",
- "OpaqueRef:eecb0b95-87fb-a53e-651c-9741efd18bb6",
- "OpaqueRef:e92c9ef3-2e51-1a36-d400-9e237982b782",
- "OpaqueRef:cc98226c-2c08-799e-5f15-7761a398e4a0",
- "OpaqueRef:c4f35e66-d064-55a7-6946-7f4b145275a6",
- "OpaqueRef:c3794494-f894-6141-b811-f37a8fe60094",
- "OpaqueRef:bcf61af7-63a9-e430-5b7c-a740ba470596",
- "OpaqueRef:b58ac71e-797e-6f66-71ad-fe298c94fd10",
- "OpaqueRef:a2ea18fd-5343-f8db-718d-f059c2a8cce0",
- "OpaqueRef:929db459-6861-c588-158f-70f763331d6d",
- "OpaqueRef:92962d94-2205-f6e1-12f9-b55a99fd824d",
- "OpaqueRef:65dfb07a-f90d-dad9-9ab8-1cc2b1e79afb",
- "OpaqueRef:537a87c4-3bf4-969f-f06a-2dd8d3a018a2",
- "OpaqueRef:32dd1de3-c9c8-bcbb-27a0-83d4a930876d",
- "OpaqueRef:30a8ccc8-74a9-b31f-0403-66b117e281b6",
- "OpaqueRef:24545c44-ffd1-8a28-18c6-3d008bf4d63e",
- "OpaqueRef:1fcef81b-7c44-a4db-f59a-c4a147da9c49",
- "OpaqueRef:1e98a240-514b-1863-5518-c771d0ebf579",
- "OpaqueRef:1632cab2-b268-6ce8-4f7b-ce7fd4bfa1eb"
- ],
- "power_on_config": {},
- "power_on_mode": "",
- "resident_VMs": [],
- "sched_policy": "credit",
- "software_version": {
- "build_number": "release/falcon/master/8",
- "date": "2017-05-11",
- "db_schema": "5.120",
- "dbv": "2017.0517",
- "hostname": "f7d02093adae",
- "linux": "4.4.0+10",
- "network_backend": "openvswitch",
- "platform_name": "XCP",
- "platform_version": "2.3.0",
- "product_brand": "XenServer",
- "product_version": "7.2.0",
- "product_version_text": "7.2",
- "product_version_text_short": "7.2",
- "xapi": "1.9",
- "xen": "4.7.5-2.12",
- "xencenter_max": "2.7",
- "xencenter_min": "2.7"
- },
- "ssl_legacy": true,
- "supported_bootloaders": [
- "pygrub",
- "eliloader"
- ],
- "suspend_image_sr": "OpaqueRef:0b984cec-a36c-ce84-7b34-9f0088352d55",
- "tags": [],
- "updates": [
- "OpaqueRef:7b4b5da1-54af-d0c4-3fea-394b4257bffe",
- "OpaqueRef:fbaabbfe-88d5-d89b-5b3f-d6374601ca71",
- "OpaqueRef:507ee5fc-59d3-e635-21d5-98a5cace4bf2",
- "OpaqueRef:6c9b814c-e1c2-b8be-198f-de358686b10a",
- "OpaqueRef:a17e721d-faf4-6ad1-c617-dd4899279534",
- "OpaqueRef:6ac77a0f-f079-8067-85cc-c9ae2f8dcca9",
- "OpaqueRef:f61edc83-91d9-a161-113f-00c110196238",
- "OpaqueRef:b71938bf-4c4f-eb17-7e78-588e71297a74",
- "OpaqueRef:01befb95-412e-e9dd-5b5d-edd50df61cb1",
- "OpaqueRef:a3f9481e-fe3d-1f00-235f-44d404f51128",
- "OpaqueRef:0760c608-b02e-743a-18a1-fa8f205374d6",
- "OpaqueRef:204558d7-dce0-2304-bdc5-80ec5fd7e3c3",
- "OpaqueRef:9eccc765-9726-d220-96b1-2e85adf77ecc",
- "OpaqueRef:91cfa47b-52f9-a4e3-4e78-52e3eb3e5141",
- "OpaqueRef:3fffd7c7-f4d1-6b03-a5b8-d75211bb7b8f",
- "OpaqueRef:7efce157-9b93-d116-f3f8-7eb0c6fb1a79",
- "OpaqueRef:e2209ae9-5362-3a20-f691-9294144e49f2",
- "OpaqueRef:1ced32ca-fec4-8b44-0e8f-753c97f2d93f",
- "OpaqueRef:65b14ae7-f440-0c4d-4af9-c7946b90fd2f"
- ],
- "updates_requiring_reboot": [],
- "uuid": "dff6702e-bcb6-4704-8dd4-952e8c883365",
- "virtual_hardware_platform_versions": [
- "0",
- "1",
- "2"
- ]
- }
- },
- "network": {
- "OpaqueRef:8a404c5e-5673-ab69-5d6f-5a35a33b8724": {
- "MTU": "1500",
- "PIFs": [],
- "VIFs": [],
- "allowed_operations": [],
- "assigned_ips": {
- "OpaqueRef:8171dad1-f902-ec00-7ba2-9f92d8aa75ab": "169.254.0.3",
- "OpaqueRef:9754a0ed-e100-d224-6a70-a55a9c2cedf9": "169.254.0.2"
- },
- "blobs": {},
- "bridge": "xenapi",
- "current_operations": {},
- "default_locking_mode": "unlocked",
- "managed": true,
- "name_description": "Network on which guests will be assigned a private link-local IP address which can be used to talk XenAPI",
- "name_label": "Host internal management network",
- "other_config": {
- "ip_begin": "169.254.0.1",
- "ip_end": "169.254.255.254",
- "is_guest_installer_network": "true",
- "is_host_internal_management_network": "true",
- "netmask": "255.255.0.0"
- },
- "tags": [],
- "uuid": "dbb96525-944f-0d1a-54ed-e65cb6d07450"
- }
- }
-}
diff --git a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-3-facts.json b/test/units/module_utils/xenserver/fixtures/ansible-test-vm-3-facts.json
deleted file mode 100644
index 5ed7df7f17..0000000000
--- a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-3-facts.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "cdrom": {
- "type": "none"
- },
- "customization_agent": "custom",
- "disks": [
- {
- "name": "ansible-test-vm-3-root",
- "name_desc": "/",
- "os_device": "xvda",
- "size": 8589934592,
- "sr": "Ansible Test Storage 1",
- "sr_uuid": "767b30e4-f8db-a83d-8ba7-f5e6e732e06f",
- "vbd_userdevice": "0"
- }
- ],
- "domid": "-1",
- "folder": "",
- "hardware": {
- "memory_mb": 1024,
- "num_cpu_cores_per_socket": 1,
- "num_cpus": 1
- },
- "home_server": "",
- "is_template": false,
- "name": "ansible-test-vm-3",
- "name_desc": "Created by Ansible",
- "networks": [
- {
- "gateway": "",
- "gateway6": "",
- "ip": "169.254.0.3",
- "ip6": [],
- "mac": "72:fb:c7:ac:b9:97",
- "mtu": "1500",
- "name": "Host internal management network",
- "netmask": "",
- "prefix": "",
- "prefix6": "",
- "vif_device": "0"
- }
- ],
- "other_config": {
- "auto_poweron": "true",
- "base_template_name": "zatemplate",
- "import_task": "OpaqueRef:9948fd82-6d79-8882-2f01-4edc8795e361",
- "install-methods": "cdrom,nfs,http,ftp",
- "install-repository": "http://mirror.centos.org/centos-6/6.2/os/x86_64/",
- "instant": "true",
- "last_shutdown_action": "Destroy",
- "last_shutdown_initiator": "external",
- "last_shutdown_reason": "halted",
- "last_shutdown_time": "20140314T21:16:41Z",
- "linux_template": "true",
- "mac_seed": "06e27068-70c2-4c69-614b-7c54b5a4a781",
- "rhel6": "true"
- },
- "platform": {
- "acpi": "true",
- "apic": "true",
- "cores-per-socket": "1",
- "nx": "false",
- "pae": "true",
- "viridian": "true"
- },
- "state": "poweredoff",
- "uuid": "8f5bc97c-42fa-d619-aba4-d25eced735e0",
- "xenstore_data": {
- "vm-data": "",
- "vm-data/networks": "",
- "vm-data/networks/0": "",
- "vm-data/networks/0/mac": "72:fb:c7:ac:b9:97",
- "vm-data/networks/0/name": "Host internal management network"
- }
-}
diff --git a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-3-params.json b/test/units/module_utils/xenserver/fixtures/ansible-test-vm-3-params.json
deleted file mode 100644
index 02e224bf08..0000000000
--- a/test/units/module_utils/xenserver/fixtures/ansible-test-vm-3-params.json
+++ /dev/null
@@ -1,420 +0,0 @@
-{
- "SR": {
- "OpaqueRef:f746e964-e0fe-c36d-d60b-6897cfde583f": {
- "PBDs": [],
- "VDIs": [],
- "allowed_operations": [
- "unplug",
- "plug",
- "pbd_create",
- "update",
- "pbd_destroy",
- "vdi_resize",
- "vdi_clone",
- "scan",
- "vdi_snapshot",
- "vdi_mirror",
- "vdi_create",
- "vdi_destroy"
- ],
- "blobs": {},
- "clustered": false,
- "content_type": "",
- "current_operations": {},
- "introduced_by": "OpaqueRef:NULL",
- "is_tools_sr": false,
- "local_cache_enabled": false,
- "name_description": "",
- "name_label": "Ansible Test Storage 1",
- "other_config": {
- "auto-scan": "false"
- },
- "physical_size": "2521133219840",
- "physical_utilisation": "1551485632512",
- "shared": true,
- "sm_config": {
- "allocation": "thick",
- "devserial": "scsi-3600a098038302d353624495242443848",
- "multipathable": "true",
- "use_vhd": "true"
- },
- "tags": [],
- "type": "lvmohba",
- "uuid": "767b30e4-f8db-a83d-8ba7-f5e6e732e06f",
- "virtual_allocation": "1556925644800"
- }
- },
- "VBD": {
- "OpaqueRef:024b722e-8d0f-65e6-359e-f301a009b683": {
- "VDI": "OpaqueRef:NULL",
- "VM": "OpaqueRef:957f576a-2347-1789-80db-4beb50466bc2",
- "allowed_operations": [
- "attach",
- "insert"
- ],
- "bootable": false,
- "current_operations": {},
- "currently_attached": false,
- "device": "",
- "empty": true,
- "metrics": "OpaqueRef:81509584-b22f-bc71-3c4e-e6c3bdca71f0",
- "mode": "RO",
- "other_config": {},
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "storage_lock": false,
- "type": "CD",
- "unpluggable": true,
- "userdevice": "3",
- "uuid": "38d850d0-c402-490e-6b97-1d23558c4e0e"
- },
- "OpaqueRef:235f4f04-1dc9-9fa5-c229-a1df187ba48c": {
- "VDI": "OpaqueRef:4d3e9fc7-ae61-b312-e0a8-b53bee06282e",
- "VM": "OpaqueRef:957f576a-2347-1789-80db-4beb50466bc2",
- "allowed_operations": [
- "attach"
- ],
- "bootable": true,
- "current_operations": {},
- "currently_attached": false,
- "device": "xvda",
- "empty": false,
- "metrics": "OpaqueRef:529f6071-5627-28c5-1f41-ee8c0733f1da",
- "mode": "RW",
- "other_config": {
- "owner": ""
- },
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "storage_lock": false,
- "type": "Disk",
- "unpluggable": false,
- "userdevice": "0",
- "uuid": "3fd7d35c-cb9d-f0c4-726b-e188ef0dc446"
- }
- },
- "VDI": {
- "OpaqueRef:4d3e9fc7-ae61-b312-e0a8-b53bee06282e": {
- "SR": "OpaqueRef:f746e964-e0fe-c36d-d60b-6897cfde583f",
- "VBDs": [
- "OpaqueRef:235f4f04-1dc9-9fa5-c229-a1df187ba48c"
- ],
- "allow_caching": false,
- "allowed_operations": [
- "forget",
- "generate_config",
- "update",
- "resize",
- "destroy",
- "clone",
- "copy",
- "snapshot"
- ],
- "crash_dumps": [],
- "current_operations": {},
- "is_a_snapshot": false,
- "is_tools_iso": false,
- "location": "bdd0baeb-5447-4963-9e71-a5ff6e85fa59",
- "managed": true,
- "metadata_latest": false,
- "metadata_of_pool": "",
- "missing": false,
- "name_description": "/",
- "name_label": "ansible-test-vm-3-root",
- "on_boot": "persist",
- "other_config": {
- "content_id": "cd8e8b2b-f158-c519-02f0-81d130fe83c5"
- },
- "parent": "OpaqueRef:NULL",
- "physical_utilisation": "8615100416",
- "read_only": false,
- "sharable": false,
- "sm_config": {
- "vdi_type": "vhd"
- },
- "snapshot_of": "OpaqueRef:NULL",
- "snapshot_time": "19700101T00:00:00Z",
- "snapshots": [],
- "storage_lock": false,
- "tags": [],
- "type": "system",
- "uuid": "bdd0baeb-5447-4963-9e71-a5ff6e85fa59",
- "virtual_size": "8589934592",
- "xenstore_data": {}
- }
- },
- "VIF": {
- "OpaqueRef:8171dad1-f902-ec00-7ba2-9f92d8aa75ab": {
- "MAC": "72:fb:c7:ac:b9:97",
- "MAC_autogenerated": true,
- "MTU": "1500",
- "VM": "OpaqueRef:957f576a-2347-1789-80db-4beb50466bc2",
- "allowed_operations": [
- "attach"
- ],
- "current_operations": {},
- "currently_attached": false,
- "device": "0",
- "ipv4_addresses": [],
- "ipv4_allowed": [],
- "ipv4_configuration_mode": "None",
- "ipv4_gateway": "",
- "ipv6_addresses": [],
- "ipv6_allowed": [],
- "ipv6_configuration_mode": "None",
- "ipv6_gateway": "",
- "locking_mode": "network_default",
- "metrics": "OpaqueRef:e5b53fb1-3e99-4bf5-6b00-95fdba1f2610",
- "network": "OpaqueRef:8a404c5e-5673-ab69-5d6f-5a35a33b8724",
- "other_config": {},
- "qos_algorithm_params": {},
- "qos_algorithm_type": "",
- "qos_supported_algorithms": [],
- "runtime_properties": {},
- "status_code": "0",
- "status_detail": "",
- "uuid": "94bd4913-4940-437c-a1c3-50f7eb354c55"
- }
- },
- "VM": {
- "OpaqueRef:957f576a-2347-1789-80db-4beb50466bc2": {
- "HVM_boot_params": {
- "order": ""
- },
- "HVM_boot_policy": "",
- "HVM_shadow_multiplier": 1.0,
- "PCI_bus": "",
- "PV_args": "graphical utf8",
- "PV_bootloader": "pygrub",
- "PV_bootloader_args": "",
- "PV_kernel": "",
- "PV_legacy_args": "",
- "PV_ramdisk": "",
- "VBDs": [
- "OpaqueRef:235f4f04-1dc9-9fa5-c229-a1df187ba48c",
- "OpaqueRef:024b722e-8d0f-65e6-359e-f301a009b683"
- ],
- "VCPUs_at_startup": "1",
- "VCPUs_max": "1",
- "VCPUs_params": {},
- "VGPUs": [],
- "VIFs": [
- "OpaqueRef:8171dad1-f902-ec00-7ba2-9f92d8aa75ab"
- ],
- "VTPMs": [],
- "actions_after_crash": "restart",
- "actions_after_reboot": "restart",
- "actions_after_shutdown": "destroy",
- "affinity": "OpaqueRef:NULL",
- "allowed_operations": [
- "changing_dynamic_range",
- "changing_shadow_memory",
- "changing_static_range",
- "make_into_template",
- "migrate_send",
- "destroy",
- "export",
- "start_on",
- "start",
- "clone",
- "copy",
- "snapshot"
- ],
- "appliance": "OpaqueRef:NULL",
- "attached_PCIs": [],
- "bios_strings": {
- "bios-vendor": "Xen",
- "bios-version": "",
- "hp-rombios": "",
- "oem-1": "Xen",
- "oem-2": "MS_VM_CERT/SHA1/bdbeb6e0a816d43fa6d3fe8aaef04c2bad9d3e3d",
- "system-manufacturer": "Xen",
- "system-product-name": "HVM domU",
- "system-serial-number": "",
- "system-version": ""
- },
- "blobs": {},
- "blocked_operations": {},
- "children": [],
- "consoles": [],
- "crash_dumps": [],
- "current_operations": {},
- "domarch": "",
- "domid": "-1",
- "generation_id": "",
- "guest_metrics": "OpaqueRef:6a8acd85-4cab-4e52-27d5-5f4a51c1bf69",
- "ha_always_run": false,
- "ha_restart_priority": "",
- "hardware_platform_version": "0",
- "has_vendor_device": false,
- "is_a_snapshot": false,
- "is_a_template": false,
- "is_control_domain": false,
- "is_default_template": false,
- "is_snapshot_from_vmpp": false,
- "is_vmss_snapshot": false,
- "last_boot_CPU_flags": {
- "features": "17c9cbf5-f6f83203-2191cbf5-00000023-00000001-00000329-00000000-00000000-00001000-0c000000",
- "vendor": "GenuineIntel"
- },
- "last_booted_record": "",
- "memory_dynamic_max": "1073741824",
- "memory_dynamic_min": "1073741824",
- "memory_overhead": "10485760",
- "memory_static_max": "1073741824",
- "memory_static_min": "536870912",
- "memory_target": "0",
- "metrics": "OpaqueRef:87fc5829-478b-1dcd-989f-50e8ba58a87d",
- "name_description": "Created by Ansible",
- "name_label": "ansible-test-vm-3",
- "order": "0",
- "other_config": {
- "auto_poweron": "true",
- "base_template_name": "zatemplate",
- "import_task": "OpaqueRef:9948fd82-6d79-8882-2f01-4edc8795e361",
- "install-methods": "cdrom,nfs,http,ftp",
- "install-repository": "http://mirror.centos.org/centos-6/6.2/os/x86_64/",
- "instant": "true",
- "last_shutdown_action": "Destroy",
- "last_shutdown_initiator": "external",
- "last_shutdown_reason": "halted",
- "last_shutdown_time": "20140314T21:16:41Z",
- "linux_template": "true",
- "mac_seed": "06e27068-70c2-4c69-614b-7c54b5a4a781",
- "rhel6": "true"
- },
- "parent": "OpaqueRef:NULL",
- "platform": {
- "acpi": "true",
- "apic": "true",
- "cores-per-socket": "1",
- "nx": "false",
- "pae": "true",
- "viridian": "true"
- },
- "power_state": "Halted",
- "protection_policy": "OpaqueRef:NULL",
- "recommendations": "<restrictions><restriction field=\"memory-static-max\" max=\"17179869184\" /><restriction field=\"vcpus-max\" max=\"8\" /><restriction property=\"number-of-vbds\" max=\"7\" /><restriction property=\"number-of-vifs\" max=\"7\" /></restrictions>",
- "reference_label": "",
- "requires_reboot": false,
- "resident_on": "OpaqueRef:NULL",
- "shutdown_delay": "0",
- "snapshot_info": {},
- "snapshot_metadata": "",
- "snapshot_of": "OpaqueRef:NULL",
- "snapshot_schedule": "OpaqueRef:NULL",
- "snapshot_time": "19700101T00:00:00Z",
- "snapshots": [],
- "start_delay": "0",
- "suspend_SR": "OpaqueRef:NULL",
- "suspend_VDI": "OpaqueRef:NULL",
- "tags": [
- "web-frontend"
- ],
- "transportable_snapshot_id": "",
- "user_version": "1",
- "uuid": "8f5bc97c-42fa-d619-aba4-d25eced735e0",
- "version": "0",
- "xenstore_data": {
- "vm-data": "",
- "vm-data/networks": "",
- "vm-data/networks/0": "",
- "vm-data/networks/0/mac": "72:fb:c7:ac:b9:97",
- "vm-data/networks/0/name": "Host internal management network"
- }
- }
- },
- "VM_guest_metrics": {
- "OpaqueRef:6a8acd85-4cab-4e52-27d5-5f4a51c1bf69": {
- "PV_drivers_detected": true,
- "PV_drivers_up_to_date": true,
- "PV_drivers_version": {
- "build": "46676",
- "major": "5",
- "micro": "100",
- "minor": "6"
- },
- "can_use_hotplug_vbd": "unspecified",
- "can_use_hotplug_vif": "unspecified",
- "disks": {},
- "last_updated": "20190113T19:36:07Z",
- "live": true,
- "memory": {},
- "networks": {
- "0/ip": "169.254.0.3"
- },
- "os_version": {
- "distro": "centos",
- "major": "6",
- "minor": "10",
- "name": "CentOS release 6.10 (Final)",
- "uname": "2.6.32-754.6.3.el6.x86_64"
- },
- "other": {
- "feature-balloon": "1",
- "has-vendor-device": "0",
- "platform-feature-multiprocessor-suspend": "1"
- },
- "other_config": {},
- "uuid": "3928a6a4-1acd-c134-ed35-eb0ccfaed65c"
- }
- },
- "VM_metrics": {
- "OpaqueRef:87fc5829-478b-1dcd-989f-50e8ba58a87d": {
- "VCPUs_CPU": {},
- "VCPUs_flags": {},
- "VCPUs_number": "0",
- "VCPUs_params": {},
- "VCPUs_utilisation": {
- "0": 0.0
- },
- "hvm": false,
- "install_time": "20190113T19:35:05Z",
- "last_updated": "19700101T00:00:00Z",
- "memory_actual": "1073741824",
- "nested_virt": false,
- "nomigrate": false,
- "other_config": {},
- "start_time": "19700101T00:00:00Z",
- "state": [],
- "uuid": "6cb05fe9-b83e-34c8-29e0-3b793e1da661"
- }
- },
- "host": {},
- "network": {
- "OpaqueRef:8a404c5e-5673-ab69-5d6f-5a35a33b8724": {
- "MTU": "1500",
- "PIFs": [],
- "VIFs": [],
- "allowed_operations": [],
- "assigned_ips": {
- "OpaqueRef:8171dad1-f902-ec00-7ba2-9f92d8aa75ab": "169.254.0.3",
- "OpaqueRef:9754a0ed-e100-d224-6a70-a55a9c2cedf9": "169.254.0.2"
- },
- "blobs": {},
- "bridge": "xenapi",
- "current_operations": {},
- "default_locking_mode": "unlocked",
- "managed": true,
- "name_description": "Network on which guests will be assigned a private link-local IP address which can be used to talk XenAPI",
- "name_label": "Host internal management network",
- "other_config": {
- "ip_begin": "169.254.0.1",
- "ip_end": "169.254.255.254",
- "is_guest_installer_network": "true",
- "is_host_internal_management_network": "true",
- "netmask": "255.255.0.0"
- },
- "tags": [],
- "uuid": "dbb96525-944f-0d1a-54ed-e65cb6d07450"
- }
- }
-}
diff --git a/test/units/module_utils/xenserver/test_gather_vm_params_and_facts.py b/test/units/module_utils/xenserver/test_gather_vm_params_and_facts.py
deleted file mode 100644
index 510daa1eac..0000000000
--- a/test/units/module_utils/xenserver/test_gather_vm_params_and_facts.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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 pytest
-
-from .common import testcase_bad_xenapi_refs
-
-
-testcase_gather_vm_params_and_facts = {
- "params": [
- ["ansible-test-vm-1-params.json", "ansible-test-vm-1-facts.json"],
- ["ansible-test-vm-2-params.json", "ansible-test-vm-2-facts.json"],
- ["ansible-test-vm-3-params.json", "ansible-test-vm-3-facts.json"],
- ],
- "ids": [
- "ansible-test-vm-1",
- "ansible-test-vm-2",
- "ansible-test-vm-3",
- ],
-}
-
-
-@pytest.mark.parametrize('vm_ref', testcase_bad_xenapi_refs['params'], ids=testcase_bad_xenapi_refs['ids'])
-def test_gather_vm_params_bad_vm_ref(fake_ansible_module, xenserver, vm_ref):
- """Tests return of empty dict on bad vm_ref."""
- assert xenserver.gather_vm_params(fake_ansible_module, vm_ref) == {}
-
-
-def test_gather_vm_facts_no_vm_params(fake_ansible_module, xenserver):
- """Tests return of empty facts dict when vm_params is not available"""
- assert xenserver.gather_vm_facts(fake_ansible_module, None) == {}
- assert xenserver.gather_vm_facts(fake_ansible_module, {}) == {}
-
-
-@pytest.mark.parametrize('fixture_data_from_file',
- testcase_gather_vm_params_and_facts['params'],
- ids=testcase_gather_vm_params_and_facts['ids'],
- indirect=True)
-def test_gather_vm_params_and_facts(mocker, fake_ansible_module, XenAPI, xenserver, fixture_data_from_file):
- """Tests proper parsing of VM parameters and facts."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- if "params" in list(fixture_data_from_file.keys())[0]:
- params_file = list(fixture_data_from_file.keys())[0]
- facts_file = list(fixture_data_from_file.keys())[1]
- else:
- params_file = list(fixture_data_from_file.keys())[1]
- facts_file = list(fixture_data_from_file.keys())[0]
-
- mocked_returns = {
- "VM.get_record.side_effect": lambda obj_ref: fixture_data_from_file[params_file]['VM'][obj_ref],
- "VM_metrics.get_record.side_effect": lambda obj_ref: fixture_data_from_file[params_file]['VM_metrics'][obj_ref],
- "VM_guest_metrics.get_record.side_effect": lambda obj_ref: fixture_data_from_file[params_file]['VM_guest_metrics'][obj_ref],
- "VBD.get_record.side_effect": lambda obj_ref: fixture_data_from_file[params_file]['VBD'][obj_ref],
- "VDI.get_record.side_effect": lambda obj_ref: fixture_data_from_file[params_file]['VDI'][obj_ref],
- "SR.get_record.side_effect": lambda obj_ref: fixture_data_from_file[params_file]['SR'][obj_ref],
- "VIF.get_record.side_effect": lambda obj_ref: fixture_data_from_file[params_file]['VIF'][obj_ref],
- "network.get_record.side_effect": lambda obj_ref: fixture_data_from_file[params_file]['network'][obj_ref],
- "host.get_record.side_effect": lambda obj_ref: fixture_data_from_file[params_file]['host'][obj_ref],
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0])
-
- vm_ref = list(fixture_data_from_file[params_file]['VM'].keys())[0]
-
- assert xenserver.gather_vm_facts(fake_ansible_module, xenserver.gather_vm_params(fake_ansible_module, vm_ref)) == fixture_data_from_file[facts_file]
diff --git a/test/units/module_utils/xenserver/test_get_object_ref.py b/test/units/module_utils/xenserver/test_get_object_ref.py
deleted file mode 100644
index 267302a099..0000000000
--- a/test/units/module_utils/xenserver/test_get_object_ref.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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 pytest
-
-from .FakeAnsibleModule import FailJsonException
-from .common import fake_xenapi_ref
-
-
-def test_get_object_ref_xenapi_failure(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests catching of XenAPI failures."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi_request', side_effect=XenAPI.Failure('Fake XAPI method call error!'))
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.get_object_ref(fake_ansible_module, "name")
-
- assert exc_info.value.kwargs['msg'] == "XAPI ERROR: Fake XAPI method call error!"
-
-
-def test_get_object_ref_bad_uuid_and_name(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests failure on bad object uuid and/or name."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi_request')
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.get_object_ref(fake_ansible_module, None, msg_prefix="Test: ")
-
- mocked_xenapi.xenapi_request.assert_not_called()
- assert exc_info.value.kwargs['msg'] == "Test: no valid name or UUID supplied for VM!"
-
-
-def test_get_object_ref_uuid_not_found(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests when object is not found by uuid."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi_request', side_effect=XenAPI.Failure('Fake XAPI not found error!'))
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.get_object_ref(fake_ansible_module, "name", uuid="fake-uuid", msg_prefix="Test: ")
-
- assert exc_info.value.kwargs['msg'] == "Test: VM with UUID 'fake-uuid' not found!"
- assert xenserver.get_object_ref(fake_ansible_module, "name", uuid="fake-uuid", fail=False, msg_prefix="Test: ") is None
-
-
-def test_get_object_ref_name_not_found(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests when object is not found by name."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi_request', return_value=[])
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.get_object_ref(fake_ansible_module, "name", msg_prefix="Test: ")
-
- assert exc_info.value.kwargs['msg'] == "Test: VM with name 'name' not found!"
- assert xenserver.get_object_ref(fake_ansible_module, "name", fail=False, msg_prefix="Test: ") is None
-
-
-def test_get_object_ref_name_multiple_found(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests when multiple objects are found by name."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi_request', return_value=[fake_xenapi_ref('VM'), fake_xenapi_ref('VM')])
-
- error_msg = "Test: multiple VMs with name 'name' found! Please use UUID."
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.get_object_ref(fake_ansible_module, "name", msg_prefix="Test: ")
-
- assert exc_info.value.kwargs['msg'] == error_msg
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.get_object_ref(fake_ansible_module, "name", fail=False, msg_prefix="Test: ")
-
- assert exc_info.value.kwargs['msg'] == error_msg
diff --git a/test/units/module_utils/xenserver/test_misc.py b/test/units/module_utils/xenserver/test_misc.py
deleted file mode 100644
index 8a8d4eaeef..0000000000
--- a/test/units/module_utils/xenserver/test_misc.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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
-
-
-def test_xapi_to_module_vm_power_state_bad_power_state(xenserver):
- """Tests that None is returned on bad power state."""
- assert xenserver.xapi_to_module_vm_power_state("bad") is None
-
-
-def test_module_to_xapi_vm_power_state_bad_power_state(xenserver):
- """Tests that None is returned on bad power state."""
- assert xenserver.module_to_xapi_vm_power_state("bad") is None
diff --git a/test/units/module_utils/xenserver/test_netaddr_functions.py b/test/units/module_utils/xenserver/test_netaddr_functions.py
deleted file mode 100644
index 33af72a14f..0000000000
--- a/test/units/module_utils/xenserver/test_netaddr_functions.py
+++ /dev/null
@@ -1,182 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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 pytest
-
-from ansible.module_utils.common.network import is_mac
-
-testcase_is_valid_mac_addr = [
- ('A4-23-8D-F8-C9-E5', True),
- ('35:71:F4:11:0B:D8', True),
- ('b3-bd-20-59-0c-cf', True),
- ('32:61:ca:65:f1:f4', True),
- ('asdf', False),
- ('A4-23-8D-G8-C9-E5', False),
- ('A4-3-8D-F8-C9-E5', False),
- ('A4-23-88D-F8-C9-E5', False),
- ('A4-23-8D-F8-C9_E5', False),
- ('A4-23--8D-F8-C9-E5', False),
-]
-
-testcase_is_valid_ip_addr = [
- ('0.0.0.0', True),
- ('10.0.0.1', True),
- ('192.168.0.1', True),
- ('255.255.255.255', True),
- ('asdf', False),
- ('a.b.c.d', False),
- ('345.345.345.345', False),
- ('-10.0.0.1', False),
-]
-
-testcase_is_valid_ip_netmask = [
- ('240.0.0.0', True),
- ('255.224.0.0', True),
- ('255.255.248.0', True),
- ('255.255.255.255', True),
- ('asdf', False),
- ('a.b.c.d', False),
- ('192.168.0.1', False),
- ('255.0.248.0', False),
-]
-
-testcase_is_valid_ip_prefix = [
- ('0', True),
- ('16', True),
- ('24', True),
- ('32', True),
- ('asdf', False),
- ('-10', False),
- ('60', False),
- ('60s', False),
-]
-
-testcase_ip_prefix_to_netmask = {
- "params": [
- ('0', '0.0.0.0'),
- ('8', '255.0.0.0'),
- ('11', '255.224.0.0'),
- ('16', '255.255.0.0'),
- ('21', '255.255.248.0'),
- ('24', '255.255.255.0'),
- ('26', '255.255.255.192'),
- ('32', '255.255.255.255'),
- ('a', ''),
- ('60', ''),
- ],
- "ids": [
- '0',
- '8',
- '11',
- '16',
- '21',
- '24',
- '26',
- '32',
- 'a',
- '60',
- ],
-}
-
-testcase_ip_netmask_to_prefix = {
- "params": [
- ('0.0.0.0', '0'),
- ('255.0.0.0', '8'),
- ('255.224.0.0', '11'),
- ('255.255.0.0', '16'),
- ('255.255.248.0', '21'),
- ('255.255.255.0', '24'),
- ('255.255.255.192', '26'),
- ('255.255.255.255', '32'),
- ('a', ''),
- ('60', ''),
- ],
- "ids": [
- '0.0.0.0',
- '255.0.0.0',
- '255.224.0.0',
- '255.255.0.0',
- '255.255.248.0',
- '255.255.255.0',
- '255.255.255.192',
- '255.255.255.255',
- 'a',
- '60',
- ],
-}
-
-testcase_is_valid_ip6_addr = [
- ('::1', True),
- ('2001:DB8:0:0:8:800:200C:417A', True),
- ('2001:DB8::8:800:200C:417A', True),
- ('FF01::101', True),
- ('asdf', False),
- ('2001:DB8:0:0:8:800:200C:417A:221', False),
- ('FF01::101::2', False),
- ('2001:db8:85a3::8a2e:370k:7334', False),
-]
-
-testcase_is_valid_ip6_prefix = [
- ('0', True),
- ('56', True),
- ('78', True),
- ('128', True),
- ('asdf', False),
- ('-10', False),
- ('345', False),
- ('60s', False),
-]
-
-
-@pytest.mark.parametrize('mac_addr, result', testcase_is_valid_mac_addr)
-def test_is_valid_mac_addr(xenserver, mac_addr, result):
- """Tests against examples of valid and invalid mac addresses."""
- assert is_mac(mac_addr) is result
-
-
-@pytest.mark.parametrize('ip_addr, result', testcase_is_valid_ip_addr)
-def test_is_valid_ip_addr(xenserver, ip_addr, result):
- """Tests against examples of valid and invalid ip addresses."""
- assert xenserver.is_valid_ip_addr(ip_addr) is result
-
-
-@pytest.mark.parametrize('ip_netmask, result', testcase_is_valid_ip_netmask)
-def test_is_valid_ip_netmask(xenserver, ip_netmask, result):
- """Tests against examples of valid and invalid ip netmasks."""
- assert xenserver.is_valid_ip_netmask(ip_netmask) is result
-
-
-@pytest.mark.parametrize('ip_prefix, result', testcase_is_valid_ip_prefix)
-def test_is_valid_ip_prefix(xenserver, ip_prefix, result):
- """Tests against examples of valid and invalid ip prefixes."""
- assert xenserver.is_valid_ip_prefix(ip_prefix) is result
-
-
-@pytest.mark.parametrize('ip_prefix, ip_netmask', testcase_ip_prefix_to_netmask['params'], ids=testcase_ip_prefix_to_netmask['ids'])
-def test_ip_prefix_to_netmask(xenserver, ip_prefix, ip_netmask):
- """Tests ip prefix to netmask conversion."""
- assert xenserver.ip_prefix_to_netmask(ip_prefix) == ip_netmask
-
-
-@pytest.mark.parametrize('ip_netmask, ip_prefix', testcase_ip_netmask_to_prefix['params'], ids=testcase_ip_netmask_to_prefix['ids'])
-def test_ip_netmask_to_prefix(xenserver, ip_netmask, ip_prefix):
- """Tests ip netmask to prefix conversion."""
- assert xenserver.ip_netmask_to_prefix(ip_netmask) == ip_prefix
-
-
-@pytest.mark.parametrize('ip6_addr, result', testcase_is_valid_ip6_addr)
-def test_is_valid_ip6_addr(xenserver, ip6_addr, result):
- """Tests against examples of valid and invalid ip6 addresses."""
- assert xenserver.is_valid_ip6_addr(ip6_addr) is result
-
-
-@pytest.mark.parametrize('ip6_prefix, result', testcase_is_valid_ip6_prefix)
-def test_is_valid_ip6_prefix(xenserver, ip6_prefix, result):
- """Tests against examples of valid and invalid ip6 prefixes."""
- assert xenserver.is_valid_ip6_prefix(ip6_prefix) is result
diff --git a/test/units/module_utils/xenserver/test_set_vm_power_state.py b/test/units/module_utils/xenserver/test_set_vm_power_state.py
deleted file mode 100644
index c14f272351..0000000000
--- a/test/units/module_utils/xenserver/test_set_vm_power_state.py
+++ /dev/null
@@ -1,413 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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 pytest
-
-from .FakeAnsibleModule import FailJsonException
-from .common import fake_xenapi_ref, testcase_bad_xenapi_refs
-
-
-testcase_set_vm_power_state_bad_transitions = {
- "params": [
- ('restarted', 'Halted', "Cannot restart VM in state 'poweredoff'!"),
- ('restarted', 'Suspended', "Cannot restart VM in state 'suspended'!"),
- ('suspended', 'Halted', "Cannot suspend VM in state 'poweredoff'!"),
- ('suspended', 'Paused', "Cannot suspend VM in state 'paused'!"),
- ('shutdownguest', 'Halted', "Cannot shutdown guest when VM is in state 'poweredoff'!"),
- ('shutdownguest', 'Suspended', "Cannot shutdown guest when VM is in state 'suspended'!"),
- ('shutdownguest', 'Paused', "Cannot shutdown guest when VM is in state 'paused'!"),
- ('rebootguest', 'Halted', "Cannot reboot guest when VM is in state 'poweredoff'!"),
- ('rebootguest', 'Suspended', "Cannot reboot guest when VM is in state 'suspended'!"),
- ('rebootguest', 'Paused', "Cannot reboot guest when VM is in state 'paused'!"),
- ],
- "ids": [
- "poweredoff->restarted",
- "suspended->restarted",
- "poweredoff->suspended",
- "paused->suspended",
- "poweredoff->shutdownguest",
- "suspended->shutdownguest",
- "paused->shutdownguest",
- "poweredoff->rebootguest",
- "suspended->rebootguest",
- "paused->rebootguest",
- ],
-}
-
-testcase_set_vm_power_state_task_timeout = {
- "params": [
- ('shutdownguest', "Guest shutdown task failed: 'timeout'!"),
- ('rebootguest', "Guest reboot task failed: 'timeout'!"),
- ],
- "ids": [
- "shutdownguest-timeout",
- "rebootguest-timeout",
- ],
-}
-
-testcase_set_vm_power_state_no_transitions = {
- "params": [
- ('poweredon', "Running"),
- ('Poweredon', "Running"),
- ('powered-on', "Running"),
- ('Powered_on', "Running"),
- ('poweredoff', "Halted"),
- ('Poweredoff', "Halted"),
- ('powered-off', "Halted"),
- ('powered_off', "Halted"),
- ('suspended', "Suspended"),
- ('Suspended', "Suspended"),
- ],
- "ids": [
- "poweredon",
- "poweredon-cap",
- "poweredon-dash",
- "poweredon-under",
- "poweredoff",
- "poweredoff-cap",
- "poweredoff-dash",
- "poweredoff-under",
- "suspended",
- "suspended-cap",
- ],
-}
-
-testcase_set_vm_power_state_transitions = {
- "params": [
- ('poweredon', 'Halted', 'running', 'VM.start'),
- ('Poweredon', 'Halted', 'running', 'VM.start'),
- ('powered-on', 'Halted', 'running', 'VM.start'),
- ('Powered_on', 'Halted', 'running', 'VM.start'),
- ('poweredon', 'Suspended', 'running', 'VM.resume'),
- ('Poweredon', 'Suspended', 'running', 'VM.resume'),
- ('powered-on', 'Suspended', 'running', 'VM.resume'),
- ('Powered_on', 'Suspended', 'running', 'VM.resume'),
- ('poweredon', 'Paused', 'running', 'VM.unpause'),
- ('Poweredon', 'Paused', 'running', 'VM.unpause'),
- ('powered-on', 'Paused', 'running', 'VM.unpause'),
- ('Powered_on', 'Paused', 'running', 'VM.unpause'),
- ('poweredoff', 'Running', 'halted', 'VM.hard_shutdown'),
- ('Poweredoff', 'Running', 'halted', 'VM.hard_shutdown'),
- ('powered-off', 'Running', 'halted', 'VM.hard_shutdown'),
- ('powered_off', 'Running', 'halted', 'VM.hard_shutdown'),
- ('poweredoff', 'Suspended', 'halted', 'VM.hard_shutdown'),
- ('Poweredoff', 'Suspended', 'halted', 'VM.hard_shutdown'),
- ('powered-off', 'Suspended', 'halted', 'VM.hard_shutdown'),
- ('powered_off', 'Suspended', 'halted', 'VM.hard_shutdown'),
- ('poweredoff', 'Paused', 'halted', 'VM.hard_shutdown'),
- ('Poweredoff', 'Paused', 'halted', 'VM.hard_shutdown'),
- ('powered-off', 'Paused', 'halted', 'VM.hard_shutdown'),
- ('powered_off', 'Paused', 'halted', 'VM.hard_shutdown'),
- ('restarted', 'Running', 'running', 'VM.hard_reboot'),
- ('Restarted', 'Running', 'running', 'VM.hard_reboot'),
- ('restarted', 'Paused', 'running', 'VM.hard_reboot'),
- ('Restarted', 'Paused', 'running', 'VM.hard_reboot'),
- ('suspended', 'Running', 'suspended', 'VM.suspend'),
- ('Suspended', 'Running', 'suspended', 'VM.suspend'),
- ('shutdownguest', 'Running', 'halted', 'VM.clean_shutdown'),
- ('Shutdownguest', 'Running', 'halted', 'VM.clean_shutdown'),
- ('shutdown-guest', 'Running', 'halted', 'VM.clean_shutdown'),
- ('shutdown_guest', 'Running', 'halted', 'VM.clean_shutdown'),
- ('rebootguest', 'Running', 'running', 'VM.clean_reboot'),
- ('rebootguest', 'Running', 'running', 'VM.clean_reboot'),
- ('reboot-guest', 'Running', 'running', 'VM.clean_reboot'),
- ('reboot_guest', 'Running', 'running', 'VM.clean_reboot'),
- ],
- "ids": [
- "poweredoff->poweredon",
- "poweredoff->poweredon-cap",
- "poweredoff->poweredon-dash",
- "poweredoff->poweredon-under",
- "suspended->poweredon",
- "suspended->poweredon-cap",
- "suspended->poweredon-dash",
- "suspended->poweredon-under",
- "paused->poweredon",
- "paused->poweredon-cap",
- "paused->poweredon-dash",
- "paused->poweredon-under",
- "poweredon->poweredoff",
- "poweredon->poweredoff-cap",
- "poweredon->poweredoff-dash",
- "poweredon->poweredoff-under",
- "suspended->poweredoff",
- "suspended->poweredoff-cap",
- "suspended->poweredoff-dash",
- "suspended->poweredoff-under",
- "paused->poweredoff",
- "paused->poweredoff-cap",
- "paused->poweredoff-dash",
- "paused->poweredoff-under",
- "poweredon->restarted",
- "poweredon->restarted-cap",
- "paused->restarted",
- "paused->restarted-cap",
- "poweredon->suspended",
- "poweredon->suspended-cap",
- "poweredon->shutdownguest",
- "poweredon->shutdownguest-cap",
- "poweredon->shutdownguest-dash",
- "poweredon->shutdownguest-under",
- "poweredon->rebootguest",
- "poweredon->rebootguest-cap",
- "poweredon->rebootguest-dash",
- "poweredon->rebootguest-under",
- ],
-}
-
-testcase_set_vm_power_state_transitions_async = {
- "params": [
- ('shutdownguest', 'Running', 'halted', 'Async.VM.clean_shutdown'),
- ('Shutdownguest', 'Running', 'halted', 'Async.VM.clean_shutdown'),
- ('shutdown-guest', 'Running', 'halted', 'Async.VM.clean_shutdown'),
- ('shutdown_guest', 'Running', 'halted', 'Async.VM.clean_shutdown'),
- ('rebootguest', 'Running', 'running', 'Async.VM.clean_reboot'),
- ('rebootguest', 'Running', 'running', 'Async.VM.clean_reboot'),
- ('reboot-guest', 'Running', 'running', 'Async.VM.clean_reboot'),
- ('reboot_guest', 'Running', 'running', 'Async.VM.clean_reboot'),
- ],
- "ids": [
- "poweredon->shutdownguest",
- "poweredon->shutdownguest-cap",
- "poweredon->shutdownguest-dash",
- "poweredon->shutdownguest-under",
- "poweredon->rebootguest",
- "poweredon->rebootguest-cap",
- "poweredon->rebootguest-dash",
- "poweredon->rebootguest-under",
- ],
-}
-
-
-@pytest.mark.parametrize('vm_ref', testcase_bad_xenapi_refs['params'], ids=testcase_bad_xenapi_refs['ids'])
-def test_set_vm_power_state_bad_vm_ref(fake_ansible_module, xenserver, vm_ref):
- """Tests failure on bad vm_ref."""
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.set_vm_power_state(fake_ansible_module, vm_ref, None)
-
- assert exc_info.value.kwargs['msg'] == "Cannot set VM power state. Invalid VM reference supplied!"
-
-
-def test_set_vm_power_state_xenapi_failure(mock_xenapi_failure, fake_ansible_module, xenserver):
- """Tests catching of XenAPI failures."""
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.set_vm_power_state(fake_ansible_module, fake_xenapi_ref('VM'), "poweredon")
-
- assert exc_info.value.kwargs['msg'] == "XAPI ERROR: %s" % mock_xenapi_failure[1]
-
-
-def test_set_vm_power_state_bad_power_state(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests failure on unsupported power state."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "VM.get_power_state.return_value": "Running",
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.set_vm_power_state(fake_ansible_module, fake_xenapi_ref('VM'), "bad")
-
- # Beside VM.get_power_state() no other method should have been
- # called additionally.
- assert len(mocked_xenapi.method_calls) == 1
-
- assert exc_info.value.kwargs['msg'] == "Requested VM power state 'bad' is unsupported!"
-
-
-@pytest.mark.parametrize('power_state_desired, power_state_current, error_msg',
- testcase_set_vm_power_state_bad_transitions['params'],
- ids=testcase_set_vm_power_state_bad_transitions['ids'])
-def test_set_vm_power_state_bad_transition(mocker, fake_ansible_module, XenAPI, xenserver, power_state_desired, power_state_current, error_msg):
- """Tests failure on bad power state transition."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "VM.get_power_state.return_value": power_state_current,
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.set_vm_power_state(fake_ansible_module, fake_xenapi_ref('VM'), power_state_desired)
-
- # Beside VM.get_power_state() no other method should have been
- # called additionally.
- assert len(mocked_xenapi.method_calls) == 1
-
- assert exc_info.value.kwargs['msg'] == error_msg
-
-
-@pytest.mark.parametrize('power_state, error_msg',
- testcase_set_vm_power_state_task_timeout['params'],
- ids=testcase_set_vm_power_state_task_timeout['ids'])
-def test_set_vm_power_state_task_timeout(mocker, fake_ansible_module, XenAPI, xenserver, power_state, error_msg):
- """Tests failure on async task timeout."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "VM.get_power_state.return_value": "Running",
- "Async.VM.clean_shutdown.return_value": fake_xenapi_ref('task'),
- "Async.VM.clean_reboot.return_value": fake_xenapi_ref('task'),
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('ansible.module_utils.xenserver.wait_for_task', return_value="timeout")
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.set_vm_power_state(fake_ansible_module, fake_xenapi_ref('VM'), power_state, timeout=1)
-
- # Beside VM.get_power_state() only one of Async.VM.clean_shutdown or
- # Async.VM.clean_reboot should have been called additionally.
- assert len(mocked_xenapi.method_calls) == 2
-
- assert exc_info.value.kwargs['msg'] == error_msg
-
-
-@pytest.mark.parametrize('power_state_desired, power_state_current',
- testcase_set_vm_power_state_no_transitions['params'],
- ids=testcase_set_vm_power_state_no_transitions['ids'])
-def test_set_vm_power_state_no_transition(mocker, fake_ansible_module, XenAPI, xenserver, power_state_desired, power_state_current):
- """Tests regular invocation without power state transition."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "VM.get_power_state.return_value": power_state_current,
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- result = xenserver.set_vm_power_state(fake_ansible_module, fake_xenapi_ref('VM'), power_state_desired)
-
- # Beside VM.get_power_state() no other method should have been
- # called additionally.
- assert len(mocked_xenapi.method_calls) == 1
-
- assert result[0] is False
- assert result[1] == power_state_current.lower()
-
-
-@pytest.mark.parametrize('power_state_desired, power_state_current, power_state_resulting, activated_xenapi_method',
- testcase_set_vm_power_state_transitions['params'],
- ids=testcase_set_vm_power_state_transitions['ids'])
-def test_set_vm_power_state_transition(mocker,
- fake_ansible_module,
- XenAPI,
- xenserver,
- power_state_desired,
- power_state_current,
- power_state_resulting,
- activated_xenapi_method):
- """Tests regular invocation with power state transition."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "VM.get_power_state.return_value": power_state_current,
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- result = xenserver.set_vm_power_state(fake_ansible_module, fake_xenapi_ref('VM'), power_state_desired, timeout=0)
-
- mocked_xenapi_method = mocked_xenapi
-
- for activated_xenapi_class in activated_xenapi_method.split('.'):
- mocked_xenapi_method = getattr(mocked_xenapi_method, activated_xenapi_class)
-
- mocked_xenapi_method.assert_called_once()
-
- # Beside VM.get_power_state() only activated_xenapi_method should have
- # been called additionally.
- assert len(mocked_xenapi.method_calls) == 2
-
- assert result[0] is True
- assert result[1] == power_state_resulting
-
-
-@pytest.mark.parametrize('power_state_desired, power_state_current, power_state_resulting, activated_xenapi_method',
- testcase_set_vm_power_state_transitions_async['params'],
- ids=testcase_set_vm_power_state_transitions_async['ids'])
-def test_set_vm_power_state_transition_async(mocker,
- fake_ansible_module,
- XenAPI,
- xenserver,
- power_state_desired,
- power_state_current,
- power_state_resulting,
- activated_xenapi_method):
- """
- Tests regular invocation with async power state transition
- (shutdownguest and rebootguest only).
- """
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "VM.get_power_state.return_value": power_state_current,
- "%s.return_value" % activated_xenapi_method: fake_xenapi_ref('task'),
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('ansible.module_utils.xenserver.wait_for_task', return_value="")
-
- result = xenserver.set_vm_power_state(fake_ansible_module, fake_xenapi_ref('VM'), power_state_desired, timeout=1)
-
- mocked_xenapi_method = mocked_xenapi
-
- for activated_xenapi_class in activated_xenapi_method.split('.'):
- mocked_xenapi_method = getattr(mocked_xenapi_method, activated_xenapi_class)
-
- mocked_xenapi_method.assert_called_once()
-
- # Beside VM.get_power_state() only activated_xenapi_method should have
- # been called additionally.
- assert len(mocked_xenapi.method_calls) == 2
-
- assert result[0] is True
- assert result[1] == power_state_resulting
-
-
-@pytest.mark.parametrize('power_state_desired, power_state_current, power_state_resulting, activated_xenapi_method',
- testcase_set_vm_power_state_transitions['params'],
- ids=testcase_set_vm_power_state_transitions['ids'])
-def test_set_vm_power_state_transition_check_mode(mocker,
- fake_ansible_module,
- XenAPI,
- xenserver,
- power_state_desired,
- power_state_current,
- power_state_resulting,
- activated_xenapi_method):
- """Tests regular invocation with power state transition in check mode."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "VM.get_power_state.return_value": power_state_current,
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- fake_ansible_module.check_mode = True
- result = xenserver.set_vm_power_state(fake_ansible_module, fake_xenapi_ref('VM'), power_state_desired, timeout=0)
-
- mocked_xenapi_method = mocked_xenapi
-
- for activated_xenapi_class in activated_xenapi_method.split('.'):
- mocked_xenapi_method = getattr(mocked_xenapi_method, activated_xenapi_class)
-
- mocked_xenapi_method.assert_not_called()
-
- # Beside VM.get_power_state() no other method should have been
- # called additionally.
- assert len(mocked_xenapi.method_calls) == 1
-
- assert result[0] is True
- assert result[1] == power_state_resulting
diff --git a/test/units/module_utils/xenserver/test_wait_for_functions.py b/test/units/module_utils/xenserver/test_wait_for_functions.py
deleted file mode 100644
index 9358e0bd91..0000000000
--- a/test/units/module_utils/xenserver/test_wait_for_functions.py
+++ /dev/null
@@ -1,220 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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 pytest
-
-from .FakeAnsibleModule import FailJsonException
-from .common import fake_xenapi_ref, testcase_bad_xenapi_refs
-
-
-testcase_wait_for_vm_ip_address_bad_power_states = {
- "params": [
- 'Halted',
- 'Paused',
- 'Suspended',
- 'Other',
- ],
- "ids": [
- 'state-halted',
- 'state-paused',
- 'state-suspended',
- 'state-other',
- ]
-}
-
-testcase_wait_for_vm_ip_address_bad_guest_metrics = {
- "params": [
- ('OpaqueRef:NULL', {"networks": {}}),
- (fake_xenapi_ref('VM_guest_metrics'), {"networks": {}}),
- ],
- "ids": [
- 'vm_guest_metrics_ref-null, no-ip',
- 'vm_guest_metrics_ref-ok, no-ip',
- ],
-}
-
-testcase_wait_for_task_all_statuses = {
- "params": [
- ('Success', ''),
- ('Failure', 'failure'),
- ('Cancelling', 'cancelling'),
- ('Cancelled', 'cancelled'),
- ('Other', 'other'),
- ],
- "ids": [
- 'task-success',
- 'task-failure',
- 'task-cancelling',
- 'task-cancelled',
- 'task-other',
- ]
-}
-
-
-@pytest.mark.parametrize('vm_ref', testcase_bad_xenapi_refs['params'], ids=testcase_bad_xenapi_refs['ids'])
-def test_wait_for_vm_ip_address_bad_vm_ref(fake_ansible_module, xenserver, vm_ref):
- """Tests failure on bad vm_ref."""
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.wait_for_vm_ip_address(fake_ansible_module, vm_ref)
-
- assert exc_info.value.kwargs['msg'] == "Cannot wait for VM IP address. Invalid VM reference supplied!"
-
-
-def test_wait_for_vm_ip_address_xenapi_failure(mock_xenapi_failure, xenserver, fake_ansible_module):
- """Tests catching of XenAPI failures."""
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.wait_for_vm_ip_address(fake_ansible_module, fake_xenapi_ref('VM'))
-
- assert exc_info.value.kwargs['msg'] == "XAPI ERROR: %s" % mock_xenapi_failure[1]
-
-
-@pytest.mark.parametrize('bad_power_state',
- testcase_wait_for_vm_ip_address_bad_power_states['params'],
- ids=testcase_wait_for_vm_ip_address_bad_power_states['ids'])
-def test_wait_for_vm_ip_address_bad_power_state(mocker, fake_ansible_module, XenAPI, xenserver, bad_power_state):
- """Tests failure on bad power state."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "VM.get_power_state.return_value": bad_power_state,
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.wait_for_vm_ip_address(fake_ansible_module, fake_xenapi_ref('VM'))
-
- assert exc_info.value.kwargs['msg'] == ("Cannot wait for VM IP address when VM is in state '%s'!" %
- xenserver.xapi_to_module_vm_power_state(bad_power_state.lower()))
-
-
-@pytest.mark.parametrize('bad_guest_metrics_ref, bad_guest_metrics',
- testcase_wait_for_vm_ip_address_bad_guest_metrics['params'],
- ids=testcase_wait_for_vm_ip_address_bad_guest_metrics['ids'])
-def test_wait_for_vm_ip_address_timeout(mocker, fake_ansible_module, XenAPI, xenserver, bad_guest_metrics_ref, bad_guest_metrics):
- """Tests timeout."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "VM.get_power_state.return_value": "Running",
- "VM.get_guest_metrics.return_value": bad_guest_metrics_ref,
- "VM_guest_metrics.get_record.return_value": bad_guest_metrics,
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('time.sleep')
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.wait_for_vm_ip_address(fake_ansible_module, fake_xenapi_ref('VM'), timeout=1)
-
- assert exc_info.value.kwargs['msg'] == "Timed out waiting for VM IP address!"
-
-
-def test_wait_for_vm_ip_address(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests regular invocation."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- # This mock simulates regular VM IP acquirement lifecycle:
- #
- # 1) First, no guest metrics are available because VM is not yet fully
- # booted and guest agent is not yet started.
- # 2) Next, guest agent is started and guest metrics are available but
- # IP address is still not acquired.
- # 3) Lastly, IP address is acquired by VM on its primary VIF.
- mocked_returns = {
- "VM.get_power_state.return_value": "Running",
- "VM.get_guest_metrics.side_effect": [
- 'OpaqueRef:NULL',
- fake_xenapi_ref('VM_guest_metrics'),
- fake_xenapi_ref('VM_guest_metrics'),
- ],
- "VM_guest_metrics.get_record.side_effect": [
- {
- "networks": {},
- },
- {
- "networks": {
- "0/ip": "192.168.0.1",
- "1/ip": "10.0.0.1",
- },
- },
- ],
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('time.sleep')
-
- fake_guest_metrics = xenserver.wait_for_vm_ip_address(fake_ansible_module, fake_xenapi_ref('VM'))
-
- assert fake_guest_metrics == mocked_returns['VM_guest_metrics.get_record.side_effect'][1]
-
-
-@pytest.mark.parametrize('task_ref', testcase_bad_xenapi_refs['params'], ids=testcase_bad_xenapi_refs['ids'])
-def test_wait_for_task_bad_task_ref(fake_ansible_module, xenserver, task_ref):
- """Tests failure on bad task_ref."""
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.wait_for_task(fake_ansible_module, task_ref)
-
- assert exc_info.value.kwargs['msg'] == "Cannot wait for task. Invalid task reference supplied!"
-
-
-def test_wait_for_task_xenapi_failure(mock_xenapi_failure, fake_ansible_module, xenserver):
- """Tests catching of XenAPI failures."""
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.wait_for_task(fake_ansible_module, fake_xenapi_ref('task'))
-
- assert exc_info.value.kwargs['msg'] == "XAPI ERROR: %s" % mock_xenapi_failure[1]
-
-
-def test_wait_for_task_timeout(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests timeout."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "task.get_status.return_value": "Pending",
- "task.destroy.return_value": None,
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('time.sleep')
-
- fake_result = xenserver.wait_for_task(fake_ansible_module, fake_xenapi_ref('task'), timeout=1)
-
- mocked_xenapi.task.destroy.assert_called_once()
- assert fake_result == "timeout"
-
-
-@pytest.mark.parametrize('task_status, result',
- testcase_wait_for_task_all_statuses['params'],
- ids=testcase_wait_for_task_all_statuses['ids'])
-def test_wait_for_task(mocker, fake_ansible_module, XenAPI, xenserver, task_status, result):
- """Tests regular invocation."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- # Mock will first return Pending status and on second invocation it will
- # return one of possible final statuses.
- mocked_returns = {
- "task.get_status.side_effect": [
- 'Pending',
- task_status,
- ],
- "task.destroy.return_value": None,
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('time.sleep')
-
- fake_result = xenserver.wait_for_task(fake_ansible_module, fake_xenapi_ref('task'))
-
- mocked_xenapi.task.destroy.assert_called_once()
- assert fake_result == result
diff --git a/test/units/module_utils/xenserver/test_xapi.py b/test/units/module_utils/xenserver/test_xapi.py
deleted file mode 100644
index 63cbbea1ba..0000000000
--- a/test/units/module_utils/xenserver/test_xapi.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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 pytest
-import atexit
-
-from .FakeAnsibleModule import FailJsonException
-from ansible.module_utils.ansible_release import __version__ as ANSIBLE_VERSION
-
-
-testcase_module_local_conn = {
- "params": [
- {
- "hostname": "localhost",
- "username": "someuser",
- "password": "somepwd",
- "validate_certs": True,
- },
- ],
- "ids": [
- "local-conn",
- ],
-}
-
-testcase_module_remote_conn = {
- "params": [
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "validate_certs": True,
- },
- ],
- "ids": [
- "remote-conn",
- ],
-}
-
-testcase_module_remote_conn_scheme = {
- "params": [
- {
- "hostname": "http://somehost",
- "username": "someuser",
- "password": "somepwd",
- "validate_certs": True,
- },
- {
- "hostname": "https://somehost",
- "username": "someuser",
- "password": "somepwd",
- "validate_certs": True,
- },
- ],
- "ids": [
- "remote-conn-http",
- "remote-conn-https",
- ],
-}
-
-
-@pytest.mark.parametrize('fake_ansible_module', testcase_module_local_conn['params'], ids=testcase_module_local_conn['ids'], indirect=True)
-def test_xapi_connect_local_session(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests that connection to localhost uses XenAPI.xapi_local() function."""
- mocker.patch('XenAPI.xapi_local')
-
- xapi_session = xenserver.XAPI.connect(fake_ansible_module)
-
- XenAPI.xapi_local.assert_called_once()
-
-
-@pytest.mark.parametrize('fake_ansible_module', testcase_module_local_conn['params'], ids=testcase_module_local_conn['ids'], indirect=True)
-def test_xapi_connect_local_login(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests that connection to localhost uses empty username and password."""
- mocker.patch.object(XenAPI.Session, 'login_with_password', create=True)
-
- xapi_session = xenserver.XAPI.connect(fake_ansible_module)
-
- XenAPI.Session.login_with_password.assert_called_once_with('', '', ANSIBLE_VERSION, 'Ansible')
-
-
-def test_xapi_connect_login(mocker, fake_ansible_module, XenAPI, xenserver):
- """
- Tests that username and password are properly propagated to
- XenAPI.Session.login_with_password() function.
- """
- mocker.patch.object(XenAPI.Session, 'login_with_password', create=True)
-
- xapi_session = xenserver.XAPI.connect(fake_ansible_module)
-
- username = fake_ansible_module.params['username']
- password = fake_ansible_module.params['password']
-
- XenAPI.Session.login_with_password.assert_called_once_with(username, password, ANSIBLE_VERSION, 'Ansible')
-
-
-def test_xapi_connect_login_failure(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests that login failure is properly handled."""
- fake_error_msg = "Fake XAPI login error!"
-
- mocked_login = mocker.patch.object(XenAPI.Session, 'login_with_password', create=True)
- mocked_login.side_effect = XenAPI.Failure(fake_error_msg)
-
- hostname = fake_ansible_module.params['hostname']
- username = fake_ansible_module.params['username']
-
- with pytest.raises(FailJsonException) as exc_info:
- xapi_session = xenserver.XAPI.connect(fake_ansible_module)
-
- assert exc_info.value.kwargs['msg'] == "Unable to log on to XenServer at http://%s as %s: %s" % (hostname, username, fake_error_msg)
-
-
-@pytest.mark.parametrize('fake_ansible_module', testcase_module_remote_conn_scheme['params'], ids=testcase_module_remote_conn_scheme['ids'], indirect=True)
-def test_xapi_connect_remote_scheme(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests that explicit scheme in hostname param is preserved."""
- mocker.patch('XenAPI.Session')
-
- xapi_session = xenserver.XAPI.connect(fake_ansible_module)
-
- hostname = fake_ansible_module.params['hostname']
- ignore_ssl = not fake_ansible_module.params['validate_certs']
-
- XenAPI.Session.assert_called_once_with(hostname, ignore_ssl=ignore_ssl)
-
-
-@pytest.mark.parametrize('fake_ansible_module', testcase_module_remote_conn['params'], ids=testcase_module_remote_conn['ids'], indirect=True)
-def test_xapi_connect_remote_no_scheme(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests that proper scheme is prepended to hostname without scheme."""
- mocker.patch('XenAPI.Session')
-
- xapi_session = xenserver.XAPI.connect(fake_ansible_module)
-
- hostname = fake_ansible_module.params['hostname']
- ignore_ssl = not fake_ansible_module.params['validate_certs']
-
- XenAPI.Session.assert_called_once_with("http://%s" % hostname, ignore_ssl=ignore_ssl)
-
-
-def test_xapi_connect_support_ignore_ssl(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests proper handling of ignore_ssl support."""
- mocked_session = mocker.patch('XenAPI.Session')
- mocked_session.side_effect = TypeError()
-
- with pytest.raises(TypeError) as exc_info:
- xapi_session = xenserver.XAPI.connect(fake_ansible_module)
-
- hostname = fake_ansible_module.params['hostname']
- ignore_ssl = not fake_ansible_module.params['validate_certs']
-
- XenAPI.Session.assert_called_with("http://%s" % hostname)
-
-
-def test_xapi_connect_no_disconnect_atexit(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests skipping registration of atexit disconnect handler."""
- mocker.patch('atexit.register')
-
- xapi_session = xenserver.XAPI.connect(fake_ansible_module, disconnect_atexit=False)
-
- atexit.register.assert_not_called()
-
-
-def test_xapi_connect_singleton(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests if XAPI.connect() returns singleton."""
- mocker.patch('XenAPI.Session')
-
- xapi_session1 = xenserver.XAPI.connect(fake_ansible_module)
- xapi_session2 = xenserver.XAPI.connect(fake_ansible_module)
-
- XenAPI.Session.assert_called_once()
- assert xapi_session1 == xapi_session2
diff --git a/test/units/module_utils/xenserver/test_xenserverobject.py b/test/units/module_utils/xenserver/test_xenserverobject.py
deleted file mode 100644
index b45c4a2f62..0000000000
--- a/test/units/module_utils/xenserver/test_xenserverobject.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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 pytest
-
-from .FakeAnsibleModule import FailJsonException
-from .common import fake_xenapi_ref
-
-
-def test_xenserverobject_xenapi_lib_detection(mocker, fake_ansible_module, xenserver):
- """Tests XenAPI lib detection code."""
- mocker.patch('ansible.module_utils.xenserver.HAS_XENAPI', new=False)
-
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.XenServerObject(fake_ansible_module)
-
- assert 'Failed to import the required Python library (XenAPI) on' in exc_info.value.kwargs['msg']
-
-
-def test_xenserverobject_xenapi_failure(mock_xenapi_failure, fake_ansible_module, xenserver):
- """Tests catching of XenAPI failures."""
- with pytest.raises(FailJsonException) as exc_info:
- xenserver.XenServerObject(fake_ansible_module)
-
- assert exc_info.value.kwargs['msg'] == "XAPI ERROR: %s" % mock_xenapi_failure[1]
-
-
-def test_xenserverobject(mocker, fake_ansible_module, XenAPI, xenserver):
- """Tests successful creation of XenServerObject."""
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "pool.get_all.return_value": [fake_xenapi_ref('pool')],
- "pool.get_default_SR.return_value": fake_xenapi_ref('SR'),
- "session.get_this_host.return_value": fake_xenapi_ref('host'),
- "host.get_software_version.return_value": {"product_version": "7.2.0"},
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- xso = xenserver.XenServerObject(fake_ansible_module)
-
- assert xso.pool_ref == fake_xenapi_ref('pool')
- assert xso.xenserver_version == [7, 2, 0]
diff --git a/test/units/modules/cloud/cloudstack/test_cs_traffic_type.py b/test/units/modules/cloud/cloudstack/test_cs_traffic_type.py
deleted file mode 100644
index d164b59661..0000000000
--- a/test/units/modules/cloud/cloudstack/test_cs_traffic_type.py
+++ /dev/null
@@ -1,137 +0,0 @@
-from __future__ import absolute_import, division, print_function
-__metaclass__ = type
-
-import sys
-
-import pytest
-
-import units.compat.unittest as unittest
-from units.compat.mock import MagicMock
-from units.compat.unittest import TestCase
-from units.modules.utils import set_module_args
-
-
-# Exoscale's cs doesn't support Python 2.6
-pytestmark = []
-if sys.version_info[:2] != (2, 6):
- from ansible.modules.cloud.cloudstack.cs_traffic_type import AnsibleCloudStackTrafficType, setup_module_object
- from ansible.module_utils.cloudstack import HAS_LIB_CS
- if not HAS_LIB_CS:
- pytestmark.append(pytest.mark.skip('The cloudstack library, "cs", is needed to test cs_traffic_type'))
-else:
- pytestmark.append(pytest.mark.skip('Exoscale\'s cs doesn\'t support Python 2.6'))
-
-
-EXISTING_TRAFFIC_TYPES_RESPONSE = {
- "count": 3,
- "traffictype": [
- {
- "id": "9801cf73-5a73-4883-97e4-fa20c129226f",
- "kvmnetworklabel": "cloudbr0",
- "physicalnetworkid": "659c1840-9374-440d-a412-55ca360c9d3c",
- "traffictype": "Management"
- },
- {
- "id": "28ed70b7-9a1f-41bf-94c3-53a9f22da8b6",
- "kvmnetworklabel": "cloudbr0",
- "physicalnetworkid": "659c1840-9374-440d-a412-55ca360c9d3c",
- "traffictype": "Guest"
- },
- {
- "id": "9c05c802-84c0-4eda-8f0a-f681364ffb46",
- "kvmnetworklabel": "cloudbr0",
- "physicalnetworkid": "659c1840-9374-440d-a412-55ca360c9d3c",
- "traffictype": "Storage"
- }
- ]
-}
-
-VALID_LIST_NETWORKS_RESPONSE = {
- "count": 1,
- "physicalnetwork": [
- {
- "broadcastdomainrange": "ZONE",
- "id": "659c1840-9374-440d-a412-55ca360c9d3c",
- "name": "eth1",
- "state": "Enabled",
- "vlan": "3900-4000",
- "zoneid": "49acf813-a8dd-4da0-aa53-1d826d6003e7"
- }
- ]
-}
-
-VALID_LIST_ZONES_RESPONSE = {
- "count": 1,
- "zone": [
- {
- "allocationstate": "Enabled",
- "dhcpprovider": "VirtualRouter",
- "dns1": "8.8.8.8",
- "dns2": "8.8.4.4",
- "guestcidraddress": "10.10.0.0/16",
- "id": "49acf813-a8dd-4da0-aa53-1d826d6003e7",
- "internaldns1": "192.168.56.1",
- "localstorageenabled": True,
- "name": "DevCloud-01",
- "networktype": "Advanced",
- "securitygroupsenabled": False,
- "tags": [],
- "zonetoken": "df20d65a-c6c8-3880-9064-4f77de2291ef"
- }
- ]
-}
-
-
-base_module_args = {
- "api_key": "api_key",
- "api_secret": "very_secret_content",
- "api_url": "http://localhost:8888/api/client",
- "kvm_networklabel": "cloudbr0",
- "physical_network": "eth1",
- "poll_async": True,
- "state": "present",
- "traffic_type": "Guest",
- "zone": "DevCloud-01"
-}
-
-
-class TestAnsibleCloudstackTraffiType(TestCase):
-
- def test_module_is_created_sensibly(self):
- set_module_args(base_module_args)
- module = setup_module_object()
- assert module.params['traffic_type'] == 'Guest'
-
- def test_update_called_when_traffic_type_exists(self):
- set_module_args(base_module_args)
- module = setup_module_object()
- actt = AnsibleCloudStackTrafficType(module)
- actt.get_traffic_type = MagicMock(return_value=EXISTING_TRAFFIC_TYPES_RESPONSE['traffictype'][0])
- actt.update_traffic_type = MagicMock()
- actt.present_traffic_type()
- self.assertTrue(actt.update_traffic_type.called)
-
- def test_update_not_called_when_traffic_type_doesnt_exist(self):
- set_module_args(base_module_args)
- module = setup_module_object()
- actt = AnsibleCloudStackTrafficType(module)
- actt.get_traffic_type = MagicMock(return_value=None)
- actt.update_traffic_type = MagicMock()
- actt.add_traffic_type = MagicMock()
- actt.present_traffic_type()
- self.assertFalse(actt.update_traffic_type.called)
- self.assertTrue(actt.add_traffic_type.called)
-
- def test_traffic_type_returned_if_exists(self):
- set_module_args(base_module_args)
- module = setup_module_object()
- actt = AnsibleCloudStackTrafficType(module)
- actt.get_physical_network = MagicMock(return_value=VALID_LIST_NETWORKS_RESPONSE['physicalnetwork'][0])
- actt.get_traffic_types = MagicMock(return_value=EXISTING_TRAFFIC_TYPES_RESPONSE)
- tt = actt.present_traffic_type()
- self.assertTrue(tt.get('kvmnetworklabel') == base_module_args['kvm_networklabel'])
- self.assertTrue(tt.get('traffictype') == base_module_args['traffic_type'])
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/cloud/docker/test_docker_container.py b/test/units/modules/cloud/docker/test_docker_container.py
deleted file mode 100644
index a648ae8042..0000000000
--- a/test/units/modules/cloud/docker/test_docker_container.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import unittest
-
-from ansible.modules.cloud.docker.docker_container import TaskParameters
-
-
-class TestTaskParameters(unittest.TestCase):
- """Unit tests for TaskParameters."""
-
- def test_parse_exposed_ports_tcp_udp(self):
- """
- Ensure _parse_exposed_ports does not cancel ports with the same
- number but different protocol.
- """
- task_params = TaskParameters.__new__(TaskParameters)
- task_params.exposed_ports = None
- result = task_params._parse_exposed_ports([80, '443', '443/udp'])
- self.assertTrue((80, 'tcp') in result)
- self.assertTrue((443, 'tcp') in result)
- self.assertTrue((443, 'udp') in result)
diff --git a/test/units/modules/cloud/docker/test_docker_network.py b/test/units/modules/cloud/docker/test_docker_network.py
deleted file mode 100644
index 5306506c11..0000000000
--- a/test/units/modules/cloud/docker/test_docker_network.py
+++ /dev/null
@@ -1,31 +0,0 @@
-"""Unit tests for docker_network."""
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import pytest
-
-from ansible.modules.cloud.docker.docker_network import validate_cidr
-
-
-@pytest.mark.parametrize("cidr,expected", [
- ('192.168.0.1/16', 'ipv4'),
- ('192.168.0.1/24', 'ipv4'),
- ('192.168.0.1/32', 'ipv4'),
- ('fdd1:ac8c:0557:7ce2::/64', 'ipv6'),
- ('fdd1:ac8c:0557:7ce2::/128', 'ipv6'),
-])
-def test_validate_cidr_positives(cidr, expected):
- assert validate_cidr(cidr) == expected
-
-
-@pytest.mark.parametrize("cidr", [
- '192.168.0.1',
- '192.168.0.1/34',
- '192.168.0.1/asd',
- 'fdd1:ac8c:0557:7ce2::',
-])
-def test_validate_cidr_negatives(cidr):
- with pytest.raises(ValueError) as e:
- validate_cidr(cidr)
- assert '"{0}" is not a valid CIDR'.format(cidr) == str(e.value)
diff --git a/test/units/modules/cloud/docker/test_docker_swarm_service.py b/test/units/modules/cloud/docker/test_docker_swarm_service.py
deleted file mode 100644
index 1f2eddac77..0000000000
--- a/test/units/modules/cloud/docker/test_docker_swarm_service.py
+++ /dev/null
@@ -1,510 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import pytest
-
-
-class APIErrorMock(Exception):
- def __init__(self, message, response=None, explanation=None):
- self.message = message
- self.response = response
- self.explanation = explanation
-
-
-@pytest.fixture(autouse=True)
-def docker_module_mock(mocker):
- docker_module_mock = mocker.MagicMock()
- docker_utils_module_mock = mocker.MagicMock()
- docker_errors_module_mock = mocker.MagicMock()
- docker_errors_module_mock.APIError = APIErrorMock
- mock_modules = {
- 'docker': docker_module_mock,
- 'docker.utils': docker_utils_module_mock,
- 'docker.errors': docker_errors_module_mock,
- }
- return mocker.patch.dict('sys.modules', **mock_modules)
-
-
-@pytest.fixture(autouse=True)
-def docker_swarm_service():
- from ansible.modules.cloud.docker import docker_swarm_service
-
- return docker_swarm_service
-
-
-def test_retry_on_out_of_sequence_error(mocker, docker_swarm_service):
- run_mock = mocker.MagicMock(
- side_effect=APIErrorMock(
- message='',
- response=None,
- explanation='rpc error: code = Unknown desc = update out of sequence',
- )
- )
- manager = docker_swarm_service.DockerServiceManager(client=None)
- manager.run = run_mock
- with pytest.raises(APIErrorMock):
- manager.run_safe()
- assert run_mock.call_count == 3
-
-
-def test_no_retry_on_general_api_error(mocker, docker_swarm_service):
- run_mock = mocker.MagicMock(
- side_effect=APIErrorMock(message='', response=None, explanation='some error')
- )
- manager = docker_swarm_service.DockerServiceManager(client=None)
- manager.run = run_mock
- with pytest.raises(APIErrorMock):
- manager.run_safe()
- assert run_mock.call_count == 1
-
-
-def test_get_docker_environment(mocker, docker_swarm_service):
- env_file_result = {'TEST1': 'A', 'TEST2': 'B', 'TEST3': 'C'}
- env_dict = {'TEST3': 'CC', 'TEST4': 'D'}
- env_string = "TEST3=CC,TEST4=D"
-
- env_list = ['TEST3=CC', 'TEST4=D']
- expected_result = sorted(['TEST1=A', 'TEST2=B', 'TEST3=CC', 'TEST4=D'])
- mocker.patch.object(
- docker_swarm_service, 'parse_env_file', return_value=env_file_result
- )
- mocker.patch.object(
- docker_swarm_service,
- 'format_environment',
- side_effect=lambda d: ['{0}={1}'.format(key, value) for key, value in d.items()],
- )
- # Test with env dict and file
- result = docker_swarm_service.get_docker_environment(
- env_dict, env_files=['dummypath']
- )
- assert result == expected_result
- # Test with env list and file
- result = docker_swarm_service.get_docker_environment(
- env_list,
- env_files=['dummypath']
- )
- assert result == expected_result
- # Test with env string and file
- result = docker_swarm_service.get_docker_environment(
- env_string, env_files=['dummypath']
- )
- assert result == expected_result
-
- assert result == expected_result
- # Test with empty env
- result = docker_swarm_service.get_docker_environment(
- [], env_files=None
- )
- assert result == []
- # Test with empty env_files
- result = docker_swarm_service.get_docker_environment(
- None, env_files=[]
- )
- assert result == []
-
-
-def test_get_nanoseconds_from_raw_option(docker_swarm_service):
- value = docker_swarm_service.get_nanoseconds_from_raw_option('test', None)
- assert value is None
-
- value = docker_swarm_service.get_nanoseconds_from_raw_option('test', '1m30s535ms')
- assert value == 90535000000
-
- value = docker_swarm_service.get_nanoseconds_from_raw_option('test', 10000000000)
- assert value == 10000000000
-
- with pytest.raises(ValueError):
- docker_swarm_service.get_nanoseconds_from_raw_option('test', [])
-
-
-def test_has_dict_changed(docker_swarm_service):
- assert not docker_swarm_service.has_dict_changed(
- {"a": 1},
- {"a": 1},
- )
- assert not docker_swarm_service.has_dict_changed(
- {"a": 1},
- {"a": 1, "b": 2}
- )
- assert docker_swarm_service.has_dict_changed(
- {"a": 1},
- {"a": 2, "b": 2}
- )
- assert docker_swarm_service.has_dict_changed(
- {"a": 1, "b": 1},
- {"a": 1}
- )
- assert not docker_swarm_service.has_dict_changed(
- None,
- {"a": 2, "b": 2}
- )
- assert docker_swarm_service.has_dict_changed(
- {},
- {"a": 2, "b": 2}
- )
- assert docker_swarm_service.has_dict_changed(
- {"a": 1},
- {}
- )
- assert docker_swarm_service.has_dict_changed(
- {"a": 1},
- None
- )
- assert not docker_swarm_service.has_dict_changed(
- {},
- {}
- )
- assert not docker_swarm_service.has_dict_changed(
- None,
- None
- )
- assert not docker_swarm_service.has_dict_changed(
- {},
- None
- )
- assert not docker_swarm_service.has_dict_changed(
- None,
- {}
- )
-
-
-def test_has_list_changed(docker_swarm_service):
-
- # List comparisons without dictionaries
- # I could improve the indenting, but pycodestyle wants this instead
- assert not docker_swarm_service.has_list_changed(None, None)
- assert not docker_swarm_service.has_list_changed(None, [])
- assert not docker_swarm_service.has_list_changed(None, [1, 2])
-
- assert not docker_swarm_service.has_list_changed([], None)
- assert not docker_swarm_service.has_list_changed([], [])
- assert docker_swarm_service.has_list_changed([], [1, 2])
-
- assert docker_swarm_service.has_list_changed([1, 2], None)
- assert docker_swarm_service.has_list_changed([1, 2], [])
-
- assert docker_swarm_service.has_list_changed([1, 2, 3], [1, 2])
- assert docker_swarm_service.has_list_changed([1, 2], [1, 2, 3])
-
- # Check list sorting
- assert not docker_swarm_service.has_list_changed([1, 2], [2, 1])
- assert docker_swarm_service.has_list_changed(
- [1, 2],
- [2, 1],
- sort_lists=False
- )
-
- # Check type matching
- assert docker_swarm_service.has_list_changed([None, 1], [2, 1])
- assert docker_swarm_service.has_list_changed([2, 1], [None, 1])
- assert docker_swarm_service.has_list_changed(
- "command --with args",
- ['command', '--with', 'args']
- )
- assert docker_swarm_service.has_list_changed(
- ['sleep', '3400'],
- [u'sleep', u'3600'],
- sort_lists=False
- )
-
- # List comparisons with dictionaries
- assert not docker_swarm_service.has_list_changed(
- [{'a': 1}],
- [{'a': 1}],
- sort_key='a'
- )
-
- assert not docker_swarm_service.has_list_changed(
- [{'a': 1}, {'a': 2}],
- [{'a': 1}, {'a': 2}],
- sort_key='a'
- )
-
- with pytest.raises(Exception):
- docker_swarm_service.has_list_changed(
- [{'a': 1}, {'a': 2}],
- [{'a': 1}, {'a': 2}]
- )
-
- # List sort checking with sort key
- assert not docker_swarm_service.has_list_changed(
- [{'a': 1}, {'a': 2}],
- [{'a': 2}, {'a': 1}],
- sort_key='a'
- )
- assert docker_swarm_service.has_list_changed(
- [{'a': 1}, {'a': 2}],
- [{'a': 2}, {'a': 1}],
- sort_lists=False
- )
-
- assert docker_swarm_service.has_list_changed(
- [{'a': 1}, {'a': 2}, {'a': 3}],
- [{'a': 2}, {'a': 1}],
- sort_key='a'
- )
- assert docker_swarm_service.has_list_changed(
- [{'a': 1}, {'a': 2}],
- [{'a': 1}, {'a': 2}, {'a': 3}],
- sort_lists=False
- )
-
- # Additional dictionary elements
- assert not docker_swarm_service.has_list_changed(
- [
- {"src": 1, "dst": 2},
- {"src": 1, "dst": 2, "protocol": "udp"},
- ],
- [
- {"src": 1, "dst": 2, "protocol": "tcp"},
- {"src": 1, "dst": 2, "protocol": "udp"},
- ],
- sort_key='dst'
- )
- assert not docker_swarm_service.has_list_changed(
- [
- {"src": 1, "dst": 2, "protocol": "udp"},
- {"src": 1, "dst": 3, "protocol": "tcp"},
- ],
- [
- {"src": 1, "dst": 2, "protocol": "udp"},
- {"src": 1, "dst": 3, "protocol": "tcp"},
- ],
- sort_key='dst'
- )
- assert docker_swarm_service.has_list_changed(
- [
- {"src": 1, "dst": 2, "protocol": "udp"},
- {"src": 1, "dst": 2},
- {"src": 3, "dst": 4},
- ],
- [
- {"src": 1, "dst": 3, "protocol": "udp"},
- {"src": 1, "dst": 2, "protocol": "tcp"},
- {"src": 3, "dst": 4, "protocol": "tcp"},
- ],
- sort_key='dst'
- )
- assert docker_swarm_service.has_list_changed(
- [
- {"src": 1, "dst": 3, "protocol": "tcp"},
- {"src": 1, "dst": 2, "protocol": "udp"},
- ],
- [
- {"src": 1, "dst": 2, "protocol": "tcp"},
- {"src": 1, "dst": 2, "protocol": "udp"},
- ],
- sort_key='dst'
- )
- assert docker_swarm_service.has_list_changed(
- [
- {"src": 1, "dst": 2, "protocol": "udp"},
- {"src": 1, "dst": 2, "protocol": "tcp", "extra": {"test": "foo"}},
- ],
- [
- {"src": 1, "dst": 2, "protocol": "udp"},
- {"src": 1, "dst": 2, "protocol": "tcp"},
- ],
- sort_key='dst'
- )
- assert not docker_swarm_service.has_list_changed(
- [{'id': '123', 'aliases': []}],
- [{'id': '123'}],
- sort_key='id'
- )
-
-
-def test_have_networks_changed(docker_swarm_service):
- assert not docker_swarm_service.have_networks_changed(
- None,
- None
- )
-
- assert not docker_swarm_service.have_networks_changed(
- [],
- None
- )
-
- assert not docker_swarm_service.have_networks_changed(
- [{'id': 1}],
- [{'id': 1}]
- )
-
- assert docker_swarm_service.have_networks_changed(
- [{'id': 1}],
- [{'id': 1}, {'id': 2}]
- )
-
- assert not docker_swarm_service.have_networks_changed(
- [{'id': 1}, {'id': 2}],
- [{'id': 1}, {'id': 2}]
- )
-
- assert not docker_swarm_service.have_networks_changed(
- [{'id': 1}, {'id': 2}],
- [{'id': 2}, {'id': 1}]
- )
-
- assert not docker_swarm_service.have_networks_changed(
- [
- {'id': 1},
- {'id': 2, 'aliases': []}
- ],
- [
- {'id': 1},
- {'id': 2}
- ]
- )
-
- assert docker_swarm_service.have_networks_changed(
- [
- {'id': 1},
- {'id': 2, 'aliases': ['alias1']}
- ],
- [
- {'id': 1},
- {'id': 2}
- ]
- )
-
- assert docker_swarm_service.have_networks_changed(
- [
- {'id': 1},
- {'id': 2, 'aliases': ['alias1', 'alias2']}
- ],
- [
- {'id': 1},
- {'id': 2, 'aliases': ['alias1']}
- ]
- )
-
- assert not docker_swarm_service.have_networks_changed(
- [
- {'id': 1},
- {'id': 2, 'aliases': ['alias1', 'alias2']}
- ],
- [
- {'id': 1},
- {'id': 2, 'aliases': ['alias1', 'alias2']}
- ]
- )
-
- assert not docker_swarm_service.have_networks_changed(
- [
- {'id': 1},
- {'id': 2, 'aliases': ['alias1', 'alias2']}
- ],
- [
- {'id': 1},
- {'id': 2, 'aliases': ['alias2', 'alias1']}
- ]
- )
-
- assert not docker_swarm_service.have_networks_changed(
- [
- {'id': 1, 'options': {}},
- {'id': 2, 'aliases': ['alias1', 'alias2']}],
- [
- {'id': 1},
- {'id': 2, 'aliases': ['alias2', 'alias1']}
- ]
- )
-
- assert not docker_swarm_service.have_networks_changed(
- [
- {'id': 1, 'options': {'option1': 'value1'}},
- {'id': 2, 'aliases': ['alias1', 'alias2']}],
- [
- {'id': 1, 'options': {'option1': 'value1'}},
- {'id': 2, 'aliases': ['alias2', 'alias1']}
- ]
- )
-
- assert docker_swarm_service.have_networks_changed(
- [
- {'id': 1, 'options': {'option1': 'value1'}},
- {'id': 2, 'aliases': ['alias1', 'alias2']}],
- [
- {'id': 1, 'options': {'option1': 'value2'}},
- {'id': 2, 'aliases': ['alias2', 'alias1']}
- ]
- )
-
-
-def test_get_docker_networks(docker_swarm_service):
- network_names = [
- 'network_1',
- 'network_2',
- 'network_3',
- 'network_4',
- ]
- networks = [
- network_names[0],
- {'name': network_names[1]},
- {'name': network_names[2], 'aliases': ['networkalias1']},
- {'name': network_names[3], 'aliases': ['networkalias2'], 'options': {'foo': 'bar'}},
- ]
- network_ids = {
- network_names[0]: '1',
- network_names[1]: '2',
- network_names[2]: '3',
- network_names[3]: '4',
- }
- parsed_networks = docker_swarm_service.get_docker_networks(
- networks,
- network_ids
- )
- assert len(parsed_networks) == 4
- for i, network in enumerate(parsed_networks):
- assert 'name' not in network
- assert 'id' in network
- expected_name = network_names[i]
- assert network['id'] == network_ids[expected_name]
- if i == 2:
- assert network['aliases'] == ['networkalias1']
- if i == 3:
- assert network['aliases'] == ['networkalias2']
- if i == 3:
- assert 'foo' in network['options']
- # Test missing name
- with pytest.raises(TypeError):
- docker_swarm_service.get_docker_networks([{'invalid': 'err'}], {'err': 1})
- # test for invalid aliases type
- with pytest.raises(TypeError):
- docker_swarm_service.get_docker_networks(
- [{'name': 'test', 'aliases': 1}],
- {'test': 1}
- )
- # Test invalid aliases elements
- with pytest.raises(TypeError):
- docker_swarm_service.get_docker_networks(
- [{'name': 'test', 'aliases': [1]}],
- {'test': 1}
- )
- # Test for invalid options type
- with pytest.raises(TypeError):
- docker_swarm_service.get_docker_networks(
- [{'name': 'test', 'options': 1}],
- {'test': 1}
- )
- # Test for invalid networks type
- with pytest.raises(TypeError):
- docker_swarm_service.get_docker_networks(
- 1,
- {'test': 1}
- )
- # Test for non existing networks
- with pytest.raises(ValueError):
- docker_swarm_service.get_docker_networks(
- [{'name': 'idontexist'}],
- {'test': 1}
- )
- # Test empty values
- assert docker_swarm_service.get_docker_networks([], {}) == []
- assert docker_swarm_service.get_docker_networks(None, {}) is None
- # Test invalid options
- with pytest.raises(TypeError):
- docker_swarm_service.get_docker_networks(
- [{'name': 'test', 'nonexisting_option': 'foo'}],
- {'test': '1'}
- )
diff --git a/test/units/modules/cloud/docker/test_docker_volume.py b/test/units/modules/cloud/docker/test_docker_volume.py
deleted file mode 100644
index e291da1237..0000000000
--- a/test/units/modules/cloud/docker/test_docker_volume.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (c) 2018 Ansible Project
-# 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 json
-
-import pytest
-
-from ansible.modules.cloud.docker import docker_volume
-from ansible.module_utils.docker import common
-
-pytestmark = pytest.mark.usefixtures('patch_ansible_module')
-
-TESTCASE_DOCKER_VOLUME = [
- {
- 'name': 'daemon_config',
- 'state': 'present'
- }
-]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_DOCKER_VOLUME, indirect=['patch_ansible_module'])
-def test_create_volume_on_invalid_docker_version(mocker, capfd):
- mocker.patch.object(common, 'HAS_DOCKER_PY', True)
- mocker.patch.object(common, 'docker_version', '1.8.0')
-
- with pytest.raises(SystemExit):
- docker_volume.main()
-
- out, dummy = capfd.readouterr()
- results = json.loads(out)
- assert results['failed']
- assert 'Error: Docker SDK for Python version is 1.8.0 ' in results['msg']
- assert 'Minimum version required is 1.10.0.' in results['msg']
diff --git a/test/units/modules/cloud/google/test_gce_tag.py b/test/units/modules/cloud/google/test_gce_tag.py
deleted file mode 100644
index fd0bfd5674..0000000000
--- a/test/units/modules/cloud/google/test_gce_tag.py
+++ /dev/null
@@ -1,61 +0,0 @@
-import unittest
-
-from ansible.modules.cloud.google.gce_tag import _get_changed_items, _intersect_items, _union_items
-
-
-class TestGCETag(unittest.TestCase):
- """Unit tests for gce_tag module."""
-
- def test_union_items(self):
- """
- Combine items in both lists
- removing duplicates.
- """
- listA = [1, 2, 3, 4, 5, 8, 9]
- listB = [1, 2, 3, 4, 5, 6, 7]
- want = [1, 2, 3, 4, 5, 6, 7, 8, 9]
- got = _union_items(listA, listB)
- self.assertEqual(want, got)
-
- def test_intersect_items(self):
- """
- All unique items from either list.
- """
- listA = [1, 2, 3, 4, 5, 8, 9]
- listB = [1, 2, 3, 4, 5, 6, 7]
- want = [1, 2, 3, 4, 5]
- got = _intersect_items(listA, listB)
- self.assertEqual(want, got)
-
- # tags removed
- new_tags = ['one', 'two']
- existing_tags = ['two']
- want = ['two'] # only remove the tag that was present
- got = _intersect_items(existing_tags, new_tags)
- self.assertEqual(want, got)
-
- def test_get_changed_items(self):
- """
- All the items from left list that don't match
- any item from the right list.
- """
- listA = [1, 2, 3, 4, 5, 8, 9]
- listB = [1, 2, 3, 4, 5, 6, 7]
- want = [8, 9]
- got = _get_changed_items(listA, listB)
- self.assertEqual(want, got)
-
- # simulate new tags added
- tags_to_add = ['one', 'two']
- existing_tags = ['two']
- want = ['one']
- got = _get_changed_items(tags_to_add, existing_tags)
- self.assertEqual(want, got)
-
- # simulate removing tags
- # specifying one tag on right that doesn't exist
- tags_to_remove = ['one', 'two']
- existing_tags = ['two', 'three']
- want = ['three']
- got = _get_changed_items(existing_tags, tags_to_remove)
- self.assertEqual(want, got)
diff --git a/test/units/modules/cloud/google/test_gcp_forwarding_rule.py b/test/units/modules/cloud/google/test_gcp_forwarding_rule.py
deleted file mode 100644
index 9d7408b83d..0000000000
--- a/test/units/modules/cloud/google/test_gcp_forwarding_rule.py
+++ /dev/null
@@ -1,30 +0,0 @@
-import unittest
-
-from ansible.modules.cloud.google._gcp_forwarding_rule import _build_global_forwarding_rule_dict
-
-
-class TestGCPFowardingRule(unittest.TestCase):
- """Unit tests for gcp_fowarding_rule module."""
- params_dict = {
- 'forwarding_rule_name': 'foo_fowarding_rule_name',
- 'address': 'foo_external_address',
- 'target': 'foo_targetproxy',
- 'region': 'global',
- 'port_range': 80,
- 'protocol': 'TCP',
- 'state': 'present',
- }
-
- def test__build_global_forwarding_rule_dict(self):
-
- expected = {
- 'name': 'foo_fowarding_rule_name',
- 'IPAddress': 'https://www.googleapis.com/compute/v1/projects/my-project/global/addresses/foo_external_address',
- 'target': 'https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpProxies/foo_targetproxy',
- 'region': 'global',
- 'portRange': 80,
- 'IPProtocol': 'TCP',
- }
- actual = _build_global_forwarding_rule_dict(
- self.params_dict, 'my-project')
- self.assertEqual(expected, actual)
diff --git a/test/units/modules/cloud/google/test_gcp_url_map.py b/test/units/modules/cloud/google/test_gcp_url_map.py
deleted file mode 100644
index 3d0774e3f6..0000000000
--- a/test/units/modules/cloud/google/test_gcp_url_map.py
+++ /dev/null
@@ -1,164 +0,0 @@
-import unittest
-
-from ansible.modules.cloud.google._gcp_url_map import _build_path_matchers, _build_url_map_dict
-
-
-class TestGCPUrlMap(unittest.TestCase):
- """Unit tests for gcp_url_map module."""
- params_dict = {
- 'url_map_name': 'foo_url_map_name',
- 'description': 'foo_url_map description',
- 'host_rules': [
- {
- 'description': 'host rules description',
- 'hosts': [
- 'www.example.com',
- 'www2.example.com'
- ],
- 'path_matcher': 'host_rules_path_matcher'
- }
- ],
- 'path_matchers': [
- {
- 'name': 'path_matcher_one',
- 'description': 'path matcher one',
- 'defaultService': 'bes-pathmatcher-one-default',
- 'pathRules': [
- {
- 'service': 'my-one-bes',
- 'paths': [
- '/',
- '/aboutus'
- ]
- }
- ]
- },
- {
- 'name': 'path_matcher_two',
- 'description': 'path matcher two',
- 'defaultService': 'bes-pathmatcher-two-default',
- 'pathRules': [
- {
- 'service': 'my-two-bes',
- 'paths': [
- '/webapp',
- '/graphs'
- ]
- }
- ]
- }
- ]
- }
-
- def test__build_path_matchers(self):
- input_list = [
- {
- 'defaultService': 'bes-pathmatcher-one-default',
- 'description': 'path matcher one',
- 'name': 'path_matcher_one',
- 'pathRules': [
- {
- 'paths': [
- '/',
- '/aboutus'
- ],
- 'service': 'my-one-bes'
- }
- ]
- },
- {
- 'defaultService': 'bes-pathmatcher-two-default',
- 'description': 'path matcher two',
- 'name': 'path_matcher_two',
- 'pathRules': [
- {
- 'paths': [
- '/webapp',
- '/graphs'
- ],
- 'service': 'my-two-bes'
- }
- ]
- }
- ]
- expected = [
- {
- 'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-one-default',
- 'description': 'path matcher one',
- 'name': 'path_matcher_one',
- 'pathRules': [
- {
- 'paths': [
- '/',
- '/aboutus'
- ],
- 'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-one-bes'
- }
- ]
- },
- {
- 'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-two-default',
- 'description': 'path matcher two',
- 'name': 'path_matcher_two',
- 'pathRules': [
- {
- 'paths': [
- '/webapp',
- '/graphs'
- ],
- 'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-two-bes'
- }
- ]
- }
- ]
- actual = _build_path_matchers(input_list, 'my-project')
- self.assertEqual(expected, actual)
-
- def test__build_url_map_dict(self):
-
- expected = {
- 'description': 'foo_url_map description',
- 'hostRules': [
- {
- 'description': 'host rules description',
- 'hosts': [
- 'www.example.com',
- 'www2.example.com'
- ],
- 'pathMatcher': 'host_rules_path_matcher'
- }
- ],
- 'name': 'foo_url_map_name',
- 'pathMatchers': [
- {
- 'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-one-default',
- 'description': 'path matcher one',
- 'name': 'path_matcher_one',
- 'pathRules': [
- {
- 'paths': [
- '/',
- '/aboutus'
- ],
- 'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-one-bes'
- }
- ]
- },
- {
- 'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-two-default',
- 'description': 'path matcher two',
- 'name': 'path_matcher_two',
- 'pathRules': [
- {
- 'paths': [
- '/webapp',
- '/graphs'
- ],
- 'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-two-bes'
- }
- ]
- }
- ]
- }
- actual = _build_url_map_dict(self.params_dict, 'my-project')
- self.assertEqual(expected, actual)
diff --git a/test/units/modules/cloud/kubevirt/test_kubevirt_rs.py b/test/units/modules/cloud/kubevirt/test_kubevirt_rs.py
deleted file mode 100644
index 1806b7bad9..0000000000
--- a/test/units/modules/cloud/kubevirt/test_kubevirt_rs.py
+++ /dev/null
@@ -1,75 +0,0 @@
-import pytest
-
-openshiftdynamic = pytest.importorskip("openshift.dynamic")
-
-from units.modules.utils import set_module_args
-from units.utils.kubevirt_fixtures import base_fixture, RESOURCE_DEFAULT_ARGS, AnsibleExitJson
-
-from ansible.module_utils.k8s.raw import KubernetesRawModule
-from ansible.modules.cloud.kubevirt import kubevirt_rs as mymodule
-
-KIND = 'VirtualMachineInstanceReplicaSet'
-
-
-@pytest.mark.usefixtures("base_fixture")
-@pytest.mark.parametrize("_replicas, _changed", ((1, True),
- (3, True),
- (2, False),
- (5, True),))
-def test_scale_rs_nowait(_replicas, _changed):
- _name = 'test-rs'
- # Desired state:
- args = dict(name=_name, namespace='vms', replicas=_replicas, wait=False)
- set_module_args(args)
-
- # Mock pre-change state:
- resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS)
- mymodule.KubeVirtVMIRS.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args)
- res_inst = openshiftdynamic.ResourceInstance('', dict(kind=KIND, metadata={'name': _name}, spec={'replicas': 2}))
- openshiftdynamic.Resource.get.return_value = res_inst
- openshiftdynamic.Resource.search.return_value = [res_inst]
-
- # Final state, after patching the object
- KubernetesRawModule.patch_resource.return_value = dict(kind=KIND, metadata={'name': _name},
- spec={'replicas': _replicas}), None
-
- # Run code:
- with pytest.raises(AnsibleExitJson) as result:
- mymodule.KubeVirtVMIRS().execute_module()
-
- # Verify result:
- assert result.value['changed'] == _changed
-
-
-@pytest.mark.usefixtures("base_fixture")
-@pytest.mark.parametrize("_replicas, _success", ((1, False),
- (2, False),
- (5, True),))
-def test_scale_rs_wait(_replicas, _success):
- _name = 'test-rs'
- # Desired state:
- args = dict(name=_name, namespace='vms', replicas=5, wait=True)
- set_module_args(args)
-
- # Mock pre-change state:
- resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS)
- mymodule.KubeVirtVMIRS.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args)
- res_inst = openshiftdynamic.ResourceInstance('', dict(kind=KIND, metadata={'name': _name}, spec={'replicas': 2}))
- openshiftdynamic.Resource.get.return_value = res_inst
- openshiftdynamic.Resource.search.return_value = [res_inst]
-
- # ~Final state, after patching the object (`replicas` match desired state)
- KubernetesRawModule.patch_resource.return_value = dict(kind=KIND, name=_name, metadata={'name': _name},
- spec={'replicas': 5}), None
-
- # Final final state, as returned by resource.watch()
- final_obj = dict(metadata=dict(name=_name), status=dict(readyReplicas=_replicas), **resource_args)
- event = openshiftdynamic.ResourceInstance(None, final_obj)
- openshiftdynamic.Resource.watch.return_value = [dict(object=event)]
-
- # Run code:
- with pytest.raises(Exception) as result:
- mymodule.KubeVirtVMIRS().execute_module()
-
- # Verify result:
- assert result.value['success'] == _success
diff --git a/test/units/modules/cloud/kubevirt/test_kubevirt_vm.py b/test/units/modules/cloud/kubevirt/test_kubevirt_vm.py
deleted file mode 100644
index 0a2a14c7b8..0000000000
--- a/test/units/modules/cloud/kubevirt/test_kubevirt_vm.py
+++ /dev/null
@@ -1,110 +0,0 @@
-import pytest
-
-openshiftdynamic = pytest.importorskip("openshift.dynamic")
-
-from units.modules.utils import set_module_args
-from units.utils.kubevirt_fixtures import base_fixture, RESOURCE_DEFAULT_ARGS, AnsibleExitJson
-
-from ansible.module_utils.kubevirt import KubeVirtRawModule
-from ansible.modules.cloud.kubevirt import kubevirt_vm as mymodule
-
-KIND = 'VirtulMachine'
-
-
-@pytest.mark.usefixtures("base_fixture")
-def test_create_vm_with_multus_nowait():
- # Desired state:
- args = dict(
- state='present', name='testvm',
- namespace='vms',
- interfaces=[
- {'bridge': {}, 'name': 'default', 'network': {'pod': {}}},
- {'bridge': {}, 'name': 'mynet', 'network': {'multus': {'networkName': 'mynet'}}},
- ],
- wait=False,
- )
- set_module_args(args)
-
- # State as "returned" by the "k8s cluster":
- resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS)
- KubeVirtRawModule.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args)
- openshiftdynamic.Resource.get.return_value = None # Object doesn't exist in the cluster
-
- # Run code:
- with pytest.raises(AnsibleExitJson) as result:
- mymodule.KubeVirtVM().execute_module()
-
- # Verify result:
- assert result.value['changed']
- assert result.value['method'] == 'create'
-
-
-@pytest.mark.usefixtures("base_fixture")
-@pytest.mark.parametrize("_wait", (False, True))
-def test_vm_is_absent(_wait):
- # Desired state:
- args = dict(
- state='absent', name='testvmi',
- namespace='vms',
- wait=_wait,
- )
- set_module_args(args)
-
- # State as "returned" by the "k8s cluster":
- resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS)
- KubeVirtRawModule.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args)
- openshiftdynamic.Resource.get.return_value = None # Object doesn't exist in the cluster
-
- # Run code:
- with pytest.raises(AnsibleExitJson) as result:
- mymodule.KubeVirtVM().execute_module()
-
- # Verify result:
- assert not result.value['kubevirt_vm']
- assert result.value['method'] == 'delete'
- # Note: nothing actually gets deleted, as we mock that there's not object in the cluster present,
- # so if the method changes to something other than 'delete' at some point, that's fine
-
-
-@pytest.mark.usefixtures("base_fixture")
-def test_vmpreset_create():
- KIND = 'VirtulMachineInstancePreset'
- # Desired state:
- args = dict(state='present', name='testvmipreset', namespace='vms', memory='1024Mi', wait=False)
- set_module_args(args)
-
- # State as "returned" by the "k8s cluster":
- resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS)
- KubeVirtRawModule.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args)
- openshiftdynamic.Resource.get.return_value = None # Object doesn't exist in the cluster
-
- # Run code:
- with pytest.raises(AnsibleExitJson) as result:
- mymodule.KubeVirtVM().execute_module()
-
- # Verify result:
- assert result.value['changed']
- assert result.value['method'] == 'create'
-
-
-@pytest.mark.usefixtures("base_fixture")
-def test_vmpreset_is_absent():
- KIND = 'VirtulMachineInstancePreset'
- # Desired state:
- args = dict(state='absent', name='testvmipreset', namespace='vms')
- set_module_args(args)
-
- # State as "returned" by the "k8s cluster":
- resource_args = dict(kind=KIND, **RESOURCE_DEFAULT_ARGS)
- KubeVirtRawModule.find_supported_resource.return_value = openshiftdynamic.Resource(**resource_args)
- openshiftdynamic.Resource.get.return_value = None # Object doesn't exist in the cluster
-
- # Run code:
- with pytest.raises(AnsibleExitJson) as result:
- mymodule.KubeVirtVM().execute_module()
-
- # Verify result:
- assert not result.value['kubevirt_vm']
- assert result.value['method'] == 'delete'
- # Note: nothing actually gets deleted, as we mock that there's not object in the cluster present,
- # so if the method changes to something other than 'delete' at some point, that's fine
diff --git a/test/units/modules/cloud/linode/test_linode.py b/test/units/modules/cloud/linode/test_linode.py
deleted file mode 100644
index 70e2dd90dc..0000000000
--- a/test/units/modules/cloud/linode/test_linode.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-
-import pytest
-
-from ansible.modules.cloud.linode import linode
-from units.modules.utils import set_module_args
-
-if not linode.HAS_LINODE:
- pytestmark = pytest.mark.skip('test_linode.py requires the `linode-python` module')
-
-
-def test_name_is_a_required_parameter(api_key, auth):
- with pytest.raises(SystemExit):
- set_module_args({})
- linode.main()
diff --git a/test/units/modules/cloud/linode/test_linode_v4.py b/test/units/modules/cloud/linode/test_linode_v4.py
deleted file mode 100644
index a85ff85169..0000000000
--- a/test/units/modules/cloud/linode/test_linode_v4.py
+++ /dev/null
@@ -1,323 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-
-import json
-import os
-import sys
-
-import pytest
-
-linode_apiv4 = pytest.importorskip('linode_api4')
-mandatory_py_version = pytest.mark.skipif(
- sys.version_info < (2, 7),
- reason='The linode_api4 dependency requires python2.7 or higher'
-)
-
-from linode_api4.errors import ApiError as LinodeApiError
-from linode_api4 import LinodeClient
-
-from ansible.modules.cloud.linode import linode_v4
-from ansible.module_utils.linode import get_user_agent
-from units.modules.utils import set_module_args
-from units.compat import mock
-
-
-def test_mandatory_state_is_validated(capfd):
- with pytest.raises(SystemExit):
- set_module_args({'label': 'foo'})
- linode_v4.initialise_module()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert all(txt in results['msg'] for txt in ('state', 'required'))
- assert results['failed'] is True
-
-
-def test_mandatory_label_is_validated(capfd):
- with pytest.raises(SystemExit):
- set_module_args({'state': 'present'})
- linode_v4.initialise_module()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert all(txt in results['msg'] for txt in ('label', 'required'))
- assert results['failed'] is True
-
-
-def test_mandatory_access_token_is_validated(default_args,
- no_access_token_in_env,
- capfd):
- with pytest.raises(SystemExit):
- set_module_args(default_args)
- linode_v4.initialise_module()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['failed'] is True
- assert all(txt in results['msg'] for txt in (
- 'missing',
- 'required',
- 'access_token',
- ))
-
-
-def test_mandatory_access_token_passed_in_env(default_args,
- access_token):
- set_module_args(default_args)
-
- try:
- module = linode_v4.initialise_module()
- except SystemExit:
- pytest.fail("'access_token' is passed in environment")
-
- now_set_token = module.params['access_token']
- assert now_set_token == os.environ['LINODE_ACCESS_TOKEN']
-
-
-def test_mandatory_access_token_passed_in_as_parameter(default_args,
- no_access_token_in_env):
- default_args.update({'access_token': 'foo'})
- set_module_args(default_args)
-
- try:
- module = linode_v4.initialise_module()
- except SystemExit:
- pytest.fail("'access_token' is passed in as parameter")
-
- assert module.params['access_token'] == 'foo'
-
-
-def test_instance_by_label_cannot_authenticate(capfd, access_token,
- default_args):
- set_module_args(default_args)
- module = linode_v4.initialise_module()
- client = LinodeClient(module.params['access_token'])
-
- target = 'linode_api4.linode_client.LinodeGroup.instances'
- with mock.patch(target, side_effect=LinodeApiError('foo')):
- with pytest.raises(SystemExit):
- linode_v4.maybe_instance_from_label(module, client)
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['failed'] is True
- assert 'Unable to query the Linode API' in results['msg']
-
-
-def test_no_instances_found_with_label_gives_none(default_args,
- access_token):
- set_module_args(default_args)
- module = linode_v4.initialise_module()
- client = LinodeClient(module.params['access_token'])
-
- target = 'linode_api4.linode_client.LinodeGroup.instances'
- with mock.patch(target, return_value=[]):
- result = linode_v4.maybe_instance_from_label(module, client)
-
- assert result is None
-
-
-def test_optional_region_is_validated(default_args, capfd, access_token):
- default_args.update({'type': 'foo', 'image': 'bar'})
- set_module_args(default_args)
-
- with pytest.raises(SystemExit):
- linode_v4.initialise_module()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['failed'] is True
- assert all(txt in results['msg'] for txt in (
- 'required',
- 'together',
- 'region'
- ))
-
-
-def test_optional_type_is_validated(default_args, capfd, access_token):
- default_args.update({'region': 'foo', 'image': 'bar'})
- set_module_args(default_args)
-
- with pytest.raises(SystemExit):
- linode_v4.initialise_module()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['failed'] is True
- assert all(txt in results['msg'] for txt in (
- 'required',
- 'together',
- 'type'
- ))
-
-
-def test_optional_image_is_validated(default_args, capfd, access_token):
- default_args.update({'type': 'foo', 'region': 'bar'})
- set_module_args(default_args)
-
- with pytest.raises(SystemExit):
- linode_v4.initialise_module()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['failed'] is True
- assert all(txt in results['msg'] for txt in (
- 'required',
- 'together',
- 'image'
- ))
-
-
-def test_instance_already_created(default_args,
- mock_linode,
- capfd,
- access_token):
- default_args.update({
- 'type': 'foo',
- 'region': 'bar',
- 'image': 'baz'
- })
- set_module_args(default_args)
-
- target = 'linode_api4.linode_client.LinodeGroup.instances'
- with mock.patch(target, return_value=[mock_linode]):
- with pytest.raises(SystemExit) as sys_exit_exc:
- linode_v4.main()
-
- assert sys_exit_exc.value.code == 0
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['changed'] is False
- assert 'root_password' not in results['instance']
- assert (
- results['instance']['label'] ==
- mock_linode._raw_json['label']
- )
-
-
-def test_instance_to_be_created_without_root_pass(default_args,
- mock_linode,
- capfd,
- access_token):
- default_args.update({
- 'type': 'foo',
- 'region': 'bar',
- 'image': 'baz'
- })
- set_module_args(default_args)
-
- target = 'linode_api4.linode_client.LinodeGroup.instances'
- with mock.patch(target, return_value=[]):
- with pytest.raises(SystemExit) as sys_exit_exc:
- target = 'linode_api4.linode_client.LinodeGroup.instance_create'
- with mock.patch(target, return_value=(mock_linode, 'passw0rd')):
- linode_v4.main()
-
- assert sys_exit_exc.value.code == 0
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['changed'] is True
- assert (
- results['instance']['label'] ==
- mock_linode._raw_json['label']
- )
- assert results['instance']['root_pass'] == 'passw0rd'
-
-
-def test_instance_to_be_created_with_root_pass(default_args,
- mock_linode,
- capfd,
- access_token):
- default_args.update({
- 'type': 'foo',
- 'region': 'bar',
- 'image': 'baz',
- 'root_pass': 'passw0rd',
- })
- set_module_args(default_args)
-
- target = 'linode_api4.linode_client.LinodeGroup.instances'
- with mock.patch(target, return_value=[]):
- with pytest.raises(SystemExit) as sys_exit_exc:
- target = 'linode_api4.linode_client.LinodeGroup.instance_create'
- with mock.patch(target, return_value=mock_linode):
- linode_v4.main()
-
- assert sys_exit_exc.value.code == 0
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['changed'] is True
- assert (
- results['instance']['label'] ==
- mock_linode._raw_json['label']
- )
- assert 'root_pass' not in results['instance']
-
-
-def test_instance_to_be_deleted(default_args,
- mock_linode,
- capfd,
- access_token):
- default_args.update({'state': 'absent'})
- set_module_args(default_args)
-
- target = 'linode_api4.linode_client.LinodeGroup.instances'
- with mock.patch(target, return_value=[mock_linode]):
- with pytest.raises(SystemExit) as sys_exit_exc:
- linode_v4.main()
-
- assert sys_exit_exc.value.code == 0
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['changed'] is True
- assert (
- results['instance']['label'] ==
- mock_linode._raw_json['label']
- )
-
-
-def test_instance_already_deleted_no_change(default_args,
- mock_linode,
- capfd,
- access_token):
- default_args.update({'state': 'absent'})
- set_module_args(default_args)
-
- target = 'linode_api4.linode_client.LinodeGroup.instances'
- with mock.patch(target, return_value=[]):
- with pytest.raises(SystemExit) as sys_exit_exc:
- linode_v4.main()
-
- assert sys_exit_exc.value.code == 0
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert results['changed'] is False
- assert results['instance'] == {}
-
-
-def test_user_agent_created_properly():
- try:
- from ansible.module_utils.ansible_release import (
- __version__ as ansible_version
- )
- except ImportError:
- ansible_version = 'unknown'
-
- expected_user_agent = 'Ansible-linode_v4_module/%s' % ansible_version
- assert expected_user_agent == get_user_agent('linode_v4_module')
diff --git a/test/units/modules/cloud/misc/test_terraform.py b/test/units/modules/cloud/misc/test_terraform.py
deleted file mode 100644
index 77c1a5375e..0000000000
--- a/test/units/modules/cloud/misc/test_terraform.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-import json
-
-import pytest
-
-from ansible.modules.cloud.misc import terraform
-from units.modules.utils import set_module_args
-
-
-def test_terraform_without_argument(capfd):
- set_module_args({})
- with pytest.raises(SystemExit) as results:
- terraform.main()
-
- out, err = capfd.readouterr()
- assert not err
- assert json.loads(out)['failed']
- assert 'project_path' in json.loads(out)['msg']
diff --git a/test/units/modules/cloud/misc/virt_net/conftest.py b/test/units/modules/cloud/misc/virt_net/conftest.py
deleted file mode 100644
index 71335f6639..0000000000
--- a/test/units/modules/cloud/misc/virt_net/conftest.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-import pytest
-
-from ansible.modules.cloud.misc import virt_net
-
-from units.compat import mock
-
-
-virt_net.libvirt = None
-virt_net.HAS_VIRT = True
-
-
-class DummyNetwork():
- def __init__(self, name, isActive=True):
- self._name = name
- self._isActive = isActive
-
- def name(self):
- return self._name
-
- def isActive(self):
- return self._isActive
-
-
-class DummyLibvirtConn():
- def __init__(self):
- self._network = [
- DummyNetwork("inactive_net", isActive=False),
- DummyNetwork("active_net", isActive=True)]
-
- def listNetworks(self):
- return [i.name() for i in self._network]
-
- def networkLookupByName(self, name):
- for i in self._network:
- if i.name() == name:
- return i
-
- def listDefinedNetworks(self):
- return []
-
-
-class DummyLibvirt():
- VIR_ERR_NETWORK_EXIST = 'VIR_ERR_NETWORK_EXIST'
-
- @classmethod
- def open(cls, uri):
- return DummyLibvirtConn()
-
- class libvirtError(Exception):
- def __init__(self):
- self.error_code
-
- def get_error_code(self):
- return self.error_code
-
-
-@pytest.fixture
-def dummy_libvirt(monkeypatch):
- monkeypatch.setattr(virt_net, 'libvirt', DummyLibvirt)
- return DummyLibvirt
-
-
-@pytest.fixture
-def virt_net_obj(dummy_libvirt):
- return virt_net.VirtNetwork('qemu:///nowhere', mock.MagicMock())
diff --git a/test/units/modules/cloud/misc/virt_net/test_virt_net.py b/test/units/modules/cloud/misc/virt_net/test_virt_net.py
deleted file mode 100644
index 6a0c174abe..0000000000
--- a/test/units/modules/cloud/misc/virt_net/test_virt_net.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-from units.compat import mock
-
-
-def test_virt_net_create_already_active(virt_net_obj, dummy_libvirt):
- virt_net_obj.conn.create = mock.Mock()
- assert virt_net_obj.create("active_net") is None
- virt_net_obj.conn.create.assert_not_called()
-
-
-def test_virt_net_recreate(virt_net_obj, dummy_libvirt):
- virt_net_obj.conn.create = mock.Mock()
- dummy_libvirt.libvirtError.error_code = 'VIR_ERR_NETWORK_EXIST'
- virt_net_obj.conn.create.side_effect = dummy_libvirt.libvirtError
- assert virt_net_obj.create("active_net") is None
-
-
-def test_virt_stop_ignore_inactive(virt_net_obj):
- virt_net_obj.conn.destroy = mock.Mock()
- virt_net_obj.stop('inactive_net')
- virt_net_obj.conn.destroy.assert_not_called()
-
-
-def test_virt_stop_active(virt_net_obj, monkeypatch):
- virt_net_obj.conn.destroy = mock.Mock()
- virt_net_obj.stop('active_net')
- virt_net_obj.conn.destroy.assert_called_with('active_net')
diff --git a/test/units/modules/cloud/xenserver/FakeAnsibleModule.py b/test/units/modules/cloud/xenserver/FakeAnsibleModule.py
deleted file mode 100644
index b02ad4a136..0000000000
--- a/test/units/modules/cloud/xenserver/FakeAnsibleModule.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-
-class AnsibleModuleException(Exception):
- def __init__(self, *args, **kwargs):
- self.args = args
- self.kwargs = kwargs
-
-
-class ExitJsonException(AnsibleModuleException):
- pass
-
-
-class FailJsonException(AnsibleModuleException):
- pass
-
-
-class FakeAnsibleModule:
- def __init__(self, params=None, check_mode=False):
- self.params = params
- self.check_mode = check_mode
-
- def exit_json(self, *args, **kwargs):
- raise ExitJsonException(*args, **kwargs)
-
- def fail_json(self, *args, **kwargs):
- raise FailJsonException(*args, **kwargs)
diff --git a/test/units/modules/cloud/xenserver/FakeXenAPI.py b/test/units/modules/cloud/xenserver/FakeXenAPI.py
deleted file mode 100644
index dc657a6a09..0000000000
--- a/test/units/modules/cloud/xenserver/FakeXenAPI.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-FAKE_API_VERSION = "1.1"
-
-
-class Failure(Exception):
- def __init__(self, details):
- self.details = details
-
- def __str__(self):
- return str(self.details)
-
-
-class Session(object):
- def __init__(self, uri, transport=None, encoding=None, verbose=0,
- allow_none=1, ignore_ssl=False):
-
- self.transport = transport
- self._session = None
- self.last_login_method = None
- self.last_login_params = None
- self.API_version = FAKE_API_VERSION
-
- def _get_api_version(self):
- return FAKE_API_VERSION
-
- def _login(self, method, params):
- self._session = "OpaqueRef:fake-xenapi-session-ref"
- self.last_login_method = method
- self.last_login_params = params
- self.API_version = self._get_api_version()
-
- def _logout(self):
- self._session = None
- self.last_login_method = None
- self.last_login_params = None
- self.API_version = FAKE_API_VERSION
-
- def xenapi_request(self, methodname, params):
- if methodname.startswith('login'):
- self._login(methodname, params)
- return None
- elif methodname == 'logout' or methodname == 'session.logout':
- self._logout()
- return None
- else:
- # Should be patched with mocker.patch().
- return None
-
- def __getattr__(self, name):
- if name == 'handle':
- return self._session
- elif name == 'xenapi':
- # Should be patched with mocker.patch().
- return None
- elif name.startswith('login') or name.startswith('slave_local'):
- return lambda *params: self._login(name, params)
- elif name == 'logout':
- return self._logout
-
-
-def xapi_local():
- return Session("http://_var_lib_xcp_xapi/")
diff --git a/test/units/modules/cloud/xenserver/common.py b/test/units/modules/cloud/xenserver/common.py
deleted file mode 100644
index 6e652a5d71..0000000000
--- a/test/units/modules/cloud/xenserver/common.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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
-
-
-def fake_xenapi_ref(xenapi_class):
- return "OpaqueRef:fake-xenapi-%s-ref" % xenapi_class
diff --git a/test/units/modules/cloud/xenserver/test_xenserver_guest_info.py b/test/units/modules/cloud/xenserver/test_xenserver_guest_info.py
deleted file mode 100644
index b0db19673d..0000000000
--- a/test/units/modules/cloud/xenserver/test_xenserver_guest_info.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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 json
-import pytest
-
-from .common import fake_xenapi_ref
-
-pytestmark = pytest.mark.usefixtures('patch_ansible_module')
-
-
-testcase_module_params = {
- "params": [
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- },
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "uuid": "somevmuuid",
- },
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "uuid": "somevmuuid",
- },
- ],
- "ids": [
- "name",
- "uuid",
- "name+uuid",
- ],
-}
-
-
-@pytest.mark.parametrize('patch_ansible_module', testcase_module_params['params'], ids=testcase_module_params['ids'], indirect=True)
-def test_xenserver_guest_info(mocker, capfd, XenAPI, xenserver_guest_info):
- """
- Tests regular module invocation including parsing and propagation of
- module params and module output.
- """
- fake_vm_facts = {"fake-vm-fact": True}
-
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_info.get_object_ref', return_value=None)
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_info.gather_vm_params', return_value=None)
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_info.gather_vm_facts', return_value=fake_vm_facts)
-
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "pool.get_all.return_value": [fake_xenapi_ref('pool')],
- "pool.get_default_SR.return_value": fake_xenapi_ref('SR'),
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0])
-
- with pytest.raises(SystemExit):
- xenserver_guest_info.main()
-
- out, err = capfd.readouterr()
- result = json.loads(out)
-
- assert result['instance'] == fake_vm_facts
diff --git a/test/units/modules/cloud/xenserver/test_xenserver_guest_powerstate.py b/test/units/modules/cloud/xenserver/test_xenserver_guest_powerstate.py
deleted file mode 100644
index f346ee61f1..0000000000
--- a/test/units/modules/cloud/xenserver/test_xenserver_guest_powerstate.py
+++ /dev/null
@@ -1,289 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
-# 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 json
-import pytest
-
-from .common import fake_xenapi_ref
-
-
-testcase_set_powerstate = {
- "params": [
- (False, "someoldstate"),
- (True, "somenewstate"),
- ],
- "ids": [
- "state-same",
- "state-changed",
- ],
-}
-
-testcase_module_params_state_present = {
- "params": [
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- },
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "state": "present",
- },
- ],
- "ids": [
- "present-implicit",
- "present-explicit",
- ],
-}
-
-testcase_module_params_state_other = {
- "params": [
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "state": "powered-on",
- },
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "state": "powered-off",
- },
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "state": "restarted",
- },
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "state": "shutdown-guest",
- },
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "state": "reboot-guest",
- },
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "state": "suspended",
- },
- ],
- "ids": [
- "powered-on",
- "powered-off",
- "restarted",
- "shutdown-guest",
- "reboot-guest",
- "suspended",
- ],
-}
-
-testcase_module_params_wait = {
- "params": [
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "state": "present",
- "wait_for_ip_address": "yes",
- },
- {
- "hostname": "somehost",
- "username": "someuser",
- "password": "somepwd",
- "name": "somevmname",
- "state": "powered-on",
- "wait_for_ip_address": "yes",
- },
- ],
- "ids": [
- "wait-present",
- "wait-other",
- ],
-}
-
-
-@pytest.mark.parametrize('power_state', testcase_set_powerstate['params'], ids=testcase_set_powerstate['ids'])
-def test_xenserver_guest_powerstate_set_power_state(mocker, fake_ansible_module, XenAPI, xenserver_guest_powerstate, power_state):
- """Tests power state change handling."""
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.get_object_ref', return_value=fake_xenapi_ref('VM'))
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_params', return_value={"power_state": "Someoldstate"})
- mocked_set_vm_power_state = mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.set_vm_power_state',
- return_value=power_state)
-
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "pool.get_all.return_value": [fake_xenapi_ref('pool')],
- "pool.get_default_SR.return_value": fake_xenapi_ref('SR'),
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0])
-
- fake_ansible_module.params.update({
- "name": "somename",
- "uuid": "someuuid",
- "state_change_timeout": 1,
- })
-
- vm = xenserver_guest_powerstate.XenServerVM(fake_ansible_module)
- state_changed = vm.set_power_state(None)
-
- mocked_set_vm_power_state.assert_called_once_with(fake_ansible_module, fake_xenapi_ref('VM'), None, 1)
- assert state_changed == power_state[0]
- assert vm.vm_params['power_state'] == power_state[1].capitalize()
-
-
-@pytest.mark.parametrize('patch_ansible_module',
- testcase_module_params_state_present['params'],
- ids=testcase_module_params_state_present['ids'],
- indirect=True)
-def test_xenserver_guest_powerstate_present(mocker, patch_ansible_module, capfd, XenAPI, xenserver_guest_powerstate):
- """
- Tests regular module invocation including parsing and propagation of
- module params and module output when state is set to present.
- """
- fake_vm_facts = {"fake-vm-fact": True}
-
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.get_object_ref', return_value=fake_xenapi_ref('VM'))
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_params', return_value={})
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_facts', return_value=fake_vm_facts)
- mocked_set_vm_power_state = mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.set_vm_power_state',
- return_value=(True, "somenewstate"))
- mocked_wait_for_vm_ip_address = mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.wait_for_vm_ip_address',
- return_value={})
-
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "pool.get_all.return_value": [fake_xenapi_ref('pool')],
- "pool.get_default_SR.return_value": fake_xenapi_ref('SR'),
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0])
-
- with pytest.raises(SystemExit):
- xenserver_guest_powerstate.main()
-
- out, err = capfd.readouterr()
- result = json.loads(out)
-
- mocked_set_vm_power_state.assert_not_called()
- mocked_wait_for_vm_ip_address.assert_not_called()
- assert result['changed'] is False
- assert result['instance'] == fake_vm_facts
-
-
-@pytest.mark.parametrize('patch_ansible_module',
- testcase_module_params_state_other['params'],
- ids=testcase_module_params_state_other['ids'],
- indirect=True)
-def test_xenserver_guest_powerstate_other(mocker, patch_ansible_module, capfd, XenAPI, xenserver_guest_powerstate):
- """
- Tests regular module invocation including parsing and propagation of
- module params and module output when state is set to other value than
- present.
- """
- fake_vm_facts = {"fake-vm-fact": True}
-
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.get_object_ref', return_value=fake_xenapi_ref('VM'))
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_params', return_value={})
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_facts', return_value=fake_vm_facts)
- mocked_set_vm_power_state = mocker.patch(
- 'ansible.modules.cloud.xenserver.xenserver_guest_powerstate.set_vm_power_state',
- return_value=(True, "somenewstate"))
- mocked_wait_for_vm_ip_address = mocker.patch(
- 'ansible.modules.cloud.xenserver.xenserver_guest_powerstate.wait_for_vm_ip_address',
- return_value={})
-
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "pool.get_all.return_value": [fake_xenapi_ref('pool')],
- "pool.get_default_SR.return_value": fake_xenapi_ref('SR'),
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0])
-
- with pytest.raises(SystemExit):
- xenserver_guest_powerstate.main()
-
- out, err = capfd.readouterr()
- result = json.loads(out)
-
- mocked_set_vm_power_state.assert_called_once()
- mocked_wait_for_vm_ip_address.assert_not_called()
- assert result['changed'] is True
- assert result['instance'] == fake_vm_facts
-
-
-@pytest.mark.parametrize('patch_ansible_module',
- testcase_module_params_wait['params'],
- ids=testcase_module_params_wait['ids'],
- indirect=True)
-def test_xenserver_guest_powerstate_wait(mocker, patch_ansible_module, capfd, XenAPI, xenserver_guest_powerstate):
- """
- Tests regular module invocation including parsing and propagation of
- module params and module output when wait_for_ip_address option is used.
- """
- fake_vm_facts = {"fake-vm-fact": True}
-
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.get_object_ref', return_value=fake_xenapi_ref('VM'))
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_params', return_value={})
- mocker.patch('ansible.modules.cloud.xenserver.xenserver_guest_powerstate.gather_vm_facts', return_value=fake_vm_facts)
- mocked_set_vm_power_state = mocker.patch(
- 'ansible.modules.cloud.xenserver.xenserver_guest_powerstate.set_vm_power_state',
- return_value=(True, "somenewstate"))
- mocked_wait_for_vm_ip_address = mocker.patch(
- 'ansible.modules.cloud.xenserver.xenserver_guest_powerstate.wait_for_vm_ip_address',
- return_value={})
-
- mocked_xenapi = mocker.patch.object(XenAPI.Session, 'xenapi', create=True)
-
- mocked_returns = {
- "pool.get_all.return_value": [fake_xenapi_ref('pool')],
- "pool.get_default_SR.return_value": fake_xenapi_ref('SR'),
- }
-
- mocked_xenapi.configure_mock(**mocked_returns)
-
- mocker.patch('ansible.module_utils.xenserver.get_xenserver_version', return_value=[7, 2, 0])
-
- with pytest.raises(SystemExit):
- xenserver_guest_powerstate.main()
-
- out, err = capfd.readouterr()
- result = json.loads(out)
-
- mocked_wait_for_vm_ip_address.assert_called_once()
- assert result['instance'] == fake_vm_facts
diff --git a/test/units/modules/messaging/rabbitmq/test_rabbitmq_user.py b/test/units/modules/messaging/rabbitmq/test_rabbitmq_user.py
deleted file mode 100644
index 269ffef6fc..0000000000
--- a/test/units/modules/messaging/rabbitmq/test_rabbitmq_user.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from ansible.modules.messaging.rabbitmq import rabbitmq_user
-from units.compat.mock import patch
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-
-class TestRabbitMQUserModule(ModuleTestCase):
- def setUp(self):
- super(TestRabbitMQUserModule, self).setUp()
- self.module = rabbitmq_user
-
- def tearDown(self):
- super(TestRabbitMQUserModule, self).tearDown()
-
- def _assert(self, exc, attribute, expected_value, msg=""):
- value = exc.message[attribute] if hasattr(exc, attribute) else exc.args[0][attribute]
- assert value == expected_value, msg
-
- def test_without_required_parameters(self):
- """Failure must occurs when all parameters are missing"""
- with self.assertRaises(AnsibleFailJson):
- set_module_args({})
- self.module.main()
-
- def test_permissions_with_same_vhost(self):
- set_module_args({
- 'user': 'someuser',
- 'password': 'somepassword',
- 'state': 'present',
- 'permissions': [{'vhost': '/'}, {'vhost': '/'}],
- })
- with patch('ansible.module_utils.basic.AnsibleModule.get_bin_path') as get_bin_path:
- get_bin_path.return_value = '/rabbitmqctl'
- try:
- self.module.main()
- except AnsibleFailJson as e:
- self._assert(e, 'failed', True)
- self._assert(e, 'msg',
- "Error parsing permissions: You can't have two permission dicts for the same vhost")
-
- @patch('ansible.module_utils.basic.AnsibleModule.get_bin_path')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.get')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.check_password')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_tags_modifications')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_permissions_modifications')
- def test_password_changes_only_when_needed(self, has_permissions_modifications, has_tags_modifications,
- check_password, get, get_bin_path):
- set_module_args({
- 'user': 'someuser',
- 'password': 'somepassword',
- 'state': 'present',
- 'update_password': 'always',
- })
- get.return_value = True
- get_bin_path.return_value = '/rabbitmqctl'
- check_password.return_value = True
- has_tags_modifications.return_value = False
- has_permissions_modifications.return_value = False
- try:
- self.module.main()
- except AnsibleExitJson as e:
- self._assert(e, 'changed', False)
- self._assert(e, 'state', 'present')
-
- @patch('ansible.module_utils.basic.AnsibleModule.get_bin_path')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._exec')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._get_permissions')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_tags_modifications')
- def test_same_permissions_not_changing(self, has_tags_modifications, _get_permissions, _exec, get_bin_path):
- set_module_args({
- 'user': 'someuser',
- 'password': 'somepassword',
- 'state': 'present',
- 'permissions': [{'vhost': '/', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}],
- })
- _get_permissions.return_value = [{'vhost': '/', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}]
- _exec.return_value = ['someuser\t[]']
- get_bin_path.return_value = '/rabbitmqctl'
- has_tags_modifications.return_value = False
- try:
- self.module.main()
- except AnsibleExitJson as e:
- self._assert(e, 'changed', False)
- self._assert(e, 'state', 'present')
-
- @patch('ansible.module_utils.basic.AnsibleModule.get_bin_path')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._exec')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._get_permissions')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.set_permissions')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_tags_modifications')
- def test_permissions_are_fixed(self, has_tags_modifications, set_permissions, _get_permissions, _exec, get_bin_path):
- set_module_args({
- 'user': 'someuser',
- 'password': 'somepassword',
- 'state': 'present',
- 'permissions': [{'vhost': '/', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}],
- })
- set_permissions.return_value = None
- _get_permissions.return_value = []
- _exec.return_value = ['someuser\t[]']
- get_bin_path.return_value = '/rabbitmqctl'
- has_tags_modifications.return_value = False
- try:
- self.module.main()
- except AnsibleExitJson as e:
- self._assert(e, 'changed', True)
- self._assert(e, 'state', 'present')
- assert set_permissions.call_count == 1
-
- @patch('ansible.module_utils.basic.AnsibleModule.get_bin_path')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._exec')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser._get_permissions')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.set_permissions')
- @patch('ansible.modules.messaging.rabbitmq.rabbitmq_user.RabbitMqUser.has_tags_modifications')
- def test_permissions_are_fixed_with_different_host(self, has_tags_modifications, set_permissions, _get_permissions,
- _exec, get_bin_path):
- set_module_args({
- 'user': 'someuser',
- 'password': 'somepassword',
- 'state': 'present',
- 'permissions': [{'vhost': '/', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}],
- })
- set_permissions.return_value = None
- _get_permissions.return_value = [{'vhost': 'monitoring', 'configure_priv': '.*', 'write_priv': '.*', 'read_priv': '.*'}]
- _exec.return_value = ['someuser\t[]']
- get_bin_path.return_value = '/rabbitmqctl'
- has_tags_modifications.return_value = False
- try:
- self.module.main()
- except AnsibleExitJson as e:
- self._assert(e, 'changed', True)
- self._assert(e, 'state', 'present')
- assert set_permissions.call_count == 1
diff --git a/test/units/modules/monitoring/test_circonus_annotation.py b/test/units/modules/monitoring/test_circonus_annotation.py
deleted file mode 100644
index 63494c0ebd..0000000000
--- a/test/units/modules/monitoring/test_circonus_annotation.py
+++ /dev/null
@@ -1,147 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import io
-import json
-import re
-import uuid
-from urllib3.response import HTTPResponse
-
-from units.compat.mock import patch
-from ansible.module_utils._text import to_bytes
-from ansible.modules.monitoring import circonus_annotation
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-
-class TestCirconusAnnotation(ModuleTestCase):
-
- def setUp(self):
- super(TestCirconusAnnotation, self).setUp()
- self.module = circonus_annotation
-
- def tearDown(self):
- super(TestCirconusAnnotation, self).tearDown()
-
- def test_without_required_parameters(self):
- """Failure must occurs when all parameters are missing"""
- with self.assertRaises(AnsibleFailJson):
- set_module_args({})
- self.module.main()
-
- def test_add_annotation(self):
- """Check that result is changed"""
- set_module_args({
- 'category': 'test category',
- 'description': 'test description',
- 'title': 'test title',
- 'api_key': str(uuid.uuid4()),
- })
-
- cid = '/annotation/100000'
-
- def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
- data = {
- '_cid': cid,
- '_created': 1502146995,
- '_last_modified': 1502146995,
- '_last_modified_by': '/user/1000',
- 'category': 'test category',
- 'description': 'test description',
- 'rel_metrics': [],
- 'start': 1502145480,
- 'stop': None,
- 'title': 'test title',
- }
- raw = to_bytes(json.dumps(data))
- resp = HTTPResponse(body=io.BytesIO(raw), preload_content=False)
- resp.status = 200
- resp.reason = 'OK'
- resp.headers = {'X-Circonus-API-Version': '2.00'}
- return self.build_response(request, resp)
-
- with patch('requests.adapters.HTTPAdapter.send', autospec=True, side_effect=send) as send:
- with self.assertRaises(AnsibleExitJson) as result:
- self.module.main()
- self.assertTrue(result.exception.args[0]['changed'])
- self.assertEqual(result.exception.args[0]['annotation']['_cid'], cid)
- self.assertEqual(send.call_count, 1)
-
- def test_add_annotation_unicode(self):
- """Check that result is changed.
- Note: it seems there is a bug which prevent to create an annotation
- with a non-ASCII category if this category already exists, in such
- case an Internal Server Error (500) occurs."""
- set_module_args({
- 'category': 'new catégorÿ',
- 'description': 'test description',
- 'title': 'test title',
- 'api_key': str(uuid.uuid4()),
- })
-
- cid = '/annotation/100000'
-
- def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
- data = {
- '_cid': '/annotation/100000',
- '_created': 1502236928,
- '_last_modified': 1502236928,
- '_last_modified_by': '/user/1000',
- # use res['annotation']['category'].encode('latin1').decode('utf8')
- 'category': u'new cat\xc3\xa9gor\xc3\xbf',
- 'description': 'test description',
- 'rel_metrics': [],
- 'start': 1502236927,
- 'stop': 1502236927,
- 'title': 'test title',
- }
-
- raw = to_bytes(json.dumps(data), encoding='latin1')
- resp = HTTPResponse(body=io.BytesIO(raw), preload_content=False)
- resp.status = 200
- resp.reason = 'OK'
- resp.headers = {'X-Circonus-API-Version': '2.00'}
- return self.build_response(request, resp)
-
- with patch('requests.adapters.HTTPAdapter.send', autospec=True, side_effect=send) as send:
- with self.assertRaises(AnsibleExitJson) as result:
- self.module.main()
- self.assertTrue(result.exception.args[0]['changed'])
- self.assertEqual(result.exception.args[0]['annotation']['_cid'], cid)
- self.assertEqual(send.call_count, 1)
-
- def test_auth_failure(self):
- """Check that an error is raised when authentication failed"""
- set_module_args({
- 'category': 'test category',
- 'description': 'test description',
- 'title': 'test title',
- 'api_key': str(uuid.uuid4()),
- })
-
- cid = '/annotation/100000'
-
- def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
- data = {
- '_cid': cid,
- '_created': 1502146995,
- '_last_modified': 1502146995,
- '_last_modified_by': '/user/1000',
- 'category': 'test category',
- 'description': 'test description',
- 'rel_metrics': [],
- 'start': 1502145480,
- 'stop': None,
- 'title': 'test title',
- }
- raw = to_bytes(json.dumps(data))
- resp = HTTPResponse(body=io.BytesIO(raw), preload_content=False)
- resp.status = 403
- resp.reason = 'Forbidden'
- resp.headers = {'X-Circonus-API-Version': '2.00'}
- return self.build_response(request, resp)
-
- with patch('requests.adapters.HTTPAdapter.send', autospec=True, side_effect=send) as send:
- with self.assertRaises(AnsibleFailJson) as result:
- self.module.main()
- self.assertTrue(result.exception.args[0]['failed'])
- self.assertTrue(re.match(r'\b403\b', result.exception.args[0]['reason']))
- self.assertEqual(send.call_count, 1)
diff --git a/test/units/modules/monitoring/test_icinga2_feature.py b/test/units/modules/monitoring/test_icinga2_feature.py
deleted file mode 100644
index 2e221faabe..0000000000
--- a/test/units/modules/monitoring/test_icinga2_feature.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2018, Ansible Project
-# Copyright (c) 2018, Abhijeet Kasurde <akasurde@redhat.com>
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from ansible.modules.monitoring import icinga2_feature
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-from units.compat.mock import patch
-from ansible.module_utils import basic
-
-
-def get_bin_path(*args, **kwargs):
- """Function to return path of icinga2 binary."""
- return "/bin/icinga2"
-
-
-class TestIcinga2Feature(ModuleTestCase):
- """Main class for testing icinga2_feature module."""
-
- def setUp(self):
- """Setup."""
- super(TestIcinga2Feature, self).setUp()
- self.module = icinga2_feature
- self.mock_get_bin_path = patch.object(basic.AnsibleModule, 'get_bin_path', get_bin_path)
- self.mock_get_bin_path.start()
- self.addCleanup(self.mock_get_bin_path.stop) # ensure that the patching is 'undone'
-
- def tearDown(self):
- """Teardown."""
- super(TestIcinga2Feature, self).tearDown()
-
- def test_without_required_parameters(self):
- """Failure must occurs when all parameters are missing."""
- with self.assertRaises(AnsibleFailJson):
- set_module_args({})
- self.module.main()
-
- def test_enable_feature(self):
- """Check that result is changed."""
- set_module_args({
- 'name': 'api',
- })
- with patch.object(basic.AnsibleModule, 'run_command') as run_command:
- run_command.return_value = 0, '', '' # successful execution, no output
- with self.assertRaises(AnsibleExitJson) as result:
- icinga2_feature.main()
- self.assertTrue(result.exception.args[0]['changed'])
-
- self.assertEqual(run_command.call_count, 2)
- self.assertEqual(run_command.call_args[0][0][-1], 'api')
-
- def test_enable_feature_with_check_mode(self):
- """Check that result is changed in check mode."""
- set_module_args({
- 'name': 'api',
- '_ansible_check_mode': True,
- })
- with patch.object(basic.AnsibleModule, 'run_command') as run_command:
- run_command.return_value = 0, '', '' # successful execution, no output
- with self.assertRaises(AnsibleExitJson) as result:
- icinga2_feature.main()
- self.assertTrue(result.exception.args[0]['changed'])
-
- self.assertEqual(run_command.call_count, 1)
-
- def test_disable_feature(self):
- """Check that result is changed."""
- set_module_args({
- 'name': 'api',
- 'state': 'absent'
- })
- with patch.object(basic.AnsibleModule, 'run_command') as run_command:
- run_command.return_value = 0, '', '' # successful execution, no output
- with self.assertRaises(AnsibleExitJson) as result:
- icinga2_feature.main()
- self.assertTrue(result.exception.args[0]['changed'])
-
- self.assertEqual(run_command.call_count, 2)
- self.assertEqual(run_command.call_args[0][0][-1], 'api')
-
- def test_disable_feature_with_check_mode(self):
- """Check that result is changed in check mode."""
- set_module_args({
- 'name': 'api',
- 'state': 'absent',
- '_ansible_check_mode': True,
- })
- with patch.object(basic.AnsibleModule, 'run_command') as run_command:
- run_command.return_value = 0, '', '' # successful execution, no output
- with self.assertRaises(AnsibleExitJson) as result:
- icinga2_feature.main()
- self.assertTrue(result.exception.args[0]['changed'])
-
- self.assertEqual(run_command.call_count, 1)
diff --git a/test/units/modules/monitoring/test_pagerduty.py b/test/units/modules/monitoring/test_pagerduty.py
deleted file mode 100644
index 126ccd0571..0000000000
--- a/test/units/modules/monitoring/test_pagerduty.py
+++ /dev/null
@@ -1,123 +0,0 @@
-from units.compat import unittest
-from ansible.modules.monitoring import pagerduty
-
-import json
-
-
-class PagerDutyTest(unittest.TestCase):
- def setUp(self):
- self.pd = pagerduty.PagerDutyRequest(module=pagerduty, name='name', user='user', token='token')
-
- def _assert_ongoing_maintenance_windows(self, module, url, headers):
- self.assertEqual('https://api.pagerduty.com/maintenance_windows?filter=ongoing', url)
- return object(), {'status': 200}
-
- def _assert_ongoing_window_with_v1_compatible_header(self, module, url, headers, data=None, method=None):
- self.assertDictContainsSubset(
- {'Accept': 'application/vnd.pagerduty+json;version=2'},
- headers,
- 'Accept:application/vnd.pagerduty+json;version=2 HTTP header not found'
- )
- return object(), {'status': 200}
-
- def _assert_create_a_maintenance_window_url(self, module, url, headers, data=None, method=None):
- self.assertEqual('https://api.pagerduty.com/maintenance_windows', url)
- return object(), {'status': 201}
-
- def _assert_create_a_maintenance_window_http_method(self, module, url, headers, data=None, method=None):
- self.assertEqual('POST', method)
- return object(), {'status': 201}
-
- def _assert_create_a_maintenance_window_from_header(self, module, url, headers, data=None, method=None):
- self.assertDictContainsSubset(
- {'From': 'requester_id'},
- headers,
- 'From:requester_id HTTP header not found'
- )
- return object(), {'status': 201}
-
- def _assert_create_window_with_v1_compatible_header(self, module, url, headers, data=None, method=None):
- self.assertDictContainsSubset(
- {'Accept': 'application/vnd.pagerduty+json;version=2'},
- headers,
- 'Accept:application/vnd.pagerduty+json;version=2 HTTP header not found'
- )
- return object(), {'status': 201}
-
- def _assert_create_window_payload(self, module, url, headers, data=None, method=None):
- payload = json.loads(data)
- window_data = payload['maintenance_window']
- self.assertTrue('start_time' in window_data, '"start_time" is requiered attribute')
- self.assertTrue('end_time' in window_data, '"end_time" is requiered attribute')
- self.assertTrue('services' in window_data, '"services" is requiered attribute')
- return object(), {'status': 201}
-
- def _assert_create_window_single_service(self, module, url, headers, data=None, method=None):
- payload = json.loads(data)
- window_data = payload['maintenance_window']
- services = window_data['services']
- self.assertEqual(
- [{'id': 'service_id', 'type': 'service_reference'}],
- services
- )
- return object(), {'status': 201}
-
- def _assert_create_window_multiple_service(self, module, url, headers, data=None, method=None):
- payload = json.loads(data)
- window_data = payload['maintenance_window']
- services = window_data['services']
- print(services)
- self.assertEqual(
- [
- {'id': 'service_id_1', 'type': 'service_reference'},
- {'id': 'service_id_2', 'type': 'service_reference'},
- {'id': 'service_id_3', 'type': 'service_reference'},
- ],
- services
- )
- return object(), {'status': 201}
-
- def _assert_absent_maintenance_window_url(self, module, url, headers, method=None):
- self.assertEqual('https://api.pagerduty.com/maintenance_windows/window_id', url)
- return object(), {'status': 204}
-
- def _assert_absent_window_with_v1_compatible_header(self, module, url, headers, method=None):
- self.assertDictContainsSubset(
- {'Accept': 'application/vnd.pagerduty+json;version=2'},
- headers,
- 'Accept:application/vnd.pagerduty+json;version=2 HTTP header not found'
- )
- return object(), {'status': 204}
-
- def test_ongoing_maintenance_windos_url(self):
- self.pd.ongoing(http_call=self._assert_ongoing_maintenance_windows)
-
- def test_ongoing_maintenance_windos_compatibility_header(self):
- self.pd.ongoing(http_call=self._assert_ongoing_window_with_v1_compatible_header)
-
- def test_create_maintenance_window_url(self):
- self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_a_maintenance_window_url)
-
- def test_create_maintenance_window_http_method(self):
- self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_a_maintenance_window_http_method)
-
- def test_create_maintenance_from_header(self):
- self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_a_maintenance_window_from_header)
-
- def test_create_maintenance_compatibility_header(self):
- self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_window_with_v1_compatible_header)
-
- def test_create_maintenance_request_payload(self):
- self.pd.create('requester_id', 'service', 1, 0, 'desc', http_call=self._assert_create_window_payload)
-
- def test_create_maintenance_for_single_service(self):
- self.pd.create('requester_id', 'service_id', 1, 0, 'desc', http_call=self._assert_create_window_single_service)
-
- def test_create_maintenance_for_multiple_services(self):
- self.pd.create('requester_id', ['service_id_1', 'service_id_2', 'service_id_3'], 1, 0, 'desc', http_call=self._assert_create_window_multiple_service)
-
- def test_absent_maintenance_window_url(self):
- self.pd.absent('window_id', http_call=self._assert_absent_maintenance_window_url)
-
- def test_absent_maintenance_compatibility_header(self):
- self.pd.absent('window_id', http_call=self._assert_absent_window_with_v1_compatible_header)
diff --git a/test/units/modules/monitoring/test_pagerduty_alert.py b/test/units/modules/monitoring/test_pagerduty_alert.py
deleted file mode 100644
index cc177bd6d5..0000000000
--- a/test/units/modules/monitoring/test_pagerduty_alert.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from units.compat import unittest
-from ansible.modules.monitoring import pagerduty_alert
-
-
-class PagerDutyAlertsTest(unittest.TestCase):
- def _assert_incident_api(self, module, url, method, headers):
- self.assertTrue('https://api.pagerduty.com/incidents' in url, 'url must contain REST API v2 network path')
- self.assertTrue('service_ids%5B%5D=service_id' in url, 'url must contain service id to filter incidents')
- self.assertTrue('sort_by=incident_number%3Adesc' in url, 'url should contain sorting parameter')
- self.assertTrue('time_zone=UTC' in url, 'url should contain time zone parameter')
- return Response(), {'status': 200}
-
- def _assert_compatibility_header(self, module, url, method, headers):
- self.assertDictContainsSubset(
- {'Accept': 'application/vnd.pagerduty+json;version=2'},
- headers,
- 'Accept:application/vnd.pagerduty+json;version=2 HTTP header not found'
- )
- return Response(), {'status': 200}
-
- def _assert_incident_key(self, module, url, method, headers):
- self.assertTrue('incident_key=incident_key_value' in url, 'url must contain incident key')
- return Response(), {'status': 200}
-
- def test_incident_url(self):
- pagerduty_alert.check(None, 'name', 'state', 'service_id', 'integration_key', 'api_key', http_call=self._assert_incident_api)
-
- def test_compatibility_header(self):
- pagerduty_alert.check(None, 'name', 'state', 'service_id', 'integration_key', 'api_key', http_call=self._assert_compatibility_header)
-
- def test_incident_key_in_url_when_it_is_given(self):
- pagerduty_alert.check(
- None, 'name', 'state', 'service_id', 'integration_key', 'api_key', incident_key='incident_key_value', http_call=self._assert_incident_key
- )
-
-
-class Response(object):
- def read(self):
- return '{"incidents":[{"id": "incident_id", "status": "triggered"}]}'
diff --git a/test/units/modules/net_tools/nios/fixtures/nios_result.txt b/test/units/modules/net_tools/nios/fixtures/nios_result.txt
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/units/modules/net_tools/nios/fixtures/nios_result.txt
+++ /dev/null
diff --git a/test/units/modules/net_tools/nios/test_nios_a_record.py b/test/units/modules/net_tools/nios/test_nios_a_record.py
deleted file mode 100644
index 72101da7df..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_a_record.py
+++ /dev/null
@@ -1,159 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_a_record
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosARecordModule(TestNiosModule):
-
- module = nios_a_record
-
- def setUp(self):
- super(TestNiosARecordModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_a_record.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_a_record.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_a_record.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosARecordModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_a_record_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'a.ansible.com',
- 'ipv4': '192.168.10.1', 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "name": {"ib_req": True},
- "ipv4": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi.__dict__)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(),
- 'ipv4': '192.168.10.1'})
-
- def test_nios_a_record_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'a.ansible.com', 'ipv4': '192.168.10.1',
- 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "arecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "a.ansible.com",
- "ipv4": "192.168.10.1",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "ipv4": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_a_record_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'a.ansible.com', 'ipv4': '192.168.10.1',
- 'comment': None, 'extattrs': None}
-
- ref = "arecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "a.ansible.com",
- "ipv4": "192.168.10.1",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "ipv4": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_a_record_update_record_name(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': {'new_name': 'a_new.ansible.com', 'old_name': 'a.ansible.com'},
- 'comment': 'comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "arecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "a_new.ansible.com",
- "old_name": "a.ansible.com",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
diff --git a/test/units/modules/net_tools/nios/test_nios_aaaa_record.py b/test/units/modules/net_tools/nios/test_nios_aaaa_record.py
deleted file mode 100644
index dc5dedb80b..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_aaaa_record.py
+++ /dev/null
@@ -1,159 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_aaaa_record
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosAAAARecordModule(TestNiosModule):
-
- module = nios_aaaa_record
-
- def setUp(self):
- super(TestNiosAAAARecordModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_aaaa_record.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_aaaa_record.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_aaaa_record.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosAAAARecordModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_aaaa_record_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'aaaa.ansible.com',
- 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "name": {"ib_req": True},
- "ipv6": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi.__dict__)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(),
- 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334'})
-
- def test_nios_aaaa_record_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'aaaa.ansible.com',
- 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "aaaarecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "aaaa.ansible.com",
- "ipv6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "ipv6": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_aaaa_record_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'aaaa.ansible.com',
- 'ipv6': '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'comment': None, 'extattrs': None}
-
- ref = "aaaarecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "aaaa.ansible.com",
- "ipv6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "ipv6": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_aaaa_record_update_record_name(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': {'new_name': 'aaaa_new.ansible.com', 'old_name': 'aaaa.ansible.com'},
- 'comment': 'comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "aaaarecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "aaaa_new.ansible.com",
- "old_name": "aaaa.ansible.com",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
diff --git a/test/units/modules/net_tools/nios/test_nios_cname_record.py b/test/units/modules/net_tools/nios/test_nios_cname_record.py
deleted file mode 100644
index ecf8dfcba0..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_cname_record.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_cname_record
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosCNameRecordModule(TestNiosModule):
-
- module = nios_cname_record
-
- def setUp(self):
- super(TestNiosCNameRecordModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_cname_record.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_cname_record.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_cname_record.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosCNameRecordModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_a_record_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'cname.ansible.com',
- 'canonical': 'realhost.ansible.com', 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "name": {"ib_req": True},
- "canonical": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi.__dict__)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(),
- 'canonical': 'realhost.ansible.com'})
-
- def test_nios_a_record_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'cname.ansible.com',
- 'canonical': 'realhost.ansible.com', 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "cnamerecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "cname.ansible.com",
- "canonical": "realhost.ansible.com",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "canonical": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_a_record_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'cname.ansible.com',
- 'canonical': 'realhost.ansible.com', 'comment': None, 'extattrs': None}
-
- ref = "cnamerecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "cname.ansible.com",
- "canonical": "realhost.ansible.com",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "canonical": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
diff --git a/test/units/modules/net_tools/nios/test_nios_dns_view.py b/test/units/modules/net_tools/nios/test_nios_dns_view.py
deleted file mode 100644
index d5e7656cb2..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_dns_view.py
+++ /dev/null
@@ -1,127 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_dns_view
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosDnsViewModule(TestNiosModule):
-
- module = nios_dns_view
-
- def setUp(self):
- super(TestNiosDnsViewModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_dns_view.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_dns_view.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_dns_view.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosDnsViewModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_dns_view_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible-dns',
- 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__()})
-
- def test_nios_dns_view_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible-dns',
- 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "dnsview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "ansible-dns",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_dns_view_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible-dns',
- 'comment': None, 'extattrs': None}
-
- ref = "dnsview/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "ansible-dns",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
diff --git a/test/units/modules/net_tools/nios/test_nios_fixed_address.py b/test/units/modules/net_tools/nios/test_nios_fixed_address.py
deleted file mode 100644
index 9b21c2d320..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_fixed_address.py
+++ /dev/null
@@ -1,201 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.module_utils.net_tools.nios import api
-from ansible.modules.net_tools.nios import nios_fixed_address
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosFixedAddressModule(TestNiosModule):
-
- module = nios_fixed_address
-
- def setUp(self):
- super(TestNiosFixedAddressModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_fixed_address.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_fixed_address.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_fixed_address.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosFixedAddressModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def test_nios_fixed_address_ipv4_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8',
- 'network': '192.168.10.0/24', 'network_view': 'default', 'comment': None, 'extattrs': None}
-
- test_object = None
- test_spec = {
- "name": {},
- "ipaddr": {"ib_req": True},
- "mac": {"ib_req": True},
- "network": {"ib_req": True},
- "network_view": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8',
- 'network': '192.168.10.0/24', 'network_view': 'default'})
-
- def test_nios_fixed_address_ipv4_dhcp_update(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8',
- 'network': '192.168.10.0/24', 'network_view': 'default', 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "name": "test_fa",
- "_ref": "network/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "ipaddr": "192.168.10.1",
- "mac": "08:6d:41:e8:fd:e8",
- "network": "192.168.10.0/24",
- "network_view": "default",
- "extattrs": {'options': {'name': 'test', 'value': 'ansible.com'}}
- }
- ]
-
- test_spec = {
- "name": {},
- "ipaddr": {"ib_req": True},
- "mac": {"ib_req": True},
- "network": {"ib_req": True},
- "network_view": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_fixed_address_ipv4_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'test_fa', 'ipaddr': '192.168.10.1', 'mac': '08:6d:41:e8:fd:e8',
- 'network': '192.168.10.0/24', 'network_view': 'default', 'comment': None, 'extattrs': None}
-
- ref = "fixedaddress/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "name": "test_fa",
- "_ref": ref,
- "ipaddr": "192.168.10.1",
- "mac": "08:6d:41:e8:fd:e8",
- "network": "192.168.10.0/24",
- "network_view": "default",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {},
- "ipaddr": {"ib_req": True},
- "mac": {"ib_req": True},
- "network": {"ib_req": True},
- "network_view": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_fixed_address_ipv6_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'test_fa', 'ipaddr': 'fe80::1/10', 'mac': '08:6d:41:e8:fd:e8',
- 'network': 'fe80::/64', 'network_view': 'default', 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "name": {},
- "ipaddr": {"ib_req": True},
- "mac": {"ib_req": True},
- "network": {"ib_req": True},
- "network_view": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': 'test_fa', 'ipaddr': 'fe80::1/10', 'mac': '08:6d:41:e8:fd:e8',
- 'network': 'fe80::/64', 'network_view': 'default'})
-
- def test_nios_fixed_address_ipv6_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'test_fa', 'ipaddr': 'fe80::1/10', 'mac': '08:6d:41:e8:fd:e8',
- 'network': 'fe80::/64', 'network_view': 'default', 'comment': None, 'extattrs': None}
-
- ref = "ipv6fixedaddress/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "name": "test_fa",
- "_ref": ref,
- "ipaddr": "fe80::1/10",
- "mac": "08:6d:41:e8:fd:e8",
- "network": "fe80::/64",
- "network_view": "default",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {},
- "ipaddr": {"ib_req": True},
- "mac": {"ib_req": True},
- "network": {"ib_req": True},
- "network_view": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
diff --git a/test/units/modules/net_tools/nios/test_nios_host_record.py b/test/units/modules/net_tools/nios/test_nios_host_record.py
deleted file mode 100644
index 0a317288d1..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_host_record.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_host_record
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosHostRecordModule(TestNiosModule):
-
- module = nios_host_record
-
- def setUp(self):
-
- super(TestNiosHostRecordModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_host_record.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
-
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_host_record.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_host_record.WapiModule.run')
- self.mock_wapi_run.start()
-
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosHostRecordModule, self).tearDown()
- self.mock_wapi.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_host_record_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible',
- 'comment': None, 'extattrs': None}
-
- test_object = None
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__()})
-
- def test_nios_host_record_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible',
- 'comment': None, 'extattrs': None}
-
- ref = "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "ansible",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_host_record_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'default',
- 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "default",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
-
- def test_nios_host_record_update_record_name(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': {'new_name': 'default', 'old_name': 'old_default'},
- 'comment': 'comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "default",
- "old_name": "old_default",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
diff --git a/test/units/modules/net_tools/nios/test_nios_member.py b/test/units/modules/net_tools/nios/test_nios_member.py
deleted file mode 100644
index f81263cdc0..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_member.py
+++ /dev/null
@@ -1,162 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.module_utils.net_tools.nios import api
-from ansible.modules.net_tools.nios import nios_member
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosMemberModule(TestNiosModule):
-
- module = nios_member
-
- def setUp(self):
- super(TestNiosMemberModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_member.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_member.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_member.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosMemberModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def test_nios_member_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'host_name': 'test_member',
- 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', 'gateway': '192.168.1.1'},
- 'config_addr_type': 'IPV4', 'platform': 'VNIOS', 'comment': None, 'extattrs': None}
-
- test_object = None
- test_spec = {
- "host_name": {"ib_req": True},
- "vip_setting": {},
- "config_addr_type": {},
- "platform": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'host_name': 'test_member',
- 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0',
- 'gateway': '192.168.1.1'},
- 'config_addr_type': 'IPV4', 'platform': 'VNIOS'})
-
- def test_nios_member_update(self):
- self.module.params = {'provider': None, 'state': 'present', 'host_name': 'test_member',
- 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', 'gateway': '192.168.1.1'},
- 'config_addr_type': 'IPV4', 'platform': 'VNIOS', 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "Created with Ansible",
- "_ref": "member/b25lLnZpcnR1YWxfbm9kZSQ3:member01.ansible-dev.com",
- "config_addr_type": "IPV4",
- "host_name": "member01.ansible-dev.com",
- "platform": "VNIOS",
- "service_type_configuration": "ALL_V4",
- "vip_setting":
- {
- "address": "192.168.1.100",
- "dscp": 0,
- "gateway": "192.168.1.1",
- "primary": True,
- "subnet_mask": "255.255.255.0",
- "use_dscp": False
- }
- }
- ]
-
- test_spec = {
- "host_name": {"ib_req": True},
- "vip_setting": {},
- "config_addr_type": {},
- "platform": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_member_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'host_name': 'test_member',
- 'vip_setting': {'address': '192.168.1.110', 'subnet_mask': '255.255.255.0', 'gateway': '192.168.1.1'},
- 'config_addr_type': 'IPV4', 'platform': 'VNIOS', 'comment': 'updated comment', 'extattrs': None}
-
- ref = "member/b25lLnZpcnR1YWxfbm9kZSQ3:member01.ansible-dev.com"
-
- test_object = [
- {
- "comment": "Created with Ansible",
- "_ref": "member/b25lLnZpcnR1YWxfbm9kZSQ3:member01.ansible-dev.com",
- "config_addr_type": "IPV4",
- "host_name": "member01.ansible-dev.com",
- "platform": "VNIOS",
- "service_type_configuration": "ALL_V4",
- "vip_setting":
- {
- "address": "192.168.1.100",
- "dscp": 0,
- "gateway": "192.168.1.1",
- "primary": True,
- "subnet_mask": "255.255.255.0",
- "use_dscp": False
- }
- }
- ]
-
- test_spec = {
- "host_name": {"ib_req": True},
- "vip_setting": {},
- "config_addr_type": {},
- "platform": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
diff --git a/test/units/modules/net_tools/nios/test_nios_module.py b/test/units/modules/net_tools/nios/test_nios_module.py
deleted file mode 100644
index dbf5885173..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_module.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# (c) 2018 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestNiosModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/net_tools/nios/test_nios_mx_record.py b/test/units/modules/net_tools/nios/test_nios_mx_record.py
deleted file mode 100644
index 21ac7b2b9f..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_mx_record.py
+++ /dev/null
@@ -1,137 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_mx_record
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosMXRecordModule(TestNiosModule):
-
- module = nios_mx_record
-
- def setUp(self):
- super(TestNiosMXRecordModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_mx_record.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_mx_record.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_mx_record.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosMXRecordModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_mx_record_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible.com',
- 'mx': 'mailhost.ansible.com', 'preference': 0, 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "name": {"ib_req": True},
- "mx": {"ib_req": True},
- "preference": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(),
- 'mx': 'mailhost.ansible.com', 'preference': 0})
-
- def test_nios_mx_record_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible.com', 'mx': 'mailhost.ansible.com',
- 'preference': 0, 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "mxrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "ansible.com",
- "mx": "mailhost.ansible.com",
- "preference": 0,
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "mx": {"ib_req": True},
- "preference": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_mx_record_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible.com', 'mx': 'mailhost.ansible.com',
- 'preference': 0, 'comment': None, 'extattrs': None}
-
- ref = "mxrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "ansible.com",
- "mx": "mailhost.ansible.com",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "mx": {"ib_req": True},
- "preference": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
diff --git a/test/units/modules/net_tools/nios/test_nios_naptr_record.py b/test/units/modules/net_tools/nios/test_nios_naptr_record.py
deleted file mode 100644
index 2f1547c29f..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_naptr_record.py
+++ /dev/null
@@ -1,147 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_naptr_record
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosNAPTRRecordModule(TestNiosModule):
-
- module = nios_naptr_record
-
- def setUp(self):
- super(TestNiosNAPTRRecordModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_naptr_record.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_naptr_record.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_naptr_record.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosNAPTRRecordModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_naptr_record_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': '*.subscriber-100.ansiblezone.com',
- 'order': '1000', 'preference': '10', 'replacement': 'replacement1.network.ansiblezone.com',
- 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "name": {"ib_req": True},
- "order": {"ib_req": True},
- "preference": {"ib_req": True},
- "replacement": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi.__dict__)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(),
- 'order': '1000', 'preference': '10',
- 'replacement': 'replacement1.network.ansiblezone.com'})
-
- def test_nios_naptr_record_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': '*.subscriber-100.ansiblezone.com',
- 'order': '1000', 'preference': '10', 'replacement': 'replacement1.network.ansiblezone.com',
- 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "naptrrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "*.subscriber-100.ansiblezone.com",
- "order": "1000",
- "preference": "10",
- "replacement": "replacement1.network.ansiblezone.com",
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "order": {"ib_req": True},
- "preference": {"ib_req": True},
- "replacement": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_naptr_record_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': '*.subscriber-100.ansiblezone.com',
- 'order': '1000', 'preference': '10', 'replacement': 'replacement1.network.ansiblezone.com',
- 'comment': None, 'extattrs': None}
-
- ref = "naptrrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "*.subscriber-100.ansiblezone.com",
- "order": "1000",
- "preference": "10",
- "replacement": "replacement1.network.ansiblezone.com",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "order": {"ib_req": True},
- "preference": {"ib_req": True},
- "replacement": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
diff --git a/test/units/modules/net_tools/nios/test_nios_network.py b/test/units/modules/net_tools/nios/test_nios_network.py
deleted file mode 100644
index 859e24d0a6..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_network.py
+++ /dev/null
@@ -1,248 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.module_utils.net_tools.nios import api
-from ansible.modules.net_tools.nios import nios_network
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosNetworkModule(TestNiosModule):
-
- module = nios_network
-
- def setUp(self):
- super(TestNiosNetworkModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_network.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_network.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_network.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosNetworkModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def test_nios_network_ipv4_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'network': '192.168.10.0/24',
- 'comment': None, 'extattrs': None}
-
- test_object = None
- test_spec = {
- "network": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'network': '192.168.10.0/24'})
-
- def test_nios_network_ipv4_dhcp_update(self):
- self.module.params = {'provider': None, 'state': 'present', 'network': '192.168.10.0/24',
- 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "network/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "network": "192.168.10.0/24",
- "extattrs": {'options': {'name': 'test', 'value': 'ansible.com'}}
- }
- ]
-
- test_spec = {
- "network": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_network_ipv6_dhcp_update(self):
- self.module.params = {'provider': None, 'state': 'present', 'ipv6network': 'fe80::/64',
- 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "ipv6network/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "ipv6network": "fe80::/64",
- "extattrs": {'options': {'name': 'test', 'value': 'ansible.com'}}
- }
- ]
-
- test_spec = {
- "ipv6network": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
- self.assertTrue(res['changed'])
-
- def test_nios_network_ipv4_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'network': '192.168.10.0/24',
- 'comment': None, 'extattrs': None}
-
- ref = "network/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "network": "192.168.10.0/24",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "network": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_network_ipv6_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'ipv6network': 'fe80::/64',
- 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "ipv6network": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'ipv6network': 'fe80::/64'})
-
- def test_nios_network_ipv6_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'ipv6network': 'fe80::/64',
- 'comment': None, 'extattrs': None}
-
- ref = "ipv6network/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "ipv6network": "fe80::/64",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "ipv6network": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_networkcontainer_ipv4_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'networkcontainer': '192.168.10.0/24',
- 'comment': None, 'extattrs': None}
-
- test_object = None
- test_spec = {
- "networkcontainer": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'networkcontainer': '192.168.10.0/24'})
-
- def test_nios_networkcontainer_ipv4_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'networkcontainer': '192.168.10.0/24',
- 'comment': None, 'extattrs': None}
-
- ref = "networkcontainer/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "networkcontainer": "192.168.10.0/24"
- }]
-
- test_spec = {
- "networkcontainer": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_networkcontainer_ipv6_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'ipv6networkcontainer': 'fe80::/64',
- 'comment': None, 'extattrs': None}
-
- test_object = None
- test_spec = {
- "ipv6networkcontainer": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'ipv6networkcontainer': 'fe80::/64'})
diff --git a/test/units/modules/net_tools/nios/test_nios_network_view.py b/test/units/modules/net_tools/nios/test_nios_network_view.py
deleted file mode 100644
index 4a4be1244b..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_network_view.py
+++ /dev/null
@@ -1,156 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_network_view
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosNetworkViewModule(TestNiosModule):
-
- module = nios_network_view
-
- def setUp(self):
- super(TestNiosNetworkViewModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_network_view.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_network_view.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_network_view.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosNetworkViewModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_network_view_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'ansible',
- 'comment': None, 'extattrs': None}
-
- test_object = None
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {},
-
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__()})
-
- def test_nios_network_view_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'default',
- 'comment': 'updated comment', 'extattrs': None, 'network_view': 'default'}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "default",
- "extattrs": {},
- "network_view": "default"
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
-
- def test_nios_network_view_update_name(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'default', 'old_name': 'old_default',
- 'comment': 'updated comment', 'extattrs': None, 'network_view': 'default'}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "default",
- "old_name": "old_default",
- "extattrs": {},
- "network_view": "default"
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
-
- def test_nios_network_view_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'ansible',
- 'comment': None, 'extattrs': None}
-
- ref = "networkview/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "ansible",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
diff --git a/test/units/modules/net_tools/nios/test_nios_nsgroup.py b/test/units/modules/net_tools/nios/test_nios_nsgroup.py
deleted file mode 100644
index 463fc24687..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_nsgroup.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_nsgroup
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosNSGroupModule(TestNiosModule):
-
- module = nios_nsgroup
-
- def setUp(self):
-
- super(TestNiosNSGroupModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_nsgroup.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
-
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_nsgroup.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_nsgroup.WapiModule.run')
- self.mock_wapi_run.start()
-
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosNSGroupModule, self).tearDown()
- self.mock_wapi.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_nsgroup_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'my-simple-group',
- 'comment': None, 'grid_primary': None}
-
- test_object = None
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "grid_primary": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__()})
-
- def test_nios_nsgroup_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': 'my-simple-group',
- 'comment': None, 'grid_primary': None}
-
- ref = "nsgroup/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "name": "my-simple-group",
- "grid_primary": {'name': 'infoblox-test.example.com'}
- }]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "grid_primary": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_nsgroup_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': 'default',
- 'comment': 'updated comment', 'grid_primary': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "nsgroup/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "default",
- "grid_primary": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "comment": {},
- "grid_primary": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
diff --git a/test/units/modules/net_tools/nios/test_nios_ptr_record.py b/test/units/modules/net_tools/nios/test_nios_ptr_record.py
deleted file mode 100644
index f41132d292..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_ptr_record.py
+++ /dev/null
@@ -1,184 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_ptr_record
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosPTRRecordModule(TestNiosModule):
-
- module = nios_ptr_record
-
- def setUp(self):
-
- super(TestNiosPTRRecordModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_ptr_record.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
-
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_ptr_record.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_ptr_record.WapiModule.run')
- self.mock_wapi_run.start()
-
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosPTRRecordModule, self).tearDown()
- self.mock_wapi.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_ptr_record_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible.test.com',
- 'ipv4addr': '10.36.241.14', 'comment': None, 'extattrs': None, 'view': 'default'}
-
- test_object = None
- test_spec = {
- "ipv4addr": {"ib_req": True},
- "ptrdname": {"ib_req": True},
- "comment": {},
- "extattrs": {},
- "view": {"ib_req": True}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'ipv4addr': '10.36.241.14', 'ptrdname': 'ansible.test.com', 'view': 'default'})
-
- def test_nios_ptr_record_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'ptrdname': 'ansible.test.com',
- 'ipv4addr': '10.36.241.14', 'comment': None, 'extattrs': None, 'view': 'default'}
-
- ref = "record:ptr/ZG5zLm5ldHdvcmtfdmlldyQw:14.241.36.10.in-addr.arpa/default"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "ptrdname": "ansible.test.com",
- "ipv4addr": "10.36.241.14",
- "view": "default",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "ipv4addr": {"ib_req": True},
- "ptrdname": {"ib_req": True},
- "comment": {},
- "extattrs": {},
- "view": {"ib_req": True}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_ptr_record_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible.test.com',
- 'ipv4addr': '10.36.241.14', 'comment': 'updated comment', 'extattrs': None, 'view': 'default'}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "record:ptr/ZG5zLm5ldHdvcmtfdmlldyQw:14.241.36.10.in-addr.arpa/default",
- "ptrdname": "ansible.test.com",
- "ipv4addr": "10.36.241.14",
- "extattrs": {},
- "view": "default"
- }
- ]
-
- test_spec = {
- "ipv4addr": {"ib_req": True},
- "ptrdname": {"ib_req": True},
- "comment": {},
- "extattrs": {},
- "view": {"ib_req": True}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
-
- def test_nios_ptr_record_update_record_ptrdname(self):
- self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible.test.org',
- 'ipv4addr': '10.36.241.14', 'comment': 'comment', 'extattrs': None, 'view': 'default'}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "record:ptr/ZG5zLm5ldHdvcmtfdmlldyQw:14.241.36.10.in-addr.arpa/default",
- "ptrdname": "ansible.test.com",
- "ipv4addr": "10.36.241.14",
- "extattrs": {},
- "view": "default"
- }
- ]
-
- test_spec = {
- "ipv4addr": {"ib_req": True},
- "ptrdname": {"ib_req": True},
- "comment": {},
- "extattrs": {},
- "view": {"ib_req": True}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.update_object.called_once_with(test_object)
-
- def test_nios_ptr6_record_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'ptrdname': 'ansible6.test.com',
- 'ipv6addr': '2002:8ac3:802d:1242:20d:60ff:fe38:6d16', 'comment': None, 'extattrs': None, 'view': 'default'}
-
- test_object = None
- test_spec = {"ipv6addr": {"ib_req": True},
- "ptrdname": {"ib_req": True},
- "comment": {},
- "extattrs": {},
- "view": {"ib_req": True}}
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'ipv6addr': '2002:8ac3:802d:1242:20d:60ff:fe38:6d16',
- 'ptrdname': 'ansible6.test.com', 'view': 'default'})
diff --git a/test/units/modules/net_tools/nios/test_nios_srv_record.py b/test/units/modules/net_tools/nios/test_nios_srv_record.py
deleted file mode 100644
index 2c0b27388c..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_srv_record.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_srv_record
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosSRVRecordModule(TestNiosModule):
-
- module = nios_srv_record
-
- def setUp(self):
- super(TestNiosSRVRecordModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_srv_record.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_srv_record.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_srv_record.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosSRVRecordModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_srv_record_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': '_sip._tcp.service.ansible.com',
- 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10,
- 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "name": {"ib_req": True},
- "port": {"ib_req": True},
- "target": {"ib_req": True},
- "priority": {"ib_req": True},
- "weight": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'name': self.module._check_type_dict().__getitem__(),
- 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10})
-
- def test_nios_srv_record_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'name': '_sip._tcp.service.ansible.com',
- 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10,
- 'comment': None, 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "srvrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "name": "_sip._tcp.service.ansible.com",
- 'port': 5080,
- "target": "mailhost.ansible.com",
- "priority": 10,
- 'weight': 10,
- "extattrs": {}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "port": {"ib_req": True},
- "target": {"ib_req": True},
- "priority": {"ib_req": True},
- "weight": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_srv_record_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'name': '_sip._tcp.service.ansible.com',
- 'port': 5080, 'target': 'service1.ansible.com', 'priority': 10, 'weight': 10,
- 'comment': None, 'extattrs': None}
-
- ref = "srvrecord/ZG5zLm5ldHdvcmtfdmlldyQw:default/false"
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": ref,
- "name": "_sip._tcp.service.ansible.com",
- "port": 5080,
- "target": "mailhost.ansible.com",
- "priority": 10,
- "weight": 10,
- "extattrs": {'Site': {'value': 'test'}}
- }
- ]
-
- test_spec = {
- "name": {"ib_req": True},
- "port": {"ib_req": True},
- "target": {"ib_req": True},
- "priority": {"ib_req": True},
- "weight": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
diff --git a/test/units/modules/net_tools/nios/test_nios_zone.py b/test/units/modules/net_tools/nios/test_nios_zone.py
deleted file mode 100644
index 39cd09dbda..0000000000
--- a/test/units/modules/net_tools/nios/test_nios_zone.py
+++ /dev/null
@@ -1,287 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible.modules.net_tools.nios import nios_zone
-from ansible.module_utils.net_tools.nios import api
-from units.compat.mock import patch, MagicMock, Mock
-from .test_nios_module import TestNiosModule, load_fixture
-
-
-class TestNiosZoneModule(TestNiosModule):
-
- module = nios_zone
-
- def setUp(self):
- super(TestNiosZoneModule, self).setUp()
- self.module = MagicMock(name='ansible.modules.net_tools.nios.nios_zone.WapiModule')
- self.module.check_mode = False
- self.module.params = {'provider': None}
- self.mock_wapi = patch('ansible.modules.net_tools.nios.nios_zone.WapiModule')
- self.exec_command = self.mock_wapi.start()
- self.mock_wapi_run = patch('ansible.modules.net_tools.nios.nios_zone.WapiModule.run')
- self.mock_wapi_run.start()
- self.load_config = self.mock_wapi_run.start()
-
- def tearDown(self):
- super(TestNiosZoneModule, self).tearDown()
- self.mock_wapi.stop()
- self.mock_wapi_run.stop()
-
- def _get_wapi(self, test_object):
- wapi = api.WapiModule(self.module)
- wapi.get_object = Mock(name='get_object', return_value=test_object)
- wapi.create_object = Mock(name='create_object')
- wapi.update_object = Mock(name='update_object')
- wapi.delete_object = Mock(name='delete_object')
- return wapi
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('nios_result.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_nios_zone_create(self):
- self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com',
- 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "fqdn": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com'})
-
- def test_nios_zone_remove(self):
- self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com',
- 'comment': None, 'extattrs': None}
-
- ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "fqdn": "ansible.com",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "fqdn": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_zone_update_comment(self):
- self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com',
- 'comment': 'updated comment', 'extattrs': None}
-
- test_object = [
- {
- "comment": "test comment",
- "_ref": "zone/ZG5zLm5ldHdvcmtfdmlldyQw:default/true",
- "fqdn": "ansible.com",
- "extattrs": {'Site': {'value': 'test'}}
- }
- ]
-
- test_spec = {
- "fqdn": {"ib_req": True},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
-
- def test_nios_zone_create_using_grid_primary_secondaries(self):
- self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com',
- 'grid_primary': [{"name": "gridprimary.grid.com"}],
- 'grid_secondaries': [{"name": "gridsecondary1.grid.com"},
- {"name": "gridsecondary2.grid.com"}],
- 'restart_if_needed': True,
- 'comment': None, 'extattrs': None}
-
- test_object = None
- grid_spec = dict(
- name=dict(required=True),
- )
- test_spec = {
- "fqdn": {"ib_req": True},
- "grid_primary": {},
- "grid_secondaries": {},
- "restart_if_needed": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com',
- "grid_primary": [{"name": "gridprimary.grid.com"}],
- "grid_secondaries": [{"name": "gridsecondary1.grid.com"},
- {"name": "gridsecondary2.grid.com"}],
- "restart_if_needed": True
- })
-
- def test_nios_zone_remove_using_grid_primary_secondaries(self):
- self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com',
- 'grid_primary': [{"name": "gridprimary.grid.com"}],
- 'grid_secondaries': [{"name": "gridsecondary1.grid.com"},
- {"name": "gridsecondary2.grid.com"}],
- 'restart_if_needed': True,
- 'comment': None, 'extattrs': None}
-
- ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "fqdn": "ansible.com",
- "grid_primary": [{"name": "gridprimary.grid.com"}],
- "grid_secondaries": [{"name": "gridsecondary1.grid.com"}, {"name": "gridsecondary2.grid.com"}],
- "restart_if_needed": True,
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "fqdn": {"ib_req": True},
- "grid_primary": {},
- "grid_secondaries": {},
- "restart_if_needed": {},
- "comment": {},
- "extattrs": {}
- }
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_zone_create_using_name_server_group(self):
- self.module.params = {'provider': None, 'state': 'present', 'fqdn': 'ansible.com',
- 'ns_group': 'examplensg', 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "fqdn": {"ib_req": True},
- "ns_group": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'fqdn': 'ansible.com',
- 'ns_group': 'examplensg'})
-
- def test_nios_zone_remove_using_name_server_group(self):
- self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com',
- 'ns_group': 'examplensg', 'comment': None, 'extattrs': None}
-
- ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "fqdn": "ansible.com",
- "ns_group": "examplensg",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "fqdn": {"ib_req": True},
- "ns_group": {},
- "comment": {},
- "extattrs": {}
- }
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
-
- def test_nios_zone_create_using_zone_format(self):
- self.module.params = {'provider': None, 'state': 'present', 'fqdn': '10.10.10.in-addr.arpa',
- 'zone_format': 'IPV4', 'comment': None, 'extattrs': None}
-
- test_object = None
-
- test_spec = {
- "fqdn": {"ib_req": True},
- "zone_format": {},
- "comment": {},
- "extattrs": {}
- }
-
- wapi = self._get_wapi(test_object)
- print("WAPI: ", wapi)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.create_object.assert_called_once_with('testobject', {'fqdn': '10.10.10.in-addr.arpa',
- 'zone_format': 'IPV4'})
-
- def test_nios_zone_remove_using_using_zone_format(self):
- self.module.params = {'provider': None, 'state': 'absent', 'fqdn': 'ansible.com',
- 'zone_format': 'IPV4', 'comment': None, 'extattrs': None}
-
- ref = "zone/ZG5zLm5ldHdvcmtfdmlldyQw:ansible/false"
-
- test_object = [{
- "comment": "test comment",
- "_ref": ref,
- "fqdn": "ansible.com",
- "zone_format": "IPV4",
- "extattrs": {'Site': {'value': 'test'}}
- }]
-
- test_spec = {
- "fqdn": {"ib_req": True},
- "zone_format": {},
- "comment": {},
- "extattrs": {}
- }
- wapi = self._get_wapi(test_object)
- res = wapi.run('testobject', test_spec)
-
- self.assertTrue(res['changed'])
- wapi.delete_object.assert_called_once_with(ref)
diff --git a/test/units/modules/net_tools/test_hetzner_firewall.py b/test/units/modules/net_tools/test_hetzner_firewall.py
deleted file mode 100644
index 870d8e3967..0000000000
--- a/test/units/modules/net_tools/test_hetzner_firewall.py
+++ /dev/null
@@ -1,1405 +0,0 @@
-# (c) 2019 Felix Fontein <felix@fontein.de>
-# 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 pytest
-
-from ansible.module_utils.hetzner import BASE_URL
-from ansible.modules.net_tools import hetzner_firewall
-
-
-# ##########################################################
-# ## General test framework
-
-import json
-
-from mock import MagicMock
-from units.modules.utils import set_module_args
-from ansible.module_utils.six.moves.urllib.parse import parse_qs
-
-
-class FetchUrlCall:
- def __init__(self, method, status):
- assert method == method.upper(), \
- 'HTTP method names are case-sensitive and should be upper-case (RFCs 7230 and 7231)'
- self.method = method
- self.status = status
- self.body = None
- self.headers = {}
- self.error_data = {}
- self.expected_url = None
- self.expected_headers = {}
- self.form_parse = False
- self.form_present = set()
- self.form_values = {}
- self.form_values_one = {}
-
- def result(self, body):
- self.body = body
- assert self.error_data.get('body') is None, 'Error body must not be given'
- return self
-
- def result_str(self, str_body):
- return self.result(str_body.encode('utf-8'))
-
- def result_json(self, json_body):
- return self.result(json.dumps(json_body).encode('utf-8'))
-
- def result_error(self, msg, body=None):
- self.error_data['msg'] = msg
- if body is not None:
- self.error_data['body'] = body
- assert self.body is None, 'Result must not be given if error body is provided'
- return self
-
- def expect_url(self, url):
- self.expected_url = url
- return self
-
- def return_header(self, name, value):
- assert value is not None
- self.headers[name] = value
- return self
-
- def expect_header(self, name, value):
- self.expected_headers[name] = value
- return self
-
- def expect_header_unset(self, name):
- self.expected_headers[name] = None
- return self
-
- def expect_form_present(self, key):
- self.form_parse = True
- self.form_present.append(key)
- return self
-
- def expect_form_value(self, key, value):
- self.form_parse = True
- self.form_values[key] = [value]
- return self
-
- def expect_form_value_absent(self, key):
- self.form_parse = True
- self.form_values[key] = []
- return self
-
- def expect_form_value_one_of(self, key, value):
- self.form_parse = True
- if key not in self.form_values_subset:
- self.form_values_subset[key] = set()
- self.form_values_subset[key].add(value)
- return self
-
-
-class FetchUrlProxy:
- def __init__(self, calls):
- self.calls = calls
- self.index = 0
-
- def _validate_form(self, call, data):
- form = {}
- if data is not None:
- form = parse_qs(data, keep_blank_values=True)
- for k in call.form_present:
- assert k in form
- for k, v in call.form_values.items():
- if len(v) == 0:
- assert k not in form
- else:
- assert form[k] == v
- for k, v in call.form_values_one.items():
- assert v <= set(form[k])
-
- def _validate_headers(self, call, headers):
- given_headers = {}
- if headers is not None:
- for k, v in headers.items():
- given_headers[k.lower()] = v
- for k, v in call.expected_headers:
- if v is None:
- assert k.lower() not in given_headers, \
- 'Header "{0}" specified for fetch_url call, but should not be'.format(k)
- else:
- assert given_headers.get(k.lower()) == v, \
- 'Header "{0}" specified for fetch_url call, but with wrong value'.format(k)
-
- def __call__(self, module, url, data=None, headers=None, method=None,
- use_proxy=True, force=False, last_mod_time=None, timeout=10,
- use_gssapi=False, unix_socket=None, ca_path=None, cookies=None):
- assert self.index < len(self.calls), 'Got more fetch_url calls than expected'
- call = self.calls[self.index]
- self.index += 1
-
- # Validate call
- assert method == call.method
- if call.expected_url is not None:
- assert url == call.expected_url, \
- 'Exepected URL does not match for fetch_url call'
- if call.expected_headers:
- self._validate_headers(call, headers)
- if call.form_parse:
- self._validate_form(call, data)
-
- # Compose result
- info = dict(status=call.status)
- for k, v in call.headers.items():
- info[k.lower()] = v
- info.update(call.error_data)
- res = object()
- if call.body is not None:
- res = MagicMock()
- res.read = MagicMock(return_value=call.body)
- return (res, info)
-
- def assert_is_done(self):
- assert self.index == len(self.calls), 'Got less fetch_url calls than expected'
-
-
-class ModuleExitException(Exception):
- def __init__(self, kwargs):
- self.kwargs = kwargs
-
-
-class ModuleFailException(Exception):
- def __init__(self, kwargs):
- self.kwargs = kwargs
-
-
-def run_module(mocker, module, arguments, fetch_url):
- def exit_json(module, **kwargs):
- module._return_formatted(kwargs)
- raise ModuleExitException(kwargs)
-
- def fail_json(module, **kwargs):
- module._return_formatted(kwargs)
- raise ModuleFailException(kwargs)
-
- mocker.patch('ansible.module_utils.hetzner.fetch_url', fetch_url)
- mocker.patch('ansible.module_utils.hetzner.time.sleep', lambda duration: None)
- mocker.patch('ansible.modules.net_tools.hetzner_firewall.AnsibleModule.exit_json', exit_json)
- mocker.patch('ansible.modules.net_tools.hetzner_firewall.AnsibleModule.fail_json', fail_json)
- set_module_args(arguments)
- module.main()
-
-
-def run_module_success(mocker, module, arguments, fetch_url_calls):
- fetch_url = FetchUrlProxy(fetch_url_calls or [])
- with pytest.raises(ModuleExitException) as e:
- run_module(mocker, module, arguments, fetch_url)
- fetch_url.assert_is_done()
- return e.value.kwargs
-
-
-def run_module_failed(mocker, module, arguments, fetch_url_calls):
- fetch_url = FetchUrlProxy(fetch_url_calls or [])
- with pytest.raises(ModuleFailException) as e:
- run_module(mocker, module, arguments, fetch_url)
- fetch_url.assert_is_done()
- return e.value.kwargs
-
-
-# ##########################################################
-# ## Hetzner firewall tests
-
-
-# Tests for state (absent and present)
-
-
-def test_absent_idempotency(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'absent',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['diff']['before']['status'] == 'disabled'
- assert result['diff']['after']['status'] == 'disabled'
- assert result['firewall']['status'] == 'disabled'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_absent_changed(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'absent',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL))
- .expect_form_value('status', 'disabled'),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'disabled'
- assert result['firewall']['status'] == 'disabled'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_present_idempotency(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'active'
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_present_changed(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL))
- .expect_form_value('status', 'active'),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'disabled'
- assert result['diff']['after']['status'] == 'active'
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-# Tests for state (absent and present) with check mode
-
-
-def test_absent_idempotency_check(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'absent',
- '_ansible_check_mode': True,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['diff']['before']['status'] == 'disabled'
- assert result['diff']['after']['status'] == 'disabled'
- assert result['firewall']['status'] == 'disabled'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_absent_changed_check(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'absent',
- '_ansible_check_mode': True,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'disabled'
- assert result['firewall']['status'] == 'disabled'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_present_idempotency_check(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- '_ansible_check_mode': True,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'active'
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_present_changed_check(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- '_ansible_check_mode': True,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'disabled'
- assert result['diff']['after']['status'] == 'active'
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-# Tests for port
-
-
-def test_port_idempotency(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'port': 'main',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['diff']['before']['port'] == 'main'
- assert result['diff']['after']['port'] == 'main'
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
- assert result['firewall']['port'] == 'main'
-
-
-def test_port_changed(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'port': 'main',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': True,
- 'port': 'kvm',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL))
- .expect_form_value('port', 'main'),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['port'] == 'kvm'
- assert result['diff']['after']['port'] == 'main'
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
- assert result['firewall']['port'] == 'main'
-
-
-# Tests for whitelist_hos
-
-
-def test_whitelist_hos_idempotency(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'whitelist_hos': True,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['diff']['before']['whitelist_hos'] is True
- assert result['diff']['after']['whitelist_hos'] is True
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
- assert result['firewall']['whitelist_hos'] is True
-
-
-def test_whitelist_hos_changed(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'whitelist_hos': True,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL))
- .expect_form_value('whitelist_hos', 'true'),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['whitelist_hos'] is False
- assert result['diff']['after']['whitelist_hos'] is True
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
- assert result['firewall']['whitelist_hos'] is True
-
-
-# Tests for wait_for_configured in getting status
-
-
-def test_wait_get(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'wait_for_configured': True,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'active'
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_wait_get_timeout(mocker):
- result = run_module_failed(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'wait_for_configured': True,
- 'timeout': 0,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['msg'] == 'Timeout while waiting for firewall to be configured.'
-
-
-def test_nowait_get(mocker):
- result = run_module_failed(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'wait_for_configured': False,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['msg'] == 'Firewall configuration cannot be read as it is not configured.'
-
-
-# Tests for wait_for_configured in setting status
-
-
-def test_wait_update(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'wait_for_configured': True,
- 'state': 'present',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'disabled'
- assert result['diff']['after']['status'] == 'active'
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_wait_update_timeout(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'wait_for_configured': True,
- 'timeout': 0,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'disabled'
- assert result['diff']['after']['status'] == 'active'
- assert result['firewall']['status'] == 'in process'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
- assert 'Timeout while waiting for firewall to be configured.' in result['warnings']
-
-
-def test_nowait_update(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'wait_for_configured': False,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'disabled'
- assert result['diff']['after']['status'] == 'active'
- assert result['firewall']['status'] == 'in process'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-# Idempotency checks: different amount of input rules
-
-def test_input_rule_len_change_0_1(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'rules': {
- 'input': [
- {
- 'ip_version': 'ipv4',
- 'action': 'discard',
- },
- ],
- },
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [
- {
- 'name': None,
- 'ip_version': 'ipv4',
- 'dst_ip': None,
- 'dst_port': None,
- 'src_ip': None,
- 'src_port': None,
- 'protocol': None,
- 'tcp_flags': None,
- 'action': 'discard',
- },
- ],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL))
- .expect_form_value('status', 'active')
- .expect_form_value_absent('rules[input][0][name]')
- .expect_form_value('rules[input][0][ip_version]', 'ipv4')
- .expect_form_value_absent('rules[input][0][dst_ip]')
- .expect_form_value_absent('rules[input][0][dst_port]')
- .expect_form_value_absent('rules[input][0][src_ip]')
- .expect_form_value_absent('rules[input][0][src_port]')
- .expect_form_value_absent('rules[input][0][protocol]')
- .expect_form_value_absent('rules[input][0][tcp_flags]')
- .expect_form_value('rules[input][0][action]', 'discard')
- .expect_form_value_absent('rules[input][1][action]'),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'active'
- assert len(result['diff']['before']['rules']['input']) == 0
- assert len(result['diff']['after']['rules']['input']) == 1
- assert result['firewall']['status'] == 'active'
- assert len(result['firewall']['rules']['input']) == 1
-
-
-def test_input_rule_len_change_1_0(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'rules': {
- },
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [
- {
- 'name': None,
- 'ip_version': 'ipv4',
- 'dst_ip': None,
- 'dst_port': None,
- 'src_ip': None,
- 'src_port': None,
- 'protocol': None,
- 'tcp_flags': None,
- 'action': 'discard',
- },
- ],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL))
- .expect_form_value('status', 'active')
- .expect_form_value_absent('rules[input][0][action]'),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'active'
- assert len(result['diff']['before']['rules']['input']) == 1
- assert len(result['diff']['after']['rules']['input']) == 0
- assert result['firewall']['status'] == 'active'
- assert len(result['firewall']['rules']['input']) == 0
-
-
-def test_input_rule_len_change_1_2(mocker):
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'rules': {
- 'input': [
- {
- 'ip_version': 'ipv4',
- 'dst_port': 80,
- 'protocol': 'tcp',
- 'action': 'accept',
- },
- {
- 'ip_version': 'ipv4',
- 'action': 'discard',
- },
- ],
- },
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [
- {
- 'name': None,
- 'ip_version': 'ipv4',
- 'dst_ip': None,
- 'dst_port': None,
- 'src_ip': None,
- 'src_port': None,
- 'protocol': None,
- 'tcp_flags': None,
- 'action': 'discard',
- },
- ],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [
- {
- 'name': None,
- 'ip_version': 'ipv4',
- 'dst_ip': None,
- 'dst_port': '80',
- 'src_ip': None,
- 'src_port': None,
- 'protocol': 'tcp',
- 'tcp_flags': None,
- 'action': 'accept',
- },
- {
- 'name': None,
- 'ip_version': 'ipv4',
- 'dst_ip': None,
- 'dst_port': None,
- 'src_ip': None,
- 'src_port': None,
- 'protocol': None,
- 'tcp_flags': None,
- 'action': 'discard',
- },
- ],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL))
- .expect_form_value('status', 'active')
- .expect_form_value('rules[input][0][action]', 'accept')
- .expect_form_value('rules[input][1][action]', 'discard')
- .expect_form_value_absent('rules[input][2][action]'),
- ])
- assert result['changed'] is True
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'active'
- assert len(result['diff']['before']['rules']['input']) == 1
- assert len(result['diff']['after']['rules']['input']) == 2
- assert result['firewall']['status'] == 'active'
- assert len(result['firewall']['rules']['input']) == 2
-
-
-# Idempotency checks: change one value
-
-
-def create_params(parameter, *values):
- assert len(values) > 1
- result = []
- for i in range(1, len(values)):
- result.append((parameter, values[i - 1], values[i]))
- return result
-
-
-def flatten(list_of_lists):
- result = []
- for l in list_of_lists:
- result.extend(l)
- return result
-
-
-@pytest.mark.parametrize("parameter, before, after", flatten([
- create_params('name', None, '', 'Test', 'Test', 'foo', '', None),
- create_params('ip_version', 'ipv4', 'ipv4', 'ipv6', 'ipv6'),
- create_params('dst_ip', None, '1.2.3.4/24', '1.2.3.4/32', '1.2.3.4/32', None),
- create_params('dst_port', None, '80', '80-443', '80-443', None),
- create_params('src_ip', None, '1.2.3.4/24', '1.2.3.4/32', '1.2.3.4/32', None),
- create_params('src_port', None, '80', '80-443', '80-443', None),
- create_params('protocol', None, 'tcp', 'tcp', 'udp', 'udp', None),
- create_params('tcp_flags', None, 'syn', 'syn|fin', 'syn|fin', 'syn&fin', '', None),
- create_params('action', 'accept', 'accept', 'discard', 'discard'),
-]))
-def test_input_rule_value_change(mocker, parameter, before, after):
- input_call = {
- 'ip_version': 'ipv4',
- 'action': 'discard',
- }
- input_before = {
- 'name': None,
- 'ip_version': 'ipv4',
- 'dst_ip': None,
- 'dst_port': None,
- 'src_ip': None,
- 'src_port': None,
- 'protocol': None,
- 'tcp_flags': None,
- 'action': 'discard',
- }
- input_after = {
- 'name': None,
- 'ip_version': 'ipv4',
- 'dst_ip': None,
- 'dst_port': None,
- 'src_ip': None,
- 'src_port': None,
- 'protocol': None,
- 'tcp_flags': None,
- 'action': 'discard',
- }
- if after is not None:
- input_call[parameter] = after
- input_before[parameter] = before
- input_after[parameter] = after
-
- calls = [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [input_before],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ]
-
- changed = (before != after)
- if changed:
- after_call = (
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [input_after],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL))
- .expect_form_value('status', 'active')
- .expect_form_value_absent('rules[input][1][action]')
- )
- if parameter != 'ip_version':
- after_call.expect_form_value('rules[input][0][ip_version]', 'ipv4')
- if parameter != 'action':
- after_call.expect_form_value('rules[input][0][action]', 'discard')
- if after is not None:
- after_call.expect_form_value('rules[input][0][{0}]'.format(parameter), after)
- else:
- after_call.expect_form_value_absent('rules[input][0][{0}]'.format(parameter))
- calls.append(after_call)
-
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'rules': {
- 'input': [input_call],
- },
- }, calls)
- assert result['changed'] == changed
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'active'
- assert len(result['diff']['before']['rules']['input']) == 1
- assert len(result['diff']['after']['rules']['input']) == 1
- assert result['diff']['before']['rules']['input'][0][parameter] == before
- assert result['diff']['after']['rules']['input'][0][parameter] == after
- assert result['firewall']['status'] == 'active'
- assert len(result['firewall']['rules']['input']) == 1
- assert result['firewall']['rules']['input'][0][parameter] == after
-
-
-# Idempotency checks: IP address normalization
-
-
-@pytest.mark.parametrize("ip_version, parameter, before_normalized, after_normalized, after", [
- ('ipv4', 'src_ip', '1.2.3.4/32', '1.2.3.4/32', '1.2.3.4'),
- ('ipv6', 'src_ip', '1:2:3::4/128', '1:2:3::4/128', '1:2:3::4'),
- ('ipv6', 'dst_ip', '1:2:3::4/128', '1:2:3::4/128', '1:2:3:0::4'),
- ('ipv6', 'dst_ip', '::/0', '::/0', '0:0::0/0'),
-])
-def test_input_rule_ip_normalization(mocker, ip_version, parameter, before_normalized, after_normalized, after):
- assert ip_version in ('ipv4', 'ipv6')
- assert parameter in ('src_ip', 'dst_ip')
- input_call = {
- 'ip_version': ip_version,
- 'action': 'discard',
- }
- input_before = {
- 'name': None,
- 'ip_version': ip_version,
- 'dst_ip': None,
- 'dst_port': None,
- 'src_ip': None,
- 'src_port': None,
- 'protocol': None,
- 'tcp_flags': None,
- 'action': 'discard',
- }
- input_after = {
- 'name': None,
- 'ip_version': ip_version,
- 'dst_ip': None,
- 'dst_port': None,
- 'src_ip': None,
- 'src_port': None,
- 'protocol': None,
- 'tcp_flags': None,
- 'action': 'discard',
- }
- if after is not None:
- input_call[parameter] = after
- input_before[parameter] = before_normalized
- input_after[parameter] = after_normalized
-
- calls = [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': True,
- 'port': 'main',
- 'rules': {
- 'input': [input_before],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ]
-
- changed = (before_normalized != after_normalized)
- if changed:
- after_call = (
- FetchUrlCall('POST', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [input_after],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL))
- .expect_form_value('status', 'active')
- .expect_form_value_absent('rules[input][1][action]')
- )
- after_call.expect_form_value('rules[input][0][ip_version]', ip_version)
- after_call.expect_form_value('rules[input][0][action]', 'discard')
- after_call.expect_form_value('rules[input][0][{0}]'.format(parameter), after_normalized)
- calls.append(after_call)
-
- result = run_module_success(mocker, hetzner_firewall, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'state': 'present',
- 'rules': {
- 'input': [input_call],
- },
- }, calls)
- assert result['changed'] == changed
- assert result['diff']['before']['status'] == 'active'
- assert result['diff']['after']['status'] == 'active'
- assert len(result['diff']['before']['rules']['input']) == 1
- assert len(result['diff']['after']['rules']['input']) == 1
- assert result['diff']['before']['rules']['input'][0][parameter] == before_normalized
- assert result['diff']['after']['rules']['input'][0][parameter] == after_normalized
- assert result['firewall']['status'] == 'active'
- assert len(result['firewall']['rules']['input']) == 1
- assert result['firewall']['rules']['input'][0][parameter] == after_normalized
diff --git a/test/units/modules/net_tools/test_hetzner_firewall_info.py b/test/units/modules/net_tools/test_hetzner_firewall_info.py
deleted file mode 100644
index a21d2d8056..0000000000
--- a/test/units/modules/net_tools/test_hetzner_firewall_info.py
+++ /dev/null
@@ -1,239 +0,0 @@
-# (c) 2019 Felix Fontein <felix@fontein.de>
-# 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 pytest
-
-from ansible.module_utils.hetzner import BASE_URL
-from ansible.modules.net_tools import hetzner_firewall_info
-from .test_hetzner_firewall import FetchUrlCall, run_module_success, run_module_failed
-
-
-# Tests for state (absent and present)
-
-
-def test_absent(mocker):
- result = run_module_success(mocker, hetzner_firewall_info, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'disabled',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['firewall']['status'] == 'disabled'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_present(mocker):
- result = run_module_success(mocker, hetzner_firewall_info, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
- assert len(result['firewall']['rules']['input']) == 0
-
-
-def test_present_w_rules(mocker):
- result = run_module_success(mocker, hetzner_firewall_info, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [
- {
- 'name': 'Accept HTTPS traffic',
- 'ip_version': 'ipv4',
- 'dst_ip': None,
- 'dst_port': '443',
- 'src_ip': None,
- 'src_port': None,
- 'protocol': 'tcp',
- 'tcp_flags': None,
- 'action': 'accept',
- },
- {
- 'name': None,
- 'ip_version': 'ipv4',
- 'dst_ip': None,
- 'dst_port': None,
- 'src_ip': None,
- 'src_port': None,
- 'protocol': None,
- 'tcp_flags': None,
- 'action': 'discard',
- }
- ],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
- assert len(result['firewall']['rules']['input']) == 2
- assert result['firewall']['rules']['input'][0]['name'] == 'Accept HTTPS traffic'
- assert result['firewall']['rules']['input'][0]['dst_port'] == '443'
- assert result['firewall']['rules']['input'][0]['action'] == 'accept'
- assert result['firewall']['rules']['input'][1]['dst_port'] is None
- assert result['firewall']['rules']['input'][1]['action'] == 'discard'
-
-
-# Tests for wait_for_configured in getting status
-
-
-def test_wait_get(mocker):
- result = run_module_success(mocker, hetzner_firewall_info, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'wait_for_configured': True,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'active',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['firewall']['status'] == 'active'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
-
-
-def test_wait_get_timeout(mocker):
- result = run_module_failed(mocker, hetzner_firewall_info, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'wait_for_configured': True,
- 'timeout': 0,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['msg'] == 'Timeout while waiting for firewall to be configured.'
-
-
-def test_nowait_get(mocker):
- result = run_module_success(mocker, hetzner_firewall_info, {
- 'hetzner_user': '',
- 'hetzner_password': '',
- 'server_ip': '1.2.3.4',
- 'wait_for_configured': False,
- }, [
- FetchUrlCall('GET', 200)
- .result_json({
- 'firewall': {
- 'server_ip': '1.2.3.4',
- 'server_number': 1,
- 'status': 'in process',
- 'whitelist_hos': False,
- 'port': 'main',
- 'rules': {
- 'input': [],
- },
- },
- })
- .expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
- ])
- assert result['changed'] is False
- assert result['firewall']['status'] == 'in process'
- assert result['firewall']['server_ip'] == '1.2.3.4'
- assert result['firewall']['server_number'] == 1
diff --git a/test/units/modules/net_tools/test_nmcli.py b/test/units/modules/net_tools/test_nmcli.py
deleted file mode 100644
index 94ee5f2a82..0000000000
--- a/test/units/modules/net_tools/test_nmcli.py
+++ /dev/null
@@ -1,656 +0,0 @@
-# Copyright: (c) 2017 Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-import json
-
-import pytest
-
-from ansible.modules.net_tools import nmcli
-
-pytestmark = pytest.mark.usefixtures('patch_ansible_module')
-
-TESTCASE_CONNECTION = [
- {
- 'type': 'ethernet',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
- {
- 'type': 'generic',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
- {
- 'type': 'team',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
- {
- 'type': 'bond',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
- {
- 'type': 'bond-slave',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
- {
- 'type': 'bridge',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
- {
- 'type': 'vlan',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
- {
- 'type': 'vxlan',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
- {
- 'type': 'ipip',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
- {
- 'type': 'sit',
- 'conn_name': 'non_existent_nw_device',
- 'state': 'absent',
- '_ansible_check_mode': True,
- },
-]
-
-TESTCASE_GENERIC = [
- {
- 'type': 'generic',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'generic_non_existant',
- 'ip4': '10.10.10.10',
- 'gw4': '10.10.10.1',
- 'state': 'present',
- '_ansible_check_mode': False,
- },
-]
-
-TESTCASE_GENERIC_DNS4_SEARCH = [
- {
- 'type': 'generic',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'generic_non_existant',
- 'ip4': '10.10.10.10',
- 'gw4': '10.10.10.1',
- 'state': 'present',
- 'dns4_search': 'search.redhat.com',
- 'dns6_search': 'search6.redhat.com',
- '_ansible_check_mode': False,
- }
-]
-
-TESTCASE_BOND = [
- {
- 'type': 'bond',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'bond_non_existant',
- 'mode': 'active-backup',
- 'ip4': '10.10.10.10',
- 'gw4': '10.10.10.1',
- 'state': 'present',
- 'primary': 'non_existent_primary',
- '_ansible_check_mode': False,
- }
-]
-
-TESTCASE_BRIDGE = [
- {
- 'type': 'bridge',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'br0_non_existant',
- 'ip4': '10.10.10.10',
- 'gw4': '10.10.10.1',
- 'maxage': 100,
- 'stp': True,
- 'state': 'present',
- '_ansible_check_mode': False,
- }
-]
-
-TESTCASE_BRIDGE_SLAVE = [
- {
- 'type': 'bridge-slave',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'br0_non_existant',
- 'path_cost': 100,
- 'state': 'present',
- '_ansible_check_mode': False,
- }
-]
-
-TESTCASE_VLAN = [
- {
- 'type': 'vlan',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'vlan_not_exists',
- 'ip4': '10.10.10.10',
- 'gw4': '10.10.10.1',
- 'vlanid': 10,
- 'state': 'present',
- '_ansible_check_mode': False,
- }
-]
-
-TESTCASE_VXLAN = [
- {
- 'type': 'vxlan',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'vxlan-existent_nw_device',
- 'vxlan_id': 11,
- 'vxlan_local': '192.168.225.5',
- 'vxlan_remote': '192.168.225.6',
- 'state': 'present',
- '_ansible_check_mode': False,
- }
-]
-
-TESTCASE_IPIP = [
- {
- 'type': 'ipip',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'ipip-existent_nw_device',
- 'ip_tunnel_dev': 'non_existent_ipip_device',
- 'ip_tunnel_local': '192.168.225.5',
- 'ip_tunnel_remote': '192.168.225.6',
- 'state': 'present',
- '_ansible_check_mode': False,
- }
-]
-
-TESTCASE_SIT = [
- {
- 'type': 'sit',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'sit-existent_nw_device',
- 'ip_tunnel_dev': 'non_existent_sit_device',
- 'ip_tunnel_local': '192.168.225.5',
- 'ip_tunnel_remote': '192.168.225.6',
- 'state': 'present',
- '_ansible_check_mode': False,
- }
-]
-
-TESTCASE_ETHERNET_DHCP = [
- {
- 'type': 'ethernet',
- 'conn_name': 'non_existent_nw_device',
- 'ifname': 'ethernet_non_existant',
- 'ip4': '10.10.10.10',
- 'gw4': '10.10.10.1',
- 'state': 'present',
- '_ansible_check_mode': False,
- 'dhcp_client_id': '00:11:22:AA:BB:CC:DD',
- }
-]
-
-
-def mocker_set(mocker, connection_exists=False):
- """
- Common mocker object
- """
- mocker.patch('ansible.modules.net_tools.nmcli.HAVE_DBUS', True)
- mocker.patch('ansible.modules.net_tools.nmcli.HAVE_NM_CLIENT', True)
- get_bin_path = mocker.patch('ansible.module_utils.basic.AnsibleModule.get_bin_path')
- get_bin_path.return_value = '/usr/bin/nmcli'
- connection = mocker.patch.object(nmcli.Nmcli, 'connection_exists')
- connection.return_value = connection_exists
- return connection
-
-
-@pytest.fixture
-def mocked_generic_connection_create(mocker):
- mocker_set(mocker)
- command_result = mocker.patch.object(nmcli.Nmcli, 'execute_command')
- command_result.return_value = {"rc": 100, "out": "aaa", "err": "none"}
- return command_result
-
-
-@pytest.fixture
-def mocked_generic_connection_modify(mocker):
- mocker_set(mocker, connection_exists=True)
- command_result = mocker.patch.object(nmcli.Nmcli, 'execute_command')
- command_result.return_value = {"rc": 100, "out": "aaa", "err": "none"}
- return command_result
-
-
-@pytest.fixture
-def mocked_connection_exists(mocker):
- connection = mocker_set(mocker, connection_exists=True)
- return connection
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BOND, indirect=['patch_ansible_module'])
-def test_bond_connection_create(mocked_generic_connection_create):
- """
- Test : Bond connection created
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'add'
- assert args[0][3] == 'type'
- assert args[0][4] == 'bond'
- assert args[0][5] == 'con-name'
- assert args[0][6] == 'non_existent_nw_device'
- assert args[0][7] == 'ifname'
- assert args[0][8] == 'bond_non_existant'
-
- for param in ['gw4', 'primary', 'autoconnect', 'mode', 'active-backup', 'ip4']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC, indirect=['patch_ansible_module'])
-def test_generic_connection_create(mocked_generic_connection_create):
- """
- Test : Generic connection created
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'add'
- assert args[0][3] == 'type'
- assert args[0][4] == 'generic'
- assert args[0][5] == 'con-name'
- assert args[0][6] == 'non_existent_nw_device'
-
- for param in ['autoconnect', 'gw4', 'ip4']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC, indirect=['patch_ansible_module'])
-def test_generic_connection_modify(mocked_generic_connection_modify):
- """
- Test : Generic connection modify
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'mod'
- assert args[0][3] == 'non_existent_nw_device'
-
- for param in ['ipv4.gateway', 'ipv4.address']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC_DNS4_SEARCH, indirect=['patch_ansible_module'])
-def test_generic_connection_create_dns_search(mocked_generic_connection_create):
- """
- Test : Generic connection created with dns search
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert 'ipv4.dns-search' in args[0]
- assert 'ipv6.dns-search' in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC_DNS4_SEARCH, indirect=['patch_ansible_module'])
-def test_generic_connection_modify_dns_search(mocked_generic_connection_create):
- """
- Test : Generic connection modified with dns search
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert 'ipv4.dns-search' in args[0]
- assert 'ipv6.dns-search' in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_CONNECTION, indirect=['patch_ansible_module'])
-def test_dns4_none(mocked_connection_exists, capfd):
- """
- Test if DNS4 param is None
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
- assert results['changed']
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BRIDGE, indirect=['patch_ansible_module'])
-def test_create_bridge(mocked_generic_connection_create):
- """
- Test if Bridge created
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'add'
- assert args[0][3] == 'type'
- assert args[0][4] == 'bridge'
- assert args[0][5] == 'con-name'
- assert args[0][6] == 'non_existent_nw_device'
-
- for param in ['ip4', '10.10.10.10', 'gw4', '10.10.10.1', 'bridge.max-age', 100, 'bridge.stp', 'yes']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BRIDGE, indirect=['patch_ansible_module'])
-def test_mod_bridge(mocked_generic_connection_modify):
- """
- Test if Bridge modified
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
-
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'mod'
- assert args[0][3] == 'non_existent_nw_device'
- for param in ['ipv4.address', '10.10.10.10', 'ipv4.gateway', '10.10.10.1', 'bridge.max-age', 100, 'bridge.stp', 'yes']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BRIDGE_SLAVE, indirect=['patch_ansible_module'])
-def test_create_bridge_slave(mocked_generic_connection_create):
- """
- Test if Bridge_slave created
- """
-
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'add'
- assert args[0][3] == 'type'
- assert args[0][4] == 'bridge-slave'
- assert args[0][5] == 'con-name'
- assert args[0][6] == 'non_existent_nw_device'
-
- for param in ['bridge-port.path-cost', 100]:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_BRIDGE_SLAVE, indirect=['patch_ansible_module'])
-def test_mod_bridge_slave(mocked_generic_connection_modify):
- """
- Test if Bridge_slave modified
- """
-
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'mod'
- assert args[0][3] == 'non_existent_nw_device'
-
- for param in ['bridge-port.path-cost', 100]:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_VLAN, indirect=['patch_ansible_module'])
-def test_create_vlan_con(mocked_generic_connection_create):
- """
- Test if VLAN created
- """
-
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'add'
- assert args[0][3] == 'type'
- assert args[0][4] == 'vlan'
- assert args[0][5] == 'con-name'
- assert args[0][6] == 'non_existent_nw_device'
-
- for param in ['ip4', '10.10.10.10', 'gw4', '10.10.10.1', 'id', '10']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_VLAN, indirect=['patch_ansible_module'])
-def test_mod_vlan_conn(mocked_generic_connection_modify):
- """
- Test if VLAN modified
- """
-
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'mod'
- assert args[0][3] == 'non_existent_nw_device'
-
- for param in ['ipv4.address', '10.10.10.10', 'ipv4.gateway', '10.10.10.1', 'vlan.id', '10']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_VXLAN, indirect=['patch_ansible_module'])
-def test_create_vxlan(mocked_generic_connection_create):
- """
- Test if vxlan created
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'add'
- assert args[0][3] == 'type'
- assert args[0][4] == 'vxlan'
- assert args[0][5] == 'con-name'
- assert args[0][6] == 'non_existent_nw_device'
- assert args[0][7] == 'ifname'
-
- for param in ['vxlan.local', '192.168.225.5', 'vxlan.remote', '192.168.225.6', 'vxlan.id', 11]:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_VXLAN, indirect=['patch_ansible_module'])
-def test_vxlan_mod(mocked_generic_connection_modify):
- """
- Test if vxlan modified
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'mod'
- assert args[0][3] == 'non_existent_nw_device'
-
- for param in ['vxlan.local', '192.168.225.5', 'vxlan.remote', '192.168.225.6', 'vxlan.id', 11]:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_IPIP, indirect=['patch_ansible_module'])
-def test_create_ipip(mocked_generic_connection_create):
- """
- Test if ipip created
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'add'
- assert args[0][3] == 'type'
- assert args[0][4] == 'ip-tunnel'
- assert args[0][5] == 'mode'
- assert args[0][6] == 'ipip'
- assert args[0][7] == 'con-name'
- assert args[0][8] == 'non_existent_nw_device'
- assert args[0][9] == 'ifname'
- assert args[0][10] == 'ipip-existent_nw_device'
- assert args[0][11] == 'dev'
- assert args[0][12] == 'non_existent_ipip_device'
-
- for param in ['ip-tunnel.local', '192.168.225.5', 'ip-tunnel.remote', '192.168.225.6']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_IPIP, indirect=['patch_ansible_module'])
-def test_ipip_mod(mocked_generic_connection_modify):
- """
- Test if ipip modified
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'mod'
- assert args[0][3] == 'non_existent_nw_device'
-
- for param in ['ip-tunnel.local', '192.168.225.5', 'ip-tunnel.remote', '192.168.225.6']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_SIT, indirect=['patch_ansible_module'])
-def test_create_sit(mocked_generic_connection_create):
- """
- Test if sit created
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'add'
- assert args[0][3] == 'type'
- assert args[0][4] == 'ip-tunnel'
- assert args[0][5] == 'mode'
- assert args[0][6] == 'sit'
- assert args[0][7] == 'con-name'
- assert args[0][8] == 'non_existent_nw_device'
- assert args[0][9] == 'ifname'
- assert args[0][10] == 'sit-existent_nw_device'
- assert args[0][11] == 'dev'
- assert args[0][12] == 'non_existent_sit_device'
-
- for param in ['ip-tunnel.local', '192.168.225.5', 'ip-tunnel.remote', '192.168.225.6']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_SIT, indirect=['patch_ansible_module'])
-def test_sit_mod(mocked_generic_connection_modify):
- """
- Test if sit modified
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert args[0][0] == '/usr/bin/nmcli'
- assert args[0][1] == 'con'
- assert args[0][2] == 'mod'
- assert args[0][3] == 'non_existent_nw_device'
-
- for param in ['ip-tunnel.local', '192.168.225.5', 'ip-tunnel.remote', '192.168.225.6']:
- assert param in args[0]
-
-
-@pytest.mark.parametrize('patch_ansible_module', TESTCASE_ETHERNET_DHCP, indirect=['patch_ansible_module'])
-def test_eth_dhcp_client_id_con_create(mocked_generic_connection_create):
- """
- Test : Ethernet connection created with DHCP_CLIENT_ID
- """
- with pytest.raises(SystemExit):
- nmcli.main()
-
- assert nmcli.Nmcli.execute_command.call_count == 1
- arg_list = nmcli.Nmcli.execute_command.call_args_list
- args, kwargs = arg_list[0]
-
- assert 'ipv4.dhcp-client-id' in args[0]
diff --git a/test/units/modules/network/aireos/aireos_module.py b/test/units/modules/network/aireos/aireos_module.py
deleted file mode 100644
index 1ac1b5275c..0000000000
--- a/test/units/modules/network/aireos/aireos_module.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-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 TestCiscoWlcModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/aireos/fixtures/aireos_config_config.cfg b/test/units/modules/network/aireos/fixtures/aireos_config_config.cfg
deleted file mode 100644
index 883f36cf05..0000000000
--- a/test/units/modules/network/aireos/fixtures/aireos_config_config.cfg
+++ /dev/null
@@ -1,9 +0,0 @@
-sysname router
-
-interface create mtc-1 1
-interface address dynamic-interface mtc-1 10.33.20.4 255.255.255.0 10.33.20.1
-interface vlan mtc-1 1
-
-interface create mtc-2 2
-interface address dynamic-interface mtc-2 10.33.26.4 255.255.255.0 10.33.26.1
-interface vlan mtc-2 2 \ No newline at end of file
diff --git a/test/units/modules/network/aireos/fixtures/aireos_config_src.cfg b/test/units/modules/network/aireos/fixtures/aireos_config_src.cfg
deleted file mode 100644
index 69db36b252..0000000000
--- a/test/units/modules/network/aireos/fixtures/aireos_config_src.cfg
+++ /dev/null
@@ -1,9 +0,0 @@
-sysname foo
-
-interface create mtc-1 1
-interface address dynamic-interface mtc-1 10.33.20.4 255.255.255.0 10.33.20.2
-interface vlan mtc-1 1
-
-interface create mtc-2 2
-interface address dynamic-interface mtc-2 10.33.26.4 255.255.255.0 10.33.26.1
-interface vlan mtc-2 2 \ No newline at end of file
diff --git a/test/units/modules/network/aireos/fixtures/show_sysinfo b/test/units/modules/network/aireos/fixtures/show_sysinfo
deleted file mode 100644
index c30d8e5342..0000000000
--- a/test/units/modules/network/aireos/fixtures/show_sysinfo
+++ /dev/null
@@ -1,43 +0,0 @@
-Manufacturer's Name.............................. Cisco Systems Inc.
-Product Name..................................... Cisco Controller
-Product Version.................................. 8.2.110.0
-RTOS Version..................................... 8.2.110.0
-Bootloader Version............................... 8.0.100.0
-Emergency Image Version.......................... 8.0.100.0
-
-Build Type....................................... DATA + WPS
-
-System Name...................................... SOMEHOST
-System Location.................................. USA
-System Contact................................... SN:E228240;ASSET:LSMTCc1
-System ObjectID.................................. 1.3.6.1.4.1.9.1.1615
-Redundancy Mode.................................. Disabled
-IP Address....................................... 10.10.10.10
-IPv6 Address..................................... ::
-System Up Time................................... 328 days 7 hrs 54 mins 49 secs
-System Timezone Location......................... (GMT) London, Lisbon, Dublin, Edinburgh
-System Stats Realtime Interval................... 5
-System Stats Normal Interval..................... 180
-
-Configured Country............................... US - United States
-Operating Environment............................ Commercial (10 to 35 C)
-Internal Temp Alarm Limits....................... 10 to 38 C
-Internal Temperature............................. +18 C
-Fan Status....................................... OK
-
- RAID Volume Status
-Drive 0.......................................... Good
-Drive 1.......................................... Good
-
-State of 802.11b Network......................... Enabled
-State of 802.11a Network......................... Enabled
-Number of WLANs.................................. 1
-Number of Active Clients......................... 0
-
-Burned-in MAC Address............................ AA:AA:AA:AA:AA:AA
-Power Supply 1................................... Present, OK
-Power Supply 2................................... Present, OK
-Maximum number of APs supported.................. 6000
-System Nas-Id....................................
-WLC MIC Certificate Types........................ SHA1/SHA2
-Licensing Type................................... RTU
diff --git a/test/units/modules/network/aireos/test_aireos_command.py b/test/units/modules/network/aireos/test_aireos_command.py
deleted file mode 100644
index 247d66492d..0000000000
--- a/test/units/modules/network/aireos/test_aireos_command.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.aireos import aireos_command
-from units.modules.utils import set_module_args
-from .aireos_module import TestCiscoWlcModule, load_fixture
-from ansible.module_utils import six
-
-
-class TestCiscoWlcCommandModule(TestCiscoWlcModule):
-
- module = aireos_command
-
- def setUp(self):
- super(TestCiscoWlcCommandModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.aireos.aireos_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestCiscoWlcCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item['command'])
- command = obj['command']
- except ValueError:
- command = item['command']
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_aireos_command_simple(self):
- set_module_args(dict(commands=['show sysinfo']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('Manufacturer\'s Name'))
-
- def test_aireos_command_multiple(self):
- set_module_args(dict(commands=['show sysinfo', 'show sysinfo']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('Manufacturer\'s Name'))
-
- def test_aireos_command_wait_for(self):
- wait_for = 'result[0] contains "Cisco Systems Inc"'
- set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for))
- self.execute_module()
-
- def test_aireos_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_aireos_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_aireos_command_match_any(self):
- wait_for = ['result[0] contains "Cisco Systems Inc"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_aireos_command_match_all(self):
- wait_for = ['result[0] contains "Cisco Systems Inc"',
- 'result[0] contains "Cisco Controller"']
- set_module_args(dict(commands=['show sysinfo'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_aireos_command_match_all_failure(self):
- wait_for = ['result[0] contains "Cisco Systems Inc"',
- 'result[0] contains "test string"']
- commands = ['show sysinfo', 'show sysinfo']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
-
- def test_aireos_command_to_lines_non_ascii(self):
- ''' Test data is one variation of the result of a `show run-config commands`
- command on Cisco WLC version 8.8.120.0 '''
- test_data = '''
- wlan flexconnect learn-ipaddr 101 enable
- `\xc8\x92\xef\xbf\xbdR\x7f`\xc8\x92\xef\xbf\xbdR\x7f`
- wlan wgb broadcast-tagging disable 1
- '''.strip()
- test_string = six.u(test_data)
- test_stdout = [test_string, ]
- result = list(aireos_command.to_lines(test_stdout))
- print(result[0])
- self.assertEqual(len(result[0]), 3)
diff --git a/test/units/modules/network/aireos/test_aireos_config.py b/test/units/modules/network/aireos/test_aireos_config.py
deleted file mode 100644
index bfc9c0760d..0000000000
--- a/test/units/modules/network/aireos/test_aireos_config.py
+++ /dev/null
@@ -1,131 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.aireos import aireos_config
-from units.modules.utils import set_module_args
-from .aireos_module import TestCiscoWlcModule, load_fixture
-
-
-class TestCiscoWlcConfigModule(TestCiscoWlcModule):
-
- module = aireos_config
-
- def setUp(self):
- super(TestCiscoWlcConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.aireos.aireos_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.aireos.aireos_config.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.aireos.aireos_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- self.mock_save_config = patch('ansible.modules.network.aireos.aireos_config.save_config')
- self.save_config = self.mock_save_config.start()
-
- def tearDown(self):
- super(TestCiscoWlcConfigModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'aireos_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_aireos_config_unchanged(self):
- src = load_fixture('aireos_config_config.cfg')
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_aireos_config_src(self):
- src = load_fixture('aireos_config_src.cfg')
- set_module_args(dict(src=src))
- commands = ['sysname foo', 'interface address dynamic-interface mtc-1 10.33.20.4 255.255.255.0 10.33.20.2']
- self.execute_module(changed=True, commands=commands)
-
- def test_aireos_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_aireos_config_save(self):
- set_module_args(dict(save=True))
- self.execute_module()
- self.assertEqual(self.save_config.call_count, 1)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.load_config.call_count, 0)
-
- def test_aireos_config_before(self):
- set_module_args(dict(lines=['sysname foo'], before=['test1', 'test2']))
- commands = ['test1', 'test2', 'sysname foo']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_aireos_config_after(self):
- set_module_args(dict(lines=['sysname foo'], after=['test1', 'test2']))
- commands = ['sysname foo', 'test1', 'test2']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_aireos_config_before_after_no_change(self):
- set_module_args(dict(lines=['sysname router'],
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- self.execute_module()
-
- def test_aireos_config_config(self):
- config = 'sysname localhost'
- set_module_args(dict(lines=['sysname router'], config=config))
- commands = ['sysname router']
- self.execute_module(changed=True, commands=commands)
-
- def test_aireos_config_match_none(self):
- lines = ['sysname router', 'interface create mtc-1 1']
- set_module_args(dict(lines=lines, match='none'))
- self.execute_module(changed=True, commands=lines, sort=False)
-
- def test_nxos_config_save_always(self):
- args = dict(save_when='always')
- set_module_args(args)
- self.execute_module()
- self.assertEqual(self.save_config.call_count, 1)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.load_config.call_count, 0)
-
- def test_nxos_config_save_changed_true(self):
- args = dict(save_when='changed', lines=['sysname foo', 'interface create mtc-3 3'])
- set_module_args(args)
- self.execute_module(changed=True)
- self.assertEqual(self.save_config.call_count, 1)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.load_config.call_count, 1)
-
- def test_nxos_config_save_changed_false(self):
- args = dict(save_when='changed')
- set_module_args(args)
- self.execute_module()
- self.assertEqual(self.save_config.call_count, 0)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.load_config.call_count, 0)
diff --git a/test/units/modules/network/apconos/apconos_module.py b/test/units/modules/network/apconos/apconos_module.py
deleted file mode 100644
index 6d1857d376..0000000000
--- a/test/units/modules/network/apconos/apconos_module.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestApconosModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/apconos/fixtures/enable_ssh b/test/units/modules/network/apconos/fixtures/enable_ssh
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/units/modules/network/apconos/fixtures/enable_ssh
+++ /dev/null
diff --git a/test/units/modules/network/apconos/fixtures/show_version b/test/units/modules/network/apconos/fixtures/show_version
deleted file mode 100644
index a541d9e97d..0000000000
--- a/test/units/modules/network/apconos/fixtures/show_version
+++ /dev/null
@@ -1,2 +0,0 @@
-APCON
-COMPONENT MODEL VERSION
diff --git a/test/units/modules/network/apconos/test_apconos_command.py b/test/units/modules/network/apconos/test_apconos_command.py
deleted file mode 100644
index 3ec0ccd5e4..0000000000
--- a/test/units/modules/network/apconos/test_apconos_command.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.apconos import apconos_command
-from units.modules.utils import set_module_args
-from .apconos_module import TestApconosModule, load_fixture
-
-
-class TestApconosCommandModule(TestApconosModule):
-
- module = apconos_command
-
- def setUp(self):
- super(TestApconosCommandModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.apconos.apconos_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestApconosCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
- for item in commands:
- filename = str(item).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_apcon_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout_lines']), 1)
- self.assertEqual(result['stdout_lines'][0][0], 'APCON')
-
- def test_apcon_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout_lines']), 2)
- self.assertEqual(result['stdout_lines'][0][0], 'APCON')
- self.assertEqual(result['stdout_lines'][1][0], 'APCON')
-
- def test_apcon_command_wait_for(self):
- wait_for = 'result[0] contains "APCON"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_apcon_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_apcon_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_apcon_command_match_any(self):
- wait_for = ['result[0] contains "test string"',
- 'result[0] contains "VERSION"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_apcon_command_match_all(self):
- wait_for = ['result[0] contains "COMPONENT"',
- 'result[0] contains "MODEL"',
- 'result[0] contains "VERSION"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_apcon_command_match_all_failure(self):
- wait_for = ['result[0] contains "APCON OS"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show version']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
-
- def test_apcon_command_checkmode_not_warning(self):
- commands = ['enable ssh']
- set_module_args(dict(commands=commands, _ansible_check_mode=False))
- result = self.execute_module(changed=True)
- self.assertEqual(result['warnings'], [])
diff --git a/test/units/modules/network/aruba/aruba_module.py b/test/units/modules/network/aruba/aruba_module.py
deleted file mode 100644
index 9d305b6b41..0000000000
--- a/test/units/modules/network/aruba/aruba_module.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestArubaModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/aruba/fixtures/aruba_config_config.cfg b/test/units/modules/network/aruba/fixtures/aruba_config_config.cfg
deleted file mode 100644
index 48cc6018d7..0000000000
--- a/test/units/modules/network/aruba/fixtures/aruba_config_config.cfg
+++ /dev/null
@@ -1,17 +0,0 @@
-!
-hostname router
-!
-interface GigabitEthernet0/0
- ip address 1.2.3.4 255.255.255.0
- description test string
-!
-interface GigabitEthernet0/1
- ip address 6.7.8.9 255.255.255.0
- description test string
- shutdown
-!
-wlan ssid-profile "blah"
- essid "blah"
-!
-ip access-list session blah
- any any any permit
diff --git a/test/units/modules/network/aruba/fixtures/aruba_config_defaults.cfg b/test/units/modules/network/aruba/fixtures/aruba_config_defaults.cfg
deleted file mode 100644
index e54645ab14..0000000000
--- a/test/units/modules/network/aruba/fixtures/aruba_config_defaults.cfg
+++ /dev/null
@@ -1,13 +0,0 @@
-!
-hostname router
-!
-interface GigabitEthernet0/0
- ip address 1.2.3.4 255.255.255.0
- description test string
- no shutdown
-!
-interface GigabitEthernet0/1
- ip address 6.7.8.9 255.255.255.0
- description test string
- shutdown
-!
diff --git a/test/units/modules/network/aruba/fixtures/aruba_config_src.cfg b/test/units/modules/network/aruba/fixtures/aruba_config_src.cfg
deleted file mode 100644
index b3d8961a99..0000000000
--- a/test/units/modules/network/aruba/fixtures/aruba_config_src.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-!
-hostname foo
-!
-interface GigabitEthernet0/0
- no ip address
-!
-interface GigabitEthernet0/1
- ip address 6.7.8.9 255.255.255.0
- description test string
- shutdown
-!
diff --git a/test/units/modules/network/aruba/fixtures/show_version b/test/units/modules/network/aruba/fixtures/show_version
deleted file mode 100644
index b75059c918..0000000000
--- a/test/units/modules/network/aruba/fixtures/show_version
+++ /dev/null
@@ -1,17 +0,0 @@
-Aruba Operating System Software.
-ArubaOS (MODEL: Aruba7220-US), Version 6.4.3.10
-Website: http://www.arubanetworks.com
-Copyright (c) 2002-2016, Aruba Networks, Inc.
-Compiled on 2016-08-31 at 18:31:30 PDT (build 56305) by p4build
-
-ROM: System Bootstrap, Version CPBoot 1.2.1.0 (build 39183)
-Built: 2013-07-26 04:57:47
-Built by: p4build@re_client_39183
-
-
-Switch uptime is 15 days 20 hours 51 minutes 51 seconds
-Reboot Cause: User reboot (Intent:cause:register 78:86:50:2)
-Supervisor Card
-Processor (XLP432 Rev B1 (Secure Boot) , 1000 MHz) with 7370M bytes of memory.
-32K bytes of non-volatile configuration memory.
-7920M bytes of Supervisor Card system flash.
diff --git a/test/units/modules/network/aruba/test_aruba_command.py b/test/units/modules/network/aruba/test_aruba_command.py
deleted file mode 100644
index 75129a9f4f..0000000000
--- a/test/units/modules/network/aruba/test_aruba_command.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.aruba import aruba_command
-from units.modules.utils import set_module_args
-from .aruba_module import TestArubaModule, load_fixture
-
-
-class TestArubaCommandModule(TestArubaModule):
-
- module = aruba_command
-
- def setUp(self):
- super(TestArubaCommandModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.aruba.aruba_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestArubaCommandModule, self).tearDown()
-
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item['command'])
- command = obj['command']
- except ValueError:
- command = item['command']
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_aruba_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('Aruba Operating System Software'))
-
- def test_aruba_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('Aruba Operating System Software'))
-
- def test_aruba_command_wait_for(self):
- wait_for = 'result[0] contains "Aruba Operating System Software"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_aruba_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_aruba_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_aruba_command_match_any(self):
- wait_for = ['result[0] contains "Aruba Operating System Software"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_aruba_command_match_all(self):
- wait_for = ['result[0] contains "Aruba Operating System Software"',
- 'result[0] contains "Aruba Networks"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_aruba_command_match_all_failure(self):
- wait_for = ['result[0] contains "Aruba Operating System Software"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show version']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/aruba/test_aruba_config.py b/test/units/modules/network/aruba/test_aruba_config.py
deleted file mode 100644
index 0112ae408d..0000000000
--- a/test/units/modules/network/aruba/test_aruba_config.py
+++ /dev/null
@@ -1,189 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.aruba import aruba_config
-from units.modules.utils import set_module_args
-from .aruba_module import TestArubaModule, load_fixture
-
-
-class TestArubaConfigModule(TestArubaModule):
-
- module = aruba_config
-
- def setUp(self):
- super(TestArubaConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.aruba.aruba_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.aruba.aruba_config.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.aruba.aruba_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestArubaConfigModule, self).tearDown()
-
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'aruba_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_aruba_config_unchanged(self):
- src = load_fixture('aruba_config_config.cfg')
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_aruba_config_unchanged_different_spacing(self):
- # Tab indented
- set_module_args(dict(lines=['description test string'], parents=['interface GigabitEthernet0/0']))
- self.execute_module(changed=False)
- # 3 spaces indented
- set_module_args(dict(lines=['essid "blah"'], parents=['wlan ssid-profile "blah"']))
- self.execute_module(changed=False)
-
- def test_aruba_config_src(self):
- src = load_fixture('aruba_config_src.cfg')
- set_module_args(dict(src=src))
- commands = ['hostname foo', 'interface GigabitEthernet0/0',
- 'no ip address']
- self.execute_module(changed=True, commands=commands)
-
- def test_aruba_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_aruba_config_save_always(self):
- self.run_commands.return_value = "Hostname foo"
- set_module_args(dict(save_when='always'))
- self.execute_module(changed=True)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.load_config.call_count, 0)
- args = self.run_commands.call_args[0][1]
- self.assertIn('write memory', args)
-
- def test_aruba_config_save_changed_true(self):
- src = load_fixture('aruba_config_src.cfg')
- set_module_args(dict(src=src, save_when='changed'))
- commands = ['hostname foo', 'interface GigabitEthernet0/0',
- 'no ip address']
- self.execute_module(changed=True, commands=commands)
- # src = load_fixture('aruba_config_src.cfg')
-
- # set_module_args(dict(save_when='changed'))
- # commands = ['hostname changed']
- # self.execute_module(changed=False, commands=commands)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.load_config.call_count, 1)
- args = self.run_commands.call_args[0][1]
- self.assertIn('write memory', args)
-
- def test_aruba_config_save_changed_false(self):
- set_module_args(dict(save_when='changed'))
- self.execute_module(changed=False)
- self.assertEqual(self.run_commands.call_count, 0)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.load_config.call_count, 0)
-
- def test_aruba_config_lines_wo_parents(self):
- set_module_args(dict(lines=['hostname foo']))
- commands = ['hostname foo']
- self.execute_module(changed=True, commands=commands)
-
- def test_aruba_config_lines_w_parents(self):
- set_module_args(dict(lines=['shutdown'], parents=['interface GigabitEthernet0/0']))
- commands = ['interface GigabitEthernet0/0', 'shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_aruba_config_before(self):
- set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2']))
- commands = ['test1', 'test2', 'hostname foo']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_aruba_config_after(self):
- set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2']))
- commands = ['hostname foo', 'test1', 'test2']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_aruba_config_before_after_no_change(self):
- set_module_args(dict(lines=['hostname router'],
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- self.execute_module()
-
- def test_aruba_config_config(self):
- config = 'hostname localhost'
- set_module_args(dict(lines=['hostname router'], config=config))
- commands = ['hostname router']
- self.execute_module(changed=True, commands=commands)
-
- def test_aruba_config_replace_block(self):
- lines = ['description test string', 'test string']
- parents = ['interface GigabitEthernet0/0']
- set_module_args(dict(lines=lines, replace='block', parents=parents))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands)
-
- def test_aruba_config_force(self):
- lines = ['hostname router']
- set_module_args(dict(lines=lines, match='none'))
- self.execute_module(changed=True, commands=lines)
-
- def test_aruba_config_match_none(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string']
- parents = ['interface GigabitEthernet0/0']
- set_module_args(dict(lines=lines, parents=parents, match='none'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_aruba_config_match_strict(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string',
- 'shutdown']
- parents = ['interface GigabitEthernet0/0']
- set_module_args(dict(lines=lines, parents=parents, match='strict'))
- commands = parents + ['shutdown']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_aruba_config_match_exact(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string',
- 'shutdown']
- parents = ['interface GigabitEthernet0/0']
- set_module_args(dict(lines=lines, parents=parents, match='exact'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_aruba_encrypt_false(self):
- set_module_args(dict(encrypt=False))
- self.execute_module()
- self.assertEqual(self.run_commands.call_count, 2)
- args = self.run_commands.call_args_list
- self.assertIn('encrypt disable', args[0][0])
- self.assertIn('encrypt enable', args[1][0])
diff --git a/test/units/modules/network/avi/fixtures/avi_user.json b/test/units/modules/network/avi/fixtures/avi_user.json
deleted file mode 100644
index 85522c324a..0000000000
--- a/test/units/modules/network/avi/fixtures/avi_user.json
+++ /dev/null
@@ -1,215 +0,0 @@
-{
- "mock_create_res": {
- "ansible_facts": {
- "avi_api_context": {
- "192.0.2.97:admin:None": {
- "csrftoken": "qG23CCARDL3rh1KZ66XXPIeUYCUCOZ4q",
- "session_id": "h5nynf9u9nompp5byai7vii2v8bbn9kd"
- }
- }
- },
- "api_context": null,
- "changed": true,
- "invocation": {
- "module_args": {
- "access": [{
- "role_ref": "/api/role?name=Tenant-Admin",
- "tenant_ref": "/api/tenant/********#********",
- "all_tenants": false
- }],
- "api_context": null,
- "api_version": "18.2.5",
- "avi_api_update_method": "put",
- "avi_credentials": null,
- "avi_disable_session_cache_as_fact": false,
- "avi_login_info": null,
- "controller": "192.0.2.97",
- "default_tenant_ref": "/api/tenant?name=********",
- "email": "test@abc.com",
- "is_active": true,
- "is_superuser": true,
- "name": "testuser",
- "obj_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
- "obj_username": "testuser",
- "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
- "state": "present",
- "tenant": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
- "tenant_uuid": "",
- "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile",
- "username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER"
- }
- },
- "obj": {
- "_last_modified": "1559736767460818",
- "access": [{
- "all_tenants": false,
- "role_ref": "https://192.0.2.97/api/tenant/********/role/role-ff851004-bd75-485b-87ec-2fe1d6a03fb9#Tenant-Admin",
- "tenant_ref": "https://192.0.2.97/api/tenant/********#********"
- }],
- "default_tenant_ref": "https://192.0.2.97/api/tenant/********#********",
- "email": "test@abc.com",
- "full_name": "testuser",
- "is_active": true,
- "is_superuser": true,
- "local": true,
- "name": "testuser",
- "obj_password": "<sensitive>",
- "obj_username": "testuser",
- "password": "<sensitive>",
- "uid": 2004,
- "url": "https://192.0.2.97/api/user/user-7087578f-4dfe-4e06-a153-495a91824a1d#testuser",
- "user_profile_ref": "https://192.0.2.97/api/useraccountprofile/useraccountprofile-78063e7c-b443-48d6-b34c-5253ae1fcd2a#Default-User-Account-Profile",
- "username": "testuser",
- "uuid": "user-7087578f-4dfe-4e06-a153-495a91824a1d"
- },
- "old_obj": null
- },
- "mock_put_res": {
- "obj": {
- "username": "testuser",
- "user_profile_ref": "https://192.0.2.97/api/useraccountprofile/useraccountprofile-546c5e88-6270-4ba1-9cfd-d0c755e68f47#Default-User-Account-Profile",
- "name": "testuser",
- "url": "https://192.0.2.97/api/user/user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a#testuser",
- "is_active": true,
- "uuid": "user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a",
- "email": "newemail@abc.com",
- "access": [{
- "tenant_ref": "https://192.0.2.97/api/tenant/tenant-57af0f3f-6f14-4657-8f32-9b289407752b#Test-Admin",
- "all_tenants": false,
- "role_ref": "https://192.0.2.97/api/tenant/********/role/role-b073ab0d-e1d0-4800-95ef-6ecf2c5ed7d1#Tenant-Admin"
- }],
- "is_superuser": true,
- "obj_username": "testuser",
- "full_name": "testuser",
- "_last_modified": "1559802772203285",
- "password": "<sensitive>",
- "local": true,
- "obj_password": "<sensitive>",
- "default_tenant_ref": "https://192.0.2.97/api/tenant/********#********",
- "uid": 2002
- },
- "changed": true,
- "api_context": null,
- "invocation": {
- "module_args": {
- "username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
- "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile",
- "api_version": "18.2.5",
- "name": "testuser",
- "state": "present",
- "is_active": true,
- "api_context": null,
- "avi_disable_session_cache_as_fact": false,
- "controller": "192.0.2.97",
- "avi_api_patch_op": null,
- "access": [{
- "tenant_ref": "/api/tenant?name=Test-Admin",
- "all_tenants": false,
- "role_ref": "/api/role?name=Tenant-Admin"
- }],
- "is_superuser": true,
- "avi_credentials": null,
- "email": "newemail@abc.com",
- "default_tenant_ref": "/api/tenant?name=********",
- "obj_username": "testuser",
- "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
- "tenant_uuid": "",
- "obj_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
- "avi_api_update_method": "put",
- "tenant": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER"
- }
- },
- "ansible_facts": {
- "avi_api_context": {
- "192.0.2.97:admin:None": {
- "csrftoken": "Y7CET6zaIC9VZAzBqEW4cWo1N26jPg55",
- "session_id": "364n7o0p3o5so63b9rzd47v6ehya6xg7"
- }
- }
- },
- "old_obj": {
- "username": "testuser",
- "user_profile_ref": "https://192.0.2.97/api/useraccountprofile/useraccountprofile-546c5e88-6270-4ba1-9cfd-d0c755e68f47#Default-User-Account-Profile",
- "name": "testuser",
- "url": "https://192.0.2.97/api/user/user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a#testuser",
- "is_active": true,
- "uuid": "user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a",
- "access": [{
- "tenant_ref": "https://192.0.2.97/api/tenant/tenant-57af0f3f-6f14-4657-8f32-9b289407752b#Test-Admin",
- "all_tenants": false,
- "role_ref": "https://192.0.2.97/api/tenant/********/role/role-b073ab0d-e1d0-4800-95ef-6ecf2c5ed7d1#Tenant-Admin"
- }],
- "is_superuser": true,
- "full_name": "testuser",
- "ui_property": "",
- "password": "<sensitive>",
- "local": true,
- "email": "test@abc.com",
- "default_tenant_ref": "https://192.0.2.97/api/tenant/********#********",
- "uid": 2002
- }
- },
- "mock_del_res": {
- "ansible_facts": {
- "avi_api_context": {
- "192.0.2.97:admin:None": {
- "csrftoken": "Vtkx9GeS2lsrld5yX83cmJqbZO3MAimb",
- "session_id": "ix3t1dja8yzwb155de59viyn96hibn6b"
- }
- }
- },
- "api_context": null,
- "changed": true,
- "invocation": {
- "module_args": {
- "access": [{
- "role_ref": "/api/role?name=Tenant-Admin",
- "tenant_ref": "/api/tenant/********#********"
- }],
- "api_context": null,
- "api_version": "18.2.5",
- "avi_api_update_method": "put",
- "avi_credentials": null,
- "avi_disable_session_cache_as_fact": false,
- "avi_login_info": null,
- "controller": "192.0.2.97",
- "default_tenant_ref": "/api/tenant?name=********",
- "email": "test@abc.com",
- "is_active": true,
- "is_superuser": true,
- "name": "testuser",
- "obj_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
- "obj_username": "testuser",
- "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
- "state": "absent",
- "tenant": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
- "tenant_uuid": "",
- "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile",
- "username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER"
- }
- },
- "obj": null,
- "old_obj": {
- "_last_modified": "1559803346264869",
- "access": [{
- "all_tenants": false,
- "role_ref": "https://192.0.2.97/api/tenant/********/role/role-b073ab0d-e1d0-4800-95ef-6ecf2c5ed7d1#Tenant-Admin",
- "tenant_ref": "https://192.0.2.97/api/tenant/tenant-57af0f3f-6f14-4657-8f32-9b289407752b#Test-Admin"
- }],
- "default_tenant_ref": "https://192.0.2.97/api/tenant/********#********",
- "email": "newemail@abc.com",
- "full_name": "testuser",
- "is_active": true,
- "is_superuser": true,
- "local": true,
- "name": "testuser",
- "password": "<sensitive>",
- "ui_property": "",
- "uid": 2002,
- "url": "https://192.0.2.97/api/user/user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a#testuser",
- "user_profile_ref": "https://192.0.2.97/api/useraccountprofile/useraccountprofile-546c5e88-6270-4ba1-9cfd-d0c755e68f47#Default-User-Account-Profile",
- "username": "testuser",
- "uuid": "user-ed10f328-bd92-4db2-bacd-0cf795fcbf8a"
- }
- }
-}
diff --git a/test/units/modules/network/avi/test_avi_user.py b/test/units/modules/network/avi/test_avi_user.py
deleted file mode 100644
index c4efb87cea..0000000000
--- a/test/units/modules/network/avi/test_avi_user.py
+++ /dev/null
@@ -1,101 +0,0 @@
-import os
-import json
-from units.compat import unittest
-from units.compat.mock import Mock
-from units.modules.utils import set_module_args
-from ansible.modules.network.avi import avi_user
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-with open(fixture_path + '/avi_user.json') as json_file:
- data = json.load(json_file)
-
-
-class TestAviUser(unittest.TestCase):
-
- def test_create_user(self):
- set_module_args({
- "avi_credentials": {
- "controller": "192.0.2.13",
- "username": "username",
- "password": "fakepassword",
- "api_version": "18.2.5"
- },
- "state": "present",
- "name": "testuser",
- "obj_username": "testuser",
- "obj_password": "test123",
- "email": "test@abc.com",
- "access": [
- {
- "role_ref": "/api/role?name=Tenant-Admin",
- "tenant_ref": "/api/tenant?name=Test-Admin",
- "all_tenants": False
- }
- ],
- "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile",
- "is_active": True,
- "is_superuser": True,
- "default_tenant_ref": "/api/tenant?name=admin"
- })
- avi_user.avi_ansible_api = Mock(return_value=data['mock_create_res'])
- response = avi_user.main()
- assert response['changed']
-
- def test_put_on_user(self):
- set_module_args({
- "avi_credentials": {
- "controller": "192.0.2.13",
- "username": "username",
- "password": "fakepassword",
- "api_version": "18.2.5"
- },
- "state": "present",
- "avi_api_update_method": "put",
- "name": "testuser",
- "obj_username": "testuser",
- "obj_password": "test123",
- "email": "newemail@abc.com",
- "access": [{
- "role_ref": "/api/role?name=Tenant-Admin",
- "tenant_ref": "/api/tenant?name=Test-Admin",
- "all_tenants": False
- }],
- "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile",
- "is_active": True,
- "is_superuser": True,
- "default_tenant_ref": "/api/tenant?name=admin"
- })
- avi_user.avi_ansible_api = Mock(return_value=data['mock_put_res'])
- response = avi_user.main()
- assert response['changed']
- assert response['obj']
- assert response['old_obj']
-
- def test_delete_user(self):
- set_module_args({
- "avi_credentials": {
- "controller": "192.0.2.13",
- "username": "username",
- "password": "fakepassword",
- "api_version": "18.2.5"
-
- },
- "name": "testuser",
- "obj_username": "testuser",
- "obj_password": "test123",
- "email": "test@abc.com",
- "access": [{
- "role_ref": "/api/role?name=Tenant-Admin",
- "tenant_ref": "/api/tenant?name=Test-Admin",
- "all_tenants": False
- }],
- "user_profile_ref": "/api/useraccountprofile?name=Default-User-Account-Profile",
- "is_active": True,
- "is_superuser": True,
- "default_tenant_ref": "/api/tenant?name=admin"
- })
- avi_user.avi_ansible_api = Mock(return_value=data['mock_del_res'])
- response = avi_user.main()
- assert response['changed']
- assert not response['obj']
- assert response['old_obj']
diff --git a/test/units/modules/network/check_point/test_checkpoint_access_rule.py b/test/units/modules/network/check_point/test_checkpoint_access_rule.py
deleted file mode 100644
index 3506ffbe6f..0000000000
--- a/test/units/modules/network/check_point/test_checkpoint_access_rule.py
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright (c) 2018 Red Hat
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import absolute_import
-
-import pytest
-from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson
-
-from ansible.module_utils import basic
-from ansible.modules.network.check_point import checkpoint_access_rule
-
-OBJECT = {'layer': 'foo', 'position': 'bar', 'name': 'baz',
- 'source': [{'name': 'lol'}], 'destination': [{'name': 'Any'}],
- 'action': {'name': 'drop'}, 'enabled': True}
-PAYLOAD = {'layer': 'foo', 'position': 'bar', 'name': 'baz'}
-
-
-class TestCheckpointAccessRule(object):
- module = checkpoint_access_rule
-
- @pytest.fixture(autouse=True)
- def module_mock(self, mocker):
- return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json)
-
- @pytest.fixture
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.check_point.checkpoint_access_rule.Connection')
- return connection_class_mock.return_value
-
- @pytest.fixture
- def get_access_rule_200(self, mocker):
- mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_access_rule.get_access_rule')
- mock_function.return_value = (200, OBJECT)
- return mock_function.return_value
-
- @pytest.fixture
- def get_access_rule_404(self, mocker):
- mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_access_rule.get_access_rule')
- mock_function.return_value = (404, 'Object not found')
- return mock_function.return_value
-
- def test_create(self, get_access_rule_404, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(PAYLOAD)
-
- assert result['changed']
- assert 'checkpoint_access_rules' in result
-
- def test_create_idempotent(self, get_access_rule_200, connection_mock):
- connection_mock.send_request.return_value = (200, PAYLOAD)
- result = self._run_module(PAYLOAD)
-
- assert not result['changed']
-
- def test_update(self, get_access_rule_200, connection_mock):
- payload_for_update = {'enabled': False}
- payload_for_update.update(PAYLOAD)
- connection_mock.send_request.return_value = (200, payload_for_update)
- result = self._run_module(payload_for_update)
-
- assert result['changed']
- assert not result['checkpoint_access_rules']['enabled']
-
- def test_delete(self, get_access_rule_200, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- payload_for_delete = {'state': 'absent'}
- payload_for_delete.update(PAYLOAD)
- result = self._run_module(payload_for_delete)
-
- assert result['changed']
-
- def test_delete_idempotent(self, get_access_rule_404, connection_mock):
- payload = {'name': 'baz', 'state': 'absent'}
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(payload)
-
- assert not result['changed']
-
- def _run_module(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
- return ex.value.args[0]
-
- def _run_module_with_fail_json(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleFailJson) as exc:
- self.module.main()
- result = exc.value.args[0]
- return result
diff --git a/test/units/modules/network/check_point/test_checkpoint_host.py b/test/units/modules/network/check_point/test_checkpoint_host.py
deleted file mode 100644
index 803c6e8232..0000000000
--- a/test/units/modules/network/check_point/test_checkpoint_host.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright (c) 2018 Red Hat
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import absolute_import
-
-import pytest
-from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson
-
-from ansible.module_utils import basic
-from ansible.modules.network.check_point import checkpoint_host
-
-OBJECT = {'name': 'foo', 'ipv4-address': '192.168.0.15'}
-CREATE_PAYLOAD = {'name': 'foo', 'ip_address': '192.168.0.15'}
-UPDATE_PAYLOAD = {'name': 'foo', 'ip_address': '192.168.0.16'}
-DELETE_PAYLOAD = {'name': 'foo', 'state': 'absent'}
-
-
-class TestCheckpointHost(object):
- module = checkpoint_host
-
- @pytest.fixture(autouse=True)
- def module_mock(self, mocker):
- return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json)
-
- @pytest.fixture
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.check_point.checkpoint_host.Connection')
- return connection_class_mock.return_value
-
- @pytest.fixture
- def get_host_200(self, mocker):
- mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_host.get_host')
- mock_function.return_value = (200, OBJECT)
- return mock_function.return_value
-
- @pytest.fixture
- def get_host_404(self, mocker):
- mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_host.get_host')
- mock_function.return_value = (404, 'Object not found')
- return mock_function.return_value
-
- def test_create(self, get_host_404, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(CREATE_PAYLOAD)
-
- assert result['changed']
- assert 'checkpoint_hosts' in result
-
- def test_create_idempotent(self, get_host_200, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(CREATE_PAYLOAD)
-
- assert not result['changed']
-
- def test_update(self, get_host_200, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(UPDATE_PAYLOAD)
-
- assert result['changed']
-
- def test_delete(self, get_host_200, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(DELETE_PAYLOAD)
-
- assert result['changed']
-
- def test_delete_idempotent(self, get_host_404, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(DELETE_PAYLOAD)
-
- assert not result['changed']
-
- def _run_module(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
- return ex.value.args[0]
-
- def _run_module_with_fail_json(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleFailJson) as exc:
- self.module.main()
- result = exc.value.args[0]
- return result
diff --git a/test/units/modules/network/check_point/test_checkpoint_session.py b/test/units/modules/network/check_point/test_checkpoint_session.py
deleted file mode 100644
index 407794acaf..0000000000
--- a/test/units/modules/network/check_point/test_checkpoint_session.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (c) 2018 Red Hat
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import absolute_import
-
-import pytest
-from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson
-
-from ansible.module_utils import basic
-from ansible.modules.network.check_point import checkpoint_session
-
-OBJECT = {'uid': '1234'}
-PAYLOAD = {}
-
-
-class TestCheckpointAccessRule(object):
- module = checkpoint_session
-
- @pytest.fixture(autouse=True)
- def module_mock(self, mocker):
- return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json)
-
- @pytest.fixture
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.check_point.checkpoint_session.Connection')
- return connection_class_mock.return_value
-
- @pytest.fixture
- def get_session_200(self, mocker):
- mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_session.get_session')
- mock_function.return_value = (200, OBJECT)
- return mock_function.return_value
-
- def test_publish(self, get_session_200, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(PAYLOAD)
-
- assert result['changed']
- assert 'checkpoint_session' in result
-
- def _run_module(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
- return ex.value.args[0]
-
- def _run_module_with_fail_json(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleFailJson) as exc:
- self.module.main()
- result = exc.value.args[0]
- return result
diff --git a/test/units/modules/network/check_point/test_checkpoint_task_facts.py b/test/units/modules/network/check_point/test_checkpoint_task_facts.py
deleted file mode 100644
index 803c6e8232..0000000000
--- a/test/units/modules/network/check_point/test_checkpoint_task_facts.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright (c) 2018 Red Hat
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import absolute_import
-
-import pytest
-from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson
-
-from ansible.module_utils import basic
-from ansible.modules.network.check_point import checkpoint_host
-
-OBJECT = {'name': 'foo', 'ipv4-address': '192.168.0.15'}
-CREATE_PAYLOAD = {'name': 'foo', 'ip_address': '192.168.0.15'}
-UPDATE_PAYLOAD = {'name': 'foo', 'ip_address': '192.168.0.16'}
-DELETE_PAYLOAD = {'name': 'foo', 'state': 'absent'}
-
-
-class TestCheckpointHost(object):
- module = checkpoint_host
-
- @pytest.fixture(autouse=True)
- def module_mock(self, mocker):
- return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json)
-
- @pytest.fixture
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.check_point.checkpoint_host.Connection')
- return connection_class_mock.return_value
-
- @pytest.fixture
- def get_host_200(self, mocker):
- mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_host.get_host')
- mock_function.return_value = (200, OBJECT)
- return mock_function.return_value
-
- @pytest.fixture
- def get_host_404(self, mocker):
- mock_function = mocker.patch('ansible.modules.network.check_point.checkpoint_host.get_host')
- mock_function.return_value = (404, 'Object not found')
- return mock_function.return_value
-
- def test_create(self, get_host_404, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(CREATE_PAYLOAD)
-
- assert result['changed']
- assert 'checkpoint_hosts' in result
-
- def test_create_idempotent(self, get_host_200, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(CREATE_PAYLOAD)
-
- assert not result['changed']
-
- def test_update(self, get_host_200, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(UPDATE_PAYLOAD)
-
- assert result['changed']
-
- def test_delete(self, get_host_200, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(DELETE_PAYLOAD)
-
- assert result['changed']
-
- def test_delete_idempotent(self, get_host_404, connection_mock):
- connection_mock.send_request.return_value = (200, OBJECT)
- result = self._run_module(DELETE_PAYLOAD)
-
- assert not result['changed']
-
- def _run_module(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
- return ex.value.args[0]
-
- def _run_module_with_fail_json(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleFailJson) as exc:
- self.module.main()
- result = exc.value.args[0]
- return result
diff --git a/test/units/modules/network/cloudengine/ce_module.py b/test/units/modules/network/cloudengine/ce_module.py
deleted file mode 100644
index d7990d4138..0000000000
--- a/test/units/modules/network/cloudengine/ce_module.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright (c) 2019 Red Hat
-#
-# This file is a part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(module_name, name, device=''):
- path = os.path.join(fixture_path, module_name, device, name)
- if not os.path.exists(path):
- path = os.path.join(fixture_path, module_name, 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 TestCloudEngineModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/after.txt
deleted file mode 100644
index b8ff89b615..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/after.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-<data>
- <isiscomm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <vpnName>_public_</vpnName>
- <description>ISIS</description>
- </isSite>
- </isSites>
- </isiscomm>
- </data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/before.txt
deleted file mode 100644
index 618bbf05f4..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_instance/before.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-<data>
- <isiscomm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <isSites>
- <isSite>
- <instanceId></instanceId>
- <vpnName></vpnName>
- <description></description>
- </isSite>
- </isSites>
- </isiscomm>
- </data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/after_interface.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/after_interface.txt
deleted file mode 100644
index f7aee10da0..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/after_interface.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-<data>
-<isiscomm>
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isCircuits>
- <isCircuit>
- <ifName></ifName>
- <circuitLevelType>level_1</circuitLevelType>
- <level1DisPriority>10</level1DisPriority>
- <level2DisPriority>10</level2DisPriority>
- <silentEnable>true</silentEnable>
- <silentCost>true</silentCost>
- <typeP2pEnable>true</typeP2pEnable>
- <snpaCheck>true</snpaCheck>
- <p2pNegotiationMode>2_way</p2pNegotiationMode>
- <p2pPeerIPIgnore>true</p2pPeerIPIgnore>
- <pPPOsicpCheckEnable>true</pPPOsicpCheckEnable>
- <level1Cost>10</level1Cost>
- <level2Cost>10</level2Cost>
- </isCircuit>
- </isCircuits>
- </isSite>
- </isSites>
- </isiscomm>
-</data> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/before_interface.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/before_interface.txt
deleted file mode 100644
index 0a07d5e7e1..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_interface/before_interface.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-<data>
-<isiscomm>
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <isCircuits>
- <isCircuit>
- <ifName></ifName>
- <circuitLevelType></circuitLevelType>
- <level1DisPriority></level1DisPriority>
- <level2DisPriority></level2DisPriority>
- <silentEnable></silentEnable>
- <silentCost></silentCost>
- <typeP2pEnable></typeP2pEnable>
- <snpaCheck></snpaCheck>
- <p2pNegotiationMode></p2pNegotiationMode>
- <p2pPeerIPIgnore></p2pPeerIPIgnore>
- <pPPOsicpCheckEnable></pPPOsicpCheckEnable>
- <level1Cost></level1Cost>
- <level2Cost></level2Cost>
- </isCircuit>
- </isCircuits>
- </isSite>
- </isSites>
- </isiscomm>
-</data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/after.txt
deleted file mode 100644
index 8da6a62e94..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/after.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-<data>
- <isiscomm>
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <vpnName>_public_</vpnName>
- <description>ISIS</description>
- <isLevel>level_1</isLevel>
- <costStyle>narrow</costStyle>
- <relaxSpfLimit>true</relaxSpfLimit>
- <stdLevel1Cost>60</stdLevel1Cost>
- <stdLevel2Cost>60</stdLevel2Cost>
- <stdbandwidth>100</stdbandwidth>
- <stdAutoCostEnable>true</stdAutoCostEnable>
- <stdAutoCostEnableCompatible>true</stdAutoCostEnableCompatible>
- <isNetEntitys>
- <isNetEntity>
- <netEntity>netentity</netEntity>
- </isNetEntity>
- </isNetEntitys>
- <isSiteMTs>
- <isSiteMT>
- <addressFamily>afIpv4</addressFamily>
- <mtId>0</mtId>
- <bfdMinRx>100</bfdMinRx>
- <bfdMinTx>100</bfdMinTx>
- <bfdMultNum>10</bfdMultNum>
- <maxLoadBalancing>32</maxLoadBalancing>
- <isPreferences>
- <isPreference>
- <preferenceValue>100</preferenceValue>
- <routePolicyName>route</routePolicyName>
- </isPreference>
- </isPreferences>
- <isNextHopWeights>
- <isNextHopWeight>
- <ipAddress>1.1.1.1</ipAddress>
- <weight>100</weight>
- </isNextHopWeight>
- </isNextHopWeights>
- <isFilterImports>
- <isFilterImport>
- <aclNumOrName>3001</aclNumOrName>
- <ipPrefix>ip</ipPrefix>
- <routePolicyName>route</routePolicyName>
- <policyType>level_1</policyType>
- </isFilterImport>
- </isFilterImports>
- <isFilterExports>
- <isFilterExport>
- <protocol>ospf</protocol>
- <processId>100</processId>
- <policyType>level_1</policyType>
- </isFilterExport>
- </isFilterExports>
- <isDefaultRoutes>
- <isDefaultRoute>
- <defaultMode>always</defaultMode>
- <routePolicyName>mode</routePolicyName>
- <cost>100</cost>
- <tag>100</tag>
- <levelType>level_1</levelType>
- <avoidLearning>true</avoidLearning>
- </isDefaultRoute>
- </isDefaultRoutes>
- <isImportRoutes>
- <isImportRoute>
- <protocol>import</protocol>
- <processId>100</processId>
- <costType>level_1</costType>
- <cost>100</cost>
- <tag>100</tag>
- <policyType>level_1</policyType>
- <routePolicyName>import</routePolicyName>
- <levelType>level_1</levelType>
- <inheritCost>100</inheritCost>
- <permitIbgp>true</permitIbgp>
- </isImportRoute>
- </isImportRoutes>
- <isLeakRouteLevel1ToLevel2s>
- <isLeakRouteLevel1ToLevel2>
- <tag>100</tag>
- <routePolicyName>route</routePolicyName>
- <aclNumOrName>3001</aclNumOrName>
- <ipPrefix>ip</ipPrefix>
- <leakEnableFlag>true</leakEnableFlag>
- <allowFilter>true</allowFilter>
- </isLeakRouteLevel1ToLevel2>
- </isLeakRouteLevel1ToLevel2s>
- <isLeakRouteLevel2ToLevel1s>
- <isLeakRouteLevel2ToLevel1>
- <tag>100</tag>
- <routePolicyName>route</routePolicyName>
- <aclNumOrName>3001</aclNumOrName>
- <ipPrefix>ip</ipPrefix>
- <allowFilter>true</allowFilter>
- </isLeakRouteLevel2ToLevel1>
- </isLeakRouteLevel2ToLevel1s>
- </isSiteMT>
- </isSiteMTs>
- </isSite>
- </isSites>
- </isiscomm>
-</data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/before.txt
deleted file mode 100644
index abdb8e790f..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_is_is_view/before.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-<data>
- <isiscomm>
- <isSites>
- <isSite>
- <instanceId>100</instanceId>
- <vpnName>_public_</vpnName>
- </isSite>
- </isSites>
- </isiscomm>
-</data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_00.txt b/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_00.txt
deleted file mode 100644
index 974c52c764..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_00.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024">
- <data>
- <ifmtrunk xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <TrunkIfs>
- <TrunkIf>
- <ifName>Eth-Trunk10</ifName>
- <lacpTrunk>
- <isSupportPrmpt>false</isSupportPrmpt>
- <rcvTimeoutType>Fast</rcvTimeoutType>
- <fastTimeoutUserDefinedValue>3</fastTimeoutUserDefinedValue>
- <selectPortStd>Speed</selectPortStd>
- <promptDelay>30</promptDelay>
- <maxActiveNum>1</maxActiveNum>
- <collectMaxDelay>0</collectMaxDelay>
- <mixRateEnable>false</mixRateEnable>
- <dampStaFlapEn>false</dampStaFlapEn>
- <dampUnexpMacEn>false</dampUnexpMacEn>
- <trunkSysMac>11-22-33</trunkSysMac>
- <trunkPortIdExt>false</trunkPortIdExt>
- </lacpTrunk>
- </TrunkIf>
- </TrunkIfs>
- </ifmtrunk>
- </data>
-</rpc-reply> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_01.txt b/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_01.txt
deleted file mode 100644
index 03b3f31e34..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_01.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024">
- <data>
- <ifmtrunk xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <TrunkIfs>
- <TrunkIf>
- <ifName>Eth-Trunk10</ifName>
- <lacpTrunk>
- <isSupportPrmpt>true</isSupportPrmpt>
- <rcvTimeoutType>Fast</rcvTimeoutType>
- <fastTimeoutUserDefinedValue>10</fastTimeoutUserDefinedValue>
- <selectPortStd>Speed</selectPortStd>
- <promptDelay>130</promptDelay>
- <maxActiveNum>13</maxActiveNum>
- <collectMaxDelay>12</collectMaxDelay>
- <mixRateEnable>true</mixRateEnable>
- <dampStaFlapEn>true</dampStaFlapEn>
- <dampUnexpMacEn>true</dampUnexpMacEn>
- <trunkSysMac>0000-1111-2222</trunkSysMac>
- <trunkPortIdExt>true</trunkPortIdExt>
- </lacpTrunk>
- </TrunkIf>
- </TrunkIfs>
- </ifmtrunk>
- </data>
-</rpc-reply> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_10.txt b/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_10.txt
deleted file mode 100644
index 6abbbbfbe4..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_10.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024">
- <data>
- <ifmtrunk xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <lacpSysInfo>
- <priority>32768</priority>
- </lacpSysInfo>
- </ifmtrunk>
- </data>
-</rpc-reply> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_11.txt b/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_11.txt
deleted file mode 100644
index 22260aa1e7..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lacp/ce_lacp_11.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024">
- <data>
- <ifmtrunk xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <lacpSysInfo>
- <priority>32769</priority>
- </lacpSysInfo>
- </ifmtrunk>
- </data>
-</rpc-reply> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_00.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_00.txt
deleted file mode 100644
index 051d71e457..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_00.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024">
- <data>
- <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <lldpSys>
- <lldpSysParameter>
- <messageTxInterval>30</messageTxInterval>
- <messageTxHoldMultiplier>4</messageTxHoldMultiplier>
- <reinitDelay>2</reinitDelay>
- <txDelay>2</txDelay>
- <notificationInterval>5</notificationInterval>
- <fastMessageCount>4</fastMessageCount>
- <mdnNotificationInterval>5</mdnNotificationInterval>
- <mdnNotificationEnable>disabled</mdnNotificationEnable>
- <configManAddr></configManAddr>
- <bindifName></bindifName>
- </lldpSysParameter>
- </lldpSys>
- </lldp>
- </data>
-</rpc-reply> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_01.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_01.txt
deleted file mode 100644
index 4fde2b5d0b..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldpSysParameter_01.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024">
- <data>
- <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <lldpSys>
- <lldpSysParameter>
- <messageTxInterval>8</messageTxInterval>
- <messageTxHoldMultiplier>8</messageTxHoldMultiplier>
- <reinitDelay>8</reinitDelay>
- <txDelay>8</txDelay>
- <notificationInterval>8</notificationInterval>
- <fastMessageCount>8</fastMessageCount>
- <mdnNotificationInterval>8</mdnNotificationInterval>
- <mdnNotificationEnable>enabled</mdnNotificationEnable>
- <configManAddr>1.1.1.1</configManAddr>
- <bindifName>bind-name</bindifName>
- </lldpSysParameter>
- </lldpSys>
- </lldp>
- </data>
-</rpc-reply> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_00.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_00.txt
deleted file mode 100644
index b540a21027..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_00.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024">
- <data>
- <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <lldpSys>
- <lldpEnable>disabled</lldpEnable>
- <mdnStatus>disabled</mdnStatus>
- </lldpSys>
- </lldp>
- </data>
-</rpc-reply> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_01.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_01.txt
deleted file mode 100644
index 62d1228225..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/ce_lldp_global_01.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1024">
- <data>
- <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <lldpSys>
- <lldpEnable>enabled</lldpEnable>
- <mdnStatus>rxOnly</mdnStatus>
- </lldpSys>
- </lldp>
- </data>
-</rpc-reply> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp/result_ok.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp/result_ok.txt
deleted file mode 100644
index 5e245cf5b6..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lldp/result_ok.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-<rpc-reply message-id="801" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" flow-id="98">
- <ok/>
-</rpc-reply>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_changed.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_changed.txt
deleted file mode 100644
index 61052802fa..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_changed.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-<data>
- <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <lldpInterfaces>
- <lldpInterface>
- <ifName>10GE1/0/1</ifName>
- <lldpAdminStatus>txAndRx</lldpAdminStatus>
- <msgInterval operation="merge">
- <txInterval>8</txInterval>
- </msgInterval>
- <tlvTxEnable>
- <manAddrTxEnable>true</manAddrTxEnable>
- <portDescTxEnable>true</portDescTxEnable>
- <sysCapTxEnable>true</sysCapTxEnable>
- <sysDescTxEnable>true</sysDescTxEnable>
- <sysNameTxEnable>true</sysNameTxEnable>
- <portVlanTxEnable>true</portVlanTxEnable>
- <protoVlanTxEnable>true</protoVlanTxEnable>
- <txProtocolVlanId>112</txProtocolVlanId>
- <vlanNameTxEnable>true</vlanNameTxEnable>
- <txVlanNameId>32</txVlanNameId>
- <linkAggreTxEnable>true</linkAggreTxEnable>
- <macPhyTxEnable>true</macPhyTxEnable>
- <maxFrameTxEnable>true</maxFrameTxEnable>
- <eee>true</eee>
- </tlvTxEnable>
- </lldpInterface>
- </lldpInterfaces>
- </lldp>
-</data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_existing.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_existing.txt
deleted file mode 100644
index 3b6155fbde..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/lldp_interface_existing.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-<data>
- <lldp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
- <lldpInterfaces>
- <lldpInterface>
- <ifName>10GE1/0/1</ifName>
- <lldpAdminStatus>txOnly</lldpAdminStatus>
- <msgInterval operation="merge">
- <txInterval>1</txInterval>
- </msgInterval>
- <tlvTxEnable>
- <manAddrTxEnable>false</manAddrTxEnable>
- <portDescTxEnable>false</portDescTxEnable>
- <sysCapTxEnable>false</sysCapTxEnable>
- <sysDescTxEnable>false</sysDescTxEnable>
- <sysNameTxEnable>false</sysNameTxEnable>
- <portVlanTxEnable>false</portVlanTxEnable>
- <protoVlanTxEnable>false</protoVlanTxEnable>
- <txProtocolVlanId></txProtocolVlanId>
- <vlanNameTxEnable>false</vlanNameTxEnable>
- <txVlanNameId></txVlanNameId>
- <linkAggreTxEnable>false</linkAggreTxEnable>
- <macPhyTxEnable>false</macPhyTxEnable>
- <maxFrameTxEnable>false</maxFrameTxEnable>
- <eee></eee>
- </tlvTxEnable>
- </lldpInterface>
- </lldpInterfaces>
- </lldp>
-</data> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/result_ok.txt b/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/result_ok.txt
deleted file mode 100644
index 5e245cf5b6..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_lldp_interface/result_ok.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-<rpc-reply message-id="801" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" flow-id="98">
- <ok/>
-</rpc-reply>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/after.txt
deleted file mode 100644
index 7cbc500df9..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/after.txt
+++ /dev/null
@@ -1,14 +0,0 @@
- <data>
- <lldp>
- <lldpSys>
- <lldpEnable>enabled</lldpEnable>
- <mdnStatus>enabled</mdnStatus>
- </lldpSys>
- <mdnInterfaces>
- <mdnInterface>
- <ifName>10GE1/0/1</ifName>
- <mdnStatus>rxOnly</mdnStatus>
- </mdnInterface>
- </mdnInterfaces>
- </lldp>
-</data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/before.txt
deleted file mode 100644
index 885dc9027b..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_mdn_interface/before.txt
+++ /dev/null
@@ -1,14 +0,0 @@
- <data>
- <lldp>
- <lldpSys>
- <lldpEnable>disabled</lldpEnable>
- <mdnStatus>disabled</mdnStatus>
- </lldpSys>
- <mdnInterfaces>
- <mdnInterface>
- <ifName>10GE1/0/1</ifName>
- <mdnStatus>disabled</mdnStatus>
- </mdnInterface>
- </mdnInterfaces>
- </lldp>
-</data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/after.txt
deleted file mode 100644
index b196031e7b..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/after.txt
+++ /dev/null
@@ -1,10 +0,0 @@
- <data>
- <mcastbase>
- <mcastAfsEnables>
- <mcastAfsEnable>
- <vrfName>vpna</vrfName>
- <addressFamily>ipv4unicast</addressFamily>
- </mcastAfsEnable>
- </mcastAfsEnables>
- </mcastbase>
- </data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/before.txt
deleted file mode 100644
index fe6c839571..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_multicast_global/before.txt
+++ /dev/null
@@ -1 +0,0 @@
- <data/> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/after.txt b/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/after.txt
deleted file mode 100644
index 3af30dedab..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/after.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-<data>
- <l2mc >
- <l2McSnpgEnables>
- <l2McSnpgEnable>
- <addrFamily>ipv4unicast</addrFamily>
- <sendQueryEnable>false</sendQueryEnable>
- <sendQuerySrcIpAddr>192.168.0.1</sendQuerySrcIpAddr>
- </l2McSnpgEnable>
- </l2McSnpgEnables>
- <vlan>
- <l2McVlanCfgs>
- <l2McVlanCfg>
- <addrFamily>ipv4unicast</addrFamily>
- <vlanId>1</vlanId>
- <version>2</version>
- <snoopingEnable>true</snoopingEnable>
- <proxyEnable>true</proxyEnable>
- </l2McVlanCfg>
- </l2McVlanCfgs>
- </vlan>
- </l2mc>
- </data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/before.txt b/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/before.txt
deleted file mode 100644
index fe6c839571..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_multicast_igmp_enable/before.txt
+++ /dev/null
@@ -1 +0,0 @@
- <data/> \ No newline at end of file
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/result_ok.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/result_ok.txt
deleted file mode 100644
index 5e245cf5b6..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/result_ok.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-<rpc-reply message-id="801" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" flow-id="98">
- <ok/>
-</rpc-reply>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_1.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_1.txt
deleted file mode 100644
index 6e5e930093..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_1.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-<data>
- <staticrt xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0">
- <staticrtbase>
- <srBfdParas>
- <srBfdPara>
- <afType>ipv4unicast</afType>
- <ifName>Ethernet3/0/0</ifName>
- <destVrfName>_public_</destVrfName>
- <nexthop>192.168.2.2</nexthop>
- <localAddress>192.168.2.1</localAddress>
- <minRxInterval>50</minRxInterval>
- <minTxInterval>50</minTxInterval>
- <multiplier>3</multiplier>
- </srBfdPara>
- </srBfdParas>
- </staticrtbase>
- </staticrt>
- </data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_2.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_2.txt
deleted file mode 100644
index 6e5e930093..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/srBfdPara_2.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-<data>
- <staticrt xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0">
- <staticrtbase>
- <srBfdParas>
- <srBfdPara>
- <afType>ipv4unicast</afType>
- <ifName>Ethernet3/0/0</ifName>
- <destVrfName>_public_</destVrfName>
- <nexthop>192.168.2.2</nexthop>
- <localAddress>192.168.2.1</localAddress>
- <minRxInterval>50</minRxInterval>
- <minTxInterval>50</minTxInterval>
- <multiplier>3</multiplier>
- </srBfdPara>
- </srBfdParas>
- </staticrtbase>
- </staticrt>
- </data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_1.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_1.txt
deleted file mode 100644
index 62800c80a8..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_1.txt
+++ /dev/null
@@ -1,18 +0,0 @@
- <data>
- <staticrt xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0">
- <staticrtbase>
- <srRoutes>
- <srRoute>
- <vrfName>_public_</vrfName>
- <afType>ipv4unicast</afType>
- <topologyName>base</topologyName>
- <prefix>192.168.20.0</prefix>
- <maskLength>24</maskLength>
- <ifName/>
- <destVrfName>_public_</destVrfName>
- <nexthop>189.88.252.1</nexthop>
- </srRoute>
- </srRoutes>
- </staticrtbase>
- </staticrt>
- </data>
diff --git a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_2.txt b/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_2.txt
deleted file mode 100644
index 62800c80a8..0000000000
--- a/test/units/modules/network/cloudengine/fixtures/ce_static_route_bfd/staticrtbase_2.txt
+++ /dev/null
@@ -1,18 +0,0 @@
- <data>
- <staticrt xmlns="http://www.huawei.com/netconf/vrp" format-version="1.0" content-version="1.0">
- <staticrtbase>
- <srRoutes>
- <srRoute>
- <vrfName>_public_</vrfName>
- <afType>ipv4unicast</afType>
- <topologyName>base</topologyName>
- <prefix>192.168.20.0</prefix>
- <maskLength>24</maskLength>
- <ifName/>
- <destVrfName>_public_</destVrfName>
- <nexthop>189.88.252.1</nexthop>
- </srRoute>
- </srRoutes>
- </staticrtbase>
- </staticrt>
- </data>
diff --git a/test/units/modules/network/cloudengine/test_ce_is_is_instance.py b/test/units/modules/network/cloudengine/test_ce_is_is_instance.py
deleted file mode 100644
index cf3438c6cf..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_is_is_instance.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_is_is_instance
-from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_is_is_instance
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_is_is_instance.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_is_is_instance.set_nc_config')
- self.set_nc_config = self.mock_set_config.start()
- self.set_nc_config.return_value = None
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_config.stop()
- self.mock_get_config.stop()
-
- def test_isis_instance_present(self):
- xml_existing = load_fixture('ce_is_is_instance', 'before.txt')
- xml_end_state = load_fixture('ce_is_is_instance', 'after.txt')
- update = ['isis 100', 'vpn-instance __public__']
- self.get_nc_config.side_effect = (xml_existing, xml_end_state)
- config = dict(
- instance_id=100,
- vpn_name='__public__',
- state='present')
- set_module_args(config)
- result = self.execute_module(changed=True)
- self.assertEquals(sorted(result['updates']), sorted(update))
-
- def test_isis_instance_present(self):
- xml_existing = load_fixture('ce_is_is_instance', 'after.txt')
- xml_end_state = load_fixture('ce_is_is_instance', 'before.txt')
- update = ['undo isis 100']
- self.get_nc_config.side_effect = (xml_existing, xml_end_state)
- config = dict(
- instance_id=100,
- vpn_name='__public__',
- state='absent')
- set_module_args(config)
- result = self.execute_module(changed=True)
- self.assertEquals(sorted(result['updates']), sorted(update))
diff --git a/test/units/modules/network/cloudengine/test_ce_is_is_interface.py b/test/units/modules/network/cloudengine/test_ce_is_is_interface.py
deleted file mode 100644
index 32896ad56f..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_is_is_interface.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_is_is_interface
-from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_is_is_interface
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_is_is_interface.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_is_is_interface.set_nc_config')
- self.set_nc_config = self.mock_set_config.start()
- self.set_nc_config.return_value = None
-
- self.before = load_fixture('ce_is_is_interface', 'before_interface.txt')
- self.after = load_fixture('ce_is_is_interface', 'after_interface.txt')
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_config.stop()
- self.mock_get_config.stop()
-
- def test_isis_interface_present(self):
- update = ['interface 10GE1/0/1',
- 'isis enable 100',
- 'isis circuit-level level-1',
- 'isis dis-priority 10 level-1',
- 'isis ppp-negotiation 2-way',
- 'isis cost 10 level-2']
- self.get_nc_config.side_effect = (self.before, self.after)
- config = dict(
- instance_id=100,
- ifname='10GE1/0/1',
- leveltype='level_1',
- level1dispriority=10,
- silentenable=True,
- silentcost=True,
- typep2penable=True,
- snpacheck=True,
- p2pnegotiationmode='2_way',
- p2ppeeripignore=True,
- ppposicpcheckenable=True,
- level2cost=10
- )
- set_module_args(config)
- result = self.execute_module(changed=True)
- print(result['updates'])
- self.assertEquals(sorted(result['updates']), sorted(update))
-
- def test_isis_interface_absent(self):
- update = ['interface 10GE1/0/1',
- 'undo isis enable',
- 'undo isis circuit-level',
- 'undo isis ppp-negotiation']
- self.get_nc_config.side_effect = (self.after, self.before)
- config = dict(
- instance_id=100,
- ifname='10GE1/0/1',
- leveltype='level_1',
- level1dispriority=10,
- silentenable=True,
- silentcost=True,
- typep2penable=True,
- snpacheck=True,
- p2pnegotiationmode='2_way',
- p2ppeeripignore=True,
- ppposicpcheckenable=True,
- level2cost=10,
- state='absent'
- )
- set_module_args(config)
- result = self.execute_module(changed=True)
- self.assertEquals(sorted(result['updates']), sorted(update))
diff --git a/test/units/modules/network/cloudengine/test_ce_is_is_view.py b/test/units/modules/network/cloudengine/test_ce_is_is_view.py
deleted file mode 100644
index ec2cda74d2..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_is_is_view.py
+++ /dev/null
@@ -1,248 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_is_is_view
-from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_is_is_view
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_is_is_view.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_is_is_view.set_nc_config')
- self.set_nc_config = self.mock_set_config.start()
- self.set_nc_config.return_value = None
-
- self.before = load_fixture('ce_is_is_view', 'before.txt')
- self.after = load_fixture('ce_is_is_view', 'after.txt')
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_config.stop()
- self.mock_get_config.stop()
-
- def test_ce_is_is_view_absent(self):
- self.get_nc_config.side_effect = (self.after, self.before)
- config = dict(
- instance_id=100,
- description='ISIS',
- islevel='level_1',
- coststyle='narrow',
- stdlevel2cost=60,
- stdbandwidth=100,
- autocostenable=True,
- autocostenablecompatible=True,
- netentity='netentity',
- preference_value=100,
- route_policy_name='route',
- max_load=32,
- ip_address='1.1.1.1',
- weight=100,
- penetration_direct='level2-level1',
- import_routepolicy_name='import',
- tag=100,
- allow_filter=True,
- allow_up_down=True,
- enablelevel1tolevel2=True,
- defaultmode='always',
- mode_routepolicyname='mode',
- cost=100,
- mode_tag=100,
- level_type='level_1',
- avoid_learning=True,
- protocol='ospf',
- processid=100,
- cost_type='external',
- import_cost=100,
- import_tag=100,
- import_route_policy='import',
- impotr_leveltype='level_1',
- inheritcost=True,
- permitibgp=True,
- export_protocol='ospf',
- export_policytype='aclNumOrName',
- export_processid=100,
- export_ipprefix='export',
- export_routepolicyname='export',
- import_aclnumorname='acl',
- import_routepolicyname='import',
- bfd_min_rx=100,
- bfd_min_tx=100,
- bfd_multiplier_num=10,
- state='absent'
- )
- set_module_args(config)
- self.execute_module(changed=True)
-
- def test_ce_is_is_view_present(self):
- self.get_nc_config.side_effect = (self.before, self.after)
- update = ['isis 100',
- 'description ISIS',
- 'is-level level_1',
- 'cost-style narrow',
- 'circuit-cost 60 level-2',
- 'bandwidth-reference 100',
- 'network-entity netentity',
- 'preference 100 route-policy route',
- 'maximum load-balancing 32',
- 'nexthop 1.1.1.1 weight 100',
- 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit',
- 'preference 100 route-policy route',
- 'undo import-route isis level-1 into level-2 disable',
- 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning',
- 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit',
- 'preference 100 route-policy route',
- 'import-route ospf 100 inherit-cost cost-type external cost 100 tag 100 route-policy import level-1',
- 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning',
- 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit',
- 'preference 100 route-policy route',
- 'bfd all-interfaces enable',
- 'bfd all-interfaces min-rx-interval 100 min-tx-interval 100 detect-multiplier 10',
- 'import-route ospf 100 inherit-cost cost-type external cost 100 tag 100 route-policy import level-1',
- 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning',
- 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit',
- 'preference 100 route-policy route',
- 'filter-policy ip-prefix export route-policy export export ospf 100',
- 'bfd all-interfaces min-rx-interval 100 min-tx-interval 100 detect-multiplier 10',
- 'import-route ospf 100 inherit-cost cost-type external cost 100 tag 100 route-policy import level-1',
- 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning',
- 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit',
- 'preference 100 route-policy route',
- 'filter-policy acl-name acl route-policy importimport',
- 'filter-policy ip-prefix export route-policy export export ospf 100',
- 'bfd all-interfaces min-rx-interval 100 min-tx-interval 100 detect-multiplier 10',
- 'import-route ospf 100 inherit-cost cost-type external cost 100 tag 100 route-policy import level-1',
- 'default-route-advertise always cost 100 tag 100 level-1 avoid-learning',
- 'import-route isis level-2 into level-1 filter-policy route-policy import tag 100 direct allow-filter-policy allow-up-down-bit',
- 'preference 100 route-policy route',
- 'auto-cost enable',
- 'auto-cost enable compatible']
-
- config = dict(
- instance_id=100,
- description='ISIS',
- islevel='level_1',
- coststyle='narrow',
- stdlevel2cost=60,
- stdbandwidth=100,
- autocostenable=True,
- autocostenablecompatible=True,
- netentity='netentity',
- preference_value=100,
- route_policy_name='route',
- max_load=32,
- ip_address='1.1.1.1',
- weight=100,
- penetration_direct='level2-level1',
- import_routepolicy_name='import',
- tag=100,
- allow_filter=True,
- allow_up_down=True,
- enablelevel1tolevel2=True,
- defaultmode='always',
- mode_routepolicyname='mode',
- cost=100,
- mode_tag=100,
- level_type='level_1',
- avoid_learning=True,
- protocol='ospf',
- processid=100,
- cost_type='external',
- import_cost=100,
- import_tag=100,
- import_route_policy='import',
- impotr_leveltype='level_1',
- inheritcost=True,
- permitibgp=True,
- export_protocol='ospf',
- export_policytype='aclNumOrName',
- export_processid=100,
- export_ipprefix='export',
- export_routepolicyname='export',
- import_aclnumorname='acl',
- import_routepolicyname='import',
- bfd_min_rx=100,
- bfd_min_tx=100,
- bfd_multiplier_num=10
- )
- set_module_args(config)
- result = self.execute_module(changed=True)
- self.assertEquals(sorted(result['updates']), sorted(update))
-
- def test_ce_is_is_view_no_changed(self):
- self.get_nc_config.side_effect = (self.after, self.after)
- config = dict(
- instance_id=100,
- description='ISIS',
- islevel='level_1',
- coststyle='narrow',
- stdlevel2cost=60,
- stdbandwidth=100,
- autocostenable=True,
- autocostenablecompatible=True,
- netentity='netentity',
- preference_value=100,
- route_policy_name='route',
- max_load=32,
- ip_address='1.1.1.1',
- weight=100,
- penetration_direct='level2-level1',
- import_routepolicy_name='import',
- tag=100,
- allow_filter=True,
- allow_up_down=True,
- enablelevel1tolevel2=True,
- defaultmode='always',
- mode_routepolicyname='mode',
- cost=100,
- mode_tag=100,
- level_type='level_1',
- avoid_learning=True,
- protocol='ospf',
- processid=100,
- cost_type='external',
- import_cost=100,
- import_tag=100,
- import_route_policy='import',
- impotr_leveltype='level_1',
- inheritcost=True,
- permitibgp=True,
- export_protocol='ospf',
- export_policytype='aclNumOrName',
- export_processid=100,
- export_ipprefix='export',
- export_routepolicyname='export',
- import_aclnumorname='acl',
- import_routepolicyname='import',
- bfd_min_rx=100,
- bfd_min_tx=100,
- bfd_multiplier_num=10
- )
- set_module_args(config)
- self.execute_module(changed=False)
diff --git a/test/units/modules/network/cloudengine/test_ce_lacp.py b/test/units/modules/network/cloudengine/test_ce_lacp.py
deleted file mode 100644
index 598488e7b6..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_lacp.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_lacp
-from units.modules.utils import set_module_args
-from .ce_module import TestCloudEngineModule, load_fixture
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_lacp
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_lacp.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_lacp.set_nc_config')
- self.set_nc_config = self.mock_set_config.start()
- self.set_nc_config.return_value = None
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_config.stop()
- self.mock_get_config.stop()
-
- def test_lacp_eturnk_present(self):
- xml_existing = load_fixture('ce_lacp', 'ce_lacp_00.txt')
- xml_end_state = load_fixture('ce_lacp', 'ce_lacp_01.txt')
- update = ['lacp max active-linknumber 13',
- 'lacp dampening state-flapping',
- 'lacp port-id-extension enable',
- 'lacp collector delay 12',
- 'lacp preempt enable',
- 'lacp system-id 0000-1111-2222',
- 'lacp mixed-rate link enable',
- 'lacp preempt delay 130',
- 'lacp timeout user-defined 10',
- 'lacp dampening unexpected-mac disable']
- self.get_nc_config.side_effect = (xml_existing, xml_end_state)
- set_module_args(dict(
- mode='Dynamic',
- trunk_id='10',
- preempt_enable='true',
- state_flapping='true',
- port_id_extension_enable='true',
- unexpected_mac_disable='true',
- system_id='0000-1111-2222',
- timeout_type='Fast',
- fast_timeout='10',
- mixed_rate_link_enable='true',
- preempt_delay=11,
- collector_delay=12,
- max_active_linknumber=13,
- select='Speed',
- state='present'))
- result = self.execute_module(changed=True)
- self.assertEqual(sorted(result['updates']), sorted(update))
-
- def test_lacp_eturnk_absent(self):
- xml_existing = load_fixture('ce_lacp', 'ce_lacp_10.txt')
- xml_end_state = load_fixture('ce_lacp', 'ce_lacp_00.txt')
- default_values = ['undo lacp priority',
- 'lacp timeout Fast',
- 'lacp max active-linknumber 1',
- 'lacp collector delay 0',
- 'lacp preempt enable false',
- 'lacp dampening state-flapping false',
- 'lacp dampening unexpected-mac disable false',
- 'lacp mixed-rate link enable false',
- 'lacp port-id-extension enable false',
- 'lacp preempt delay 30',
- 'lacp select Speed',
- 'lacp system-id 11-22-33',
- 'lacp timeout user-defined 3']
- self.get_nc_config.side_effect = (xml_existing, xml_end_state)
- set_module_args(dict(
- mode='Dynamic',
- trunk_id='10',
- preempt_enable='true',
- state_flapping='true',
- port_id_extension_enable='true',
- unexpected_mac_disable='true',
- system_id='0000-1111-2222',
- timeout_type='Fast',
- fast_timeout='10',
- mixed_rate_link_enable='true',
- preempt_delay=11,
- collector_delay=12,
- max_active_linknumber=13,
- select='Speed',
- state='absent'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(sorted(result['updates']), sorted(default_values))
-
- def test_lacp_global_present(self):
- xml_existing = load_fixture('ce_lacp', 'ce_lacp_10.txt')
- xml_end_state = load_fixture('ce_lacp', 'ce_lacp_11.txt')
- self.get_nc_config.side_effect = (xml_existing, xml_end_state)
- set_module_args(dict(global_priority=32769,
- state='present'))
- result = self.execute_module(changed=True)
- self.assertEqual(result['updates'], ['lacp priority 32769'])
-
- def test_lacp_global_absent(self):
- xml_existing = load_fixture('ce_lacp', 'ce_lacp_11.txt')
- xml_end_state = load_fixture('ce_lacp', 'ce_lacp_10.txt')
- self.get_nc_config.side_effect = (xml_existing, xml_end_state)
- set_module_args(dict(global_priority=32769,
- state='absent'))
- result = self.execute_module(changed=True)
- # excpect: lacp priority is set to default value(32768)
- self.assertEqual(result['updates'], ['lacp priority 32768'])
diff --git a/test/units/modules/network/cloudengine/test_ce_lldp.py b/test/units/modules/network/cloudengine/test_ce_lldp.py
deleted file mode 100644
index 743e4bcad5..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_lldp.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_lldp
-from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_lldp
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_lldp.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_lldp.set_nc_config')
- self.set_nc_config = self.mock_set_config.start()
- self.set_nc_config.return_value = None
- xml_existing_1 = load_fixture('ce_lldp', 'ce_lldp_global_00.txt')
- xml_existing_2 = load_fixture('ce_lldp', 'ce_lldp_global_01.txt')
- xml_end_state_1 = load_fixture('ce_lldp', 'ce_lldpSysParameter_00.txt')
- xml_end_state_2 = load_fixture('ce_lldp', 'ce_lldpSysParameter_01.txt')
- self.get_side_effect = (xml_existing_1, xml_existing_2, xml_end_state_1, xml_end_state_2)
- self.result_ok = load_fixture('ce_lldp', 'result_ok.txt')
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_config.stop()
- self.mock_get_config.stop()
-
- def test_lldp_global_present(self):
- update = ['lldp enable',
- 'lldp mdn enable',
- 'lldp mdn enable',
- 'lldp transmit interval 8',
- 'lldp transmit multiplier 8',
- 'lldp restart 8',
- 'lldp transmit delay 8',
- 'lldp trap-interval 8',
- 'lldp fast-count 8',
- 'lldp mdn trap-interval 8',
- 'lldp management-address 1.1.1.1',
- 'lldp management-address bind interface bind-name']
- self.get_nc_config.side_effect = self.get_side_effect
- self.set_nc_config.side_effect = [self.result_ok] * 11
- set_module_args(dict(
- lldpenable='enabled',
- mdnstatus='rxOnly',
- interval=8,
- hold_multiplier=8,
- restart_delay=8,
- transmit_delay=8,
- notification_interval=8,
- fast_count=8,
- mdn_notification_interval=8,
- management_address='1.1.1.1',
- bind_name='bind-name')
- )
- result = self.execute_module(changed=True)
- self.assertEqual(sorted(result['updates']), sorted(update))
-
- def test_lacp_sys_parameter_present(self):
- update = ['lldp enable',
- 'lldp mdn enable',
- 'lldp mdn enable',
- 'lldp transmit interval 8',
- 'lldp transmit multiplier 8',
- 'lldp restart 8',
- 'lldp transmit delay 8',
- 'lldp trap-interval 8',
- 'lldp fast-count 8',
- 'lldp mdn trap-interval 8',
- 'lldp management-address 1.1.1.1',
- 'lldp management-address bind interface bind-name']
- self.get_nc_config.side_effect = self.get_side_effect
- self.set_nc_config.side_effect = [self.result_ok] * 11
- set_module_args(dict(
- lldpenable='enabled',
- mdnstatus='rxOnly',
- interval=8,
- hold_multiplier=8,
- restart_delay=8,
- transmit_delay=8,
- notification_interval=8,
- fast_count=8,
- mdn_notification_interval=8,
- management_address='1.1.1.1',
- bind_name='bind-name')
- )
- result = self.execute_module(changed=True)
- self.assertEqual(sorted(result['updates']), sorted(update))
diff --git a/test/units/modules/network/cloudengine/test_ce_lldp_interface.py b/test/units/modules/network/cloudengine/test_ce_lldp_interface.py
deleted file mode 100644
index deec0cd7ba..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_lldp_interface.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_lldp_interface
-from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_lldp_interface
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- # self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_lldp.get_nc_config')
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_lldp_interface.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_nc_config = patch('ansible.modules.network.cloudengine.ce_lldp_interface.set_nc_config')
- self.set_nc_config = self.mock_set_nc_config.start()
- self.xml_absent = load_fixture('ce_lldp_interface', 'lldp_interface_existing.txt')
- self.xml_present = load_fixture('ce_lldp_interface', 'lldp_interface_changed.txt')
- self.result_ok = load_fixture('ce_lldp_interface', 'result_ok.txt')
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_nc_config.stop()
- self.mock_get_config.stop()
-
- def test_lldp_present(self):
- self.get_nc_config.side_effect = (self.xml_absent, self.xml_present) * 5
- self.set_nc_config.return_value = self.result_ok
- config = dict(
- lldpenable='enabled',
- function_lldp_interface_flag='disableINTERFACE',
- type_tlv_disable='basic_tlv',
- type_tlv_enable='dot1_tlv',
- ifname='10GE1/0/1',
- lldpadminstatus='txOnly',
- manaddrtxenable=True,
- portdesctxenable=True,
- syscaptxenable=True,
- sysdesctxenable=True,
- sysnametxenable=True,
- portvlantxenable=True,
- protovlantxenable=True,
- txprotocolvlanid=True,
- vlannametxenable=True,
- txvlannameid=8,
- txinterval=8,
- protoidtxenable=True,
- macphytxenable=True,
- linkaggretxenable=True,
- maxframetxenable=True,
- eee=True,
- dcbx=True
- )
- set_module_args(config)
- result = self.execute_module(changed=True)
-
- def test_lldp_absent(self):
- self.get_nc_config.side_effect = (self.xml_present, self.xml_present, self.xml_absent, self.xml_absent)
- self.set_nc_config.return_value = self.result_ok
- config = dict(
- lldpenable='enabled',
- function_lldp_interface_flag='disableINTERFACE',
- type_tlv_disable='basic_tlv',
- type_tlv_enable='dot1_tlv',
- ifname='10GE1/0/1',
- lldpadminstatus='txOnly',
- manaddrtxenable=False,
- portdesctxenable=False,
- syscaptxenable=False,
- sysdesctxenable=False,
- sysnametxenable=False,
- portvlantxenable=False,
- protovlantxenable=False,
- txprotocolvlanid=False,
- vlannametxenable=False,
- txvlannameid=18,
- txinterval=18,
- protoidtxenable=False,
- macphytxenable=False,
- linkaggretxenable=False,
- maxframetxenable=False,
- eee=False,
- dcbx=False,
- state='absent'
- )
- set_module_args(config)
- result = self.execute_module(changed=False)
diff --git a/test/units/modules/network/cloudengine/test_ce_mdn_interface.py b/test/units/modules/network/cloudengine/test_ce_mdn_interface.py
deleted file mode 100644
index 10e5e535da..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_mdn_interface.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_mdn_interface
-from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_mdn_interface
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_mdn_interface.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_mdn_interface.set_nc_config')
- self.set_nc_config = self.mock_set_config.start()
- self.set_nc_config.return_value = "<ok/>"
- self.before = load_fixture('ce_mdn_interface', 'before.txt')
- self.after = load_fixture('ce_mdn_interface', 'after.txt')
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_config.stop()
- self.mock_get_config.stop()
-
- def test_mdn_enable(self):
- update = [['lldp enable', 'interface 10GE1/0/1', 'lldp mdn enable']]
- self.get_nc_config.side_effect = (self.before, self.before, self.after, self.after)
- set_module_args(dict(
- lldpenable='enabled',
- mdnstatus='rxOnly',
- ifname='10GE1/0/1')
- )
- result = self.execute_module(changed=True)
- self.assertEquals(sorted(result['updates']), sorted(update))
-
- def test_repeat_enable(self):
- self.get_nc_config.side_effect = (self.after, self.after, self.after, self.after, )
- set_module_args(dict(
- lldpenable='enabled',
- mdnstatus='rxOnly',
- ifname='10GE1/0/1')
- )
- self.execute_module(changed=False)
diff --git a/test/units/modules/network/cloudengine/test_ce_multicast_global.py b/test/units/modules/network/cloudengine/test_ce_multicast_global.py
deleted file mode 100644
index 5cc9f5ead3..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_multicast_global.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_multicast_global
-from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_multicast_global
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_multicast_global.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_multicast_global.set_nc_config')
- self.set_nc_config = self.mock_set_config.start()
- self.set_nc_config.return_value = "<ok/>"
- self.before = load_fixture('ce_multicast_global', 'before.txt')
- self.after = load_fixture('ce_multicast_global', 'after.txt')
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_config.stop()
- self.mock_get_config.stop()
-
- def test_multicast_enable(self):
- update = ['multicast routing-enable']
- self.get_nc_config.side_effect = (self.before, self.after)
- set_module_args(dict(
- aftype='v4',
- vrf='vpna',
- state='present')
- )
- result = self.execute_module(changed=True)
- self.assertEquals(sorted(result['updates']), sorted(update))
-
- def test_multicast_undo_enable(self):
- update = ['undo multicast routing-enable']
- self.get_nc_config.side_effect = (self.after, self.before)
- set_module_args(dict(
- aftype='v4',
- vrf='vpna',
- state='absent')
- )
- result = self.execute_module(changed=True)
- self.assertEquals(sorted(result['updates']), sorted(update))
diff --git a/test/units/modules/network/cloudengine/test_ce_multicast_igmp_enable.py b/test/units/modules/network/cloudengine/test_ce_multicast_igmp_enable.py
deleted file mode 100644
index 8149e2a474..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_multicast_igmp_enable.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_multicast_igmp_enable
-from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_multicast_igmp_enable
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_multicast_igmp_enable.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_multicast_igmp_enable.set_nc_config')
- self.set_nc_config = self.mock_set_config.start()
- self.set_nc_config.return_value = "<ok/>"
- self.before = load_fixture('ce_multicast_igmp_enable', 'before.txt')
- self.after = load_fixture('ce_multicast_igmp_enable', 'after.txt')
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_config.stop()
- self.mock_get_config.stop()
-
- def test_igmp_enable(self):
- update = ['igmp snooping enable',
- 'igmp snooping version 2',
- 'igmp snooping proxy']
- self.get_nc_config.side_effect = (self.before, self.after)
- set_module_args(dict(
- aftype='v4',
- features='vlan',
- vlan_id=1,
- igmp=True,
- version=2,
- proxy=True)
- )
- result = self.execute_module(changed=True)
- self.assertEquals(sorted(result['updates']), sorted(update))
-
- def test_igmp_undo_enable(self):
- update = ['undo igmp snooping enable',
- 'undo igmp snooping version',
- 'undo igmp snooping proxy']
- self.get_nc_config.side_effect = (self.after, self.before)
- set_module_args(dict(
- aftype='v4',
- features='vlan',
- vlan_id=1,
- igmp=True,
- version=2,
- proxy=True,
- state='absent')
- )
- result = self.execute_module(changed=True)
- self.assertEquals(sorted(result['updates']), sorted(update))
diff --git a/test/units/modules/network/cloudengine/test_ce_static_route_bfd.py b/test/units/modules/network/cloudengine/test_ce_static_route_bfd.py
deleted file mode 100644
index a8953d4897..0000000000
--- a/test/units/modules/network/cloudengine/test_ce_static_route_bfd.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# (c) 2019 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cloudengine import ce_static_route_bfd
-from units.modules.network.cloudengine.ce_module import TestCloudEngineModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCloudEngineLacpModule(TestCloudEngineModule):
- module = ce_static_route_bfd
-
- def setUp(self):
- super(TestCloudEngineLacpModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cloudengine.ce_static_route_bfd.get_nc_config')
- self.get_nc_config = self.mock_get_config.start()
-
- self.mock_set_config = patch('ansible.modules.network.cloudengine.ce_static_route_bfd.set_nc_config')
- self.set_nc_config = self.mock_set_config.start()
- self.set_nc_config.return_value = load_fixture('ce_lldp', 'result_ok.txt')
-
- def tearDown(self):
- super(TestCloudEngineLacpModule, self).tearDown()
- self.mock_set_config.stop()
- self.mock_get_config.stop()
-
- def test_ce_static_route_bfd_changed_false(self):
- srBfdPara_1 = load_fixture('ce_static_route_bfd', 'srBfdPara_1.txt')
- staticrtbase_1 = load_fixture('ce_static_route_bfd', 'staticrtbase_1.txt')
- self.get_nc_config.side_effect = (srBfdPara_1, srBfdPara_1, staticrtbase_1, staticrtbase_1)
-
- config = dict(
- prefix='255.255.0.0',
- mask=22,
- aftype='v4',
- next_hop='10.10.1.1',
- nhp_interface='10GE1/0/1',
- vrf='mgnt',
- destvrf='_public_',
- tag=23,
- description='for a test',
- pref='22',
- function_flag='dynamicBFD',
- min_tx_interval='32',
- min_rx_interval='23',
- detect_multiplier='24',
- bfd_session_name='43'
- )
- set_module_args(config)
- self.execute_module(changed=False)
-
- def test_ce_static_route_bfd_changed_true(self):
- srBfdPara_1 = load_fixture('ce_static_route_bfd', 'srBfdPara_1.txt')
- srBfdPara_2 = load_fixture('ce_static_route_bfd', 'srBfdPara_2.txt')
- staticrtbase_1 = load_fixture('ce_static_route_bfd', 'staticrtbase_1.txt')
- staticrtbase_2 = load_fixture('ce_static_route_bfd', 'staticrtbase_2.txt')
- self.get_nc_config.side_effect = (srBfdPara_1, staticrtbase_1, srBfdPara_2, staticrtbase_2)
- updates = ['ip route-static vpn-instance mgnt 255.255.0.0 255.255.252.0 10GE1/0/1 10.10.1.1',
- ' preference 22',
- ' tag 23',
- ' track bfd-session 43',
- ' description for a test']
- config = dict(
- prefix='255.255.0.0',
- mask=22,
- aftype='v4',
- next_hop='10.10.1.1',
- nhp_interface='10GE1/0/1',
- vrf='mgnt',
- destvrf='_public_',
- tag=23,
- description='for a test',
- pref='22',
- function_flag='dynamicBFD',
- min_tx_interval='32',
- min_rx_interval='23',
- detect_multiplier='24',
- bfd_session_name='43'
- )
- set_module_args(config)
- result = self.execute_module(changed=True)
- self.assertEqual(sorted(result['updates']), sorted(updates))
diff --git a/test/units/modules/network/cloudvision/test_cv_server_provision.py b/test/units/modules/network/cloudvision/test_cv_server_provision.py
deleted file mode 100644
index f9017f1458..0000000000
--- a/test/units/modules/network/cloudvision/test_cv_server_provision.py
+++ /dev/null
@@ -1,886 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat import unittest
-from units.compat.mock import patch, Mock
-import sys
-sys.modules['cvprac'] = Mock()
-sys.modules['cvprac.cvp_client'] = Mock()
-sys.modules['cvprac.cvp_client_errors'] = Mock()
-from ansible.modules.network.cloudvision import cv_server_provision
-
-
-class MockException(Exception):
- pass
-
-
-class TestCvServerProvision(unittest.TestCase):
- @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpApiError',
- new_callable=lambda: MockException)
- @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.connect')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule')
- def test_main_module_args(self, mock_module, mock_connect, mock_info,
- mock_comp, mock_server_conf, mock_exception):
- ''' Test main module args.
- '''
- mock_module_object = Mock()
- mock_module_object.params = dict(action='show', switch_name='eos')
- mock_module_object.fail_json.side_effect = SystemExit('Exiting')
- mock_module.return_value = mock_module_object
- mock_connect.return_value = 'Client'
- mock_info.side_effect = mock_exception('Error Getting Info')
- argument_spec = dict(
- host=dict(required=True),
- port=dict(required=False, default=None),
- protocol=dict(default='https', choices=['http', 'https']),
- username=dict(required=True),
- password=dict(required=True, no_log=True),
- server_name=dict(required=True),
- switch_name=dict(required=True),
- switch_port=dict(required=True),
- port_vlan=dict(required=False, default=None),
- template=dict(require=True),
- action=dict(default='show', choices=['show', 'add', 'remove']),
- auto_run=dict(type='bool', default=False),
- )
- self.assertRaises(SystemExit, cv_server_provision.main)
- mock_module.assert_called_with(argument_spec=argument_spec,
- supports_check_mode=False)
- self.assertEqual(mock_connect.call_count, 1)
- self.assertEqual(mock_info.call_count, 1)
- mock_comp.assert_not_called()
- mock_server_conf.assert_not_called()
- mock_module_object.fail_json.assert_called_with(msg='Error Getting Info')
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpApiError',
- new_callable=lambda: MockException)
- @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.connect')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule')
- def test_main_no_switch_configlet(self, mock_module, mock_connect,
- mock_info, mock_comp, mock_server_conf,
- mock_exception):
- ''' Test main fails if switch has no configlet for Ansible to edit.
- '''
- mock_module_object = Mock()
- mock_module_object.params = dict(action='add', switch_name='eos')
- mock_module_object.fail_json.side_effect = SystemExit('Exiting')
- mock_module.return_value = mock_module_object
- mock_connect.return_value = 'Client'
- mock_info.return_value = 'Info'
- mock_server_conf.return_value = None
- self.assertRaises(SystemExit, cv_server_provision.main)
- self.assertEqual(mock_connect.call_count, 1)
- self.assertEqual(mock_info.call_count, 1)
- self.assertEqual(mock_comp.call_count, 1)
- self.assertEqual(mock_server_conf.call_count, 1)
- mock_module_object.fail_json.assert_called_with(
- msg='Switch eos has no configurable server ports.')
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpApiError',
- new_callable=lambda: MockException)
- @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.connect')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule')
- def test_main_port_not_in_config(self, mock_module, mock_connect, mock_info,
- mock_comp, mock_server_conf,
- mock_port_conf, mock_exception):
- ''' Test main fails if user specified port not in configlet.
- '''
- mock_module_object = Mock()
- mock_module_object.params = dict(action='add', switch_name='eos',
- switch_port='3')
- mock_module_object.fail_json.side_effect = SystemExit('Exiting')
- mock_module.return_value = mock_module_object
- mock_connect.return_value = 'Client'
- mock_info.return_value = 'Info'
- mock_server_conf.return_value = 'Configlet'
- mock_port_conf.return_value = None
- self.assertRaises(SystemExit, cv_server_provision.main)
- self.assertEqual(mock_connect.call_count, 1)
- self.assertEqual(mock_info.call_count, 1)
- self.assertEqual(mock_comp.call_count, 1)
- self.assertEqual(mock_server_conf.call_count, 1)
- self.assertEqual(mock_port_conf.call_count, 1)
- mock_module_object.fail_json.assert_called_with(
- msg='Port 3 is not configurable as a server port on switch eos.')
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_action')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.connect')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule')
- def test_main_show(self, mock_module, mock_connect, mock_info, mock_comp,
- mock_server_conf, mock_port_conf, mock_conf_action):
- ''' Test main good with show action.
- '''
- mock_module_object = Mock()
- mock_module_object.params = dict(action='show', switch_name='eos',
- switch_port='3', auto_run=False)
- mock_module.return_value = mock_module_object
- mock_connect.return_value = 'Client'
- mock_info.return_value = 'Info'
- mock_server_conf.return_value = 'Configlet'
- mock_port_conf.return_value = 'Port'
- mock_conf_action.return_value = dict()
- cv_server_provision.main()
- self.assertEqual(mock_connect.call_count, 1)
- self.assertEqual(mock_info.call_count, 1)
- mock_comp.assert_not_called()
- self.assertEqual(mock_server_conf.call_count, 1)
- self.assertEqual(mock_port_conf.call_count, 1)
- self.assertEqual(mock_conf_action.call_count, 1)
- mock_module_object.fail_json.assert_not_called()
- return_dict = dict(changed=False, switchInfo='Info',
- switchConfigurable=True, portConfigurable=True,
- taskCreated=False, taskExecuted=False,
- taskCompleted=False)
- mock_module_object.exit_json.assert_called_with(**return_dict)
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_action')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.connect')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule')
- def test_main_add_no_auto_run(self, mock_module, mock_connect, mock_info,
- mock_comp, mock_server_conf, mock_port_conf,
- mock_conf_action):
- ''' Test main good with add action and no auto_run.
- '''
- mock_module_object = Mock()
- mock_module_object.params = dict(action='add', switch_name='eos',
- switch_port='3', auto_run=False)
- mock_module.return_value = mock_module_object
- mock_connect.return_value = 'Client'
- mock_info.return_value = 'Info'
- mock_server_conf.return_value = 'Configlet'
- mock_port_conf.return_value = 'Port'
- mock_conf_action.return_value = dict(taskCreated=True)
- cv_server_provision.main()
- self.assertEqual(mock_connect.call_count, 1)
- self.assertEqual(mock_info.call_count, 1)
- self.assertEqual(mock_comp.call_count, 1)
- self.assertEqual(mock_server_conf.call_count, 1)
- self.assertEqual(mock_port_conf.call_count, 1)
- self.assertEqual(mock_conf_action.call_count, 1)
- mock_module_object.fail_json.assert_not_called()
- return_dict = dict(changed=False, switchInfo='Info',
- switchConfigurable=True, portConfigurable=True,
- taskCreated=True, taskExecuted=False,
- taskCompleted=False)
- mock_module_object.exit_json.assert_called_with(**return_dict)
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.wait_for_task_completion')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_update_task')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_action')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.connect')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule')
- def test_main_add_auto_run(self, mock_module, mock_connect, mock_info,
- mock_comp, mock_server_conf, mock_port_conf,
- mock_conf_action, mock_conf_task, mock_wait):
- ''' Test main good with add and auto_run. Config updated, task created.
- '''
- mock_module_object = Mock()
- mock_module_object.params = dict(action='add', switch_name='eos',
- switch_port='3', auto_run=True)
- mock_module.return_value = mock_module_object
- mock_client_object = Mock()
- mock_connect.return_value = mock_client_object
- mock_info.return_value = 'Info'
- mock_server_conf.return_value = 'Configlet'
- mock_port_conf.return_value = 'Port'
- mock_conf_action.return_value = dict(taskCreated=True, changed=True)
- mock_conf_task.return_value = '7'
- mock_wait.return_value = True
- cv_server_provision.main()
- self.assertEqual(mock_connect.call_count, 1)
- self.assertEqual(mock_info.call_count, 1)
- self.assertEqual(mock_comp.call_count, 1)
- self.assertEqual(mock_server_conf.call_count, 1)
- self.assertEqual(mock_port_conf.call_count, 1)
- self.assertEqual(mock_conf_action.call_count, 1)
- self.assertEqual(mock_conf_task.call_count, 1)
- self.assertEqual(mock_wait.call_count, 1)
- mock_module_object.fail_json.assert_not_called()
- return_dict = dict(changed=True, switchInfo='Info', taskId='7',
- switchConfigurable=True, portConfigurable=True,
- taskCreated=True, taskExecuted=True,
- taskCompleted=True)
- mock_module_object.exit_json.assert_called_with(**return_dict)
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.wait_for_task_completion')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_update_task')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.configlet_action')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.port_configurable')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.server_configurable_configlet')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_in_compliance')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.connect')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.AnsibleModule')
- def test_main_add_auto_run_no_task(self, mock_module, mock_connect,
- mock_info, mock_comp, mock_server_conf,
- mock_port_conf, mock_conf_action, mock_conf_task,
- mock_wait):
- ''' Test main good with add and auto_run. Config not updated, no task.
- '''
- mock_module_object = Mock()
- mock_module_object.params = dict(action='add', switch_name='eos',
- switch_port='3', auto_run=True)
- mock_module.return_value = mock_module_object
- mock_client_object = Mock()
- mock_connect.return_value = mock_client_object
- mock_info.return_value = 'Info'
- mock_server_conf.return_value = 'Configlet'
- mock_port_conf.return_value = 'Port'
- mock_conf_action.return_value = dict(taskCreated=True, changed=False)
- mock_conf_task.return_value = None
- cv_server_provision.main()
- self.assertEqual(mock_connect.call_count, 1)
- self.assertEqual(mock_info.call_count, 1)
- self.assertEqual(mock_comp.call_count, 1)
- self.assertEqual(mock_server_conf.call_count, 1)
- self.assertEqual(mock_port_conf.call_count, 1)
- self.assertEqual(mock_conf_action.call_count, 1)
- self.assertEqual(mock_conf_task.call_count, 1)
- mock_wait.assert_not_called()
- mock_module_object.fail_json.assert_not_called()
- return_dict = dict(changed=False, switchInfo='Info',
- switchConfigurable=True, portConfigurable=True,
- taskCreated=False, taskExecuted=False,
- taskCompleted=False)
- mock_module_object.exit_json.assert_called_with(**return_dict)
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpClient')
- def test_connect_good(self, mock_client):
- ''' Test connect success.
- '''
- module = Mock()
- module.params = dict(host='host', username='username',
- password='password', protocol='https', port='10')
- connect_mock = Mock()
- mock_client.return_value = connect_mock
- client = cv_server_provision.connect(module)
- self.assertIsInstance(client, Mock)
- self.assertEqual(mock_client.call_count, 1)
- connect_mock.connect.assert_called_once_with(['host'], 'username',
- 'password', port='10',
- protocol='https')
- module.fail_json.assert_not_called()
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpLoginError',
- new_callable=lambda: MockException)
- @patch('ansible.modules.network.cloudvision.cv_server_provision.CvpClient')
- def test_connect_fail(self, mock_client, mock_exception):
- ''' Test connect failure with login error.
- '''
- module = Mock()
- module.params = dict(host='host', username='username',
- password='password', protocol='https', port='10')
- module.fail_json.side_effect = SystemExit
- connect_mock = Mock()
- connect_mock.connect.side_effect = mock_exception('Login Error')
- mock_client.return_value = connect_mock
- self.assertRaises(SystemExit, cv_server_provision.connect, module)
- self.assertEqual(connect_mock.connect.call_count, 1)
- module.fail_json.assert_called_once_with(msg='Login Error')
-
- def test_switch_info_good(self):
- ''' Test switch_info success.
- '''
- module = Mock()
- module.params = dict(switch_name='eos')
- module.client.api.get_device_by_name.return_value = dict(fqdn='eos')
- info = cv_server_provision.switch_info(module)
- self.assertEqual(module.client.api.get_device_by_name.call_count, 1)
- self.assertEqual(info['fqdn'], 'eos')
- module.fail_json.assert_not_called()
-
- def test_switch_info_no_switch(self):
- ''' Test switch_info fails.
- '''
- module = Mock()
- module.params = dict(switch_name='eos')
- module.client.api.get_device_by_name.return_value = None
- info = cv_server_provision.switch_info(module)
- self.assertEqual(module.client.api.get_device_by_name.call_count, 1)
- self.assertEqual(info, None)
- module.fail_json.assert_called_once_with(
- msg="Device with name 'eos' does not exist.")
-
- def test_switch_in_compliance_good(self):
- ''' Test switch_in_compliance good.
- '''
- module = Mock()
- module.client.api.check_compliance.return_value = dict(
- complianceCode='0000')
- sw_info = dict(key='key', type='type', fqdn='eos')
- cv_server_provision.switch_in_compliance(module, sw_info)
- self.assertEqual(module.client.api.check_compliance.call_count, 1)
- module.fail_json.assert_not_called()
-
- def test_switch_in_compliance_fail(self):
- ''' Test switch_in_compliance fail.
- '''
- module = Mock()
- module.client.api.check_compliance.return_value = dict(
- complianceCode='0001')
- sw_info = dict(key='key', type='type', fqdn='eos')
- cv_server_provision.switch_in_compliance(module, sw_info)
- self.assertEqual(module.client.api.check_compliance.call_count, 1)
- module.fail_json.assert_called_with(
- msg='Switch eos is not in compliance.'
- ' Returned compliance code 0001.')
-
- def test_server_configurable_configlet_good(self):
- ''' Test server_configurable_configlet good.
- '''
- module = Mock()
- module.params = dict(switch_name='eos')
- configlets = [dict(name='configlet1', info='line'),
- dict(name='eos-server', info='info')]
- module.client.api.get_configlets_by_device_id.return_value = configlets
- sw_info = dict(key='key', type='type', fqdn='eos')
- result = cv_server_provision.server_configurable_configlet(module,
- sw_info)
- self.assertEqual(module.client.api.get_configlets_by_device_id.call_count, 1)
- self.assertIsNotNone(result)
- self.assertEqual(result['name'], 'eos-server')
- self.assertEqual(result['info'], 'info')
-
- def test_server_configurable_configlet_not_configurable(self):
- ''' Test server_configurable_configlet fail. No server configlet.
- '''
- module = Mock()
- module.params = dict(switch_name='eos')
- configlets = [dict(name='configlet1', info='line'),
- dict(name='configlet2', info='info')]
- module.client.api.get_configlets_by_device_id.return_value = configlets
- sw_info = dict(key='key', type='type', fqdn='eos')
- result = cv_server_provision.server_configurable_configlet(module, sw_info)
- self.assertEqual(module.client.api.get_configlets_by_device_id.call_count, 1)
- self.assertIsNone(result)
-
- def test_server_configurable_configlet_no_configlets(self):
- ''' Test server_configurable_configlet fail. No switch configlets.
- '''
- module = Mock()
- module.params = dict(switch_name='eos')
- module.client.api.get_configlets_by_device_id.return_value = []
- sw_info = dict(key='key', type='type', fqdn='eos')
- result = cv_server_provision.server_configurable_configlet(module,
- sw_info)
- self.assertEqual(module.client.api.get_configlets_by_device_id.call_count, 1)
- self.assertIsNone(result)
-
- def test_port_configurable_good(self):
- ''' Test port_configurable user provided switch port in configlet.
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='3')
- config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!'
- configlet = dict(name='eos-server', config=config)
- result = cv_server_provision.port_configurable(module, configlet)
- self.assertTrue(result)
-
- def test_port_configurable_fail(self):
- ''' Test port_configurable user provided switch port not in configlet.
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='2')
- config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!'
- configlet = dict(name='eos-server', config=config)
- result = cv_server_provision.port_configurable(module, configlet)
- self.assertFalse(result)
-
- def test_port_configurable_fail_no_config(self):
- ''' Test port_configurable configlet empty.
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='2')
- config = ''
- configlet = dict(name='eos-server', config=config)
- result = cv_server_provision.port_configurable(module, configlet)
- self.assertFalse(result)
-
- def test_configlet_action_show_blank_config(self):
- ''' Test configlet_action show returns current port configuration.
- '''
- module = Mock()
- module.params = dict(action='show', switch_name='eos', switch_port='3')
- config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!'
- configlet = dict(name='eos-server', key='key', config=config)
- result = cv_server_provision.configlet_action(module, configlet)
- self.assertIsNotNone(result)
- self.assertEqual(result['currentConfigBlock'], 'interface Ethernet3\n!')
- module.client.api.update_configlet.assert_not_called()
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.config_from_template')
- def test_configlet_action_add_with_task(self, mock_template):
- ''' Test configlet_action add with change updates configlet and adds
- proper info to return data. Including task spawned info.
- '''
- module = Mock()
- module.params = dict(action='add', switch_name='eos', switch_port='3')
- config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!'
- configlet = dict(name='eos-server', key='key', config=config)
- template_config = ('interface Ethernet3\n description Host eos'
- ' managed by Ansible and Jinja template\n'
- ' load-interval 30\n'
- ' switchport\n'
- ' switchport mode trunk\n'
- ' no shutdown\n!')
- mock_template.return_value = template_config
- update_return = dict(data='Configlet eos-server successfully updated'
- ' and task initiated.')
- module.client.api.update_configlet.return_value = update_return
- result = cv_server_provision.configlet_action(module, configlet)
- self.assertIsNotNone(result)
- self.assertEqual(result['oldConfigBlock'], 'interface Ethernet3\n!')
- full_config = '!\n' + template_config + '\ninterface Ethernet4\n!'
- self.assertEqual(result['fullConfig'], full_config)
- self.assertEqual(result['updateConfigletResponse'],
- update_return['data'])
- self.assertTrue(result['changed'])
- self.assertTrue(result['taskCreated'])
- self.assertEqual(module.client.api.update_configlet.call_count, 1)
-
- @patch('ansible.modules.network.cloudvision.cv_server_provision.config_from_template')
- def test_configlet_action_add_no_task(self, mock_template):
- ''' Test configlet_action add that doesn't change configlet adds proper
- info to return data. Does not including any task info.
- '''
- module = Mock()
- module.params = dict(action='add', switch_name='eos', switch_port='3')
- config = ('!\ninterface Ethernet3\n description test\n'
- '!\ninterface Ethernet4\n!')
- configlet = dict(name='eos-server', key='key', config=config)
- template_config = 'interface Ethernet3\n description test\n!'
- mock_template.return_value = template_config
- update_return = dict(data='Configlet eos-server successfully updated.')
- module.client.api.update_configlet.return_value = update_return
- result = cv_server_provision.configlet_action(module, configlet)
- self.assertIsNotNone(result)
- self.assertEqual(result['oldConfigBlock'],
- 'interface Ethernet3\n description test\n!')
- self.assertEqual(result['fullConfig'], config)
- self.assertEqual(result['updateConfigletResponse'],
- update_return['data'])
- self.assertNotIn('changed', result)
- self.assertNotIn('taskCreated', result)
- self.assertEqual(module.client.api.update_configlet.call_count, 1)
-
- def test_configlet_action_remove_with_task(self):
- ''' Test configlet_action remove with change updates configlet and adds
- proper info to return data. Including task spawned info.
- '''
- module = Mock()
- module.params = dict(action='remove', switch_name='eos',
- switch_port='3')
- config = ('!\ninterface Ethernet3\n description test\n'
- '!\ninterface Ethernet4\n!')
- configlet = dict(name='eos-server', key='key', config=config)
- update_return = dict(data='Configlet eos-server successfully updated'
- ' and task initiated.')
- module.client.api.update_configlet.return_value = update_return
- result = cv_server_provision.configlet_action(module, configlet)
- self.assertIsNotNone(result)
- self.assertEqual(result['oldConfigBlock'],
- 'interface Ethernet3\n description test\n!')
- full_config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!'
- self.assertEqual(result['fullConfig'], full_config)
- self.assertEqual(result['updateConfigletResponse'],
- update_return['data'])
- self.assertTrue(result['changed'])
- self.assertTrue(result['taskCreated'])
- self.assertEqual(module.client.api.update_configlet.call_count, 1)
-
- def test_configlet_action_remove_no_task(self):
- ''' Test configlet_action with remove that doesn't change configlet and
- adds proper info to return data. Does not including any task info.
- '''
- module = Mock()
- module.params = dict(action='remove', switch_name='eos',
- switch_port='3')
- config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!'
- configlet = dict(name='eos-server', key='key', config=config)
- update_return = dict(data='Configlet eos-server successfully updated.')
- module.client.api.update_configlet.return_value = update_return
- result = cv_server_provision.configlet_action(module, configlet)
- self.assertIsNotNone(result)
- self.assertEqual(result['oldConfigBlock'], 'interface Ethernet3\n!')
- self.assertEqual(result['fullConfig'], config)
- self.assertEqual(result['updateConfigletResponse'],
- update_return['data'])
- self.assertNotIn('changed', result)
- self.assertNotIn('taskCreated', result)
- self.assertEqual(module.client.api.update_configlet.call_count, 1)
-
- def test_current_config_empty_config(self):
- ''' Test current_config with empty config for port
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='4')
- config = '!\ninterface Ethernet3\n!\ninterface Ethernet4'
- result = cv_server_provision.current_config(module, config)
- self.assertIsNotNone(result)
- self.assertEqual(result, 'interface Ethernet4')
-
- def test_current_config_with_config(self):
- ''' Test current_config with config for port
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='3')
- config = ('!\ninterface Ethernet3\n description test\n'
- '!\ninterface Ethernet4\n!')
- result = cv_server_provision.current_config(module, config)
- self.assertIsNotNone(result)
- self.assertEqual(result, 'interface Ethernet3\n description test\n!')
-
- def test_current_config_no_match(self):
- ''' Test current_config with no entry for port
- '''
- module = Mock()
- module.fail_json.side_effect = SystemExit
- module.params = dict(switch_name='eos', switch_port='2')
- config = '!\ninterface Ethernet3\n description test\n!'
- self.assertRaises(SystemExit, cv_server_provision.current_config,
- module, config)
-
- def test_valid_template_true(self):
- ''' Test valid_template true
- '''
- template = 'interface Ethernet3\n description test\n!'
- result = cv_server_provision.valid_template('3', template)
- self.assertTrue(result)
-
- def test_valid_template_false(self):
- ''' Test valid_template false
- '''
- template = 'interface Ethernet3\n description test\n!'
- result = cv_server_provision.valid_template('4', template)
- self.assertFalse(result)
-
- @patch('jinja2.DebugUndefined')
- @patch('jinja2.Environment')
- @patch('jinja2.FileSystemLoader')
- def test_config_from_template_no_template(self, mock_file_sys, mock_env,
- mock_debug):
- ''' Test config_from_template good. No template.
- '''
- module = Mock()
- module.fail_json.side_effect = SystemExit
- module.params = dict(switch_name='eos', switch_port='3',
- server_name='new', template='jinja.j2')
- mock_file_sys.return_value = 'file'
- mock_debug.return_value = 'debug'
- env_mock = Mock()
- env_mock.get_template.return_value = None
- mock_env.return_value = env_mock
- self.assertRaises(SystemExit, cv_server_provision.config_from_template,
- module)
- self.assertEqual(mock_file_sys.call_count, 1)
- self.assertEqual(mock_env.call_count, 1)
- self.assertEqual(module.fail_json.call_count, 1)
-
- @patch('jinja2.meta.find_undeclared_variables')
- @patch('jinja2.DebugUndefined')
- @patch('jinja2.Environment')
- @patch('jinja2.FileSystemLoader')
- def test_config_from_template_good_no_vlan(self, mock_file_sys, mock_env, mock_debug,
- mock_find):
- ''' Test config_from_template good. No port_vlan.
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='3',
- server_name='new', template='jinja.j2')
- mock_file_sys.return_value = 'file'
- mock_debug.return_value = 'debug'
- template_mock = Mock()
- template_mock.render.return_value = ('interface Ethernet3\n'
- ' description test\n'
- ' switchport\n'
- ' switchport mode trunk\n'
- ' no shutdown\n!')
- env_mock = Mock()
- env_mock.loader.get_source.return_value = ['one', 'two']
- env_mock.parse.return_value = 'parsed'
- env_mock.get_template.return_value = template_mock
- mock_env.return_value = env_mock
- mock_find.return_value = dict(server_name=None, switch_port=None)
- result = cv_server_provision.config_from_template(module)
- self.assertIsNotNone(result)
- expected = ('interface Ethernet3\n'
- ' description test\n'
- ' switchport\n'
- ' switchport mode trunk\n'
- ' no shutdown\n!')
- self.assertEqual(result, expected)
- self.assertEqual(mock_file_sys.call_count, 1)
- self.assertEqual(mock_env.call_count, 1)
- module.fail_json.assert_not_called()
-
- @patch('jinja2.meta.find_undeclared_variables')
- @patch('jinja2.DebugUndefined')
- @patch('jinja2.Environment')
- @patch('jinja2.FileSystemLoader')
- def test_config_from_template_good_vlan(self, mock_file_sys, mock_env, mock_debug,
- mock_find):
- ''' Test config_from_template good. With port_vlan.
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='3',
- server_name='new', template='jinja.j2', port_vlan='7')
- mock_file_sys.return_value = 'file'
- mock_debug.return_value = 'debug'
- template_mock = Mock()
- template_mock.render.return_value = ('interface Ethernet3\n'
- ' description test\n'
- ' switchport\n'
- ' switchport access vlan 7\n'
- ' no shutdown\n!')
- env_mock = Mock()
- env_mock.loader.get_source.return_value = ['one', 'two']
- env_mock.parse.return_value = 'parsed'
- env_mock.get_template.return_value = template_mock
- mock_env.return_value = env_mock
- mock_find.return_value = dict(server_name=None, switch_port=None,
- port_vlan=None)
- result = cv_server_provision.config_from_template(module)
- self.assertIsNotNone(result)
- expected = ('interface Ethernet3\n'
- ' description test\n'
- ' switchport\n'
- ' switchport access vlan 7\n'
- ' no shutdown\n!')
- self.assertEqual(result, expected)
- self.assertEqual(mock_file_sys.call_count, 1)
- self.assertEqual(mock_env.call_count, 1)
- module.fail_json.assert_not_called()
-
- @patch('jinja2.meta.find_undeclared_variables')
- @patch('jinja2.DebugUndefined')
- @patch('jinja2.Environment')
- @patch('jinja2.FileSystemLoader')
- def test_config_from_template_fail_wrong_port(self, mock_file_sys, mock_env,
- mock_debug, mock_find):
- ''' Test config_from_template fail. Wrong port number in template.
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='4',
- server_name='new', template='jinja.j2')
- mock_file_sys.return_value = 'file'
- mock_debug.return_value = 'debug'
- template_mock = Mock()
- template_mock.render.return_value = ('interface Ethernet3\n'
- ' description test\n!')
- env_mock = Mock()
- env_mock.loader.get_source.return_value = ['one', 'two']
- env_mock.parse.return_value = 'parsed'
- env_mock.get_template.return_value = template_mock
- mock_env.return_value = env_mock
- mock_find.return_value = dict(server_name=None, switch_port=None)
- result = cv_server_provision.config_from_template(module)
- self.assertIsNotNone(result)
- expected = 'interface Ethernet3\n description test\n!'
- self.assertEqual(result, expected)
- self.assertEqual(mock_file_sys.call_count, 1)
- self.assertEqual(mock_env.call_count, 1)
- module.fail_json.assert_called_with(msg='Template content does not'
- ' configure proper interface'
- ' - %s' % expected)
-
- @patch('jinja2.meta.find_undeclared_variables')
- @patch('jinja2.DebugUndefined')
- @patch('jinja2.Environment')
- @patch('jinja2.FileSystemLoader')
- def test_config_from_template_fail_no_vlan(self, mock_file_sys, mock_env,
- mock_debug, mock_find):
- ''' Test config_from_template fail. Template needs vlan but none provided.
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='3',
- server_name='new', template='jinja.j2',
- port_vlan=None)
- mock_file_sys.return_value = 'file'
- mock_debug.return_value = 'debug'
- template_mock = Mock()
- template_mock.render.return_value = ('interface Ethernet3\n'
- ' description test\n!')
- env_mock = Mock()
- env_mock.loader.get_source.return_value = ['one', 'two']
- env_mock.parse.return_value = 'parsed'
- env_mock.get_template.return_value = template_mock
- mock_env.return_value = env_mock
- mock_find.return_value = dict(server_name=None, switch_port=None,
- port_vlan=None)
- result = cv_server_provision.config_from_template(module)
- self.assertIsNotNone(result)
- expected = 'interface Ethernet3\n description test\n!'
- self.assertEqual(result, expected)
- self.assertEqual(mock_file_sys.call_count, 1)
- self.assertEqual(mock_env.call_count, 1)
- module.fail_json.assert_called_with(msg='Template jinja.j2 requires a'
- ' vlan. Please re-run with vlan'
- ' number provided.')
-
- def test_updated_configlet_content_add(self):
- ''' Test updated_configlet_content. Add config.
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='3')
- existing_config = '!\ninterface Ethernet3\n!\ninterface Ethernet4\n!'
- new_config_block = 'interface Ethernet3\n description test\n!'
- result = cv_server_provision.updated_configlet_content(module,
- existing_config,
- new_config_block)
- expected = ('!\ninterface Ethernet3\n description test\n'
- '!\ninterface Ethernet4\n!')
- self.assertEqual(result, expected)
- module.fail_json.assert_not_called()
-
- def test_updated_configlet_content_remove(self):
- ''' Test updated_configlet_content. Remove config.
- '''
- module = Mock()
- module.params = dict(switch_name='eos', switch_port='3')
- existing_config = ('!\ninterface Ethernet3\n description test\n'
- '!\ninterface Ethernet4')
- new_config_block = 'interface Ethernet3\n!'
- result = cv_server_provision.updated_configlet_content(module,
- existing_config,
- new_config_block)
- expected = '!\ninterface Ethernet3\n!\ninterface Ethernet4'
- self.assertEqual(result, expected)
- module.fail_json.assert_not_called()
-
- def test_updated_configlet_content_no_match(self):
- ''' Test updated_configlet_content. Interface not in config.
- '''
- module = Mock()
- module.fail_json.side_effect = SystemExit
- module.params = dict(switch_name='eos', switch_port='2')
- existing_config = '!\ninterface Ethernet3\n description test\n!'
- new_config_block = 'interface Ethernet3\n!'
- self.assertRaises(SystemExit,
- cv_server_provision.updated_configlet_content,
- module, existing_config, new_config_block)
-
- @patch('time.sleep')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- def test_configlet_update_task_good_one_try(self, mock_info, mock_sleep):
- ''' Test configlet_update_task gets task after one try.
- '''
- module = Mock()
- task = dict(data=dict(WORKFLOW_ACTION='Configlet Push'),
- description='Configlet Assign',
- workOrderId='7')
- device_info = dict(taskIdList=[task])
- mock_info.return_value = device_info
- result = cv_server_provision.configlet_update_task(module)
- self.assertEqual(result, '7')
- mock_sleep.assert_not_called()
- self.assertEqual(mock_info.call_count, 1)
-
- @patch('time.sleep')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- def test_configlet_update_task_good_three_tries(self, mock_info, mock_sleep):
- ''' Test configlet_update_task gets task on third try.
- '''
- module = Mock()
- task1 = dict(data=dict(WORKFLOW_ACTION='Configlet Push'),
- description='Configlet Assign',
- workOrderId='7')
- task2 = dict(data=dict(WORKFLOW_ACTION='Nonsense'),
- description='Configlet Assign',
- workOrderId='700')
- device_info = dict(taskIdList=[task1, task2])
- mock_info.side_effect = [dict(), dict(), device_info]
- result = cv_server_provision.configlet_update_task(module)
- self.assertEqual(result, '7')
- self.assertEqual(mock_sleep.call_count, 2)
- self.assertEqual(mock_info.call_count, 3)
-
- @patch('time.sleep')
- @patch('ansible.modules.network.cloudvision.cv_server_provision.switch_info')
- def test_configlet_update_task_no_task(self, mock_info, mock_sleep):
- ''' Test configlet_update_task does not get task after three tries.
- '''
- module = Mock()
- mock_info.side_effect = [dict(), dict(), dict()]
- result = cv_server_provision.configlet_update_task(module)
- self.assertIsNone(result)
- self.assertEqual(mock_sleep.call_count, 3)
- self.assertEqual(mock_info.call_count, 3)
-
- @patch('time.sleep')
- def test_wait_for_task_completion_good_one_try(self, mock_time):
- ''' Test wait_for_task_completion completed. One Try.
- '''
- module = Mock()
- module.client.api.get_task_by_id.return_value = dict(
- workOrderUserDefinedStatus='Completed')
- result = cv_server_provision.wait_for_task_completion(module, '7')
- self.assertTrue(result)
- self.assertEqual(module.client.api.get_task_by_id.call_count, 1)
- module.fail_json.assert_not_called()
- mock_time.assert_not_called()
-
- @patch('time.sleep')
- def test_wait_for_task_completion_good_three_tries(self, mock_time):
- ''' Test wait_for_task_completion completed. Three tries.
- '''
- module = Mock()
- try_one_two = dict(workOrderUserDefinedStatus='Pending')
- try_three = dict(workOrderUserDefinedStatus='Completed')
- module.client.api.get_task_by_id.side_effect = [try_one_two,
- try_one_two, try_three]
- result = cv_server_provision.wait_for_task_completion(module, '7')
- self.assertTrue(result)
- self.assertEqual(module.client.api.get_task_by_id.call_count, 3)
- module.fail_json.assert_not_called()
- self.assertEqual(mock_time.call_count, 2)
-
- @patch('time.sleep')
- def test_wait_for_task_completion_fail(self, mock_time):
- ''' Test wait_for_task_completion failed.
- '''
- module = Mock()
- try_one = dict(workOrderUserDefinedStatus='Failed')
- try_two = dict(workOrderUserDefinedStatus='Completed')
- module.client.api.get_task_by_id.side_effect = [try_one, try_two]
- result = cv_server_provision.wait_for_task_completion(module, '7')
- self.assertTrue(result)
- self.assertEqual(module.client.api.get_task_by_id.call_count, 2)
- text = ('Task 7 has reported status Failed. Please consult the CVP'
- ' admins for more information.')
- module.fail_json.assert_called_with(msg=text)
- self.assertEqual(mock_time.call_count, 1)
diff --git a/test/units/modules/network/cnos/cnos_module.py b/test/units/modules/network/cnos/cnos_module.py
deleted file mode 100644
index 03832301e8..0000000000
--- a/test/units/modules/network/cnos/cnos_module.py
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright (C) 2017 Lenovo, Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import tempfile
-
-from units.compat import unittest
-from units.compat.mock import patch
-from ansible.module_utils import basic
-
-
-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 AnsibleExitJson(Exception):
- pass
-
-
-class AnsibleFailJson(Exception):
- pass
-
-
-class TestCnosModule(unittest.TestCase):
- def setUp(self):
- super(TestCnosModule, self).setUp()
-
- self.test_log = tempfile.mkstemp(prefix='ansible-test-cnos-module-', suffix='.log')[1]
-
- self.mock_sleep = patch('time.sleep')
- self.mock_sleep.start()
-
- def tearDown(self):
- super(TestCnosModule, self).tearDown()
-
- self.mock_sleep.stop()
- os.remove(self.test_log)
-
- def execute_module(self, failed=False, changed=False, commands=None,
- sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']),
- result['commands'])
- else:
- self.assertEqual(commands, result['commands'],
- result['commands'])
-
- return result
-
- def failed(self):
- def fail_json(*args, **kwargs):
- kwargs['failed'] = True
- raise AnsibleFailJson(kwargs)
-
- with patch.object(basic.AnsibleModule, 'fail_json', fail_json):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- def exit_json(*args, **kwargs):
- if 'changed' not in kwargs:
- kwargs['changed'] = False
- raise AnsibleExitJson(kwargs)
-
- with patch.object(basic.AnsibleModule, 'exit_json', exit_json):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/cnos/fixtures/cnos_banner_show_banner.txt b/test/units/modules/network/cnos/fixtures/cnos_banner_show_banner.txt
deleted file mode 100644
index a134a31753..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_banner_show_banner.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-this is a sample
-mulitline banner
-used for testing
diff --git a/test/units/modules/network/cnos/fixtures/cnos_bgp_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_bgp_config.cfg
deleted file mode 100644
index b625756635..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_bgp_config.cfg
+++ /dev/null
@@ -1,24 +0,0 @@
-!
-router bgp 33
- router-id 1.2.3.4
- bestpath always-compare-med
- cluster-id 1.2.3.4
- confederation identifier 333
- enforce-first-as
- bgp as-local-count 33
- bestpath compare-confed-aspath
- maxas-limit 333
- graceful-restart-helper
- graceful-restart stalepath-time 333
- timers bgp 333 3333
- address-family ipv4 unicast
- synchronization
- network 0.0.0.0 backdoor
- network 0.0.0.0 backdoor
- dampening 13 233 333 15 33
- neighbor 10.241.107.40 remote-as 13
- bfd
- address-family ipv4 unicast
- next-hop-self
-!
-
diff --git a/test/units/modules/network/cnos/fixtures/cnos_config_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_config_config.cfg
deleted file mode 100644
index 34477df930..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_config_config.cfg
+++ /dev/null
@@ -1,337 +0,0 @@
-!
-version "10.8.0.42"
-!
-hostname ip10-241-107-39
-!
-banner motd NMS India CNOS
-banner motd NMS India CNOS G8272
-!
-clock timezone EDT 0 0
-!
-logging console 7
-vrf context management
- ip route 0.0.0.0/0 10.241.107.1
-!
-!
-port-channel load-balance ethernet destination-mac
-port-channel load-balance ethernet source-interface
-feature telnet
-ip domain-name labs.lenovo.com vrf management
-ip domain-list labs.lenovo.com vrf management
-ip name-server 10.241.104.120 vrf management
-ip name-server 10.240.0.10 vrf management
-ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf management
-ip host ip10-241-107-39 10.241.107.39 vrf management
-ip domain-name labs.lenovo.com vrf default
-ip domain-list labs.lenovo.com vrf default
-ip name-server 10.240.0.10 vrf default
-ip name-server 10.241.104.120 vrf default
-ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf default
-ip host ip10-241-107-39 10.241.107.39 vrf default
-ntp server 173.230.154.254 prefer
-ntp server 97.127.86.33 prefer
-ntp server 129.250.35.250 prefer
-ntp server 174.136.103.130 prefer
-ntp server 69.10.161.7 prefer
-ntp server 96.226.123.196 prefer
-ntp server 104.238.179.130 prefer
-ntp server 108.61.73.244 prefer
-ntp server 208.75.89.4 prefer
-snmp-server community public group network-operator
-snmp-server community private group network-admin
-snmp-server contact Ralph
-username admin role network-admin password encrypted $6$bJoWyEu/$9pzSgFPAKGRm1stpTCEl3I39htbjxiFCfhqiHag1NQiKHv/IiLQ2lYW0V3p7p72SgSmVHp38em9P9R/EdePpk/
-logging server 10.241.107.231
-logging server 10.241.107.222
-feature restApi
-ovsdb pki ovsdb_mgmt vrf management
-ovsdb pki ovsdb_default vrf default
-lacp system-priority 32769
-vlag tier-id 313
-vlag priority 1313
-vlag isl port-channel 100
-vlag hlthchk keepalive-attempts 5
-vlag hlthchk peer-ip 1.2.3.4
-vlag auto-recovery 266
-vlag startup-delay 323
-vlag enable
-vlag instance 1 port-channel 1003
-vlag instance 1 enable
-vlag instance 2 port-channel 20
-vlag instance 2 enable
-vlag instance 12 port-channel 23
-vlag instance 33 port-channel 333
-vlag instance 33 enable
-spanning-tree mode mst
-telemetry heartbeat enabled interval 15
-!
-policy-map type control-plane copp-system-policy
- class type control-plane copp-s-pvst-bpdu
- police pps 500
- class type control-plane copp-s-ecp
- police pps 3000
- class type control-plane copp-s-igmp
- police pps 3000
-!
-vlan 1-2
- no flood ipv4
-!
-vlan 3
-!
-vlan 5
-!
-vlan 12
-!
-vlan 13
- name dave
-!
-vlan dot1q tag native egress-only
-!
-interface Ethernet1/1
- description Link 1 to LP21
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- channel-group 33 mode on
-!
-interface Ethernet1/2
- description Link 2 to LP21
- channel-group 1001 mode active
-!
-interface Ethernet1/3
- description Link 1 to LP22
- switchport mode trunk
- channel-group 1003 mode active
-!
-interface Ethernet1/4
- description Link 2 to LP22
- switchport mode trunk
- channel-group 1004 mode active
-!
-interface Ethernet1/5
- description Link 1 to LP23
- no switchport
- ip address 20.131.1.1/30
-!
-interface Ethernet1/6
- description Link 2 to LP23
- no switchport
- ip address 20.131.2.1/30
-!
-interface Ethernet1/7
- description Link 1 to LP24
- no switchport
- ip address 20.141.1.1/30
-!
-interface Ethernet1/8
- description Link 2 to LP24
- no switchport
- ip address 20.141.2.1/30
-!
-interface Ethernet1/9
-!
-interface Ethernet1/10
-!
-interface Ethernet1/11
- no switchport
- mtu 1402
- ip address 1.1.1.2/8
-!
-!
-interface Ethernet1/12
- ip address 100.10.10.10/24
- mtu 1402
- no switchport
-!
-interface Ethernet1/13
- description test string
- no switchport
- ip address 10.241.107.54/24
- vrrp 254
- address 10.241.107.55
- priority 254
- no shutdown
- ip arp timeout 1500
-!
-interface Ethernet1/14
-!
-interface Ethernet1/15
-!
-interface Ethernet1/16
-!
-interface Ethernet1/17
-!
-interface Ethernet1/18
-!
-interface Ethernet1/19
-!
-interface Ethernet1/20
-!
-interface Ethernet1/21
-!
-interface Ethernet1/22
-!
-interface Ethernet1/23
- channel-group 11 mode active
- lacp port-priority 32769
-!
-interface Ethernet1/24
-!
-interface Ethernet1/25
-!
-interface Ethernet1/26
-!
-interface Ethernet1/27
-!
-interface Ethernet1/28
-!
-interface Ethernet1/29
-!
-interface Ethernet1/30
-!
-interface Ethernet1/31
-!
-interface Ethernet1/32
-!
-interface Ethernet1/33
- description Hentammoo
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- microburst-detection enable threshold 25
- lldp tlv-select max-frame-size
- lacp port-priority 33
- spanning-tree mst 33-35 cost 33
- spanning-tree bpduguard enable
-!
-interface Ethernet1/34
-!
-interface Ethernet1/35
-!
-interface Ethernet1/36
-!
-interface Ethernet1/37
-!
-interface Ethernet1/38
-!
-interface Ethernet1/39
-!
-interface Ethernet1/40
-!
-interface Ethernet1/41
-!
-interface Ethernet1/42
-!
-interface Ethernet1/43
-!
-interface Ethernet1/44
- ip address 6.7.8.9 255.255.255.0
- description test string
- shutdown
-!
-interface Ethernet1/45
-!
-interface Ethernet1/46
-!
-interface Ethernet1/47
-!
-interface Ethernet1/48
-!
-interface Ethernet1/49
-!
-interface Ethernet1/50
-!
-interface Ethernet1/51
-!
-interface Ethernet1/52
-!
-interface Ethernet1/53
-!
-interface Ethernet1/54
-!
-interface loopback0
- no switchport
-!
-interface mgmt0
- no switchport
- vrf member management
- no ip address dhcp
- ip address 10.241.107.39/24
- no ipv6 address dhcp
-!
-interface Vlan1
- no switchport
-!
-interface port-channel1
-!
-interface port-channel2
-!
-interface port-channel11
- lacp min-links 2
-!
-interface port-channel13
- switchport mode trunk
-!
-interface port-channel17
- switchport mode trunk
-!
-interface port-channel20
-!
-interface port-channel33
- description Hentammoo
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- spanning-tree mst 33-35 cost 33
- spanning-tree bpduguard enable
-!
-interface port-channel100
- switchport mode trunk
-!
-interface port-channel1001
-!
-interface port-channel1002
-!
-interface port-channel1003
- switchport mode trunk
-!
-interface port-channel1004
- switchport mode trunk
-!
-router bgp 33
- router-id 1.2.3.4
- bestpath always-compare-med
- cluster-id 1.2.3.4
- confederation identifier 333
- enforce-first-as
- bgp as-local-count 33
- bestpath compare-confed-aspath
- maxas-limit 333
- graceful-restart-helper
- graceful-restart stalepath-time 333
- timers bgp 333 3333
- address-family ipv4 unicast
- synchronization
- network 0.0.0.0 backdoor
- dampening 13 233 333 15 33
- neighbor 10.241.107.40 remote-as 13
- bfd
- address-family ipv4 unicast
- next-hop-self
-!
-route-map anil permit 10
-!
-ip arp timeout 1000
-!
-line con 0
-line vty 0
- exec-timeout 90 0
-line vty 1 39
-!
-!
-!
-end
-
diff --git a/test/units/modules/network/cnos/fixtures/cnos_config_src.cfg b/test/units/modules/network/cnos/fixtures/cnos_config_src.cfg
deleted file mode 100644
index f42d335d3d..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_config_src.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-!
-hostname foo
-!
-interface ethernet 1/13
- speed 10000
-!
diff --git a/test/units/modules/network/cnos/fixtures/cnos_linkagg_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_linkagg_config.cfg
deleted file mode 100644
index 3daa8ecb3e..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_linkagg_config.cfg
+++ /dev/null
@@ -1,36 +0,0 @@
-!
-hostname ip10-241-107-39
-!
-interface Ethernet1/33
- description anil
- microburst-detection enable threshold 25
- lldp tlv-select max-frame-size
- lacp port-priority 33
-!
-interface Ethernet1/44
-!
-interface Ethernet1/10
- no switchport
- ip address 10.241.108.10/24
- vrrp 202
- address 10.241.108.20
- shutdown
-!
-interface Ethernet1/11
- no switchport
- mtu 1402
- ip address 1.1.1.2/8
-!
-interface port-channel20
-!
-interface port-channel33
- description Hentammoo
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- spanning-tree mst 33-35 cost 33
- spanning-tree bpduguard enable
-!
-interface Ethernet1/9
-!
diff --git a/test/units/modules/network/cnos/fixtures/cnos_logging_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_logging_config.cfg
deleted file mode 100644
index 8f3d7d6987..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_logging_config.cfg
+++ /dev/null
@@ -1,9 +0,0 @@
-!
-logging logfile anil 4 size 10485760
-logging level vlan 4
-logging server 1.2.3.4 facility local0
-logging server 1.2.34.5 port 34
-logging server 1.2.3.5 4 facility local2 port 23
-logging server anil 5
-logging server tapas 4 facility local2 port 23
-!
diff --git a/test/units/modules/network/cnos/fixtures/cnos_static_route.cfg b/test/units/modules/network/cnos/fixtures/cnos_static_route.cfg
deleted file mode 100644
index b42f204417..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_static_route.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-ip route 1.2.3.4/32 1.2.34.5
-ip route 10.241.106.0/24 Ethernet1/13 10.241.107.1 113 tag 1013 description anil
-ip route 10.8.0.0/14 15.16.17.18
diff --git a/test/units/modules/network/cnos/fixtures/cnos_system_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_system_config.cfg
deleted file mode 100644
index b1e07b7c12..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_system_config.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-hostname lenovo
-
-ip route 1.2.0.0/24 Null0 255
-ip route 1.2.3.4/31 Ethernet1/44 1.2.3.1
-ip route 1.2.3.4/32 1.2.34.5
-ip route 10.241.106.0/24 Ethernet1/13 10.241.107.1 113 tag 1013 description anil
-ip route 10.241.106.4/32 1.2.3.5 tag 333 description anillll
-ip route 10.241.106.4/32 1.3.56.7
-ip route 10.241.107.0/24 10.241.107.1
-ip route 10.241.107.1/32 Ethernet1/33 10.241.107.2 100 tag 111 description anil
-
diff --git a/test/units/modules/network/cnos/fixtures/cnos_user_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_user_config.cfg
deleted file mode 100644
index 5a39ba3d8e..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_user_config.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-User:admin
- role: network-admin
-
-User:ansible
- role: network-operator
-no password set. Local login not allowed
-this user is created by remote authentication
-Remote login through RADIUS/TACACS+ is possible
diff --git a/test/units/modules/network/cnos/fixtures/cnos_vlag_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_vlag_config.cfg
deleted file mode 100644
index 1f8daf37fc..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_vlag_config.cfg
+++ /dev/null
@@ -1,63 +0,0 @@
- Global State : enabled
- VRRP active/active mode : enabled
- vLAG system MAC : 08:17:f4:c3:de:38
- ISL Information:
- PCH Ifindex State Previous State
- -------+-----------+-----------+---------------------------------
- 33 100033 Down Down
-
- Mis-Match Information:
- Local Peer
- -------------+---------------------------+-----------------------
- Match Result : Mis-match Mis-match
- Tier ID : 313 0
- System Type : G8272
- OS Version : 10.8.x.x 0.0.x.x
-
- Role Information:
- Local Peer
- -------------+---------------------------+-----------------------
- Admin Role : Primary Unselected
- Oper Role : Primary Unselected
- Priority : 1313 0
- System MAC : a4:8c:db:33:bc:01 00:00:00:00:00:00
-
- Consistency Checking Information:
- State : enabled
- Strict Mode : enabled
- Final Result : pass
-
- FDB refresh Information:
- FDB is doing refresh with below setting:
- FDB refresh is configured
- Bridge FDB aging timer is 1800 second(s)
-
- FDB synchronization Information:
- FDB is NOT being synchronized.
-
- Auto Recovery Interval 266s (Finished)
-
- Startup Delay Interval 323s (Finished)
-
- Health Check Information:
- Health check Peer IP Address: 1.2.3.4
- Health check Local IP Address: 0.0.0.0
- Health check retry interval: 133 seconds
- Health check number of keepalive attempts: 13
- Health check keepalive interval: 131 seconds
- Health check status: DOWN
-
- Peer Gateway State : enabled
-
- VLAG instance 1 : enabled
- Instance Information
- PCH ifindex State Previous State Cons Res
- ----------+-----------+--------------+-----------------+--------
- 1003 101003 Down Down pass
-
- VLAG instance 33 : enabled
- Instance Information
- PCH ifindex State Previous State Cons Res
- ----------+-----------+--------------+-----------------+--------
- 333 0 Down Down pass
-
diff --git a/test/units/modules/network/cnos/fixtures/cnos_vlan_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_vlan_config.cfg
deleted file mode 100644
index e1b750beac..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_vlan_config.cfg
+++ /dev/null
@@ -1,77 +0,0 @@
-Flags:
-u - untagged egress traffic for this VLAN
-t - tagged egress traffic for this VLAN
-
-d - auto-provisioned VLAN
-h - static and auto-provisioned VLAN
-
-VLAN Name Status IPMC FLOOD Ports
-======== ================================ ======= ========== ===================
-1 default ACTIVE IPv6
- po1(u)
- po2(u)
- po11(u)
- po12(u)
- po13(u)
- po14(u)
- po15(u)
- po17(u)
- po20(u)
- po100(u)
- po1001(u)
- po1002(u)
- po1003(u)
- po1004(u)
- Ethernet1/2(u)
- Ethernet1/3(u)
- Ethernet1/4(u)
- Ethernet1/9(u)
- Ethernet1/10(u)
- Ethernet1/11(u)
- Ethernet1/14(u)
- Ethernet1/15(u)
- Ethernet1/16(u)
- Ethernet1/17(u)
- Ethernet1/18(u)
- Ethernet1/19(u)
- Ethernet1/20(u)
- Ethernet1/21(u)
- Ethernet1/22(u)
- Ethernet1/23(u)
- Ethernet1/24(u)
- Ethernet1/25(u)
- Ethernet1/26(u)
- Ethernet1/27(u)
- Ethernet1/28(u)
- Ethernet1/29(u)
- Ethernet1/30(u)
- Ethernet1/31(u)
- Ethernet1/32(u)
- Ethernet1/33(u)
- Ethernet1/34(u)
- Ethernet1/35(u)
- Ethernet1/36(u)
- Ethernet1/37(u)
- Ethernet1/38(u)
- Ethernet1/39(u)
- Ethernet1/40(u)
- Ethernet1/41(u)
- Ethernet1/42(u)
- Ethernet1/43(u)
- Ethernet1/44(u)
- Ethernet1/45(u)
- Ethernet1/46(u)
- Ethernet1/47(u)
- Ethernet1/48(u)
- Ethernet1/49(u)
- Ethernet1/50(u)
- Ethernet1/51(u)
- Ethernet1/52(u)
- Ethernet1/53(u)
- Ethernet1/54(u)
-2 VLAN0002 ACTIVE IPv6
-3 VLAN0003 ACTIVE IPv4,IPv6
-5 VLAN0005 ACTIVE IPv4,IPv6
-12 VLAN0012 ACTIVE IPv4,IPv6
-13 anil ACTIVE IPv4,IPv6
-
diff --git a/test/units/modules/network/cnos/fixtures/cnos_vrf_config.cfg b/test/units/modules/network/cnos/fixtures/cnos_vrf_config.cfg
deleted file mode 100644
index 78ce6c370f..0000000000
--- a/test/units/modules/network/cnos/fixtures/cnos_vrf_config.cfg
+++ /dev/null
@@ -1,176 +0,0 @@
-Maximum number of vrfs allowed: 65
-VRF default, FIB ID 0
-Router ID: 20.141.2.1 (automatic)
-RD 0:0
-Interfaces:
- Vlan1
- Vlan2
- Vlan13
- loopback0
- Ethernet1/5
- Ethernet1/6
- Ethernet1/7
- Ethernet1/8
- Ethernet1/9
- Ethernet1/11
- Ethernet1/12
- Ethernet1/13
- Ethernet1/44
- po1
- po2
- po3
- po4
- po6
- po7
- po8
- po9
- po10
- po11
- po12
- po13
- po14
- po15
- po16
- po17
- po18
- po19
- po21
- po22
- po23
- po24
- po25
- po26
- po27
- po28
- po29
- po30
- po31
- po32
- po33
- po34
- po35
- po36
- po37
- po38
- po39
- po40
- po41
- po42
- po43
- po44
- po45
- po46
- po47
- po48
- po49
- po50
- po51
- po52
- po53
- po54
- po55
- po56
- po57
- po58
- po59
- po60
- po61
- po62
- po63
- po64
- po65
- po66
- po67
- po1001
- po1002
- po1003
- po1004
- Ethernet1/1
- Ethernet1/2
- Ethernet1/3
- Ethernet1/4
- Ethernet1/10
- Ethernet1/14
- Ethernet1/15
- Ethernet1/16
- Ethernet1/17
- Ethernet1/18
- Ethernet1/19
- Ethernet1/20
- Ethernet1/21
- Ethernet1/22
- Ethernet1/23
- Ethernet1/24
- Ethernet1/25
- Ethernet1/26
- Ethernet1/27
- Ethernet1/28
- Ethernet1/29
- Ethernet1/30
- Ethernet1/31
- Ethernet1/32
- Ethernet1/34
- Ethernet1/35
- Ethernet1/36
- Ethernet1/37
- Ethernet1/38
- Ethernet1/39
- Ethernet1/40
- Ethernet1/41
- Ethernet1/42
- Ethernet1/43
- Ethernet1/45
- Ethernet1/46
- Ethernet1/47
- Ethernet1/48
- Ethernet1/49
- Ethernet1/50
- Ethernet1/51
- Ethernet1/52
- Ethernet1/53
- Ethernet1/54
-!
-VRF management, FIB ID 1
-Router ID: 10.241.107.39 (automatic)
-RD 0:0
-Interfaces:
- mgmt0
-!
-VRF test, FIB ID 2
-Router ID is not set
-RD 1:201
-Interfaces:
- Ethernet1/33
-!
-VRF test1, FIB ID 3
-Router ID is not set
-RD 1:202
-Interfaces:
- loopback1
- loopback2
- loopback3
- loopback4
- loopback5
- loopback6
-!
-VRF test2, FIB ID 4
-Router ID is not set
-RD 0:0
-Interfaces:
-!
-VRF test3, FIB ID 5
-Router ID is not set
-RD 1:203
-Interfaces:
-!
-VRF test4, FIB ID 6
-Router ID is not set
-RD 1:204
-Interfaces:
-!
-VRF test5, FIB ID 7
-Router ID is not set
-RD 1:205
-Interfaces:
-!
-
diff --git a/test/units/modules/network/cnos/fixtures/l3_interface_config.cfg b/test/units/modules/network/cnos/fixtures/l3_interface_config.cfg
deleted file mode 100644
index ada2246402..0000000000
--- a/test/units/modules/network/cnos/fixtures/l3_interface_config.cfg
+++ /dev/null
@@ -1,27 +0,0 @@
-!
-version "10.8.0.42"
-!
-hostname ip10-241-107-39
-!
-vlan 13
- name dave
-!
-interface Ethernet1/9
- ip address 10.201.107.1 255.255.255.0
- ipv6 address dead::beaf/64
- description Bleh
-!
-interface Ethernet1/33
- description Hentammoo
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- microburst-detection enable threshold 25
- lldp tlv-select max-frame-size
- lacp port-priority 33
- spanning-tree mst 33-35 cost 33
- spanning-tree bpduguard enable
-!
-!
-end
diff --git a/test/units/modules/network/cnos/fixtures/show_interface_brief b/test/units/modules/network/cnos/fixtures/show_interface_brief
deleted file mode 100644
index 67cee78761..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_interface_brief
+++ /dev/null
@@ -1,92 +0,0 @@
---------------------------------------------------------------------------------
-Ethernet PVID Type Mode Status Reason Speed Port
-Interface NVLAN Ch#
---------------------------------------------------------------------------------
-Ethernet1/1 33 eth access down Link not connected 10000 33
-Ethernet1/2 1 eth access down Link not connected 10000 1001
-Ethernet1/3 1 eth trunk down Link not connected 10000 1003
-Ethernet1/4 1 eth trunk down Link not connected 10000 1004
-Ethernet1/5 -- eth routed down Link not connected 10000 --
-Ethernet1/6 -- eth routed down Link not connected 10000 --
-Ethernet1/7 -- eth routed down Link not connected 10000 --
-Ethernet1/8 -- eth routed down Link not connected 10000 --
-Ethernet1/9 1 eth access down Link not connected 10000 --
-Ethernet1/10 1 eth access down Link not connected 10000 --
-Ethernet1/11 -- eth routed down Link not connected 10000 --
-Ethernet1/12 -- eth routed down Link not connected 10000 --
-Ethernet1/13 -- eth routed down Link not connected 10000 --
-Ethernet1/14 1 eth access down Link not connected 10000 --
-Ethernet1/15 1 eth access down Link not connected 10000 --
-Ethernet1/16 1 eth access down Link not connected 10000 --
-Ethernet1/17 1 eth access down Link not connected 10000 --
-Ethernet1/18 1 eth access down Link not connected 10000 --
-Ethernet1/19 1 eth access down Link not connected 10000 --
-Ethernet1/20 1 eth access down Link not connected 10000 --
-Ethernet1/21 1 eth access down Link not connected 10000 --
-Ethernet1/22 1 eth access down Link not connected 10000 --
-Ethernet1/23 1 eth access down Link not connected 10000 11
-Ethernet1/24 1 eth access down Link not connected 10000 --
-Ethernet1/25 1 eth access down Link not connected 10000 --
-Ethernet1/26 1 eth access down Link not connected 10000 --
-Ethernet1/27 1 eth access down Link not connected 10000 --
-Ethernet1/28 1 eth access down Link not connected 10000 --
-Ethernet1/29 1 eth access down Link not connected 10000 --
-Ethernet1/30 1 eth access down Link not connected 10000 --
-Ethernet1/31 1 eth access down Link not connected 10000 --
-Ethernet1/32 1 eth access down Link not connected 10000 --
-Ethernet1/33 33 eth access down Link not connected 10000 --
-Ethernet1/34 1 eth access down Link not connected 10000 --
-Ethernet1/35 1 eth access down Link not connected 10000 --
-Ethernet1/36 1 eth access down Link not connected 10000 --
-Ethernet1/37 1 eth access down Link not connected 10000 --
-Ethernet1/38 1 eth access down Link not connected 10000 --
-Ethernet1/39 1 eth access down Link not connected 10000 --
-Ethernet1/40 1 eth access down Link not connected 10000 --
-Ethernet1/41 1 eth access down Link not connected 10000 --
-Ethernet1/42 1 eth access down Link not connected 10000 --
-Ethernet1/43 1 eth access down Link not connected 10000 --
-Ethernet1/44 1 eth access down Link not connected 10000 --
-Ethernet1/45 1 eth access down Link not connected 10000 --
-Ethernet1/46 1 eth access down Link not connected 10000 --
-Ethernet1/47 1 eth access down Link not connected 10000 --
-Ethernet1/48 1 eth access down Link not connected 10000 --
-Ethernet1/49 1 eth access down Link not connected 40000 --
-Ethernet1/50 1 eth access down Link not connected 40000 --
-Ethernet1/51 1 eth access down Link not connected 40000 --
-Ethernet1/52 1 eth access down Link not connected 40000 --
-Ethernet1/53 1 eth access down Link not connected 40000 --
-Ethernet1/54 1 eth access down Link not connected 40000 --
-
---------------------------------------------------------------------------------
-Port-channel PVID Type Mode Status Reason Speed Protocol
-Interface NVLAN
---------------------------------------------------------------------------------
-po1 1 eth access down No link up members NA none
-po2 1 eth access down No link up members NA none
-po11 1 eth access down No link up members NA lacp
-po13 1 eth trunk down No link up members NA none
-po17 1 eth trunk down No link up members NA none
-po20 1 eth access down No link up members NA none
-po33 33 eth access down No link up members NA none
-po100 1 eth trunk down No link up members NA none
-po1001 1 eth access down No link up members NA lacp
-po1002 1 eth access down No link up members NA none
-po1003 1 eth trunk down No link up members NA lacp
-po1004 1 eth trunk down No link up members NA lacp
-
---------------------------------------------------------------------------------
-Port VRF Status IP Address Speed MTU
---------------------------------------------------------------------------------
-mgmt0 management up 10.241.107.39 1000 1500
-
--------------------------------------------------------------------------------
-Interface Secondary VLAN(Type) Status Reason
--------------------------------------------------------------------------------
-Vlan1 -- down VLAN is down
-
---------------------------------------------------------------------------------
-Interface Status Description
---------------------------------------------------------------------------------
-loopback0 up --
-loopback3 up --
-
diff --git a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_33_switchport b/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_33_switchport
deleted file mode 100644
index a7c271c9a0..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_33_switchport
+++ /dev/null
@@ -1,13 +0,0 @@
-Interface Ethernet1/33
- Switchport : enabled
- Switchport mode : access
- Ingress filter : enable
- Tag Ingress PVID : disabled
- Acceptable frame types : all
- Default/Native Vlan : 1
- Configured Vlans : 1
- Enabled Vlans : 1
- Egress-Tagged Vlans : None
- Private-VLAN : Disabled
- Private-VLAN Port Type : None
- Primary/Secondary VLAN : None/None
diff --git a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_44_switchport b/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_44_switchport
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_44_switchport
+++ /dev/null
diff --git a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_45_switchport b/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_45_switchport
deleted file mode 100644
index 3001009112..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_interface_ethernet_1_45_switchport
+++ /dev/null
@@ -1,14 +0,0 @@
-Interface Ethernet1/45
- Switchport : enabled
- Switchport mode : access
- Ingress filter : enable
- Tag Ingress PVID : disabled
- Acceptable frame types : all
- Default/Native Vlan : 1
- Configured Vlans : 1
- Enabled Vlans : 1
- Egress-Tagged Vlans : None
- Private-VLAN : Disabled
- Private-VLAN Port Type : None
- Primary/Secondary VLAN : None/None
-
diff --git a/test/units/modules/network/cnos/fixtures/show_interface_mac-address b/test/units/modules/network/cnos/fixtures/show_interface_mac-address
deleted file mode 100644
index d66bea1531..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_interface_mac-address
+++ /dev/null
@@ -1,72 +0,0 @@
---------------------------------------------------------------------------------
-Interface Mac-Address Burn-in Mac-Address
---------------------------------------------------------------------------------
-Ethernet1/1 a48c.db33.bc02 a48c.db33.bc02
-Ethernet1/2 a48c.db33.bc03 a48c.db33.bc03
-Ethernet1/3 a48c.db33.bc04 a48c.db33.bc04
-Ethernet1/4 a48c.db33.bc05 a48c.db33.bc05
-Ethernet1/5 a48c.db33.bc01 a48c.db33.bc06
-Ethernet1/6 a48c.db33.bc01 a48c.db33.bc07
-Ethernet1/7 a48c.db33.bc01 a48c.db33.bc08
-Ethernet1/8 a48c.db33.bc01 a48c.db33.bc09
-Ethernet1/9 a48c.db33.bc0a a48c.db33.bc0a
-Ethernet1/10 a48c.db33.bc0b a48c.db33.bc0b
-Ethernet1/11 a48c.db33.bc01 a48c.db33.bc0c
-Ethernet1/12 a48c.db33.bc01 a48c.db33.bc0d
-Ethernet1/13 a48c.db33.bc01 a48c.db33.bc0e
-Ethernet1/14 a48c.db33.bc0f a48c.db33.bc0f
-Ethernet1/15 a48c.db33.bc10 a48c.db33.bc10
-Ethernet1/16 a48c.db33.bc11 a48c.db33.bc11
-Ethernet1/17 a48c.db33.bc12 a48c.db33.bc12
-Ethernet1/18 a48c.db33.bc13 a48c.db33.bc13
-Ethernet1/19 a48c.db33.bc14 a48c.db33.bc14
-Ethernet1/20 a48c.db33.bc15 a48c.db33.bc15
-Ethernet1/21 a48c.db33.bc16 a48c.db33.bc16
-Ethernet1/22 a48c.db33.bc17 a48c.db33.bc17
-Ethernet1/23 a48c.db33.bc18 a48c.db33.bc18
-Ethernet1/24 a48c.db33.bc19 a48c.db33.bc19
-Ethernet1/25 a48c.db33.bc1a a48c.db33.bc1a
-Ethernet1/26 a48c.db33.bc1b a48c.db33.bc1b
-Ethernet1/27 a48c.db33.bc1c a48c.db33.bc1c
-Ethernet1/28 a48c.db33.bc1d a48c.db33.bc1d
-Ethernet1/29 a48c.db33.bc1e a48c.db33.bc1e
-Ethernet1/30 a48c.db33.bc1f a48c.db33.bc1f
-Ethernet1/31 a48c.db33.bc20 a48c.db33.bc20
-Ethernet1/32 a48c.db33.bc21 a48c.db33.bc21
-Ethernet1/33 a48c.db33.bc22 a48c.db33.bc22
-Ethernet1/34 a48c.db33.bc23 a48c.db33.bc23
-Ethernet1/35 a48c.db33.bc24 a48c.db33.bc24
-Ethernet1/36 a48c.db33.bc25 a48c.db33.bc25
-Ethernet1/37 a48c.db33.bc26 a48c.db33.bc26
-Ethernet1/38 a48c.db33.bc27 a48c.db33.bc27
-Ethernet1/39 a48c.db33.bc28 a48c.db33.bc28
-Ethernet1/40 a48c.db33.bc29 a48c.db33.bc29
-Ethernet1/41 a48c.db33.bc2a a48c.db33.bc2a
-Ethernet1/42 a48c.db33.bc2b a48c.db33.bc2b
-Ethernet1/43 a48c.db33.bc2c a48c.db33.bc2c
-Ethernet1/44 a48c.db33.bc2d a48c.db33.bc2d
-Ethernet1/45 a48c.db33.bc2e a48c.db33.bc2e
-Ethernet1/46 a48c.db33.bc2f a48c.db33.bc2f
-Ethernet1/47 a48c.db33.bc30 a48c.db33.bc30
-Ethernet1/48 a48c.db33.bc31 a48c.db33.bc31
-Ethernet1/49 a48c.db33.bc32 a48c.db33.bc32
-Ethernet1/50 a48c.db33.bc33 a48c.db33.bc33
-Ethernet1/51 a48c.db33.bc34 a48c.db33.bc34
-Ethernet1/52 a48c.db33.bc35 a48c.db33.bc35
-Ethernet1/53 a48c.db33.bc36 a48c.db33.bc36
-Ethernet1/54 a48c.db33.bc37 a48c.db33.bc37
-mgmt0 a48c.db33.bc00 a48c.db33.bc00
-po1 0e00.0000.0001 (not set)
-po2 0e00.0000.0002 (not set)
-po11 a48c.db33.bc18 (not set)
-po13 0e00.0000.0003 (not set)
-po17 0e00.0000.0004 (not set)
-po20 0e00.0000.0005 (not set)
-po33 a48c.db33.bc02 (not set)
-po100 0e00.0000.0006 (not set)
-po1001 a48c.db33.bc03 (not set)
-po1002 0e00.0000.0007 (not set)
-po1003 a48c.db33.bc04 (not set)
-po1004 a48c.db33.bc05 (not set)
-Vlan1 a48c.db33.bc01 (not set)
-
diff --git a/test/units/modules/network/cnos/fixtures/show_interface_status b/test/units/modules/network/cnos/fixtures/show_interface_status
deleted file mode 100644
index dae90765ff..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_interface_status
+++ /dev/null
@@ -1,74 +0,0 @@
---------------------------------------------------------------------------------
-Port Name Status Vlan Duplex Speed Type
---------------------------------------------------------------------------------
-Ethernet1/1 Link 1 to LP21 notconnec 33 full 10000 eth
-Ethernet1/2 Link 2 to LP21 notconnec 1 full 10000 eth
-Ethernet1/3 Link 1 to LP22 notconnec trunk full 10000 eth
-Ethernet1/4 Link 2 to LP22 notconnec trunk full 10000 eth
-Ethernet1/5 Link 1 to LP23 notconnec routed full 10000 eth
-Ethernet1/6 Link 2 to LP23 notconnec routed full 10000 eth
-Ethernet1/7 Link 1 to LP24 notconnec routed full 10000 eth
-Ethernet1/8 Link 2 to LP24 notconnec routed full 10000 eth
-Ethernet1/9 -- notconnec 1 full 10000 eth
-Ethernet1/10 -- notconnec 1 full 10000 eth
-Ethernet1/11 -- notconnec routed full 10000 eth
-Ethernet1/12 -- notconnec routed full 10000 eth
-Ethernet1/13 -- notconnec routed full 10000 eth
-Ethernet1/14 -- notconnec 1 full 10000 eth
-Ethernet1/15 -- notconnec 1 full 10000 eth
-Ethernet1/16 -- notconnec 1 full 10000 eth
-Ethernet1/17 -- notconnec 1 full 10000 eth
-Ethernet1/18 -- notconnec 1 full 10000 eth
-Ethernet1/19 -- notconnec 1 full 10000 eth
-Ethernet1/20 -- notconnec 1 full 10000 eth
-Ethernet1/21 -- notconnec 1 full 10000 eth
-Ethernet1/22 -- notconnec 1 full 10000 eth
-Ethernet1/23 -- notconnec 1 full 10000 eth
-Ethernet1/24 -- notconnec 1 full 10000 eth
-Ethernet1/25 -- notconnec 1 full 10000 eth
-Ethernet1/26 -- notconnec 1 full 10000 eth
-Ethernet1/27 -- notconnec 1 full 10000 eth
-Ethernet1/28 -- notconnec 1 full 10000 eth
-Ethernet1/29 -- notconnec 1 full 10000 eth
-Ethernet1/30 -- notconnec 1 full 10000 eth
-Ethernet1/31 -- notconnec 1 full 10000 eth
-Ethernet1/32 -- notconnec 1 full 10000 eth
-Ethernet1/33 Hentammoo notconnec 33 full 10000 eth
-Ethernet1/34 -- notconnec 1 full 10000 eth
-Ethernet1/35 -- notconnec 1 full 10000 eth
-Ethernet1/36 -- notconnec 1 full 10000 eth
-Ethernet1/37 -- notconnec 1 full 10000 eth
-Ethernet1/38 -- notconnec 1 full 10000 eth
-Ethernet1/39 -- notconnec 1 full 10000 eth
-Ethernet1/40 -- notconnec 1 full 10000 eth
-Ethernet1/41 -- notconnec 1 full 10000 eth
-Ethernet1/42 -- notconnec 1 full 10000 eth
-Ethernet1/43 -- notconnec 1 full 10000 eth
-Ethernet1/44 -- notconnec 1 full 10000 eth
-Ethernet1/45 -- notconnec 1 full 10000 eth
-Ethernet1/46 -- notconnec 1 full 10000 eth
-Ethernet1/47 -- notconnec 1 full 10000 eth
-Ethernet1/48 -- notconnec 1 full 10000 eth
-Ethernet1/49 -- notconnec 1 full 40000 eth
-Ethernet1/50 -- notconnec 1 full 40000 eth
-Ethernet1/51 -- notconnec 1 full 40000 eth
-Ethernet1/52 -- notconnec 1 full 40000 eth
-Ethernet1/53 -- notconnec 1 full 40000 eth
-Ethernet1/54 -- notconnec 1 full 40000 eth
-po1 -- notconnec 1 full NA eth
-po2 -- notconnec 1 full NA eth
-po11 -- notconnec 1 full NA eth
-po13 -- notconnec trunk full NA eth
-po17 -- notconnec trunk full NA eth
-po20 -- notconnec 1 full NA eth
-po33 Hentammoo notconnec 33 full NA eth
-po100 -- notconnec trunk full NA eth
-po1001 -- notconnec 1 full NA eth
-po1002 -- notconnec 1 full NA eth
-po1003 -- notconnec trunk full NA eth
-po1004 -- notconnec trunk full NA eth
-mgmt0 -- connected routed full 1000 eth
-loopback0 -- connected routed half NA eth
-loopback3 -- connected routed half NA eth
-Vlan1 -- notconnec routed auto NA --
-
diff --git a/test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all b/test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all
deleted file mode 100644
index 4f3a22a12d..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all
+++ /dev/null
@@ -1,10 +0,0 @@
-Interface IP-Address Admin-Status Link-Status VRF
-Ethernet1/5 20.131.1.1 up down default
-Ethernet1/6 20.131.2.1 up down default
-Ethernet1/7 20.141.1.1 up down default
-Ethernet1/8 20.141.2.1 up down default
-Ethernet1/11 1.1.1.2 up down default
-Ethernet1/12 100.10.10.10 up down default
-Ethernet1/13 10.241.107.54 up down default
-mgmt0 10.241.107.39 up up management
-
diff --git a/test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all b/test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all
deleted file mode 100644
index f229566a33..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all
+++ /dev/null
@@ -1,5 +0,0 @@
-Interface IPv6 Address/Link-local Address Admin-Status Link-Status VRF
-loopback0 fe80::200:ff:fe00:0 up up default
-loopback3 fe80::200:ff:fe00:0 up up default
-mgmt0 fe80::a68c:dbff:fe33:bc00 up up management
-
diff --git a/test/units/modules/network/cnos/fixtures/show_lldp_neighbors b/test/units/modules/network/cnos/fixtures/show_lldp_neighbors
deleted file mode 100644
index e733d39c3b..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_lldp_neighbors
+++ /dev/null
@@ -1,8 +0,0 @@
-Capability codes:
- (R) Router, (B) Bridge, (T) Telephone, (C) DOCSIS Cable Device
- (W) WLAN Access Point, (P) Repeater, (S) Station, (O) Other
-Device ID Local Intf Hold-time Capability Port ID
-INDIA-LAB-1-C3750X.l... mgmt0 120 BR Gi1/0/30
-
-Total entries displayed: 1
-
diff --git a/test/units/modules/network/cnos/fixtures/show_process_memory b/test/units/modules/network/cnos/fixtures/show_process_memory
deleted file mode 100644
index f4b7fe25eb..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_process_memory
+++ /dev/null
@@ -1,38 +0,0 @@
-PID MemAlloc StkSize RSSMem LibMem StackBase/Ptr Process
------ -------- ---------- ------- ------- ------------------ ----------
- 1 6204 8388608 12312 5380 bff01bc0/bff01590 nsm
- 4 2608 8388608 5264 5312 bfa92080/bfa91ab0 ospfd
- 7 14152 8388608 5924 5284 bfaa7250/bfaa6c20 hostpd
- 10 2092 8388608 4652 5312 bfafcbf0/bfafc620 mribd
- 11 2024 8388608 3108 5284 bfb7c650/bfb7c080 pimd
- 14 2016 8388608 4896 5312 bff0ff10/bff0f940 lacpd
- 17 48608 8388608 36200 5312 bfc10e30/bfc10830 mstpd
- 24 2520 8388608 5340 5312 bf90ad00/bf90a730 onmd
- 26 228628 8388608 77312 5376 bfb34e10/bfb34830 hsl
- 28 2020 8388608 4784 5312 bff3c410/bff3be10 oam
- 39 21396 8388608 8184 5312 bf9b1a50/bf9b1460 vrrpd
- 40 2480 8388608 4064 5336 bfe5f020/bfe5ea20 ndd
- 42 2860 8388608 5672 5364 bfe83aa0/bfe83470 ribd
- 44 3528 8388608 7140 5328 bf90b720/bf90b110 bgpd
- 45 1772 8388608 4404 5312 bf9fc250/bf9fbc80 hostmibd
- 46 39564 8388608 25632 5428 bfe30db0/bfe30780 l2mribd
- 62 1876 8388608 3920 5312 bf81c210/bf81bc40 sysmgr
- 63 94380 8388608 13804 5292 bfcb67d0/bfcb61d0 nwvd
- 64 1920 8388608 5664 5676 bfc28470/bfc27ea0 ovsdbd
- 65 96548 8388608 55168 5292 bfdbcf80/bfdbc980 vlagd
- 66 1756 8388608 3808 5284 bfa15ab0/bfa154e0 slpd
- 71 2116 8388608 5880 10076 bfe8abd0/bfe8a600 npad
- 72 2220 8388608 5452 7936 bf9e6da0/bf9e67d0 hscd
- 73 1920 8388608 2760 5284 bfbc6cd0/bfbc6700 dhcpsnpd
- 74 58620 8388608 16168 9956 bfe1af70/bfe1a970 telemetryd
- 75 1756 8388608 3456 5284 bfb21da0/bfb217d0 securityd
- 76 2152 8388608 4216 5284 bfc36900/bfc36330 l2fd
- 77 1920 8388608 3876 5284 bf91e480/bf91dec0 sflowd
- 78 1888 8388608 3772 5284 bffd10c0/bffd0af0 qosd
- 69 70520 8388608 5584 5260 bfca0980/bfca0490 platform_mgr
- 70 26828 8388608 2116 2040 bfce09c0/bfce0440 service_mgr
-
- total used free shared buff/cache available
-Mem: 4081464 442136 3144092 153168 495236 3452732
-Swap: 0 0 0
-
diff --git a/test/units/modules/network/cnos/fixtures/show_run b/test/units/modules/network/cnos/fixtures/show_run
deleted file mode 100644
index 4367c90fe5..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_run
+++ /dev/null
@@ -1,331 +0,0 @@
-!
-version "10.8.0.42"
-!
-hostname ip10-241-107-39
-!
-banner motd NMS India CNOS
-banner motd NMS India CNOS G8272
-!
-clock timezone EDT 0 0
-!
-logging console 7
-vrf context management
- ip route 0.0.0.0/0 10.241.107.1
-!
-!
-port-channel load-balance ethernet destination-mac
-port-channel load-balance ethernet source-interface
-feature telnet
-ip domain-name labs.lenovo.com vrf management
-ip domain-list labs.lenovo.com vrf management
-ip name-server 10.241.104.120 vrf management
-ip name-server 10.240.0.10 vrf management
-ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf management
-ip host ip10-241-107-39 10.241.107.39 vrf management
-ip domain-name labs.lenovo.com vrf default
-ip domain-list labs.lenovo.com vrf default
-ip name-server 10.240.0.10 vrf default
-ip name-server 10.241.104.120 vrf default
-ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf default
-ip host ip10-241-107-39 10.241.107.39 vrf default
-ntp server 173.230.154.254 prefer
-ntp server 97.127.86.33 prefer
-ntp server 129.250.35.250 prefer
-ntp server 174.136.103.130 prefer
-ntp server 69.10.161.7 prefer
-ntp server 96.226.123.196 prefer
-ntp server 104.238.179.130 prefer
-ntp server 108.61.73.244 prefer
-ntp server 208.75.89.4 prefer
-snmp-server community public group network-operator
-snmp-server community private group network-admin
-snmp-server contact Ralph
-username admin role network-admin password encrypted $6$bJoWyEu/$9pzSgFPAKGRm1stpTCEl3I39htbjxiFCfhqiHag1NQiKHv/IiLQ2lYW0V3p7p72SgSmVHp38em9P9R/EdePpk/
-logging server 10.241.107.231
-logging server 10.241.107.222
-feature restApi
-ovsdb pki ovsdb_mgmt vrf management
-ovsdb pki ovsdb_default vrf default
-lacp system-priority 32769
-vlag tier-id 313
-vlag priority 1313
-vlag isl port-channel 100
-vlag hlthchk keepalive-attempts 5
-vlag hlthchk peer-ip 1.2.3.4
-vlag auto-recovery 266
-vlag startup-delay 323
-vlag enable
-vlag instance 1 port-channel 1003
-vlag instance 1 enable
-vlag instance 2 port-channel 20
-vlag instance 2 enable
-vlag instance 12 port-channel 23
-vlag instance 33 port-channel 333
-vlag instance 33 enable
-spanning-tree mode mst
-telemetry heartbeat enabled interval 15
-!
-policy-map type control-plane copp-system-policy
- class type control-plane copp-s-pvst-bpdu
- police pps 500
- class type control-plane copp-s-ecp
- police pps 3000
- class type control-plane copp-s-igmp
- police pps 3000
-!
-vlan 1-2
- no flood ipv4
-!
-vlan 3
-!
-vlan 5
-!
-vlan 12
-!
-vlan 13
- name dave
-!
-vlan dot1q tag native egress-only
-!
-interface Ethernet1/1
- description Link 1 to LP21
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- channel-group 33 mode on
-!
-interface Ethernet1/2
- description Link 2 to LP21
- channel-group 1001 mode active
-!
-interface Ethernet1/3
- description Link 1 to LP22
- switchport mode trunk
- channel-group 1003 mode active
-!
-interface Ethernet1/4
- description Link 2 to LP22
- switchport mode trunk
- channel-group 1004 mode active
-!
-interface Ethernet1/5
- description Link 1 to LP23
- no switchport
- ip address 20.131.1.1/30
-!
-interface Ethernet1/6
- description Link 2 to LP23
- no switchport
- ip address 20.131.2.1/30
-!
-interface Ethernet1/7
- description Link 1 to LP24
- no switchport
- ip address 20.141.1.1/30
-!
-interface Ethernet1/8
- description Link 2 to LP24
- no switchport
- ip address 20.141.2.1/30
-!
-interface Ethernet1/9
-!
-interface Ethernet1/10
-!
-interface Ethernet1/11
- no switchport
- mtu 1402
- ip address 1.1.1.2/8
-!
-interface Ethernet1/12
- no switchport
- ip address 100.10.10.10/24
-!
-interface Ethernet1/13
- no switchport
- ip address 10.241.107.54/24
- vrrp 254
- address 10.241.107.55
- priority 254
- no shutdown
- ip arp timeout 1500
-!
-interface Ethernet1/14
-!
-interface Ethernet1/15
-!
-interface Ethernet1/16
-!
-interface Ethernet1/17
-!
-interface Ethernet1/18
-!
-interface Ethernet1/19
-!
-interface Ethernet1/20
-!
-interface Ethernet1/21
-!
-interface Ethernet1/22
-!
-interface Ethernet1/23
- channel-group 11 mode active
- lacp port-priority 32769
-!
-interface Ethernet1/24
-!
-interface Ethernet1/25
-!
-interface Ethernet1/26
-!
-interface Ethernet1/27
-!
-interface Ethernet1/28
-!
-interface Ethernet1/29
-!
-interface Ethernet1/30
-!
-interface Ethernet1/31
-!
-interface Ethernet1/32
-!
-interface Ethernet1/33
- description Hentammoo
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- microburst-detection enable threshold 25
- lldp tlv-select max-frame-size
- lacp port-priority 33
- spanning-tree mst 33-35 cost 33
- spanning-tree bpduguard enable
-!
-interface Ethernet1/34
-!
-interface Ethernet1/35
-!
-interface Ethernet1/36
-!
-interface Ethernet1/37
-!
-interface Ethernet1/38
-!
-interface Ethernet1/39
-!
-interface Ethernet1/40
-!
-interface Ethernet1/41
-!
-interface Ethernet1/42
-!
-interface Ethernet1/43
-!
-interface Ethernet1/44
-!
-interface Ethernet1/45
-!
-interface Ethernet1/46
-!
-interface Ethernet1/47
-!
-interface Ethernet1/48
-!
-interface Ethernet1/49
-!
-interface Ethernet1/50
-!
-interface Ethernet1/51
-!
-interface Ethernet1/52
-!
-interface Ethernet1/53
-!
-interface Ethernet1/54
-!
-interface loopback0
- no switchport
-!
-interface mgmt0
- no switchport
- vrf member management
- no ip address dhcp
- ip address 10.241.107.39/24
- no ipv6 address dhcp
-!
-interface Vlan1
- no switchport
-!
-interface port-channel1
-!
-interface port-channel2
-!
-interface port-channel11
- lacp min-links 2
-!
-interface port-channel13
- switchport mode trunk
-!
-interface port-channel17
- switchport mode trunk
-!
-interface port-channel20
-!
-interface port-channel33
- description Hentammoo
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- spanning-tree mst 33-35 cost 33
- spanning-tree bpduguard enable
-!
-interface port-channel100
- switchport mode trunk
-!
-interface port-channel1001
-!
-interface port-channel1002
-!
-interface port-channel1003
- switchport mode trunk
-!
-interface port-channel1004
- switchport mode trunk
-!
-router bgp 33
- router-id 1.2.3.4
- bestpath always-compare-med
- cluster-id 1.2.3.4
- confederation identifier 333
- enforce-first-as
- bgp as-local-count 33
- bestpath compare-confed-aspath
- maxas-limit 333
- graceful-restart-helper
- graceful-restart stalepath-time 333
- timers bgp 333 3333
- address-family ipv4 unicast
- synchronization
- network 0.0.0.0 backdoor
- dampening 13 233 333 15 33
- neighbor 10.241.107.40 remote-as 13
- bfd
- address-family ipv4 unicast
- next-hop-self
-!
-route-map anil permit 10
-!
-ip arp timeout 1000
-!
-line con 0
-line vty 0
- exec-timeout 90 0
-line vty 1 39
-!
-!
-!
-end
-
diff --git a/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_33 b/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_33
deleted file mode 100644
index a7c271c9a0..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_33
+++ /dev/null
@@ -1,13 +0,0 @@
-Interface Ethernet1/33
- Switchport : enabled
- Switchport mode : access
- Ingress filter : enable
- Tag Ingress PVID : disabled
- Acceptable frame types : all
- Default/Native Vlan : 1
- Configured Vlans : 1
- Enabled Vlans : 1
- Egress-Tagged Vlans : None
- Private-VLAN : Disabled
- Private-VLAN Port Type : None
- Primary/Secondary VLAN : None/None
diff --git a/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_45 b/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_45
deleted file mode 100644
index 3001009112..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_run_interface_ethernet_1_45
+++ /dev/null
@@ -1,14 +0,0 @@
-Interface Ethernet1/45
- Switchport : enabled
- Switchport mode : access
- Ingress filter : enable
- Tag Ingress PVID : disabled
- Acceptable frame types : all
- Default/Native Vlan : 1
- Configured Vlans : 1
- Enabled Vlans : 1
- Egress-Tagged Vlans : None
- Private-VLAN : Disabled
- Private-VLAN Port Type : None
- Primary/Secondary VLAN : None/None
-
diff --git a/test/units/modules/network/cnos/fixtures/show_running-config b/test/units/modules/network/cnos/fixtures/show_running-config
deleted file mode 100644
index 4367c90fe5..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_running-config
+++ /dev/null
@@ -1,331 +0,0 @@
-!
-version "10.8.0.42"
-!
-hostname ip10-241-107-39
-!
-banner motd NMS India CNOS
-banner motd NMS India CNOS G8272
-!
-clock timezone EDT 0 0
-!
-logging console 7
-vrf context management
- ip route 0.0.0.0/0 10.241.107.1
-!
-!
-port-channel load-balance ethernet destination-mac
-port-channel load-balance ethernet source-interface
-feature telnet
-ip domain-name labs.lenovo.com vrf management
-ip domain-list labs.lenovo.com vrf management
-ip name-server 10.241.104.120 vrf management
-ip name-server 10.240.0.10 vrf management
-ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf management
-ip host ip10-241-107-39 10.241.107.39 vrf management
-ip domain-name labs.lenovo.com vrf default
-ip domain-list labs.lenovo.com vrf default
-ip name-server 10.240.0.10 vrf default
-ip name-server 10.241.104.120 vrf default
-ip host ip10-241-107-39.labs.lenovo.com 10.241.107.39 vrf default
-ip host ip10-241-107-39 10.241.107.39 vrf default
-ntp server 173.230.154.254 prefer
-ntp server 97.127.86.33 prefer
-ntp server 129.250.35.250 prefer
-ntp server 174.136.103.130 prefer
-ntp server 69.10.161.7 prefer
-ntp server 96.226.123.196 prefer
-ntp server 104.238.179.130 prefer
-ntp server 108.61.73.244 prefer
-ntp server 208.75.89.4 prefer
-snmp-server community public group network-operator
-snmp-server community private group network-admin
-snmp-server contact Ralph
-username admin role network-admin password encrypted $6$bJoWyEu/$9pzSgFPAKGRm1stpTCEl3I39htbjxiFCfhqiHag1NQiKHv/IiLQ2lYW0V3p7p72SgSmVHp38em9P9R/EdePpk/
-logging server 10.241.107.231
-logging server 10.241.107.222
-feature restApi
-ovsdb pki ovsdb_mgmt vrf management
-ovsdb pki ovsdb_default vrf default
-lacp system-priority 32769
-vlag tier-id 313
-vlag priority 1313
-vlag isl port-channel 100
-vlag hlthchk keepalive-attempts 5
-vlag hlthchk peer-ip 1.2.3.4
-vlag auto-recovery 266
-vlag startup-delay 323
-vlag enable
-vlag instance 1 port-channel 1003
-vlag instance 1 enable
-vlag instance 2 port-channel 20
-vlag instance 2 enable
-vlag instance 12 port-channel 23
-vlag instance 33 port-channel 333
-vlag instance 33 enable
-spanning-tree mode mst
-telemetry heartbeat enabled interval 15
-!
-policy-map type control-plane copp-system-policy
- class type control-plane copp-s-pvst-bpdu
- police pps 500
- class type control-plane copp-s-ecp
- police pps 3000
- class type control-plane copp-s-igmp
- police pps 3000
-!
-vlan 1-2
- no flood ipv4
-!
-vlan 3
-!
-vlan 5
-!
-vlan 12
-!
-vlan 13
- name dave
-!
-vlan dot1q tag native egress-only
-!
-interface Ethernet1/1
- description Link 1 to LP21
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- channel-group 33 mode on
-!
-interface Ethernet1/2
- description Link 2 to LP21
- channel-group 1001 mode active
-!
-interface Ethernet1/3
- description Link 1 to LP22
- switchport mode trunk
- channel-group 1003 mode active
-!
-interface Ethernet1/4
- description Link 2 to LP22
- switchport mode trunk
- channel-group 1004 mode active
-!
-interface Ethernet1/5
- description Link 1 to LP23
- no switchport
- ip address 20.131.1.1/30
-!
-interface Ethernet1/6
- description Link 2 to LP23
- no switchport
- ip address 20.131.2.1/30
-!
-interface Ethernet1/7
- description Link 1 to LP24
- no switchport
- ip address 20.141.1.1/30
-!
-interface Ethernet1/8
- description Link 2 to LP24
- no switchport
- ip address 20.141.2.1/30
-!
-interface Ethernet1/9
-!
-interface Ethernet1/10
-!
-interface Ethernet1/11
- no switchport
- mtu 1402
- ip address 1.1.1.2/8
-!
-interface Ethernet1/12
- no switchport
- ip address 100.10.10.10/24
-!
-interface Ethernet1/13
- no switchport
- ip address 10.241.107.54/24
- vrrp 254
- address 10.241.107.55
- priority 254
- no shutdown
- ip arp timeout 1500
-!
-interface Ethernet1/14
-!
-interface Ethernet1/15
-!
-interface Ethernet1/16
-!
-interface Ethernet1/17
-!
-interface Ethernet1/18
-!
-interface Ethernet1/19
-!
-interface Ethernet1/20
-!
-interface Ethernet1/21
-!
-interface Ethernet1/22
-!
-interface Ethernet1/23
- channel-group 11 mode active
- lacp port-priority 32769
-!
-interface Ethernet1/24
-!
-interface Ethernet1/25
-!
-interface Ethernet1/26
-!
-interface Ethernet1/27
-!
-interface Ethernet1/28
-!
-interface Ethernet1/29
-!
-interface Ethernet1/30
-!
-interface Ethernet1/31
-!
-interface Ethernet1/32
-!
-interface Ethernet1/33
- description Hentammoo
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- microburst-detection enable threshold 25
- lldp tlv-select max-frame-size
- lacp port-priority 33
- spanning-tree mst 33-35 cost 33
- spanning-tree bpduguard enable
-!
-interface Ethernet1/34
-!
-interface Ethernet1/35
-!
-interface Ethernet1/36
-!
-interface Ethernet1/37
-!
-interface Ethernet1/38
-!
-interface Ethernet1/39
-!
-interface Ethernet1/40
-!
-interface Ethernet1/41
-!
-interface Ethernet1/42
-!
-interface Ethernet1/43
-!
-interface Ethernet1/44
-!
-interface Ethernet1/45
-!
-interface Ethernet1/46
-!
-interface Ethernet1/47
-!
-interface Ethernet1/48
-!
-interface Ethernet1/49
-!
-interface Ethernet1/50
-!
-interface Ethernet1/51
-!
-interface Ethernet1/52
-!
-interface Ethernet1/53
-!
-interface Ethernet1/54
-!
-interface loopback0
- no switchport
-!
-interface mgmt0
- no switchport
- vrf member management
- no ip address dhcp
- ip address 10.241.107.39/24
- no ipv6 address dhcp
-!
-interface Vlan1
- no switchport
-!
-interface port-channel1
-!
-interface port-channel2
-!
-interface port-channel11
- lacp min-links 2
-!
-interface port-channel13
- switchport mode trunk
-!
-interface port-channel17
- switchport mode trunk
-!
-interface port-channel20
-!
-interface port-channel33
- description Hentammoo
- load-interval counter 2 33
- switchport access vlan 33
- storm-control broadcast level 12.50
- mtu 66
- spanning-tree mst 33-35 cost 33
- spanning-tree bpduguard enable
-!
-interface port-channel100
- switchport mode trunk
-!
-interface port-channel1001
-!
-interface port-channel1002
-!
-interface port-channel1003
- switchport mode trunk
-!
-interface port-channel1004
- switchport mode trunk
-!
-router bgp 33
- router-id 1.2.3.4
- bestpath always-compare-med
- cluster-id 1.2.3.4
- confederation identifier 333
- enforce-first-as
- bgp as-local-count 33
- bestpath compare-confed-aspath
- maxas-limit 333
- graceful-restart-helper
- graceful-restart stalepath-time 333
- timers bgp 333 3333
- address-family ipv4 unicast
- synchronization
- network 0.0.0.0 backdoor
- dampening 13 233 333 15 33
- neighbor 10.241.107.40 remote-as 13
- bfd
- address-family ipv4 unicast
- next-hop-self
-!
-route-map anil permit 10
-!
-ip arp timeout 1000
-!
-line con 0
-line vty 0
- exec-timeout 90 0
-line vty 1 39
-!
-!
-!
-end
-
diff --git a/test/units/modules/network/cnos/fixtures/show_sys-info b/test/units/modules/network/cnos/fixtures/show_sys-info
deleted file mode 100644
index a61b567844..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_sys-info
+++ /dev/null
@@ -1,62 +0,0 @@
-*** show boot ***
-Current ZTP State: Enable
-Current FLASH software:
- active image: version 10.8.0.42, downloaded 09:40:15 EDT Mon May 7 2018
- standby image: version 10.7.0.6, downloaded 11:02:12 EDT Thu Mar 29 2018
- Uboot: version 10.7.0.6, downloaded 11:02:14 EDT Thu Mar 29 2018
- ONIE: empty
-Currently set to boot software active image
-Current port mode: default mode
-Next boot port mode: default mode
-
-Currently scheduled reboot time: none
-
-
-*** show env fan detail ***
-Total Fan: 8
-+--------+-----+-----------------+---------------+-------+--------+
-| Module | Fan | Name | Air-Flow | Speed | Speed |
-| Number | ID | | Direction | (%) | (RPM) |
-+--------+-----+-----------------+---------------+-------+--------+
- 01 01 Fan1 Front-to-Back 23 4023
- 01 02 Fan2 Front-to-Back 23 4285
- 02 03 Fan3 Front-to-Back 23 4032
- 02 04 Fan4 Front-to-Back 23 4147
- 03 05 Fan5 Front-to-Back 23 4192
- 03 06 Fan6 Front-to-Back 23 4397
- 04 07 Fan7 Front-to-Back 23 4153
- 04 08 Fan8 Front-to-Back 23 4451
-
-
-*** show env power ***
-Total Power Supplies: 2
-+----+-----------------+----------------+-----------------+------------------+
-| ID | Name | Manufacturer | Model | State |
-+----+-----------------+----------------+-----------------+------------------+
- 01 Power Supply 1 DELTA XXXXXXXXXX Normal ON
- 02 Power Supply 2 DELTA XXXXXXXXXX 12V Output Fault
-
-
-*** show env temperature ***
-+----+------------------+----------+--------+
-| ID | Name | Temp | State |
-| | | (Celsius)| |
-+----+------------------+----------+--------+
- 01 CPU Local 32 OK
- 02 Ambient 31 OK
- 03 Hot Spot 47 OK
-
-System Name : G8272
-System Description : G8272 ("48x10GE + 6x40GE")
-System Model : Lenovo RackSwitch G8272
-System VPD Version : 3
-System Manufacture Date : 1542 (YYWW)
-System Part Number : 00CJ066
-System Serial Number : Y052MV59Y052
-System FRU Number : 00FM430
-System Machine Type Model : 7159-HCV
-System Machine Serial Number : MM11945
-System Hardware Revision : 1
-System Management MAC : A4:8C:DB:33:BC:00
-System Software Revision : 10.8.0.42
-
diff --git a/test/units/modules/network/cnos/fixtures/show_version b/test/units/modules/network/cnos/fixtures/show_version
deleted file mode 100644
index 0db1ff132a..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_version
+++ /dev/null
@@ -1,19 +0,0 @@
-Lenovo Networking Operating System (NOS) Software
-Technical Assistance Center: http://www.lenovo.com
-Copyright (C) Lenovo, 2016. All rights reserved.
-
-Software:
- Bootloader version: 10.7.0.6
- System version: 10.8.0.42
- System compile time: May 03 11:06:25 PDT 2018
-Hardware:
- G8272 ("48x10GE + 6x40GE")
- NXP P2020 CPU with 4096 MB of memory
-
- Device name: ip10-241-107-39
- Boot Flash: 16 MB
-
-Kernel uptime is 2 day(s), 21 hour(s), 26 minute(s), 14 second(s)
-
-Last Reset Reason: Reset by CLI reload command
-
diff --git a/test/units/modules/network/cnos/fixtures/show_vlan b/test/units/modules/network/cnos/fixtures/show_vlan
deleted file mode 100644
index 457992fee5..0000000000
--- a/test/units/modules/network/cnos/fixtures/show_vlan
+++ /dev/null
@@ -1,97 +0,0 @@
-VLAN Name Status IPMC FLOOD Ports
-
-======== ================================ ======= ========== ===================
-1 default ACTIVE IPv6
- po1(u)
- po2(u)
- po11(u)
- po12(u)
- po13(t)
- po14(u)
- po15(u)
- po17(t)
- po20(u)
- po100(t)
- po1001(u)
- po1002(u)
- po1003(t)
- po1004(t)
- Ethernet1/2(u)
- Ethernet1/3(t)
- Ethernet1/4(t)
- Ethernet1/9(u)
- Ethernet1/10(u)
- Ethernet1/14(u)
- Ethernet1/15(u)
- Ethernet1/16(u)
- Ethernet1/17(u)
- Ethernet1/18(u)
- Ethernet1/19(u)
- Ethernet1/20(u)
- Ethernet1/21(u)
- Ethernet1/22(u)
- Ethernet1/23(u)
- Ethernet1/24(u)
- Ethernet1/25(u)
- Ethernet1/26(u)
- Ethernet1/27(u)
- Ethernet1/28(u)
- Ethernet1/29(u)
- Ethernet1/30(u)
- Ethernet1/31(u)
- Ethernet1/32(u)
- Ethernet1/33(u)
- Ethernet1/34(u)
- Ethernet1/35(u)
- Ethernet1/36(u)
- Ethernet1/37(u)
- Ethernet1/38(u)
- Ethernet1/39(u)
- Ethernet1/40(u)
- Ethernet1/41(u)
- Ethernet1/42(u)
- Ethernet1/43(u)
- Ethernet1/44(u)
- Ethernet1/45(u)
- Ethernet1/46(u)
- Ethernet1/47(u)
- Ethernet1/48(u)
- Ethernet1/49(u)
- Ethernet1/50(u)
- Ethernet1/51(u)
- Ethernet1/52(u)
- Ethernet1/53(u)
- Ethernet1/54(u)
-2 VLAN0002 ACTIVE IPv6
- po13(t)
- po17(t)
- po100(t)
- po1003(t)
- po1004(t)
- Ethernet1/3(t)
- Ethernet1/4(t)
-3 VLAN0003 ACTIVE IPv4,IPv6
- po13(t)
- po17(t)
- po100(t)
- po1003(t)
- po1004(t)
- Ethernet1/3(t)
- Ethernet1/4(t)
-12 VLAN0012 ACTIVE IPv4,IPv6
- po13(t)
- po17(t)
- po100(t)
- po1003(t)
- po1004(t)
- Ethernet1/3(t)
- Ethernet1/4(t)
-13 anil ACTIVE IPv4,IPv6
- po13(t)
- po17(t)
- po100(t)
- po1003(t)
- po1004(t)
- Ethernet1/3(t)
- Ethernet1/4(t)
-
diff --git a/test/units/modules/network/cnos/test_cnos_banner.py b/test/units/modules/network/cnos/test_cnos_banner.py
deleted file mode 100644
index 24a18cc97e..0000000000
--- a/test/units/modules/network/cnos/test_cnos_banner.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_banner
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosBannerModule(TestCnosModule):
-
- module = cnos_banner
-
- def setUp(self):
- super(TestCnosBannerModule, self).setUp()
-
- self.mock_exec_command = patch('ansible.modules.network.cnos.cnos_banner.exec_command')
- self.exec_command = self.mock_exec_command.start()
-
- self.mock_load_config = patch('ansible.modules.network.cnos.cnos_banner.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestCnosBannerModule, self).tearDown()
- self.mock_exec_command.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('cnos_banner_show_banner.txt').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_cnos_banner_create(self):
- for banner_type in ('login', 'motd'):
- set_module_args(dict(banner=banner_type, text='test\nbanner\nstring'))
- commands = ['banner {0} test'.format(banner_type), 'banner {0} banner'.format(banner_type), 'banner {0} string'.format(banner_type)]
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_banner_remove(self):
- set_module_args(dict(banner='login', state='absent'))
- commands = ['no banner login']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_banner_nochange(self):
- banner_text = load_fixture('cnos_banner_show_banner.txt').strip()
- set_module_args(dict(banner='login', text=banner_text))
- self.execute_module()
diff --git a/test/units/modules/network/cnos/test_cnos_bgp.py b/test/units/modules/network/cnos/test_cnos_bgp.py
deleted file mode 100644
index be9dde3687..0000000000
--- a/test/units/modules/network/cnos/test_cnos_bgp.py
+++ /dev/null
@@ -1,95 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_bgp
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosBgpModule(TestCnosModule):
-
- module = cnos_bgp
-
- def setUp(self):
- super(TestCnosBgpModule, self).setUp()
-
- self.mock_run_cnos_commands = patch('ansible.module_utils.network.cnos.cnos.run_cnos_commands')
- self.run_cnos_commands = self.mock_run_cnos_commands.start()
-
- def tearDown(self):
- super(TestCnosBgpModule, self).tearDown()
- self.mock_run_cnos_commands.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- self.run_cnos_commands.return_value = [load_fixture('cnos_bgp_config.cfg')]
-
- def test_bgp_neighbor(self):
- set_module_args({'username': 'admin', 'password': 'pass',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'asNum': '33',
- 'bgpArg1': 'neighbor', 'bgpArg2': '10.241.107.40',
- 'bgpArg3': '13', 'bgpArg4': 'address-family',
- 'bgpArg5': 'ipv4', 'bgpArg6': 'next-hop-self'})
- result = self.execute_module(changed=True)
- expected_result = 'BGP configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
-
- def test_cnos_bgp_dampening(self):
- set_module_args({'username': 'admin', 'password': 'pass',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'asNum': '33',
- 'bgpArg1': 'address-family', 'bgpArg2': 'ipv4',
- 'bgpArg3': 'dampening', 'bgpArg4': '13',
- 'bgpArg5': '233', 'bgpArg6': '333',
- 'bgpArg7': '15', 'bgpArg8': '33'})
- result = self.execute_module(changed=True)
- expected_result = 'BGP configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
-
- def test_cnos_bgp_network(self):
- set_module_args({'username': 'admin', 'password': 'pass',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'asNum': '33',
- 'bgpArg1': 'address-family', 'bgpArg2': 'ipv4',
- 'bgpArg3': 'network', 'bgpArg4': '1.2.3.4/5',
- 'bgpArg5': 'backdoor'})
- result = self.execute_module(changed=True)
- expected_result = 'BGP configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
-
- def test_cnos_bgp_clusterid(self):
- set_module_args({'username': 'admin', 'password': 'pass',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'asNum': '33',
- 'bgpArg1': 'cluster-id', 'bgpArg2': '10.241.107.40'})
- result = self.execute_module(changed=True)
- expected_result = 'BGP configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
-
- def test_cnos_bgp_graceful_restart(self):
- set_module_args({'username': 'admin', 'password': 'pass',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'asNum': '33',
- 'bgpArg1': 'graceful-restart', 'bgpArg2': '333'})
- result = self.execute_module(changed=True)
- expected_result = 'BGP configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
-
- def test_cnos_bgp_routerid(self):
- set_module_args({'username': 'admin', 'password': 'pass',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'asNum': '33',
- 'bgpArg1': 'router-id', 'bgpArg2': '1.2.3.4'})
- result = self.execute_module(changed=True)
- expected_result = 'BGP configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
-
- def test_cnos_bgp_vrf(self):
- set_module_args({'username': 'admin', 'password': 'pass',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'asNum': '33',
- 'bgpArg1': 'vrf'})
- result = self.execute_module(changed=True)
- expected_result = 'BGP configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
diff --git a/test/units/modules/network/cnos/test_cnos_command.py b/test/units/modules/network/cnos/test_cnos_command.py
deleted file mode 100644
index c38a0d014b..0000000000
--- a/test/units/modules/network/cnos/test_cnos_command.py
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright (C) 2017 Lenovo, Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_command
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosCommandModule(TestCnosModule):
-
- module = cnos_command
-
- def setUp(self):
- super(TestCnosCommandModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.cnos.cnos_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestCnosCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- command = item
- except ValueError:
- command = 'show version'
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_cnos_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('Lenovo Networking Operating System (NOS) Software'))
-
- def test_cnos_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show running-config']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('Lenovo Networking Operating System (NOS) Software'))
-
- def test_cnos_command_wait_for(self):
- wait_for = 'result[0] contains "Lenovo Networking Operating System (NOS) Software"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_cnos_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_cnos_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_cnos_command_match_any(self):
- wait_for = ['result[0] contains "Lenovo Networking Operating System (NOS) Software"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_cnos_command_match_all(self):
- wait_for = ['result[0] contains "Lenovo Networking Operating System (NOS) Software"',
- 'result[0] contains "Lenovo"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_cnos_command_match_all_failure(self):
- wait_for = ['result[0] contains "Lenovo ENOS"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show run']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/cnos/test_cnos_config.py b/test/units/modules/network/cnos/test_cnos_config.py
deleted file mode 100644
index 3a9cc9d8b4..0000000000
--- a/test/units/modules/network/cnos/test_cnos_config.py
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_config
-
-from .cnos_module import TestCnosModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCnosConfigModule(TestCnosModule):
-
- module = cnos_config
-
- def setUp(self):
- self.patcher_get_config = patch('ansible.modules.network.cnos.cnos_config.get_config')
- self.mock_get_config = self.patcher_get_config.start()
- self.patcher_exec_command = patch('ansible.modules.network.cnos.cnos_config.load_config')
- self.mock_exec_command = self.patcher_exec_command.start()
-
- def tearDown(self):
- self.patcher_get_config.stop()
- self.patcher_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'cnos_config_config.cfg'
- self.mock_get_config.return_value = load_fixture(config_file)
- self.mock_exec_command.return_value = 'dummy diff'
-
- def test_cnos_config_unchanged(self):
- src = load_fixture('cnos_config_config.cfg')
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_cnos_config_src(self):
- src = load_fixture('cnos_config_src.cfg')
- set_module_args(dict(src=src))
- commands = ['hostname foo', 'interface ethernet 1/13',
- 'speed 10000']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_cnos_config_lines_wo_parents(self):
- set_module_args(dict(lines=['hostname foo']))
- commands = ['hostname foo']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_config_lines_w_parents(self):
- set_module_args(dict(lines=['shutdown'], parents=['interface ethernet 1/13']))
- commands = ['interface ethernet 1/13', 'shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_config_before(self):
- set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2']))
- commands = ['test1', 'test2', 'hostname foo']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_cnos_config_after(self):
- set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2']))
- commands = ['hostname foo', 'test1', 'test2']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_cnos_config_before_after_no_change(self):
- set_module_args(dict(lines=['hostname ip10-241-107-39'],
- before=['test1', 'test2'],
- after=['test2', 'test3']))
- self.execute_module()
-
- def test_cnos_config_config(self):
- config = 'hostname localhost'
- set_module_args(dict(lines=['hostname ip10-241-107-39'], config=config))
- commands = ['hostname ip10-241-107-39']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_config_replace_block(self):
- lines = ['description test string', 'test string']
- parents = ['interface ethernet 1/13']
- set_module_args(dict(lines=lines, replace='block', parents=parents))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_config_match_none(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string']
- parents = ['interface ethernet 1/13']
- set_module_args(dict(lines=lines, parents=parents, match='none'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_cnos_config_match_strict(self):
- lines = ['ip address 100.10.10.10/24', 'no switchport']
- parents = ['interface Ethernet1/12']
- set_module_args(dict(lines=lines, parents=parents, match='strict'))
- commands = parents + ['no switchport']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_cnos_config_match_exact(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string',
- 'no shutdown']
- parents = ['interface ethernet 1/13']
- set_module_args(dict(lines=lines, parents=parents, match='exact'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
diff --git a/test/units/modules/network/cnos/test_cnos_facts.py b/test/units/modules/network/cnos/test_cnos_facts.py
deleted file mode 100644
index a566cdee65..0000000000
--- a/test/units/modules/network/cnos/test_cnos_facts.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from .cnos_module import TestCnosModule, load_fixture
-from ansible.modules.network.cnos import cnos_facts
-from units.modules.utils import set_module_args
-
-
-class TestCnosFacts(TestCnosModule):
-
- module = cnos_facts
-
- def setUp(self):
- super(TestCnosFacts, self).setUp()
- self.mock_run_commands = patch(
- 'ansible.modules.network.cnos.cnos_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestCnosFacts, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item)
- command = obj['command']
- except ValueError:
- command = item
- filename = str(command).replace(' ', '_')
- filename = filename.replace('/', '7')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_cnos_facts_gather_subset_default(self):
- set_module_args(dict())
- result = self.execute_module()
- ansible_facts = result['ansible_facts']
- self.assertIn('hardware', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('interfaces', ansible_facts['ansible_net_gather_subset'])
- self.assertEqual('ip10-241-107-39', ansible_facts['ansible_net_hostname'])
- self.assertIn('Ethernet1/1', ansible_facts['ansible_net_interfaces'].keys())
- self.assertEqual(3985.8046875, ansible_facts['ansible_net_memtotal_mb'])
- self.assertEqual(3070.40234375, ansible_facts['ansible_net_memfree_mb'])
-
- def test_cnos_facts_gather_subset_config(self):
- set_module_args({'gather_subset': 'config'})
- result = self.execute_module()
- ansible_facts = result['ansible_facts']
- self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('config', ansible_facts['ansible_net_gather_subset'])
- self.assertEqual('ip10-241-107-39', ansible_facts['ansible_net_hostname'])
- self.assertIn('ansible_net_config', ansible_facts)
diff --git a/test/units/modules/network/cnos/test_cnos_interface.py b/test/units/modules/network/cnos/test_cnos_interface.py
deleted file mode 100644
index e6341a02cb..0000000000
--- a/test/units/modules/network/cnos/test_cnos_interface.py
+++ /dev/null
@@ -1,143 +0,0 @@
-#
-# (c) 2018 Red Hat Inc.
-# Copyright (C) 2017 Lenovo.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_interface
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosInterfaceModule(TestCnosModule):
- module = cnos_interface
-
- def setUp(self):
- super(TestCnosInterfaceModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.cnos.cnos_interface.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.cnos.cnos_interface.load_config'
- )
- self._patch_exec_command = patch(
- 'ansible.modules.network.cnos.cnos_interface.exec_command'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
- self._exec_command = self._patch_exec_command.start()
-
- def tearDown(self):
- super(TestCnosInterfaceModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
- self._patch_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'cnos_config_config.cfg'
- self._get_config.return_value = load_fixture(config_file)
- self._load_config.return_value = None
-
- def test_cnos_interface_description(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet1/2',
- description='show version'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet1/2',
- 'description show version',
- 'duplex auto'
- ],
- 'changed': True
- }
- )
-
- def test_cnos_interface_speed(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet1/2',
- speed=1000
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet1/2',
- 'speed 1000',
- 'duplex auto'
- ],
- 'changed': True
- }
- )
-
- def test_cnos_interface_mtu(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet1/2',
- mtu=1548
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet1/2',
- 'duplex auto',
- 'mtu 1548'
- ],
- 'changed': True
- }
- )
-
- def test_cnos_interface_mtu_out_of_range(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet0/2',
- mtu=15000
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(
- result,
- {
- 'msg': 'mtu must be between 64 and 9216',
- 'failed': True
- }
- )
-
- def test_cnos_interface_enabled(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet1/44',
- enabled=True
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet1/44',
- 'duplex auto',
- 'no shutdown'
- ],
- 'changed': True
- }
- )
diff --git a/test/units/modules/network/cnos/test_cnos_l2_interface.py b/test/units/modules/network/cnos/test_cnos_l2_interface.py
deleted file mode 100644
index fc32588033..0000000000
--- a/test/units/modules/network/cnos/test_cnos_l2_interface.py
+++ /dev/null
@@ -1,155 +0,0 @@
-#
-# (c) 2018 Lenovo.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_l2_interface
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosL2InterfaceModule(TestCnosModule):
- module = cnos_l2_interface
-
- def setUp(self):
- super(TestCnosL2InterfaceModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.cnos.cnos_l2_interface.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.cnos.cnos_l2_interface.load_config'
- )
- self._patch_run_commands = patch(
- 'ansible.modules.network.cnos.cnos_l2_interface.run_commands'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
- self._run_commands = self._patch_run_commands.start()
- self._run_commands.side_effect = self.run_commands_load_fixtures
-
- def run_commands_load_fixtures(self, module, commands, *args, **kwargs):
- return self.load_fixtures(
- commands,
- destination=self._run_commands,
- return_values=True
- )
-
- def tearDown(self):
- super(TestCnosL2InterfaceModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
- self._patch_run_commands.stop()
-
- def load_fixtures(self, commands=None,
- destination=None, return_values=False):
- side_effects = []
-
- if not destination:
- destination = self._get_config
-
- if not commands:
- commands = ['cnos_config_config.cfg']
-
- for command in commands:
- filename = str(command).replace(' ', '_')
- filename = str(filename).replace('/', '_')
- side_effects.append(load_fixture(filename))
-
- if return_values is True:
- return side_effects
-
- destination.side_effect = side_effects
- return None
-
- def test_cnos_l2_interface_access_vlan(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 1/33',
- mode='access',
- access_vlan=13,
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface ethernet 1/33',
- 'switchport access vlan 13'
- ],
- 'changed': True,
- 'warnings': []
- }
- )
-
- def test_cnos_l2_interface_vlan_does_not_exist(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 1/33',
- mode='access',
- access_vlan=10,
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(
- result,
- {
- 'msg': 'You are trying to configure a VLAN on an interface '
- 'that\ndoes not exist on the switch yet!',
- 'failed': True,
- 'vlan': '10'
- }
- )
-
- def test_cnos_l2_interface_incorrect_state(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 1/44',
- mode='access',
- access_vlan=10,
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(
- result,
- {
- 'msg': 'Ensure interface is configured to be a L2\nport first '
- 'before using this module. You can use\nthe cnos_'
- 'interface module for this.',
- 'failed': True
- }
- )
-
- def test_cnos_l2_interface_trunk(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 1/45',
- mode='trunk',
- native_vlan='12',
- trunk_allowed_vlans='13,12'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface ethernet 1/45',
- 'switchport mode trunk',
- 'switchport trunk allowed vlan 13,12',
- 'switchport trunk native vlan 12'
- ],
- 'changed': True,
- 'warnings': []
- }
- )
diff --git a/test/units/modules/network/cnos/test_cnos_l3_interface.py b/test/units/modules/network/cnos/test_cnos_l3_interface.py
deleted file mode 100644
index 527dda2ab7..0000000000
--- a/test/units/modules/network/cnos/test_cnos_l3_interface.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# (c) 2018 Lenovo.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_l3_interface
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosL3InterfaceModule(TestCnosModule):
- module = cnos_l3_interface
-
- def setUp(self):
- super(TestCnosL3InterfaceModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.cnos.cnos_l3_interface.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.cnos.cnos_l3_interface.load_config'
- )
- self._patch_is_switchport = patch(
- 'ansible.modules.network.cnos.cnos_l3_interface.is_switchport'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
- self._is_switchport = self._patch_is_switchport.start()
-
- def tearDown(self):
- super(TestCnosL3InterfaceModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'l3_interface_config.cfg'
- self._get_config.return_value = load_fixture(config_file)
- self._load_config.return_value = None
- self._is_switchport.return_value = False
-
- def test_cnos_l3_interface_ipv4_address(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 1/35',
- ipv4='192.168.4.1/24'
- ))
- commands = [
- 'interface Ethernet 1/35',
- 'ip address 192.168.4.1 255.255.255.0'
- ]
- result = self.execute_module(changed=True, commands=commands)
-
- def test_cnos_l3_interface_absent(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet1/9',
- state='absent'
- ))
- commands = [
- 'interface Ethernet1/9',
- 'no ip address',
- 'no ipv6 address'
- ]
- result = self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/cnos/test_cnos_linkagg.py b/test/units/modules/network/cnos/test_cnos_linkagg.py
deleted file mode 100644
index 48788b03d4..0000000000
--- a/test/units/modules/network/cnos/test_cnos_linkagg.py
+++ /dev/null
@@ -1,144 +0,0 @@
-#
-# (c) 2018 Red Hat Inc.
-# Copyright (C) 2017 Lenovo.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_linkagg
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosLinkaggModule(TestCnosModule):
- module = cnos_linkagg
-
- def setUp(self):
- super(TestCnosLinkaggModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.cnos.cnos_linkagg.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.cnos.cnos_linkagg.load_config'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
-
- def tearDown(self):
- super(TestCnosLinkaggModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'cnos_linkagg_config.cfg'
- self._get_config.return_value = load_fixture(config_file)
- self._load_config.return_value = None
-
- def test_cnos_linkagg_group_present(self, *args, **kwargs):
- set_module_args(dict(
- group='10',
- state='present'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface port-channel 10',
- 'exit'
- ],
- 'changed': True
- }
- )
-
- def test_cnos_linkagg_group_members_active(self, *args, **kwargs):
- set_module_args(dict(
- group='10',
- mode='active',
- members=[
- 'Ethernet 1/33',
- 'Ethernet 1/44'
- ]
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface port-channel 10',
- 'exit',
- 'interface Ethernet 1/33',
- 'channel-group 10 mode active',
- 'interface Ethernet 1/44',
- 'channel-group 10 mode active'
- ],
- 'changed': True
- }
- )
-
- def test_cnos_linkagg_group_member_removal(self, *args, **kwargs):
- set_module_args(dict(
- group='20',
- mode='active',
- members=[
- 'Ethernet 1/10',
- ]
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface port-channel 20',
- 'exit',
- 'interface Ethernet 1/10',
- 'channel-group 20 mode active'
- ],
- 'changed': True
- }
- )
-
- def test_cnos_linkagg_group_members_absent(self, *args, **kwargs):
- set_module_args(dict(
- group='20',
- state='absent'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'no interface port-channel 20'
- ],
- 'changed': True
- }
- )
- set_module_args(dict(
- group='10',
- state='absent'
- ))
- result = self.execute_module(changed=False)
- self.assertEqual(
- result,
- {
- 'commands': [],
- 'changed': False
- }
- )
diff --git a/test/units/modules/network/cnos/test_cnos_lldp.py b/test/units/modules/network/cnos/test_cnos_lldp.py
deleted file mode 100644
index a28b386a47..0000000000
--- a/test/units/modules/network/cnos/test_cnos_lldp.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# (c) 2019 Lenovo.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_lldp
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosLldpModule(TestCnosModule):
- module = cnos_lldp
-
- def setUp(self):
- super(TestCnosLldpModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.cnos.cnos_lldp.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.cnos.cnos_lldp.load_config'
- )
- self._patch_get_ethernet_range = patch(
- 'ansible.modules.network.cnos.cnos_lldp.get_ethernet_range'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
- self._get_ethernet_range = self._patch_get_ethernet_range.start()
-
- def tearDown(self):
- super(TestCnosLldpModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
- self._patch_get_ethernet_range.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'cnos_config_config.cfg'
- self._get_config.return_value = load_fixture(config_file)
- self._load_config.return_value = None
- self._get_ethernet_range.return_value = '54'
-
- def test_cnos_lldp_present(self, *args, **kwargs):
- set_module_args(dict(
- state='present'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface ethernet 1/1-54',
- 'lldp receive',
- 'lldp transmit',
- 'exit',
- 'interface mgmt 0',
- 'lldp receive',
- 'lldp transmit',
- 'exit'
- ],
- 'changed': True
- }
- )
-
- def test_cnos_lldp_absent(self, *args, **kwargs):
- set_module_args(dict(
- state='absent'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface ethernet 1/1-54',
- 'no lldp receive',
- 'no lldp transmit',
- 'exit',
- 'interface mgmt 0',
- 'no lldp receive',
- 'no lldp transmit',
- 'exit'
- ],
- 'changed': True
- }
- )
diff --git a/test/units/modules/network/cnos/test_cnos_logging.py b/test/units/modules/network/cnos/test_cnos_logging.py
deleted file mode 100644
index 8bcb52cc7e..0000000000
--- a/test/units/modules/network/cnos/test_cnos_logging.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# (c) 2018 Red Hat Inc.
-# Copyright (C) 2017 Lenovo.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_logging
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosLoggingModule(TestCnosModule):
-
- module = cnos_logging
-
- def setUp(self):
- super(TestCnosLoggingModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cnos.cnos_logging.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.cnos.cnos_logging.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestCnosLoggingModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None):
- self.get_config.return_value = load_fixture('cnos_logging_config.cfg')
- self.load_config.return_value = None
-
- def test_cnos_logging_buffer_size_changed_implicit(self):
- set_module_args(dict(dest='logfile', name='anil'))
- commands = ['logging logfile anil 5 size 10485760']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_logging_logfile_size_changed_explicit(self):
- set_module_args(dict(dest='logfile', name='anil', level='4', size=6000))
- commands = ['logging logfile anil 4 size 6000']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/cnos/test_cnos_static_route.py b/test/units/modules/network/cnos/test_cnos_static_route.py
deleted file mode 100644
index 29d7db6497..0000000000
--- a/test/units/modules/network/cnos/test_cnos_static_route.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# (c) 2016 Red Hat Inc.
-# Copyright (C) 2017 Lenovo.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_static_route
-from .cnos_module import TestCnosModule, load_fixture
-from units.modules.utils import set_module_args
-
-
-class TestCnosStaticRouteModule(TestCnosModule):
-
- module = cnos_static_route
-
- def setUp(self):
- super(TestCnosStaticRouteModule, self).setUp()
-
- self.mock_exec_command = patch('ansible.modules.network.cnos.cnos_banner.exec_command')
- self.exec_command = self.mock_exec_command.start()
-
- self.mock_load_config = patch('ansible.modules.network.cnos.cnos_static_route.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_config = patch('ansible.modules.network.cnos.cnos_static_route.get_config')
- self.get_config = self.mock_get_config.start()
-
- def tearDown(self):
- super(TestCnosStaticRouteModule, self).tearDown()
- self.mock_exec_command.stop()
- self.mock_load_config.stop()
- self.mock_get_config.stop()
-
- def load_fixtures(self, commands=None):
- self.exec_command.return_value = (0, load_fixture('cnos_static_route.cfg').strip(), None)
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_cnos_static_route_present(self):
- set_module_args(dict(prefix='10.241.107.20', mask='255.255.255.0', next_hop='10.241.106.1'))
- self.execute_module(changed=True, commands=['ip route 10.241.107.20 255.255.255.0 10.241.106.1 1'])
-
- def test_cnos_static_route_present_no_defaults(self):
- set_module_args(dict(prefix='10.241.106.4', mask='255.255.255.0', next_hop='1.2.3.5',
- description='testing', admin_distance=100))
- self.execute_module(changed=True,
- commands=['ip route 10.241.106.4 255.255.255.0 1.2.3.5 100 description testing'])
-
- def test_cnos_static_route_change(self):
- set_module_args(dict(prefix='10.10.30.64', mask='255.255.255.0', next_hop='1.2.4.8'))
- self.execute_module(changed=True,
- commands=['ip route 10.10.30.64 255.255.255.0 1.2.4.8 1'])
-
- def test_cnos_static_route_absent(self):
- set_module_args(dict(prefix='10.10.30.12',
- mask='255.255.255.0', next_hop='1.2.4.8', state='absent'))
- self.execute_module(changed=True,
- commands=['no ip route 10.10.30.12 255.255.255.0 1.2.4.8 1'])
diff --git a/test/units/modules/network/cnos/test_cnos_system.py b/test/units/modules/network/cnos/test_cnos_system.py
deleted file mode 100644
index 569d54eefa..0000000000
--- a/test/units/modules/network/cnos/test_cnos_system.py
+++ /dev/null
@@ -1,103 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-# Copyright (C) 2017 Lenovo.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_system
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosSystemModule(TestCnosModule):
-
- module = cnos_system
-
- def setUp(self):
- super(TestCnosSystemModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.cnos.cnos_system.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.cnos.cnos_system.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestCnosSystemModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, device=''):
- self.get_config.return_value = load_fixture('cnos_system_config.cfg')
- self.load_config.return_value = None
-
- def test_cnos_system_hostname_changed(self):
- set_module_args(dict(hostname='foo'))
- commands = ['hostname foo']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_system_domain_lookup(self):
- set_module_args(dict(lookup_enabled=False))
- commands = ['no ip domain-lookup']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_system_missing_vrf(self):
- domain_name = dict(name='example.com', vrf='example')
- set_module_args(dict(domain_name=domain_name))
- self.execute_module(failed=True)
-
- def test_cnos_system_domain_name(self):
- set_module_args(dict(domain_name=['example.net']))
- commands = ['ip domain-name example.net vrf default']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_system_domain_name_complex(self):
- domain_name = dict(name='example.net', vrf='management')
- set_module_args(dict(domain_name=[domain_name]))
- commands = ['ip domain-name example.net vrf management']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_system_domain_search(self):
- set_module_args(dict(domain_search=['example.net']))
- commands = ['ip domain-list example.net vrf default']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_system_domain_search_complex(self):
- domain_search = dict(name='example.net', vrf='management')
- set_module_args(dict(domain_search=[domain_search]))
- commands = ['ip domain-list example.net vrf management']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_system_name_servers(self):
- set_module_args(dict(name_servers=['1.2.3.4', '8.8.8.8']))
- commands = ['ip name-server 1.2.3.4 vrf default', 'ip name-server 8.8.8.8 vrf default']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_system_name_servers_complex(self):
- name_servers = dict(server='1.2.3.4', vrf='management')
- set_module_args(dict(name_servers=[name_servers]))
- commands = ['ip name-server 1.2.3.4 vrf management']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_system_state_absent(self):
- set_module_args(dict(state='absent'))
- commands = ['no hostname']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/cnos/test_cnos_user.py b/test/units/modules/network/cnos/test_cnos_user.py
deleted file mode 100644
index 35ca012013..0000000000
--- a/test/units/modules/network/cnos/test_cnos_user.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_user
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosUserModule(TestCnosModule):
-
- module = cnos_user
-
- def setUp(self):
- super(TestCnosUserModule, self).setUp()
- self.mock_get_config = patch('ansible.modules.network.cnos.cnos_user.get_config')
- self.get_config = self.mock_get_config.start()
- self.mock_load_config = patch('ansible.modules.network.cnos.cnos_user.load_config')
- self.load_config = self.mock_load_config.start()
- self.mock_run_commands = patch('ansible.modules.network.cnos.cnos_user.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestCnosUserModule, self).tearDown()
-
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- self.get_config.return_value = load_fixture('cnos_user_config.cfg')
- self.load_config.return_value = dict(diff=None, session='session')
- self.run_commands.return_value = [load_fixture('cnos_user_config.cfg')]
-
- def test_cnos_user_create(self):
- set_module_args(dict(name='test', configured_password='Anil'))
- commands = ['username test', 'username test password Anil']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_user_delete(self):
- set_module_args(dict(name='ansible', state='absent'))
- commands = []
- self.execute_module(changed=False, commands=commands)
-
- def test_cnos_user_password(self):
- set_module_args(dict(name='ansible', configured_password='test'))
- commands = ['username ansible', 'username ansible password test']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_user_purge(self):
- set_module_args(dict(purge=True))
- commands = ['no username admin\n', 'no username ansible\n']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_user_role(self):
- set_module_args(dict(name='ansible', role='network-admin', configured_password='test'))
- result = self.execute_module(changed=True)
- self.assertIn('username ansible role network-admin', result['commands'])
-
- def test_cnos_user_sshkey(self):
- set_module_args(dict(name='ansible', sshkey='test'))
- commands = ['username ansible', 'username ansible sshkey test']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_user_update_password_changed(self):
- set_module_args(dict(name='test', configured_password='test', update_password='on_create'))
- commands = ['username test', 'username test password test']
- self.execute_module(changed=True, commands=commands)
-
- def test_cnos_user_update_password_always(self):
- set_module_args(dict(name='ansible', configured_password='test', update_password='always'))
- commands = ['username ansible', 'username ansible password test']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/cnos/test_cnos_vlag.py b/test/units/modules/network/cnos/test_cnos_vlag.py
deleted file mode 100644
index 9b6e3bbd89..0000000000
--- a/test/units/modules/network/cnos/test_cnos_vlag.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_vlag
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosVlagModule(TestCnosModule):
-
- module = cnos_vlag
-
- def setUp(self):
- super(TestCnosVlagModule, self).setUp()
-
- self.mock_run_cnos_commands = patch('ansible.module_utils.network.cnos.cnos.run_cnos_commands')
- self.run_cnos_commands = self.mock_run_cnos_commands.start()
-
- def tearDown(self):
- super(TestCnosVlagModule, self).tearDown()
- self.mock_run_cnos_commands.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- self.run_cnos_commands.return_value = [load_fixture('cnos_vlag_config.cfg')]
-
- def test_cnos_vlag_enable(self):
- set_module_args({'username': 'admin', 'password': 'admin',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'vlagArg1': 'enable'})
- result = self.execute_module(changed=True)
- expected_result = 'VLAG configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
-
- def test_cnos_vlag_instance(self):
- set_module_args({'username': 'admin', 'password': 'pass',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'vlagArg1': 'instance',
- 'vlagArg2': '33', 'vlagArg3': '333'})
- result = self.execute_module(changed=True)
- expected_result = 'VLAG configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
-
- def test_cnos_vlag_hlthchk(self):
- set_module_args({'username': 'admin', 'password': 'pass',
- 'host': '10.241.107.39', 'deviceType': 'g8272_cnos',
- 'outputfile': self.test_log, 'vlagArg1': 'hlthchk',
- 'vlagArg2': 'keepalive-interval', 'vlagArg3': '131'})
- result = self.execute_module(changed=True)
- expected_result = 'VLAG configurations accomplished'
- self.assertEqual(result['msg'], expected_result)
diff --git a/test/units/modules/network/cnos/test_cnos_vlan.py b/test/units/modules/network/cnos/test_cnos_vlan.py
deleted file mode 100644
index cc63d26eb0..0000000000
--- a/test/units/modules/network/cnos/test_cnos_vlan.py
+++ /dev/null
@@ -1,206 +0,0 @@
-# (c) 2018 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_vlan
-from ansible.modules.network.cnos.cnos_vlan import parse_vlan_brief
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosVlanModule(TestCnosModule):
-
- module = cnos_vlan
-
- def setUp(self):
- super(TestCnosVlanModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.cnos.cnos_vlan.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- self.mock_load_config = patch('ansible.modules.network.cnos.cnos_vlan.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestCnosVlanModule, self).tearDown()
- self.mock_run_commands.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- self.run_commands.return_value = [load_fixture('cnos_vlan_config.cfg')]
- self.load_config.return_value = {'diff': None, 'session': 'session'}
-
- def test_cnos_vlan_create(self):
- set_module_args({'vlan_id': '3', 'name': 'test', 'state': 'present'})
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'name test',
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_cnos_vlan_id_startwith_9(self):
- set_module_args({'vlan_id': '13', 'name': 'anil', 'state': 'present'})
- result = self.execute_module(changed=False)
- expected_commands = []
- self.assertEqual(result['commands'], expected_commands)
-
- def test_cnos_vlan_rename(self):
- set_module_args({'vlan_id': '2', 'name': 'test', 'state': 'present'})
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 2',
- 'name test',
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_cnos_vlan_with_interfaces(self):
- set_module_args({'vlan_id': '2', 'name': 'vlan2', 'state': 'present',
- 'interfaces': ['Ethernet1/33', 'Ethernet1/44']})
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 2',
- 'name vlan2',
- 'vlan 2',
- 'interface Ethernet1/33',
- 'switchport mode access',
- 'switchport access vlan 2',
- 'vlan 2',
- 'interface Ethernet1/44',
- 'switchport mode access',
- 'switchport access vlan 2',
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_cnos_vlan_with_interfaces_and_newvlan(self):
- set_module_args({'vlan_id': '3',
- 'name': 'vlan3', 'state': 'present',
- 'interfaces': ['Ethernet1/33', 'Ethernet1/44']})
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'name vlan3',
- 'vlan 3',
- 'interface Ethernet1/33',
- 'switchport mode access',
- 'switchport access vlan 3',
- 'vlan 3',
- 'interface Ethernet1/44',
- 'switchport mode access',
- 'switchport access vlan 3',
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_parse_vlan_brief(self):
- result = parse_vlan_brief(load_fixture('cnos_vlan_config.cfg'))
- obj = [
- {
- 'interfaces': [
- 'po1',
- 'po2',
- 'po11',
- 'po12',
- 'po13',
- 'po14',
- 'po15',
- 'po17',
- 'po20',
- 'po100',
- 'po1001',
- 'po1002',
- 'po1003',
- 'po1004',
- 'Ethernet1/2',
- 'Ethernet1/3',
- 'Ethernet1/4',
- 'Ethernet1/9',
- 'Ethernet1/10',
- 'Ethernet1/11',
- 'Ethernet1/14',
- 'Ethernet1/15',
- 'Ethernet1/16',
- 'Ethernet1/17',
- 'Ethernet1/18',
- 'Ethernet1/19',
- 'Ethernet1/20',
- 'Ethernet1/21',
- 'Ethernet1/22',
- 'Ethernet1/23',
- 'Ethernet1/24',
- 'Ethernet1/25',
- 'Ethernet1/26',
- 'Ethernet1/27',
- 'Ethernet1/28',
- 'Ethernet1/29',
- 'Ethernet1/30',
- 'Ethernet1/31',
- 'Ethernet1/32',
- 'Ethernet1/33',
- 'Ethernet1/34',
- 'Ethernet1/35',
- 'Ethernet1/36',
- 'Ethernet1/37',
- 'Ethernet1/38',
- 'Ethernet1/39',
- 'Ethernet1/40',
- 'Ethernet1/41',
- 'Ethernet1/42',
- 'Ethernet1/43',
- 'Ethernet1/44',
- 'Ethernet1/45',
- 'Ethernet1/46',
- 'Ethernet1/47',
- 'Ethernet1/48',
- 'Ethernet1/49',
- 'Ethernet1/50',
- 'Ethernet1/51',
- 'Ethernet1/52',
- 'Ethernet1/53',
- 'Ethernet1/54'],
- 'state': 'ACTIVE',
- 'name': 'default',
- 'vlan_id': '1'},
- {
- 'interfaces': [],
- 'state': 'ACTIVE',
- 'name': 'VLAN0002',
- 'vlan_id': '2'},
- {
- 'interfaces': [],
- 'state': 'ACTIVE',
- 'name': 'VLAN0003',
- 'vlan_id': '3'},
- {
- 'interfaces': [],
- 'state': 'ACTIVE',
- 'name': 'VLAN0005',
- 'vlan_id': '5'},
- {
- 'interfaces': [],
- 'state': 'ACTIVE',
- 'name': 'VLAN0012',
- 'vlan_id': '12'},
- {
- 'interfaces': [],
- 'state': 'ACTIVE',
- 'name': 'anil',
- 'vlan_id': '13'}]
- self.assertEqual(result, obj)
diff --git a/test/units/modules/network/cnos/test_cnos_vrf.py b/test/units/modules/network/cnos/test_cnos_vrf.py
deleted file mode 100644
index 2d5b827462..0000000000
--- a/test/units/modules/network/cnos/test_cnos_vrf.py
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# (c) 2019 Lenovo.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.cnos import cnos_vrf
-from units.modules.utils import set_module_args
-from .cnos_module import TestCnosModule, load_fixture
-
-
-class TestCnosVrfModule(TestCnosModule):
-
- module = cnos_vrf
-
- def setUp(self):
- super(TestCnosVrfModule, self).setUp()
-
- self.mock_load_config = patch('ansible.modules.network.cnos.cnos_vrf.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.cnos.cnos_vrf.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- self._patch_is_switchport = patch(
- 'ansible.modules.network.cnos.cnos_vrf.is_switchport'
- )
- self._is_switchport = self._patch_is_switchport.start()
-
- def tearDown(self):
- super(TestCnosVrfModule, self).tearDown()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
- self._patch_is_switchport.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'cnos_vrf_config.cfg'
- self.load_config.return_value = load_fixture(config_file)
- self.run_commands.return_value = load_fixture(config_file)
- self._is_switchport.return_value = False
-
- def test_cnos_vrf_present(self):
- set_module_args(dict(name='test1', state='present'))
- self.execute_module(changed=True, commands=['vrf context test1'])
-
- def test_cnos_vrf_present_management(self):
- set_module_args(dict(name='management', state='present'))
- self.execute_module(changed=True, commands=['vrf context management'])
-
- def test_cnos_vrf_absent_management(self):
- set_module_args(dict(name='management', state='absent'))
- result = self.execute_module(failed=True)
- self.assertEqual(result['msg'], 'Management VRF context cannot be deleted')
-
- def test_cnos_vrf_absent_no_change(self):
- set_module_args(dict(name='test1', state='absent'))
- self.execute_module(changed=False, commands=[])
-
- def test_cnos_vrf_default(self):
- set_module_args(dict(name='default', state='present'))
- result = self.execute_module(failed=True)
- self.assertEqual(result['msg'], 'VRF context default is reserved')
diff --git a/test/units/modules/network/cumulus/test_nclu.py b/test/units/modules/network/cumulus/test_nclu.py
deleted file mode 100644
index 425c0a2c23..0000000000
--- a/test/units/modules/network/cumulus/test_nclu.py
+++ /dev/null
@@ -1,222 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# (c) 2016, Cumulus Networks <ce-ceng@cumulusnetworks.com>
-#
-# This file is part of Ansible
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-import os.path
-import unittest
-
-from ansible.modules.network.cumulus import nclu
-
-
-class FakeModule(object):
- """Fake NCLU module to check the logic of the ansible module.
-
- We have two sets of tests: fake and real. Real tests only run if
- NCLU is installed on the testing machine (it should be a Cumulus VX
- VM or something like that).
-
- Fake tests are used to test the logic of the ansible module proper - that
- the right things are done when certain feedback is received.
-
- Real tests are used to test regressions against versions of NCLU. This
- FakeModule mimics the output that is used for screenscraping. If the real
- output differs, the real tests will catch that.
-
- To prepare a VX:
- sudo apt-get update
- sudo apt-get install python-setuptools git gcc python-dev libssl-dev
- sudo easy_install pip
- sudo pip install ansible nose coverage
- # git the module and cd to the directory
- nosetests --with-coverage --cover-package=nclu --cover-erase --cover-branches
-
- If a real test fails, it means that there is a risk of a version split, and
- that changing the module will break for old versions of NCLU if not careful.
- """
-
- def __init__(self, **kwargs):
- self.reset()
-
- def exit_json(self, **kwargs):
- self.exit_code = kwargs
-
- def fail_json(self, **kwargs):
- self.fail_code = kwargs
-
- def run_command(self, command):
- """Run an NCLU command"""
-
- self.command_history.append(command)
- if command == "/usr/bin/net pending":
- return (0, self.pending, "")
- elif command == "/usr/bin/net abort":
- self.pending = ""
- return (0, "", "")
- elif command.startswith("/usr/bin/net commit"):
- if self.pending:
- self.last_commit = self.pending
- self.pending = ""
- return (0, "", "")
- else:
- return (0, "commit ignored...there were no pending changes", "")
- elif command == "/usr/bin/net show commit last":
- return (0, self.last_commit, "")
- else:
- self.pending += command
- return self.mocks.get(command, (0, "", ""))
-
- def mock_output(self, command, _rc, output, _err):
- """Prepare a command to mock certain output"""
-
- self.mocks[command] = (_rc, output, _err)
-
- def reset(self):
- self.params = {}
- self.exit_code = {}
- self.fail_code = {}
- self.command_history = []
- self.mocks = {}
- self.pending = ""
- self.last_commit = ""
-
-
-def skipUnlessNcluInstalled(original_function):
- if os.path.isfile('/usr/bin/net'):
- return original_function
- else:
- return unittest.skip('only run if nclu is installed')
-
-
-class TestNclu(unittest.TestCase):
-
- def test_command_helper(self):
- module = FakeModule()
- module.mock_output("/usr/bin/net add int swp1", 0, "", "")
-
- result = nclu.command_helper(module, 'add int swp1', 'error out')
- self.assertEqual(module.command_history[-1], "/usr/bin/net add int swp1")
- self.assertEqual(result, "")
-
- def test_command_helper_error_code(self):
- module = FakeModule()
- module.mock_output("/usr/bin/net fake fail command", 1, "", "")
-
- result = nclu.command_helper(module, 'fake fail command', 'error out')
- self.assertEqual(module.fail_code, {'msg': "error out"})
-
- def test_command_helper_error_msg(self):
- module = FakeModule()
- module.mock_output("/usr/bin/net fake fail command", 0,
- "ERROR: Command not found", "")
-
- result = nclu.command_helper(module, 'fake fail command', 'error out')
- self.assertEqual(module.fail_code, {'msg': "error out"})
-
- def test_command_helper_no_error_msg(self):
- module = FakeModule()
- module.mock_output("/usr/bin/net fake fail command", 0,
- "ERROR: Command not found", "")
-
- result = nclu.command_helper(module, 'fake fail command')
- self.assertEqual(module.fail_code, {'msg': "ERROR: Command not found"})
-
- def test_empty_run(self):
- module = FakeModule()
- changed, output = nclu.run_nclu(module, None, None, False, False, False, "")
- self.assertEqual(module.command_history, ['/usr/bin/net pending',
- '/usr/bin/net pending'])
- self.assertEqual(module.fail_code, {})
- self.assertEqual(changed, False)
-
- def test_command_list(self):
- module = FakeModule()
- changed, output = nclu.run_nclu(module, ['add int swp1', 'add int swp2'],
- None, False, False, False, "")
-
- self.assertEqual(module.command_history, ['/usr/bin/net pending',
- '/usr/bin/net add int swp1',
- '/usr/bin/net add int swp2',
- '/usr/bin/net pending'])
- self.assertNotEqual(len(module.pending), 0)
- self.assertEqual(module.fail_code, {})
- self.assertEqual(changed, True)
-
- def test_command_list_commit(self):
- module = FakeModule()
- changed, output = nclu.run_nclu(module,
- ['add int swp1', 'add int swp2'],
- None, True, False, False, "committed")
-
- self.assertEqual(module.command_history, ['/usr/bin/net pending',
- '/usr/bin/net add int swp1',
- '/usr/bin/net add int swp2',
- '/usr/bin/net pending',
- "/usr/bin/net commit description 'committed'",
- '/usr/bin/net show commit last'])
- self.assertEqual(len(module.pending), 0)
- self.assertEqual(module.fail_code, {})
- self.assertEqual(changed, True)
-
- def test_command_atomic(self):
- module = FakeModule()
- changed, output = nclu.run_nclu(module,
- ['add int swp1', 'add int swp2'],
- None, False, True, False, "atomically")
-
- self.assertEqual(module.command_history, ['/usr/bin/net abort',
- '/usr/bin/net pending',
- '/usr/bin/net add int swp1',
- '/usr/bin/net add int swp2',
- '/usr/bin/net pending',
- "/usr/bin/net commit description 'atomically'",
- '/usr/bin/net show commit last'])
- self.assertEqual(len(module.pending), 0)
- self.assertEqual(module.fail_code, {})
- self.assertEqual(changed, True)
-
- def test_command_abort_first(self):
- module = FakeModule()
- module.pending = "dirty"
- nclu.run_nclu(module, None, None, False, False, True, "")
-
- self.assertEqual(len(module.pending), 0)
-
- def test_command_template_commit(self):
- module = FakeModule()
- changed, output = nclu.run_nclu(module, None,
- " add int swp1\n add int swp2",
- True, False, False, "committed")
-
- self.assertEqual(module.command_history, ['/usr/bin/net pending',
- '/usr/bin/net add int swp1',
- '/usr/bin/net add int swp2',
- '/usr/bin/net pending',
- "/usr/bin/net commit description 'committed'",
- '/usr/bin/net show commit last'])
- self.assertEqual(len(module.pending), 0)
- self.assertEqual(module.fail_code, {})
- self.assertEqual(changed, True)
-
- def test_commit_ignored(self):
- module = FakeModule()
- changed, output = nclu.run_nclu(module, None, None, True, False, False, "ignore me")
-
- self.assertEqual(module.command_history, ['/usr/bin/net pending',
- '/usr/bin/net pending',
- "/usr/bin/net commit description 'ignore me'",
- '/usr/bin/net abort'])
- self.assertEqual(len(module.pending), 0)
- self.assertEqual(module.fail_code, {})
- self.assertEqual(changed, False)
diff --git a/test/units/modules/network/edgeos/edgeos_module.py b/test/units/modules/network/edgeos/edgeos_module.py
deleted file mode 100644
index dfab2974f4..0000000000
--- a/test/units/modules/network/edgeos/edgeos_module.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# (c) 2018 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestEdgeosModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/edgeos/fixtures/edgeos_config_config.cfg b/test/units/modules/network/edgeos/fixtures/edgeos_config_config.cfg
deleted file mode 100644
index e0e7946961..0000000000
--- a/test/units/modules/network/edgeos/fixtures/edgeos_config_config.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-set system host-name 'router'
-set system domain-name 'acme.com'
-set system domain-search domain 'acme.com'
-set system name-server 208.67.220.220
-set system name-server 208.67.222.222
-set interfaces ethernet eth0 address 1.2.3.4/24
-set interfaces ethernet eth0 description 'Outside'
-set interfaces ethernet eth1 address 10.77.88.1/24
-set interfaces ethernet eth1 description 'Inside'
-set interfaces ethernet eth1 disable
diff --git a/test/units/modules/network/edgeos/fixtures/edgeos_config_src.cfg b/test/units/modules/network/edgeos/fixtures/edgeos_config_src.cfg
deleted file mode 100644
index 471dcb9d2b..0000000000
--- a/test/units/modules/network/edgeos/fixtures/edgeos_config_src.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-set system host-name er01
-delete interfaces ethernet eth0 address
-set interfaces ethernet eth1 address 10.77.88.1/24
-set interfaces ethernet eth1 description 'Inside'
-set interfaces ethernet eth1 disable
diff --git a/test/units/modules/network/edgeos/fixtures/edgeos_config_src_brackets.cfg b/test/units/modules/network/edgeos/fixtures/edgeos_config_src_brackets.cfg
deleted file mode 100644
index e2bcf1cc6c..0000000000
--- a/test/units/modules/network/edgeos/fixtures/edgeos_config_src_brackets.cfg
+++ /dev/null
@@ -1,13 +0,0 @@
-interfaces {
- ethernet eth0 {
- address 10.10.10.10/24
- }
- ethernet eth1 {
- address 10.77.88.1/24
- description 'Inside'
- disable
- }
-}
-system {
- host-name er01
-}
diff --git a/test/units/modules/network/edgeos/fixtures/show_host_name b/test/units/modules/network/edgeos/fixtures/show_host_name
deleted file mode 100644
index 24ee58350a..0000000000
--- a/test/units/modules/network/edgeos/fixtures/show_host_name
+++ /dev/null
@@ -1 +0,0 @@
-er01
diff --git a/test/units/modules/network/edgeos/fixtures/show_version b/test/units/modules/network/edgeos/fixtures/show_version
deleted file mode 100644
index c32c5992eb..0000000000
--- a/test/units/modules/network/edgeos/fixtures/show_version
+++ /dev/null
@@ -1,7 +0,0 @@
-Version: v1.9.7+hotfix.4
-Build ID: 5024004
-Build on: 10/05/17 04:03
-Copyright: 2012-2017 Ubiquiti Networks, Inc.
-HW model: EdgeRouter PoE 5-Port
-HW S/N: 802AA84D6394
-Uptime: 09:39:34 up 56 days, 21 min, 2 users, load average: 0.14, 0.11, 0.07
diff --git a/test/units/modules/network/edgeos/test_edgeos_command.py b/test/units/modules/network/edgeos/test_edgeos_command.py
deleted file mode 100644
index 2dc4e61c7a..0000000000
--- a/test/units/modules/network/edgeos/test_edgeos_command.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# (c) 2018 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.edgeos import edgeos_command
-from units.modules.utils import set_module_args
-from .edgeos_module import TestEdgeosModule, load_fixture
-
-
-class TestEdgeosCommandModule(TestEdgeosModule):
-
- module = edgeos_command
-
- def setUp(self):
- super(TestEdgeosCommandModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.edgeos.edgeos_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestEdgeosCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item)
- command = obj['command']
- except (ValueError, TypeError):
- command = item['command']
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_edgeos_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('Version: v1.9.7'))
-
- def test_edgeos_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('Version: v1.9.7'))
-
- def test_edgeos_commond_wait_for(self):
- wait_for = 'result[0] contains "Ubiquiti Networks"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_edgeos_command_wait_for_fails(self):
- wait_for = 'result[0] contains "bad string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_edgeos_command_retries(self):
- wait_for = 'result[0] contains "bad string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_edgeos_command_match_any(self):
- wait_for = ['result[0] contains "Ubiquiti Networks"',
- 'result[0] contains "bad string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_edgeos_command_match_all(self):
- wait_for = ['result[0] contains "Ubiquiti Networks"',
- 'result[0] contains "EdgeRouter"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_vyos_command_match_all_failure(self):
- wait_for = ['result[0] contains "Ubiquiti Networks"',
- 'result[0] contains "bad string"']
- commands = ['show version', 'show version']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/edgeos/test_edgeos_config.py b/test/units/modules/network/edgeos/test_edgeos_config.py
deleted file mode 100644
index dfd5771f13..0000000000
--- a/test/units/modules/network/edgeos/test_edgeos_config.py
+++ /dev/null
@@ -1,105 +0,0 @@
-#
-# (c) 2018 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.edgeos import edgeos_config
-from units.modules.utils import set_module_args
-from .edgeos_module import TestEdgeosModule, load_fixture
-
-
-class TestEdgeosConfigModule(TestEdgeosModule):
-
- module = edgeos_config
-
- def setUp(self):
- super(TestEdgeosConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.edgeos.edgeos_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.edgeos.edgeos_config.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.edgeos.edgeos_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestEdgeosConfigModule, self).tearDown()
-
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'edgeos_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_edgeos_config_unchanged(self):
- src = load_fixture('edgeos_config_config.cfg')
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_edgeos_config_src(self):
- src = load_fixture('edgeos_config_src.cfg')
- set_module_args(dict(src=src))
- commands = ['set system host-name er01', 'delete interfaces ethernet eth0 address']
- self.execute_module(changed=True, commands=commands)
-
- def test_edgeos_config_src_brackets(self):
- src = load_fixture('edgeos_config_src_brackets.cfg')
- set_module_args(dict(src=src))
- commands = ['set interfaces ethernet eth0 address 10.10.10.10/24', 'set system host-name er01']
- self.execute_module(changed=True, commands=commands)
-
- def test_edgeos_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_edgeos_config_lines(self):
- commands = ['set system host-name er01']
- set_module_args(dict(lines=commands))
- self.execute_module(changed=True, commands=commands)
-
- def test_edgeos_config_config(self):
- config = 'set system host-name localhost'
- new_config = ['set system host-name er01']
- set_module_args(dict(lines=new_config, config=config))
- self.execute_module(changed=True, commands=new_config)
-
- def test_edgeos_config_match_none(self):
- lines = ['set system interfaces ethernet eth0 address 1.2.3.4/24',
- 'set system interfaces ethernet eth0 description Outside']
- set_module_args(dict(lines=lines, match='none'))
- self.execute_module(changed=True, commands=lines, sort=False)
-
- def test_edgeos_config_single_quote_wrapped_values(self):
- lines = ["set system interfaces ethernet eth0 description 'tests single quotes'"]
- set_module_args(dict(lines=lines))
- commands = ["set system interfaces ethernet eth0 description 'tests single quotes'"]
- self.execute_module(changed=True, commands=commands)
-
- def test_edgeos_config_single_quote_wrapped_values_failure(self):
- lines = ["set system interfaces ethernet eth0 description 'test's single quotes'"]
- set_module_args(dict(lines=lines))
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/edgeos/test_edgeos_facts.py b/test/units/modules/network/edgeos/test_edgeos_facts.py
deleted file mode 100644
index 8bc0edb33e..0000000000
--- a/test/units/modules/network/edgeos/test_edgeos_facts.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# (c) 2018 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.edgeos import edgeos_facts
-from units.modules.utils import set_module_args
-from .edgeos_module import TestEdgeosModule, load_fixture
-
-
-class TestEdgeosFactsModule(TestEdgeosModule):
-
- module = edgeos_facts
-
- def setUp(self):
- super(TestEdgeosFactsModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.edgeos.edgeos_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestEdgeosFactsModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item)
- command = obj['command']
- except ValueError:
- command = item
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_edgeos_facts_default(self):
- set_module_args(dict(gather_subset='default'))
- result = self.execute_module()
- facts = result.get('ansible_facts')
- self.assertEqual(len(facts), 5)
- self.assertEqual(facts['ansible_net_hostname'].strip(), 'er01')
- self.assertEqual(facts['ansible_net_version'], '1.9.7+hotfix.4')
-
- def test_edgeos_facts_not_all(self):
- set_module_args(dict(gather_subset='!all'))
- result = self.execute_module()
- facts = result.get('ansible_facts')
- self.assertEqual(len(facts), 5)
- self.assertEqual(facts['ansible_net_hostname'].strip(), 'er01')
- self.assertEqual(facts['ansible_net_version'], '1.9.7+hotfix.4')
-
- def test_edgeos_facts_exclude_most(self):
- set_module_args(dict(gather_subset=['!neighbors', '!config']))
- result = self.execute_module()
- facts = result.get('ansible_facts')
- self.assertEqual(len(facts), 5)
- self.assertEqual(facts['ansible_net_hostname'].strip(), 'er01')
- self.assertEqual(facts['ansible_net_version'], '1.9.7+hotfix.4')
-
- def test_edgeos_facts_invalid_subset(self):
- set_module_args(dict(gather_subset='cereal'))
- result = self.execute_module(failed=True)
diff --git a/test/units/modules/network/edgeswitch/edgeswitch_module.py b/test/units/modules/network/edgeswitch/edgeswitch_module.py
deleted file mode 100644
index 37c8b8aa28..0000000000
--- a/test/units/modules/network/edgeswitch/edgeswitch_module.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# (c) 2018 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestEdgeswitchModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_description b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_description
deleted file mode 100644
index b6249b78e1..0000000000
--- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_description
+++ /dev/null
@@ -1,26 +0,0 @@
-Interface Admin Link Description
---------- --------- ------ ----------------------------------------------------------------
-0/1 Enable Up VMOTION ESX1
-0/2 Enable Up DATA ESX1
-0/3 Enable Up VMOTION ESX2
-0/4 Enable Up DATA ESX2
-0/5 Enable Up VMOTION ESX3
-0/6 Enable Up DATA ESX3
-0/7 Enable Up VMOTION ESX4
-0/8 Enable Up DATA ESX4
-0/9 Enable Up SAVE
-0/10 Enable Down
-0/11 Enable Down
-0/12 Enable Down
-0/13 Enable Down
-0/14 Enable Down
-0/15 Enable Up UPLINK VIDEO WITH A VERY LONG DESCRIPTION THAT HELPS NO ONE
-0/16 Enable Up UPLINK LOCAL
-3/1 Enable Down
-3/2 Enable Down
-3/3 Enable Down
-3/4 Enable Down
-3/5 Enable Down
-3/6 Enable Down
-4/1 Enable Up
-
diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_status_all b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_status_all
deleted file mode 100644
index eeddc6ea3d..0000000000
--- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_interfaces_status_all
+++ /dev/null
@@ -1,31 +0,0 @@
- Link Physical Physical Media Flow Control
-Port Name State Mode Status Type Status
---------- ---------------------------- ------ ---------- ---------- ------------------ ------------
-0/1 VMOTION ESX1 Up Auto D 10G Full 2.5G-BaseFX Inactive
-0/2 DATA ESX1 Up Auto D 10G Full 2.5G-BaseFX Inactive
-0/3 VMOTION ESX2 Up Auto D 10G Full 2.5G-BaseFX Inactive
-0/4 DATA ESX2 Up Auto D 10G Full 2.5G-BaseFX Inactive
-0/5 VMOTION ESX3 Up Auto D 10G Full 2.5G-BaseFX Inactive
-0/6 DATA ESX3 Up Auto D 10G Full 2.5G-BaseFX Inactive
-0/7 VMOTION ESX4 Up Auto D 10G Full 2.5G-BaseFX Inactive
-0/8 DATA ESX4 Up Auto D 10G Full 2.5G-BaseFX Inactive
-0/9 SAVE Up Auto D 10G Full 2.5G-BaseFX Inactive
-0/10 Down Auto D 2.5G-BaseFX Inactive
-0/11 Down Auto D 2.5G-BaseFX Inactive
-0/12 Down Auto D 2.5G-BaseFX Inactive
-0/13 Down Auto D 2.5G-BaseFX Inactive
-0/14 Down Auto Unknown Inactive
-0/15 Down Auto Unknown Inactive
-0/15 UPLINK VIDEO WITH A VERY LON Up Auto 1000 Full Unknown Inactive
-0/16 UPLINK LOCAL Up Auto 1000 Full Unknown Inactive
-3/1 Down
-3/2 Down
-3/3 Down
-3/4 Down
-3/5 Down
-3/6 Down
-4/1 Up 10 Half 10 Half
-
-Flow Control:Disabled
-
-
diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_sysinfo b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_sysinfo
deleted file mode 100644
index c51f2eee72..0000000000
--- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_sysinfo
+++ /dev/null
@@ -1,7 +0,0 @@
-System Description............................. EdgeSwitch 16-Port 10G, 1.7.4.5075842, Linux 3.6.5, 1.0.0.4872137
-System Name.................................... sw_test_1
-System Location................................
-System Contact.................................
-System Object ID............................... 1.3.6.1.4.1.4413
-System Up Time................................. 174 days 19 hrs 0 mins 51 secs
-Current SNTP Synchronized Time................. Oct 20 22:53:01 2018 UTC
diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_version b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_version
deleted file mode 100644
index 334abc75f2..0000000000
--- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_facts_show_version
+++ /dev/null
@@ -1,8 +0,0 @@
-Switch: 1
-
-System Description............................. EdgeSwitch 16-Port 10G, 1.7.4.5075842, Linux 3.6.5, 1.0.0.4872137
-Machine Type................................... EdgeSwitch 16-Port 10G
-Machine Model.................................. ES-16-XG
-Serial Number.................................. F09FC2EFD310
-Burned In MAC Address.......................... F0:9F:C2:EF:D3:10
-Software Version............................... 1.7.4.5075842
diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_interfaces_switchport b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_interfaces_switchport
deleted file mode 100644
index dbf5a0fc9f..0000000000
--- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_interfaces_switchport
+++ /dev/null
@@ -1,239 +0,0 @@
-Port: 0/1
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 0/2
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 0/3
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs:
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs: 1
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 0/4
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs:
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs: 1
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 0/5
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 100
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 100
-General Mode Tagged VLANs:
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 0/6
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs:
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 0/7
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs:
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 0/8
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs:
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 0/9
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 0/10
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 3/1
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 3/2
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 3/3
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 3/4
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 3/5
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
-
-Port: 3/6
-VLAN Membership Mode: General
-Access Mode VLAN: 1 (default)
-General Mode PVID: 1 (default)
-General Mode Ingress Filtering: Disabled
-General Mode Acceptable Frame Type: Admit all
-General Mode Dynamically Added VLANs:
-General Mode Untagged VLANs: 1
-General Mode Tagged VLANs: 100
-General Mode Forbidden VLANs:
-Trunking Mode Native VLAN: 1 (default)
-Trunking Mode Native VLAN tagging: Disable
-Trunking Mode VLANs Enabled: All
-Protected Port: False
diff --git a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_vlan_brief b/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_vlan_brief
deleted file mode 100644
index 36e46bac99..0000000000
--- a/test/units/modules/network/edgeswitch/fixtures/edgeswitch_vlan_show_vlan_brief
+++ /dev/null
@@ -1,4 +0,0 @@
-VLAN ID VLAN Name VLAN Type
-------- -------------------------------- -------------------
-1 default Default
-100 voice Static
diff --git a/test/units/modules/network/edgeswitch/test_edgeswitch_facts.py b/test/units/modules/network/edgeswitch/test_edgeswitch_facts.py
deleted file mode 100644
index 91dacc0eee..0000000000
--- a/test/units/modules/network/edgeswitch/test_edgeswitch_facts.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# (c) 2018 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.edgeswitch import edgeswitch_facts
-from units.modules.utils import set_module_args
-from .edgeswitch_module import TestEdgeswitchModule, load_fixture
-
-
-class TestEdgeswitchFactsModule(TestEdgeswitchModule):
-
- module = edgeswitch_facts
-
- def setUp(self):
- super(TestEdgeswitchFactsModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.edgeswitch.edgeswitch_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestEdgeswitchFactsModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- module = args
- commands = kwargs['commands']
- output = list()
-
- for command in commands:
- filename = str(command).split(' | ')[0].replace(' ', '_')
- output.append(load_fixture('edgeswitch_facts_%s' % filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_edgeswitch_facts_default(self):
- set_module_args(dict(gather_subset=['all', '!interfaces', '!config']))
- result = self.execute_module()
- facts = result.get('ansible_facts')
- self.assertEqual(len(facts), 5)
- self.assertEqual(facts['ansible_net_hostname'], 'sw_test_1')
- self.assertEqual(facts['ansible_net_serialnum'], 'F09FC2EFD310')
- self.assertEqual(facts['ansible_net_version'], '1.7.4.5075842')
-
- def test_edgeswitch_facts_interfaces(self):
- set_module_args(dict(gather_subset='interfaces'))
- result = self.execute_module()
- facts = result.get('ansible_facts')
- self.assertEqual(len(facts), 6)
- self.assertEqual(facts['ansible_net_interfaces']['0/1']['operstatus'], 'Enable')
- self.assertEqual(facts['ansible_net_interfaces']['0/2']['mediatype'], '2.5G-BaseFX')
- self.assertEqual(facts['ansible_net_interfaces']['0/3']['physicalstatus'], '10G Full')
- self.assertEqual(facts['ansible_net_interfaces']['0/4']['lineprotocol'], 'Up')
- self.assertEqual(facts['ansible_net_interfaces']['0/15']['description'], 'UPLINK VIDEO WITH A VERY LONG DESCRIPTION THAT HELPS NO ONE')
diff --git a/test/units/modules/network/edgeswitch/test_edgeswitch_vlan.py b/test/units/modules/network/edgeswitch/test_edgeswitch_vlan.py
deleted file mode 100644
index 4328efcd18..0000000000
--- a/test/units/modules/network/edgeswitch/test_edgeswitch_vlan.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# (c) 2018 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.edgeswitch import edgeswitch_vlan
-from ansible.modules.network.edgeswitch.edgeswitch_vlan import parse_vlan_brief, parse_interfaces_switchport
-from units.modules.utils import set_module_args
-from .edgeswitch_module import TestEdgeswitchModule, load_fixture
-
-
-class TestEdgeswitchVlanModule(TestEdgeswitchModule):
-
- module = edgeswitch_vlan
-
- def setUp(self):
- super(TestEdgeswitchVlanModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.edgeswitch.edgeswitch_vlan.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- self.mock_load_config = patch('ansible.modules.network.edgeswitch.edgeswitch_vlan.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestEdgeswitchVlanModule, self).tearDown()
- self.mock_run_commands.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for command in commands:
- if command.startswith('vlan ') or command == 'exit':
- output.append('')
- else:
- filename = str(command).split(' | ')[0].replace(' ', '_')
- output.append(load_fixture('edgeswitch_vlan_%s' % filename))
- return output
-
- self.run_commands.side_effect = load_from_file
- self.load_config.return_value = {}
-
- def test_edgeswitch_vlan_create(self):
- set_module_args({'vlan_id': '200', 'name': 'video', 'state': 'present'})
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan database',
- 'vlan 200',
- 'vlan name 200 \"video\"',
- 'exit'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_edgeswitch_vlan_id_startwith_100(self):
- set_module_args({'vlan_id': '100', 'name': 'voice', 'state': 'present'})
- result = self.execute_module(changed=False)
- expected_commands = []
- self.assertEqual(result['commands'], expected_commands)
-
- def test_edgeswitch_vlan_rename(self):
- set_module_args({'vlan_id': '100', 'name': 'video', 'state': 'present'})
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan database',
- 'vlan name 100 \"video\"',
- 'exit'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_edgeswitch_vlan_with_interfaces_range(self):
- set_module_args({'vlan_id': '100', 'name': 'voice', 'state': 'present', 'tagged_interfaces': ['0/6-0/8']})
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface 0/6-0/8',
- 'vlan participation include 100',
- 'vlan tagging 100',
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_edgeswitch_vlan_with_interfaces_and_newvlan(self):
- set_module_args({'vlan_id': '3', 'name': 'vlan3', 'state': 'present', 'untagged_interfaces': ['0/8', '0/7']})
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan database',
- 'vlan 3',
- 'vlan name 3 \"vlan3\"',
- 'exit',
- 'interface 0/7-0/8',
- 'vlan participation include 3',
- 'vlan pvid 3',
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_parse_interfaces_switchport(self):
- result = parse_interfaces_switchport(load_fixture('edgeswitch_vlan_show_interfaces_switchport'))
- i1 = {
- 'interface': '0/1',
- 'pvid_mode': '1',
- 'untagged_vlans': ['1'],
- 'tagged_vlans': ['100'],
- 'forbidden_vlans': [''],
- }
- i3 = {
- 'interface': '0/3',
- 'pvid_mode': '1',
- 'untagged_vlans': [''],
- 'tagged_vlans': ['100'],
- 'forbidden_vlans': ['1'],
- }
- i5 = {
- 'interface': '0/5',
- 'pvid_mode': '100',
- 'untagged_vlans': ['100'],
- 'tagged_vlans': [''],
- 'forbidden_vlans': [''],
- }
- self.assertEqual(result['0/1'], i1)
- self.assertEqual(result['0/3'], i3)
- self.assertEqual(result['0/5'], i5)
-
- def test_parse_vlan_brief(self):
- result = parse_vlan_brief(load_fixture('edgeswitch_vlan_show_vlan_brief'))
- obj = [
- {
- 'vlan_id': '1',
- 'name': 'default'
- },
- {
- 'vlan_id': '100',
- 'name': 'voice'
- }
- ]
- self.assertEqual(result, obj)
diff --git a/test/units/modules/network/enos/enos_module.py b/test/units/modules/network/enos/enos_module.py
deleted file mode 100644
index 0a2b57fd04..0000000000
--- a/test/units/modules/network/enos/enos_module.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright (C) 2017 Lenovo, Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.compat import unittest
-from units.compat.mock import patch
-from ansible.module_utils import basic
-
-
-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 AnsibleExitJson(Exception):
- pass
-
-
-class AnsibleFailJson(Exception):
- pass
-
-
-class TestEnosModule(unittest.TestCase):
-
- def setUp(self):
- self.mock_sleep = patch('time.sleep')
- self.mock_sleep.start()
-
- def tearDown(self):
- self.mock_sleep.stop()
-
- def execute_module(self, failed=False, changed=False, commands=None,
- sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']),
- result['commands'])
- else:
- self.assertEqual(commands, result['commands'],
- result['commands'])
-
- return result
-
- def failed(self):
- def fail_json(*args, **kwargs):
- kwargs['failed'] = True
- raise AnsibleFailJson(kwargs)
-
- with patch.object(basic.AnsibleModule, 'fail_json', fail_json):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- def exit_json(*args, **kwargs):
- if 'changed' not in kwargs:
- kwargs['changed'] = False
- raise AnsibleExitJson(kwargs)
-
- with patch.object(basic.AnsibleModule, 'exit_json', exit_json):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/enos/fixtures/enos_config_config.cfg b/test/units/modules/network/enos/fixtures/enos_config_config.cfg
deleted file mode 100644
index 27b5b73cc1..0000000000
--- a/test/units/modules/network/enos/fixtures/enos_config_config.cfg
+++ /dev/null
@@ -1,47 +0,0 @@
-Current configuration:
-!
-version "8.4.3.12"
-switch-type "Lenovo RackSwitch G8272"
-iscli-new
-!
-!
-access https enable
-
-snmp-server location "Location:,Room:,Rack:Rack 3,LRU:40"
-snmp-server read-community "public"
-snmp-server trap-source 128
-!
-!
-!
-no system dhcp
-no system default-ip mgt
-hostname router
-!
-!
-!
-!interface ip 1
-! addr <default>
-! enable
-!
-interface ip 13
- ip address 1.2.3.4 255.255.255.0
- enable
- exit
-!
-interface ip 128
- ip address 10.241.105.24 255.255.255.0
- enable
- exit
-!
-ip gateway 4 address 10.241.105.1
-ip gateway 4 enable
-!
-!
-!
-!
-router bgp
- as 100
-!
-!
-end
-
diff --git a/test/units/modules/network/enos/fixtures/enos_config_src.cfg b/test/units/modules/network/enos/fixtures/enos_config_src.cfg
deleted file mode 100644
index f681655be7..0000000000
--- a/test/units/modules/network/enos/fixtures/enos_config_src.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-!
-hostname foo
-!
-interface ip 13
- no ip ospf enable
-!
diff --git a/test/units/modules/network/enos/fixtures/show_interface_ip b/test/units/modules/network/enos/fixtures/show_interface_ip
deleted file mode 100644
index 263a861f57..0000000000
--- a/test/units/modules/network/enos/fixtures/show_interface_ip
+++ /dev/null
@@ -1,9 +0,0 @@
-Interface information:
-1: IP4 192.168.49.50 255.255.255.0 192.168.49.255, vlan 1, up
-128: IP4 10.241.105.24 255.255.255.0 10.241.105.255, vlan 4095, up
-
-Routed Port Interface Information:
-
-Loopback interface information:
-
-
diff --git a/test/units/modules/network/enos/fixtures/show_interface_status b/test/units/modules/network/enos/fixtures/show_interface_status
deleted file mode 100644
index 52b37eb184..0000000000
--- a/test/units/modules/network/enos/fixtures/show_interface_status
+++ /dev/null
@@ -1,59 +0,0 @@
------------------------------------------------------------------------
-Port Speed Duplex Flow Ctrl Link Description
-------- ------ -------- --TX-----RX-- ------ -------------
-1 1G/10G full no no down 1
-2 1G/10G full no no down 2
-3 1G/10G full no no down 3
-4 1G/10G full no no down 4
-5 1G/10G full no no down 5
-6 1G/10G full no no down 6
-7 1G/10G full no no down 7
-8 1G/10G full no no down 8
-9 1G/10G full no no down 9
-10 1G/10G full no no down 10
-11 1G/10G full no no down 11
-12 1G/10G full no no down 12
-13 1G/10G full no no down 13
-14 1G/10G full no no down 14
-15 1G/10G full no no down 15
-16 1G/10G full no no down 16
-17 1G/10G full no no down 17
-18 1G/10G full no no down 18
-19 1G/10G full no no down 19
-20 1G/10G full no no down 20
-21 1G/10G full no no down 21
-22 1G/10G full no no down 22
-23 1G/10G full no no down 23
-24 1G/10G full no no down 24
-25 1G/10G full no no down 25
-26 1G/10G full no no down 26
-27 1G/10G full no no down 27
-28 1G/10G full no no down 28
-29 1G/10G full no no down 29
-30 1G/10G full no no down 30
-31 1G/10G full no no down 31
-32 1G/10G full no no down 32
-33 1G/10G full no no down 33
-34 1G/10G full no no down 34
-35 1G/10G full no no down 35
-36 1G/10G full no no down 36
-37 1G/10G full no no down 37
-38 1000 full no no up 38
-39 1G/10G full no no down 39
-40 1G/10G full no no down 40
-41 1G/10G full no no down 41
-42 1G/10G full no no down 42
-43 1G/10G full no no down 43
-44 1G/10G full no no down 44
-45 1G/10G full no no down 45
-46 1G/10G full no no down 46
-47 1G/10G full no no down 47
-48 10000 full no no down 48
-49 40000 full no no down 49
-50 40000 full no no down 50
-51 40000 full no no down 51
-52 40000 full no no down 52
-53 40000 full no no down 53
-54 40000 full no no down 54
-MGT 1000 full yes yes up MGT
-
diff --git a/test/units/modules/network/enos/fixtures/show_lldp_port b/test/units/modules/network/enos/fixtures/show_lldp_port
deleted file mode 100644
index fcefdf03bd..0000000000
--- a/test/units/modules/network/enos/fixtures/show_lldp_port
+++ /dev/null
@@ -1,60 +0,0 @@
-LLDP Port Info
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Port MAC address MTU PortEnabled AdminStatus RxChange TrapNotify
-======= ================= ==== =========== =========== ======== ==========
-1 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-2 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-3 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-4 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-5 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-6 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-7 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-8 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-9 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-10 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-11 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-12 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-13 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-14 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-15 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-16 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-17 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-18 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-19 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-20 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-21 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-22 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-23 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-24 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-25 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-26 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-27 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-28 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-29 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-30 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-31 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-32 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-33 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-34 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-35 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-36 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-37 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-38 a8:97:dc:dd:e2:00 9216 enabled tx_rx no disabled
-39 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-40 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-41 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-42 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-43 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-44 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-45 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-46 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-47 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-48 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-49 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-50 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-51 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-52 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-53 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-54 a8:97:dc:dd:e2:00 9216 disabled tx_rx no disabled
-MGT a8:97:dc:dd:e2:fe 9216 enabled tx_rx no disabled
-
diff --git a/test/units/modules/network/enos/fixtures/show_lldp_remote-device_port b/test/units/modules/network/enos/fixtures/show_lldp_remote-device_port
deleted file mode 100644
index 1381c099dc..0000000000
--- a/test/units/modules/network/enos/fixtures/show_lldp_remote-device_port
+++ /dev/null
@@ -1,12 +0,0 @@
-LLDP Remote Devices Information
-Legend(possible values in DMAC column) :
-NB - Nearest Bridge - 01-80-C2-00-00-0E
-NnTB - Nearest non-TPMR Bridge - 01-80-C2-00-00-03
-NCB - Nearest Customer Bridge - 01-80-C2-00-00-00
-Total number of current entries: 1
-
-LocalPort | Index | Remote Chassis ID | Remote Port | Remote System Name | DMAC
-----------|-------|---------------------------|----------------------|-------------------------------|---------
-MGT | 1 | 74 26 ac 3d 3c c0 | Gi3/18 | INDIA-LAB-1-C4506E-A.labs.l...| NB
-
-
diff --git a/test/units/modules/network/enos/fixtures/show_run b/test/units/modules/network/enos/fixtures/show_run
deleted file mode 100644
index 4d918dfe00..0000000000
--- a/test/units/modules/network/enos/fixtures/show_run
+++ /dev/null
@@ -1,59 +0,0 @@
-Current configuration:
-!
-version "8.4.3.12"
-switch-type "Lenovo RackSwitch G8272"
-iscli-new
-!
-!
-access https enable
-
-snmp-server location "Location:,Room:,Rack:Rack 3,LRU:40"
-snmp-server read-community "public"
-snmp-server trap-source 128
-!
-!
-!
-no system dhcp
-no system default-ip mgt
-hostname "test1"
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!interface ip 1
-! addr <default>
-! enable
-!
-interface ip 128
- ip address 10.241.105.24 255.255.255.0
- enable
- exit
-!
-ip gateway 4 address 10.241.105.1
-ip gateway 4 enable
-!
-!
-!
-!
-!
-!
-router bgp
- as 100
-!
-!
-end
-
diff --git a/test/units/modules/network/enos/fixtures/show_running-config b/test/units/modules/network/enos/fixtures/show_running-config
deleted file mode 100644
index 4d918dfe00..0000000000
--- a/test/units/modules/network/enos/fixtures/show_running-config
+++ /dev/null
@@ -1,59 +0,0 @@
-Current configuration:
-!
-version "8.4.3.12"
-switch-type "Lenovo RackSwitch G8272"
-iscli-new
-!
-!
-access https enable
-
-snmp-server location "Location:,Room:,Rack:Rack 3,LRU:40"
-snmp-server read-community "public"
-snmp-server trap-source 128
-!
-!
-!
-no system dhcp
-no system default-ip mgt
-hostname "test1"
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!interface ip 1
-! addr <default>
-! enable
-!
-interface ip 128
- ip address 10.241.105.24 255.255.255.0
- enable
- exit
-!
-ip gateway 4 address 10.241.105.1
-ip gateway 4 enable
-!
-!
-!
-!
-!
-!
-router bgp
- as 100
-!
-!
-end
-
diff --git a/test/units/modules/network/enos/fixtures/show_system_memory b/test/units/modules/network/enos/fixtures/show_system_memory
deleted file mode 100644
index 0a0625eb16..0000000000
--- a/test/units/modules/network/enos/fixtures/show_system_memory
+++ /dev/null
@@ -1,166 +0,0 @@
-------------------------------------------------------------------
-
-Memory utilization:
-MemTotal: 4088580 kB
-MemFree: 3464304 kB
-MemAvailable: 3586864 kB
-Buffers: 2016 kB
-Cached: 173236 kB
-SwapCached: 0 kB
-Active: 504316 kB
-Inactive: 38056 kB
-Active(anon): 376332 kB
-Inactive(anon): 27460 kB
-Active(file): 127984 kB
-Inactive(file): 10596 kB
-Unevictable: 0 kB
-Mlocked: 0 kB
-HighTotal: 3407860 kB
-HighFree: 2952904 kB
-LowTotal: 680720 kB
-LowFree: 511400 kB
-SwapTotal: 0 kB
-SwapFree: 0 kB
-Dirty: 0 kB
-Writeback: 0 kB
-AnonPages: 367120 kB
-Mapped: 20664 kB
-Shmem: 36672 kB
-Slab: 8240 kB
-SReclaimable: 3492 kB
-SUnreclaim: 4748 kB
-KernelStack: 760 kB
-PageTables: 1592 kB
-NFS_Unstable: 0 kB
-Bounce: 0 kB
-WritebackTmp: 0 kB
-CommitLimit: 2044288 kB
-Committed_AS: 1128364 kB
-VmallocTotal: 241652 kB
-VmallocUsed: 17116 kB
-VmallocChunk: 223920 kB
-HugePages_Total: 0
-HugePages_Free: 0
-HugePagesPercentage used 15
-
-Memory tracing: enabled
-Extended Memory tracing: disabled
-High-water monitoring: enabled
-
-Memory high-water: 20 percent (at 1818 seconds from boot)
-
-Memory stats:
- allocs: 16484474
- frees: 16481108
- current: 3378
- alloc fails: 0
-
-STEM thread memory stats:
- thid name allocs frees diff current * largest
- 0 INIT 2655 933 1722 69381079 31982881
- 1 STEM 0 0 0 0 0
- 2 STP 13 6 7 41165721 16673868
- 3 MFDB 1 0 1 6 6
- 4 TND 41745 42134 -389 847441 336
- 5 CONS 3867 3866 1 26622356 6291456
- 6 TNET 3806775 3809157 -2382 1032303745 12582912
- 7 TNET 126519 127060 -541 269598653 12582912
- 8 TNET 1 0 1 6131 6131
- 9 TNET 1 0 1 6131 6131
- 10 TNET 1 0 1 6131 6131
- 11 TNET 1 0 1 6131 6131
- 12 LOG 441 441 0 61437 272
- 13 TRAP 16911 16911 0 1416745 544
- 14 NTP 0 0 0 0 0
- 15 RMON 0 0 0 0 0
- 18 IP 40 7 33 26152 4248
- 19 RIP 0 0 0 0 0
- 20 AGR 24643 23177 1466 8949189 6131
- 21 EPI 0 0 0 0 0
- 22 PORT 56 0 56 60032 16384
- 23 BGP 0 10 -10 0 0
- 27 MGMT 335 162 173 48883648 524436
- 28 SCAN 0 0 0 0 0
- 29 OSPF 0 20 -20 0 0
- 30 VRRP 1 0 1 16 16
- 31 SNMP 4670978 4670164 814 2315549793 12582912
- 32 SNMP 1108 1068 40 208175203 12582912
- 34 SSHD 800286 796910 3376 271976834 2017
- 36 DT1X 0 0 0 0 0
- 37 NCFD 1 0 1 6131 6131
- 38 NCFD 1 0 1 6131 6131
- 39 NCFD 1 0 1 6131 6131
- 40 NCFD 1 0 1 6131 6131
- 41 SWR 0 0 0 0 0
- 42 SWRH 0 0 0 0 0
- 43 OBS 0 0 0 0 0
- 44 TEAM 0 0 0 0 0
- 45 I2C 0 0 0 0 0
- 46 LACP 72 0 72 1152 16
- 47 SFP 0 0 0 0 0
- 48 SWKY 0 0 0 0 0
- 49 HLNK 0 0 0 0 0
- 50 LLDP 5794454 5794373 81 598072737 14336
- 51 IPV6 0 0 0 0 0
- 52 RTM6 0 0 0 0 0
- 53 PNG6 0 0 0 0 0
- 55 OSP3 0 0 0 0 0
- 56 VMAC 0 0 0 0 0
- 57 MEMM 0 0 0 0 0
- 58 UDLD 0 0 0 0 0
- 59 FCOE 0 0 0 0 0
- 60 SFLO 0 0 0 0 0
- 61 PROX 0 0 0 0 0
- 62 OAM 0 0 0 0 0
- 63 PIM 0 0 0 0 0
- 64 DCBX 1 1 0 126 126
- 65 NBOO 1 0 1 6131 6131
- 66 VLAG 0 0 0 0 0
- 67 MLD6 0 0 0 0 0
- 68 DHCP 0 0 0 0 0
- 69 ETMR 0 0 0 0 0
- 70 IKE2 0 0 0 0 0
- 71 ACLG 1 0 1 5120 5120
- 72 HWRT 0 0 0 0 0
- 73 OFLO 17 0 17 32244 8048
- 74 SFM 0 0 0 0 0
- 75 UPTM 0 0 0 0 0
- 76 VSDB 0 2 -2 0 0
- 77 ECPT 3 0 3 168532 168000
- 78 ECPR 0 0 0 0 0
- 79 VDPT 5 0 5 5260 1460
- 80 VFDB 0 1 -1 0 0
- 81 PTP 0 0 0 0 0
- 82 PBR 0 0 0 0 0
- 83 HIST 0 0 0 0 0
- 84 SLP 699757 701435 -1678 254297215 262140
- 85 UFP 217 73 144 12908 132
- 86 CDCP 0 0 0 0 0
- 87 IGMP 0 0 0 0 0
- 88 ICMP 0 0 0 0 0
- 89 HCM 0 0 0 0 0
- 90 CFCF 0 0 0 0 0
- 91 FDF@ 0 0 0 0 0
- 92 NAT 0 0 0 0 0
- 93 OCM1 11 0 11 44 4
- 94 OCM2 0 0 0 0 0
- 95 OFDT 0 0 0 0 0
- 96 OSFM 5 0 5 2636 1024
- 97 OBSC 0 0 0 0 0
- 98 STPM 0 0 0 0 0
- 99 ARP 0 0 0 0 0
- 100 VXLN 0 0 0 0 0
- 101 OVSD 0 0 0 0 0
- 102 OVSC 0 0 0 0 0
- 103 VTEP 0 0 0 0 0
- 104 BFD 18 0 18 440 44
- 105 STPR 0 0 0 0 0
- 106 VMFD 0 0 0 0 0
- 107 NORM 0 0 0 0 0
- 108 DONE 494136 493788 348 280129530 6291456
- Total 16485149 16481768 3381 1132837544
-
- Non-STEM allocs 0
- Non-STEM frees 2
- Overhead 1780
-
diff --git a/test/units/modules/network/enos/fixtures/show_version b/test/units/modules/network/enos/fixtures/show_version
deleted file mode 100644
index a0f52b5731..0000000000
--- a/test/units/modules/network/enos/fixtures/show_version
+++ /dev/null
@@ -1,60 +0,0 @@
-System Information at 11:37:06 Fri Oct 27, 2017
-Time zone: No timezone configured
-Daylight Savings Time Status: Disabled
-
-Lenovo RackSwitch G8272
-
-Switch has been up for 30 days, 10 hours, 43 minutes and 14 seconds.
-Last boot: 00:53:32 Wed Sep 27, 2017 (power cycle)
-
-MAC address: a8:97:dc:dd:e2:00 IP (If 1) address: 192.168.49.50
-Management Port MAC Address: a8:97:dc:dd:e2:fe
-Management Port IP Address (if 128): 10.241.105.24
-Hardware Revision: 0
-Board Revision:
-Hardware Part No: 00CJ066
-Old Hardware Part No: 2MV4CR01W
-Switch Serial No: Y052MV4CR01W
-Manufacturing date: 14/51
-
-MTM Value: 7159-HCV
-Old MTM Value:
-ESN: MM01086
-
-
-WARNING: This is UNRELEASED SOFTWARE for LAB TESTING ONLY.
- DO NOT USE IN A PRODUCTION NETWORK.
-
-
-Software Version 8.4.3.12 (FLASH image1), active configuration.
-Boot kernel version 8.4.3.12
-
-USB Boot: disabled
-
-
-
-Temperature CPU Local : 31 C
-Temperature Ambient : 32 C
-Temperature Hot Spot : 44 C
-Temperature Asic Max : 63 C
-
-System Warning at 85 C / Shutdown at 95 C / Set Point is 70 C
-
-Fan 1 Module 1: 4054rpm 60pwm(23%) Front-To-Back
-Fan 2 Module 1: 4404rpm 60pwm(23%) Front-To-Back
-Fan 3 Module 2: 4112rpm 60pwm(23%) Front-To-Back
-Fan 4 Module 2: 4372rpm 60pwm(23%) Front-To-Back
-Fan 5 Module 3: 4072rpm 60pwm(23%) Front-To-Back
-Fan 6 Module 3: 4306rpm 60pwm(23%) Front-To-Back
-Fan 7 Module 4: 4134rpm 60pwm(23%) Front-To-Back
-Fan 8 Module 4: 4326rpm 60pwm(23%) Front-To-Back
-
-System Fan Airflow: Front-To-Back
-
-Power Supply 1: Front-To-Back [DPS-460KB C]
-Power Supply 2: Front-To-Back [DPS-460KB C]
-
- Power Faults: PS1-Pwr
- Fan Faults: None
-Service Faults: Too-Few-PS
-
diff --git a/test/units/modules/network/enos/test_enos_command.py b/test/units/modules/network/enos/test_enos_command.py
deleted file mode 100644
index f73aec6847..0000000000
--- a/test/units/modules/network/enos/test_enos_command.py
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright (C) 2017 Lenovo, Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.enos import enos_command
-from units.modules.utils import set_module_args
-from .enos_module import TestEnosModule, load_fixture
-
-
-class TestEnosCommandModule(TestEnosModule):
-
- module = enos_command
-
- def setUp(self):
- super(TestEnosCommandModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.enos.enos_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestEnosCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- command = item
- except ValueError:
- command = 'show version'
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_enos_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('System Information'))
-
- def test_enos_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show run']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('System Information'))
-
- def test_enos_command_wait_for(self):
- wait_for = 'result[0] contains "System Information"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_enos_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_enos_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_enos_command_match_any(self):
- wait_for = ['result[0] contains "System Information"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_enos_command_match_all(self):
- wait_for = ['result[0] contains "System Information"',
- 'result[0] contains "Lenovo"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_enos_command_match_all_failure(self):
- wait_for = ['result[0] contains "Lenovo ENOS"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show run']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/enos/test_enos_config.py b/test/units/modules/network/enos/test_enos_config.py
deleted file mode 100644
index 375c7264eb..0000000000
--- a/test/units/modules/network/enos/test_enos_config.py
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.enos import enos_config
-from .enos_module import TestEnosModule, load_fixture
-
-from units.modules.utils import set_module_args
-
-
-class TestEnosConfigModule(TestEnosModule):
-
- module = enos_config
-
- def setUp(self):
- self.patcher_get_config = patch('ansible.modules.network.enos.enos_config.get_config')
- self.mock_get_config = self.patcher_get_config.start()
- self.patcher_exec_command = patch('ansible.modules.network.enos.enos_config.load_config')
- self.mock_exec_command = self.patcher_exec_command.start()
-
- def tearDown(self):
- self.patcher_get_config.stop()
- self.patcher_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'enos_config_config.cfg'
- self.mock_get_config.return_value = load_fixture(config_file)
- self.mock_exec_command.return_value = 'dummy diff'
-
- def test_enos_config_unchanged(self):
- src = load_fixture('enos_config_config.cfg')
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_enos_config_src(self):
- src = load_fixture('enos_config_src.cfg')
- set_module_args(dict(src=src))
- commands = ['hostname foo', 'interface ip 13',
- 'no ip ospf enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_enos_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_enos_config_lines_wo_parents(self):
- set_module_args(dict(lines=['hostname foo']))
- commands = ['hostname foo']
- self.execute_module(changed=True, commands=commands)
-
- def test_enos_config_lines_w_parents(self):
- set_module_args(dict(lines=['shutdown'], parents=['interface ip 13']))
- commands = ['interface ip 13', 'shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_enos_config_before(self):
- set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2']))
- commands = ['test1', 'test2', 'hostname foo']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_enos_config_after(self):
- set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2']))
- commands = ['hostname foo', 'test1', 'test2']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_enos_config_before_after_no_change(self):
- set_module_args(dict(lines=['hostname router'],
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- self.execute_module()
-
- def test_enos_config_config(self):
- config = 'hostname localhost'
- set_module_args(dict(lines=['hostname router'], config=config))
- commands = ['hostname router']
- self.execute_module(changed=True, commands=commands)
-
- def test_enos_config_replace_block(self):
- lines = ['description test string', 'test string']
- parents = ['interface ip 13']
- set_module_args(dict(lines=lines, replace='block', parents=parents))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands)
-
- def test_enos_config_match_none(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string']
- parents = ['interface ip 13']
- set_module_args(dict(lines=lines, parents=parents, match='none'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_enos_config_match_strict(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'exit']
- parents = ['interface ip 13']
- set_module_args(dict(lines=lines, parents=parents, match='strict'))
- commands = parents + ['exit']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_enos_config_match_exact(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string',
- 'shutdown']
- parents = ['interface ip 13']
- set_module_args(dict(lines=lines, parents=parents, match='exact'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
diff --git a/test/units/modules/network/enos/test_enos_facts.py b/test/units/modules/network/enos/test_enos_facts.py
deleted file mode 100644
index 7e2d0426d1..0000000000
--- a/test/units/modules/network/enos/test_enos_facts.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from .enos_module import TestEnosModule, load_fixture
-from ansible.modules.network.enos import enos_facts
-from units.modules.utils import set_module_args
-
-
-class TestEnosFacts(TestEnosModule):
-
- module = enos_facts
-
- def setUp(self):
- super(TestEnosFacts, self).setUp()
- self.mock_run_commands = patch(
- 'ansible.modules.network.enos.enos_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestEnosFacts, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item)
- command = obj['command']
- except ValueError:
- command = item
- filename = str(command).replace(' ', '_')
- filename = filename.replace('/', '7')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_enos_facts_gather_subset_default(self):
- set_module_args(dict())
- result = self.execute_module()
- ansible_facts = result['ansible_facts']
- self.assertIn('hardware', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('interfaces', ansible_facts['ansible_net_gather_subset'])
- self.assertEqual('test1', ansible_facts['ansible_net_hostname'])
- self.assertIn('MGT', ansible_facts['ansible_net_interfaces'].keys())
- self.assertEqual(3992.75390625, ansible_facts['ansible_net_memtotal_mb'])
- self.assertEqual(3383.109375, ansible_facts['ansible_net_memfree_mb'])
-
- def test_enos_facts_gather_subset_config(self):
- set_module_args({'gather_subset': 'config'})
- result = self.execute_module()
- ansible_facts = result['ansible_facts']
- self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('config', ansible_facts['ansible_net_gather_subset'])
- self.assertEqual('test1', ansible_facts['ansible_net_hostname'])
- self.assertIn('ansible_net_config', ansible_facts)
diff --git a/test/units/modules/network/eric_eccli/eccli_module.py b/test/units/modules/network/eric_eccli/eccli_module.py
deleted file mode 100644
index 385e00d6bb..0000000000
--- a/test/units/modules/network/eric_eccli/eccli_module.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# (c) 2019 Ericsson.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestEccliModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/eric_eccli/fixtures/configure_terminal b/test/units/modules/network/eric_eccli/fixtures/configure_terminal
deleted file mode 100644
index 139597f9cb..0000000000
--- a/test/units/modules/network/eric_eccli/fixtures/configure_terminal
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/test/units/modules/network/eric_eccli/fixtures/show_version b/test/units/modules/network/eric_eccli/fixtures/show_version
deleted file mode 100644
index 9298419afb..0000000000
--- a/test/units/modules/network/eric_eccli/fixtures/show_version
+++ /dev/null
@@ -1,12 +0,0 @@
-Ericsson IPOS Version IPOS-19.4.0.0.38-Release
-Built by ciflash@f48824719fb1 Fri May 03 19:18:07 EDT 2019
-Copyright (C) 1998-2019, Ericsson AB. All rights reserved.
-Operating System version is Linux 3.14.25-00221-g19d0f20
-System Bootstrap version is N/A
-Installed minikernel version is N/A
-Router Up Time - 10 days, 23 hours 29 minutes 3 seconds
-
-
-
-
-
diff --git a/test/units/modules/network/eric_eccli/test_eric_eccli_command.py b/test/units/modules/network/eric_eccli/test_eric_eccli_command.py
deleted file mode 100644
index 51e8bdb9bf..0000000000
--- a/test/units/modules/network/eric_eccli/test_eric_eccli_command.py
+++ /dev/null
@@ -1,126 +0,0 @@
-# (c) 2019 Ericsson.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.eric_eccli import eric_eccli_command
-from units.modules.utils import set_module_args
-from .eccli_module import TestEccliModule, load_fixture
-
-
-class TestEccliCommandModule(TestEccliModule):
-
- module = eric_eccli_command
-
- def setUp(self):
- super(TestEccliCommandModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.eric_eccli.eric_eccli_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestEccliCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item['command'])
- command = obj['command']
- except ValueError:
- command = item['command']
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_eric_eccli_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('Ericsson IPOS Version'))
-
- def test_eric_eccli_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('Ericsson IPOS Version'))
-
- def test_eric_eccli_command_wait_for(self):
- wait_for = 'result[0] contains "Ericsson IPOS"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_eric_eccli_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_eric_eccli_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_eric_eccli_command_match_any(self):
- wait_for = ['result[0] contains "Ericsson IPOS"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_eric_eccli_command_match_all(self):
- wait_for = ['result[0] contains "Ericsson IPOS"',
- 'result[0] contains "Version IPOS"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_eric_eccli_command_match_all_failure(self):
- wait_for = ['result[0] contains "Ericsson IPOS"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show version']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
-
- def test_eric_eccli_command_configure_check_warning(self):
- commands = ['configure terminal']
- set_module_args({
- 'commands': commands,
- '_ansible_check_mode': True,
- })
- result = self.execute_module()
- self.assertEqual(
- result['warnings'],
- ['only non-config commands are supported when using check mode, not executing configure terminal'],
- )
-
- def test_eric_eccli_command_configure_not_warning(self):
- commands = ['configure terminal']
- set_module_args(dict(commands=commands))
- result = self.execute_module()
- self.assertEqual(result['warnings'], [])
diff --git a/test/units/modules/network/exos/exos_module.py b/test/units/modules/network/exos/exos_module.py
deleted file mode 100644
index da4ece7e6c..0000000000
--- a/test/units/modules/network/exos/exos_module.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 file_desc:
- data = file_desc.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestExosModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/exos/fixtures/exos_config_config.cfg b/test/units/modules/network/exos/fixtures/exos_config_config.cfg
deleted file mode 100644
index 5b1ad1e214..0000000000
--- a/test/units/modules/network/exos/fixtures/exos_config_config.cfg
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Module devmgr configuration.
-#
-configure snmp sysName "x870"
-configure snmp sysContact "support@extremenetworks.com, +1 888 257 3000"
-configure sys-recovery-level switch reset
-
-#
-# Module vpex configuration.
-#
-
-#
-# Module vlan configuration.
-#
-configure vlan default delete ports all
-configure vr VR-Default delete ports 1-128
-configure vr VR-Default add ports 1-128
-configure vlan default delete ports 1-2
-create vlan "ansible_test"
-configure vlan ansible_test tag 1111
-create vlan "vlan1"
-create vlan "vlan2"
-create vlan "vlan3"
-configure ports 1 description-string "Firewall"
-configure ports 2 description-string "Master Uplink"
-configure ports 3 description-string "Database Server"
-configure vlan ansible_test add ports 1 tagged
-configure vlan Default add ports 3-128 untagged
-configure vlan vlan1 ipaddress 10.0.1.1 255.255.255.0
-configure vlan vlan2 ipaddress 192.168.1.1 255.255.0.0
-configure vlan3 ipaddress fe80::202:b3ff:fe1e:8329/64
diff --git a/test/units/modules/network/exos/fixtures/exos_config_modified.cfg b/test/units/modules/network/exos/fixtures/exos_config_modified.cfg
deleted file mode 100644
index 75a57199fb..0000000000
--- a/test/units/modules/network/exos/fixtures/exos_config_modified.cfg
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Module devmgr configuration.
-#
-configure snmp sysName "marble"
-configure snmp sysContact "support@extremenetworks.com, +1 888 257 3000"
-configure sys-recovery-level switch reset
-
-#
-# Module vpex configuration.
-#
-
-#
-# Module vlan configuration.
-#
-configure vlan default delete ports all
-configure vr VR-Default delete ports 1-128
-configure vr VR-Default add ports 1-128
-configure vlan default delete ports 1-2
-create vlan "ansible_test"
-configure vlan ansible_test tag 1111
-create vlan "vlan1"
-create vlan "vlan2"
-create vlan "vlan3"
-configure ports 1 description-string "Firewall"
-configure ports 2 description-string "Master Uplink"
-configure ports 3 description-string "Database Server"
-configure vlan ansible_test add ports 1 tagged
-configure vlan Default add ports 3-128 untagged
-configure vlan vlan1 ipaddress 10.0.1.1 255.255.255.0
-configure vlan vlan2 ipaddress 192.168.1.1 255.255.0.0
-configure vlan3 ipaddress fe80::202:b3ff:fe1e:8329/64
diff --git a/test/units/modules/network/exos/fixtures/exos_config_src.cfg b/test/units/modules/network/exos/fixtures/exos_config_src.cfg
deleted file mode 100644
index ac86d493bb..0000000000
--- a/test/units/modules/network/exos/fixtures/exos_config_src.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-configure snmp sysName "marble"
-configure ports 1 description-string "IDS"
diff --git a/test/units/modules/network/exos/fixtures/show_lldp_neighbors b/test/units/modules/network/exos/fixtures/show_lldp_neighbors
deleted file mode 100644
index 181696a9d3..0000000000
--- a/test/units/modules/network/exos/fixtures/show_lldp_neighbors
+++ /dev/null
@@ -1 +0,0 @@
-[{"CLIoutput": "\n Neighbor Neighbor Neighbor\nPort Chassis ID Port ID TTL Age System Name\n===============================================================================\n1 00:02:02:02:02:02 1 120 26 EXOS-VM\n2 00:02:02:02:02:02 2 120 25 EXOS-VM\n3 00:02:02:02:02:02 3 120 25 EXOS-VM\n===============================================================================\nNOTE: The Chassis ID and/or Port ID might be truncated to fit the screen.\n\n"}, {"lldpPortNbrInfoShort": {"age": 26, "lastUpdate": 8412, "nbrChassisID": "00:02:02:02:02:02", "nbrChassisIdType": 4, "nbrIndex": 1, "nbrPortDescr": "Not-Advertised", "nbrPortID": 1, "nbrPortIdType": 5, "nbrSysDescr": "ExtremeXOS (EXOS-VM) version 30.1.0.27 xos_30.1 by lrichardson on Mon Apr 30 13:38:10 EDT 2018", "nbrSysName": "EXOS-VM", "nbrsOnThisPort": 1, "port": 1, "ttl": 120}, "status": "MORE"}, {"lldpPortNbrInfoShort": {"age": 25, "lastUpdate": 8412, "nbrChassisID": "00:02:02:02:02:02", "nbrChassisIdType": 4, "nbrIndex": 1, "nbrPortDescr": "Not-Advertised", "nbrPortID": 2, "nbrPortIdType": 5, "nbrSysDescr": "ExtremeXOS (EXOS-VM) version 30.1.0.27 xos_30.1 by lrichardson on Mon Apr 30 13:38:10 EDT 2018", "nbrSysName": "EXOS-VM", "nbrsOnThisPort": 1, "port": 2, "ttl": 120}, "status": "MORE"}, {"lldpPortNbrInfoShort": {"age": 25, "lastUpdate": 8417, "nbrChassisID": "00:02:02:02:02:02", "nbrChassisIdType": 4, "nbrIndex": 1, "nbrPortDescr": "Not-Advertised", "nbrPortID": 3, "nbrPortIdType": 5, "nbrSysDescr": "ExtremeXOS (EXOS-VM) version 30.1.0.27 xos_30.1 by lrichardson on Mon Apr 30 13:38:10 EDT 2018", "nbrSysName": "EXOS-VM", "nbrsOnThisPort": 1, "port": 3, "ttl": 120}, "status": "MORE"}, {"status": "SUCCESS"}]
diff --git a/test/units/modules/network/exos/fixtures/show_memory b/test/units/modules/network/exos/fixtures/show_memory
deleted file mode 100644
index 609a24b890..0000000000
--- a/test/units/modules/network/exos/fixtures/show_memory
+++ /dev/null
@@ -1,95 +0,0 @@
-
-System Memory Information
--------------------------
- Total DRAM (KB): 8388608
- System (KB): 357088
- User (KB): 558460
- Free (KB): 7473060
-
-Memory Utilization Statistics
------------------------------
-
- Process Name Memory (KB)
------------------------------
- aaa 2212
- acl 1637
- bfd 1158
- bgp 10031
- brm 822
- cfgmgr 2466
- cli 16169
- devmgr 884
- dirser 463
- dosprotect 570
- dot1ag 1370
- eaps 1359
- edp 1260
- elrp 1250
- elsm 917
- ems 3196
- epm 1646
- erps 1282
- esrp 1101
- ethoam 858
- etmon 7865
- exacl 0
- exdhcpsnoop 0
- exdos 0
- exfib 0
- exnasnoop 0
- exosmc 0
- exosq 0
- expolicy 0
- exsflow 0
- exsnoop 0
- exsshd 1522
- exvlan 0
- fdb 1990
- hal 141451
- hclag 899
- idMgr 3448
- ipSecurity 1042
- ipfix 956
- isis 1403
- ismb 0
- lacp 1306
- lldp 1724
- mcmgr 2183
- mpls 0
- mrp 1482
- msdp 915
- netLogin 1641
- netTools 4336
- nettx 0
- nodealias 1847
- nodemgr 501
- ntp 812
- openflow 0
- ospf 1455
- ospfv3 5130
- otm 1095
- ovsdb 8206
- pim 2100
- polMgr 479
- policy 45998
- pwmib 458
- rip 1000
- ripng 739
- rtmgr 2679
- snmpMaster 2798
- snmpSubagent 5728
- stp 2020
- techSupport 681
- telnetd 890
- tftpd 336
- throw 5262
- thttpd 8944
- twamp 471
- upm 859
- vlan 3215
- vmt 1599
- vpex 1771
- vrrp 1185
- vsm 1486
- xmlc 1013
- xmld 3468
diff --git a/test/units/modules/network/exos/fixtures/show_port_config b/test/units/modules/network/exos/fixtures/show_port_config
deleted file mode 100644
index 271924f09d..0000000000
--- a/test/units/modules/network/exos/fixtures/show_port_config
+++ /dev/null
@@ -1 +0,0 @@
-[{"CLIoutput": "Port Configuration\nPort Virtual Port Link Auto Speed Duplex Flow Load Media\n router State State Neg Cfg Actual Cfg Actual Cntrl Master Pri Red\n================================================================================\n1 VR-Default E R OFF 25000 FULL NONE \n2 VR-Default E R OFF 25000 FULL NONE \n3 VR-Default E R OFF 25000 FULL NONE \n4 VR-Default E R OFF 25000 FULL NONE \n================================================================================\n> indicates Port Display Name truncated past 8 characters\nLink State: A-Active, R-Ready, NP-Port Not Present, L-Loopback\nPort State: D-Disabled, E-Enabled, L-License Disabled\nMedia: !-Unsupported, $-Unlicensed\nMedia Red: * - use \"show port info detail\" for redundant media type\nFlow Cntrl: Shows link partner's abilities. NONE if Auto Neg is OFF\n"}, {"show_ports_config": {"duplexActual": null, "duplexCfg": "FULL", "flowControl": null, "isAutoNegOn": 0, "licenseDisable": 0, "linkState": 0, "port": 1, "portList": "1-4", "portState": 1, "primaryMedia": " NONE", "speedActual": null, "speedCfg": 25000, "vrName": "VR-Default"}, "status": "MORE"}, {"show_ports_config": {"duplexActual": null, "duplexCfg": "FULL", "flowControl": null, "isAutoNegOn": 0, "licenseDisable": 0, "linkState": 0, "port": 2, "portList": "1-4", "portState": 1, "primaryMedia": " NONE", "speedActual": null, "speedCfg": 25000, "vrName": "VR-Default"}, "status": "MORE"}, {"show_ports_config": {"duplexActual": null, "duplexCfg": "FULL", "flowControl": null, "isAutoNegOn": 0, "licenseDisable": 0, "linkState": 0, "port": 3, "portList": "1-4", "portState": 1, "primaryMedia": " NONE", "speedActual": null, "speedCfg": 25000, "vrName": "VR-Default"}, "status": "MORE"}, {"show_ports_config": {"duplexActual": null, "duplexCfg": "FULL", "flowControl": null, "isAutoNegOn": 0, "licenseDisable": 0, "linkState": 0, "port": 4, "portList": "1-4", "portState": 1, "primaryMedia": " NONE", "speedActual": null, "speedCfg": 25000, "vrName": "VR-Default"}, "status": "SUCCESS"}]
diff --git a/test/units/modules/network/exos/fixtures/show_port_description b/test/units/modules/network/exos/fixtures/show_port_description
deleted file mode 100644
index 5fadcf78aa..0000000000
--- a/test/units/modules/network/exos/fixtures/show_port_description
+++ /dev/null
@@ -1,2 +0,0 @@
-[{"CLIoutput": "Port Display String Description String \n===== ==================== ==================================================\n1 Firewall\n2 \n3 Database Server\n4 \n===== ==================== ==================================================\n"}, {"show_ports_description": {"descriptionString": "Firewall", "port": 1, "portList": "1-4"}, "status": "MORE"}, {"show_ports_description": {"port": 2, "portList": "1-4"}, "status": "MORE"}, {"show_ports_description": {"descriptionString": "Database Server", "port": 3, "portList": "1-4"}, "status": "MORE"}, {"show_ports_description": {"port": 4, "portList": "1-4"}, "status": "SUCCESS"}]
-
diff --git a/test/units/modules/network/exos/fixtures/show_switch b/test/units/modules/network/exos/fixtures/show_switch
deleted file mode 100644
index 9015286c3c..0000000000
--- a/test/units/modules/network/exos/fixtures/show_switch
+++ /dev/null
@@ -1,33 +0,0 @@
-
-SysName: X870-32c
-SysLocation:
-SysContact: support@extremenetworks.com, +1 888 257 3000
-System MAC: 00:04:96:9A:B4:F7
-System Type: X870-32c
-
-SysHealth check: Enabled (Normal)
-Recovery Mode: All
-System Watchdog: Enabled
-
-Current Time: Wed Jul 18 12:44:49 2018
-Timezone: [Auto DST Disabled] GMT Offset: 0 minutes, name is UTC.
-Boot Time: Tue Jul 17 12:49:58 2018
-Boot Count: 4970
-Next Reboot: None scheduled
-System UpTime: 23 hours 54 minutes 50 seconds
-
-Current State: OPERATIONAL
-Image Selected: secondary
-Image Booted: secondary
-Primary ver: 30.1.0.37
-Secondary ver: 22.5.1.7
-
-Config Selected: primary.cfg
-Config Booted: primary.cfg
-Config Automatic: NONE (Disabled)
-
-primary.cfg Created by ExtremeXOS version 22.6.0.11
- 983139 bytes saved on Wed Jun 6 16:59:49 2018
-
-LAA MAC: Locally Administered MAC Address Disabled
-
diff --git a/test/units/modules/network/exos/fixtures/show_version b/test/units/modules/network/exos/fixtures/show_version
deleted file mode 100644
index a34236ee4d..0000000000
--- a/test/units/modules/network/exos/fixtures/show_version
+++ /dev/null
@@ -1,6 +0,0 @@
-Switch : 800745-00-01 1604G-00175 Rev 01 IMG: 22.5.1.7
-
-Image : ExtremeXOS version 22.5.1.7 by release-manager
- on Tue May 22 11:25:12 EDT 2018
-Diagnostics :
-Certified Version : EXOS Linux 3.18.48, FIPS fips-ecp-2.0.16
diff --git a/test/units/modules/network/exos/fixtures/show_vlan b/test/units/modules/network/exos/fixtures/show_vlan
deleted file mode 100644
index fd15cc592b..0000000000
--- a/test/units/modules/network/exos/fixtures/show_vlan
+++ /dev/null
@@ -1,2 +0,0 @@
-[{"CLIoutput": "VLAN Interface with name Default created by user\n Admin State:\t Enabled Tagging:\t802.1Q Tag 1 \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t s0(Enabled,Auto-bind) \n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 127. \t (Number of active ports=0)\n Untag: 2b, 3b, 4b, 5b, 6b, 7b, 8b,\n 9b, 10b, 11b, 12b, 13b, 14b, 15b,\n 16b, 17b, 18b, 19b, 20b, 21b, 22b,\n 23b, 24b, 25b, 26b, 27b, 28b, 29b,\n 30b, 31b, 32b, 33b, 34b, 35b, 36b,\n 37b, 38b, 39b, 40b, 41b, 42b, 43b,\n 44b, 45b, 46b, 47b, 48b, 49b, 50b,\n 51b, 52b, 53b, 54b, 55b, 56b, 57b,\n 58b, 59b, 60b, 61b, 62b, 63b, 64b,\n 65b, 66b, 67b, 68b, 69b, 70b, 71b,\n 72b, 73b, 74b, 75b, 76b, 77b, 78b,\n 79b, 80b, 81b, 82b, 83b, 84b, 85b,\n 86b, 87b, 88b, 89b, 90b, 91b, 92b,\n 93b, 94b, 95b, 96b, 97b, 98b, 99b,\n 100b, 101b, 102b, 103b, 104b, 105b, 106b,\n 107b, 108b, 109b, 110b, 111b, 112b, 113b,\n 114b, 115b, 116b, 117b, 118b, 119b, 120b,\n 121b, 122b, 123b, 124b, 125b, 126b, 127b,\n 128b\n\tFlags: (*) Active, (!) Disabled, (g) Load Sharing port\n (b) Port blocked on the vlan, (m) Mac-Based port\n (i) Port inactivated on the vlan due to VXLAN configuration\n (a) Egress traffic allowed for NetLogin\n (u) Egress traffic unallowed for NetLogin\n (t) Translate VLAN tag for Private-VLAN\n (s) Private-VLAN System Port, (L) Loopback port\n (x) VMAN Tag Translated port\n (A) Dynamically added by Auto-peering\n (F) Dynamically added by Fabric Attach\n (G) Multi-switch LAG Group port\n (H) Dynamically added by MVRP\n (I) Dynamically added by IDM\n (N) Dynamically added by Netlogin\n (U) Dynamically added uplink port\n (V) Dynamically added by VM Tracking\n\n#\n#\nVLAN Interface with name Mgmt created by user\n Admin State:\t Enabled Tagging:\t802.1Q Tag 4095 \n Description:\t Management VLAN \n Virtual router:\t VR-Mgmt\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 1. \t (Number of active ports=1)\n Untag: Mgmt-port on Mgmt is active\n\n\n#\n#\nVLAN Interface with name vlan1 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4093) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n Primary IP:\t\t 10.0.1.1/24\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n#\n#\nVLAN Interface with name vlan2 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4092) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n Primary IP:\t\t 192.168.1.1/16\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n#\n#\nVLAN Interface with name vlan3 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4091) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: fe80::202:b3ff:fe1e:8329/64 (Tentative)\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 127, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 1, "tagStatus": 1, "taggedPorts": null, "untaggedPorts": "2-128", "vManMode": 0, "vlanFrlQos": 0, "vlanType": 2, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "Default"}}, {"status": "MORE", "stp_vlan_stats": {"num_stp_ports": 127, "stpd_name": "s0", "vlanTag": 1, "vlan_name": "Default"}}, {"status": "SUCCESS", "stp_domain_enable": {"protocol_mode": 3, "stpd_enabled": 1, "stpd_name": "s0", "stpd_tag": 0}}, {"status": "SUCCESS", "stp_vlan_autoadd": {"auto_add_enabled": 1, "stpd_name": "s0", "vlan_name": "Default"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 2, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 3, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 4, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 5, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 6, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 7, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 8, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 9, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 10, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 11, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 12, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 13, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 14, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 15, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 16, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 17, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 18, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 19, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 20, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 21, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 22, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 23, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 24, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 25, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 26, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 27, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 28, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 29, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 30, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 31, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 32, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 33, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 34, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 35, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 36, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 37, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 38, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 39, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 40, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 41, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 42, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 43, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 44, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 45, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 46, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 47, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 48, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 49, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 50, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 51, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 52, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 53, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 54, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 55, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 56, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 57, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 58, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 59, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 60, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 61, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 62, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 63, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 64, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 65, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 66, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 67, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 68, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 69, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 70, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 71, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 72, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 73, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 74, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 75, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 76, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 77, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 78, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 79, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 80, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 81, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 82, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 83, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 84, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 85, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 86, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 87, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 88, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 89, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 90, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 91, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 92, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 93, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 94, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 95, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 96, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 97, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 98, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 99, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 100, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 101, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 102, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 103, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 104, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 105, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 106, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 107, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 108, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 109, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 110, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 111, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 112, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 113, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 114, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 115, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 116, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 117, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 118, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 119, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 120, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 121, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 122, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 123, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 124, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 125, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 126, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 127, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 128, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 2, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 3, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 4, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 5, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 6, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 7, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 8, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 9, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 10, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 11, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 12, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 13, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 14, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 15, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 16, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 17, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 18, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 19, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 20, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 21, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 22, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 23, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 24, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 25, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 26, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 27, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 28, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 29, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 30, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 31, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 32, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 33, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 34, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 35, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 36, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 37, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 38, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 39, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 40, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 41, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 42, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 43, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 44, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 45, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 46, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 47, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 48, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 49, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 50, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 51, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 52, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 53, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 54, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 55, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 56, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 57, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 58, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 59, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 60, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 61, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 62, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 63, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 64, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 65, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 66, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 67, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 68, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 69, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 70, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 71, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 72, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 73, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 74, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 75, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 76, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 77, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 78, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 79, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 80, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 81, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 82, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 83, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 84, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 85, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 86, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 87, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 88, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 89, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 90, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 91, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 92, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 93, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 94, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 95, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 96, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 97, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 98, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 99, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 100, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 101, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 102, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 103, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 104, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 105, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 106, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 107, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 108, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 109, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 110, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 111, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 112, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 113, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 114, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 115, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 116, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 117, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 118, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 119, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 120, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 121, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 122, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 123, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 124, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 125, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 126, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 127, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 128, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 1, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 1, "description": "Management VLAN", "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 1, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Mgmt", "name10": null, "name2": "VR-Mgmt", "name3": "Mgmt", "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4095, "tagStatus": 1, "taggedPorts": null, "untaggedPorts": 1, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "Mgmt"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "10.0.1.1", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 1, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 24, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan1", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4093, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan1"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "192.168.1.1", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 1, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 16, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan2", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4092, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan2"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan3", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4091, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan3"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "ERROR"}]
-
diff --git a/test/units/modules/network/exos/fixtures/show_vlan_detail b/test/units/modules/network/exos/fixtures/show_vlan_detail
deleted file mode 100644
index d73434c218..0000000000
--- a/test/units/modules/network/exos/fixtures/show_vlan_detail
+++ /dev/null
@@ -1 +0,0 @@
-[{"CLIoutput": "VLAN Interface with name Default created by user\n Admin State:\t Enabled Tagging:\t802.1Q Tag 1 \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t s0(Enabled,Auto-bind) \n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 127. \t (Number of active ports=0)\n Untag: 2b, 3b, 4b, 5b, 6b, 7b, 8b,\n 9b, 10b, 11b, 12b, 13b, 14b, 15b,\n 16b, 17b, 18b, 19b, 20b, 21b, 22b,\n 23b, 24b, 25b, 26b, 27b, 28b, 29b,\n 30b, 31b, 32b, 33b, 34b, 35b, 36b,\n 37b, 38b, 39b, 40b, 41b, 42b, 43b,\n 44b, 45b, 46b, 47b, 48b, 49b, 50b,\n 51b, 52b, 53b, 54b, 55b, 56b, 57b,\n 58b, 59b, 60b, 61b, 62b, 63b, 64b,\n 65b, 66b, 67b, 68b, 69b, 70b, 71b,\n 72b, 73b, 74b, 75b, 76b, 77b, 78b,\n 79b, 80b, 81b, 82b, 83b, 84b, 85b,\n 86b, 87b, 88b, 89b, 90b, 91b, 92b,\n 93b, 94b, 95b, 96b, 97b, 98b, 99b,\n 100b, 101b, 102b, 103b, 104b, 105b, 106b,\n 107b, 108b, 109b, 110b, 111b, 112b, 113b,\n 114b, 115b, 116b, 117b, 118b, 119b, 120b,\n 121b, 122b, 123b, 124b, 125b, 126b, 127b,\n 128b\n\tFlags: (*) Active, (!) Disabled, (g) Load Sharing port\n (b) Port blocked on the vlan, (m) Mac-Based port\n (i) Port inactivated on the vlan due to VXLAN configuration\n (a) Egress traffic allowed for NetLogin\n (u) Egress traffic unallowed for NetLogin\n (t) Translate VLAN tag for Private-VLAN\n (s) Private-VLAN System Port, (L) Loopback port\n (x) VMAN Tag Translated port\n (A) Dynamically added by Auto-peering\n (F) Dynamically added by Fabric Attach\n (G) Multi-switch LAG Group port\n (H) Dynamically added by MVRP\n (I) Dynamically added by IDM\n (N) Dynamically added by Netlogin\n (U) Dynamically added uplink port\n (V) Dynamically added by VM Tracking\n\n#\n#\nVLAN Interface with name Mgmt created by user\n Admin State:\t Enabled Tagging:\t802.1Q Tag 4095 \n Description:\t Management VLAN \n Virtual router:\t VR-Mgmt\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 1. \t (Number of active ports=1)\n Untag: Mgmt-port on Mgmt is active\n\n\n#\n#\nVLAN Interface with name vlan1 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4093) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n Primary IP:\t\t 10.0.1.1/24\n Secondary IPs:\t 11.0.1.1/24\n\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n#\n#\nVLAN Interface with name vlan2 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4092) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n Primary IP:\t\t 192.168.1.1/16\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: None\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n#\n#\nVLAN Interface with name vlan3 created by user\n Admin State:\t Enabled Tagging:Untagged (Internal tag 4091) \n Description:\t None\n Virtual router:\t VR-Default\n IPv4 Forwarding:\t Disabled\n IPv4 MC Forwarding: Disabled\n IPv6 Forwarding:\t Disabled\n IPv6 MC Forwarding: Disabled\n IPv6: fe80::202:b3ff:fe1e:8329/64 (Tentative)\n STPD: \t\t None\n Protocol: Match all unfiltered protocols\n Loopback: Disabled\n NetLogin: Disabled\n OpenFlow: Disabled\n QosProfile: \t None configured\n Egress Rate Limit Designated Port: None configured\n Flood Rate Limit QosProfile: None configured\n Suppress ARP: Disabled\n Proxy ARP: Entry required\n Ports: 0. \t (Number of active ports=0)\n\n"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 127, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 1, "tagStatus": 1, "taggedPorts": null, "untaggedPorts": "2-128", "vManMode": 0, "vlanFrlQos": 0, "vlanType": 2, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "Default"}}, {"status": "MORE", "stp_vlan_stats": {"num_stp_ports": 127, "stpd_name": "s0", "vlanTag": 1, "vlan_name": "Default"}}, {"status": "SUCCESS", "stp_domain_enable": {"protocol_mode": 3, "stpd_enabled": 1, "stpd_name": "s0", "stpd_tag": 0}}, {"status": "SUCCESS", "stp_vlan_autoadd": {"auto_add_enabled": 1, "stpd_name": "s0", "vlan_name": "Default"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 2, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 3, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 4, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 5, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 6, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 7, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 8, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 9, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 10, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 11, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 12, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 13, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 14, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 15, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 16, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 17, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 18, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 19, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 20, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 21, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 22, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 23, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 24, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 25, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 26, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 27, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 28, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 29, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 30, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 31, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 32, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 33, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 34, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 35, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 36, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 37, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 38, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 39, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 40, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 41, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 42, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 43, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 44, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 45, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 46, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 47, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 48, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 49, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 50, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 51, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 52, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 53, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 54, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 55, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 56, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 57, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 58, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 59, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 60, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 61, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 62, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 63, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 64, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 65, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 66, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 67, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 68, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 69, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 70, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 71, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 72, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 73, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 74, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 75, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 76, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 77, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 78, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 79, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 80, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 81, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 82, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 83, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 84, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 85, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 86, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 87, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 88, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 89, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 90, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 91, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 92, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 93, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 94, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 95, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 96, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 97, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 98, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 99, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 100, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 101, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 102, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 103, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 104, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 105, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 106, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 107, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 108, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 109, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 110, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 111, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 112, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 113, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 114, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 115, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 116, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 117, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 118, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 119, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 120, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 121, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 122, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 123, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 124, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 125, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 126, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 127, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 128, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 2, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 3, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 4, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 5, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 6, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 7, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 8, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 9, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 10, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 11, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 12, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 13, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 14, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 15, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 16, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 17, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 18, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 19, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 20, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 21, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 22, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 23, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 24, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 25, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 26, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 27, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 28, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 29, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 30, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 31, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 32, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 33, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 34, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 35, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 36, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 37, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 38, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 39, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 40, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 41, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 42, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 43, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 44, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 45, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 46, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 47, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 48, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 49, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 50, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 51, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 52, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 53, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 54, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 55, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 56, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 57, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 58, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 59, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 60, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 61, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 62, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 63, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 64, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 65, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 66, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 67, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 68, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 69, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 70, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 71, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 72, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 73, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 74, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 75, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 76, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 77, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 78, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 79, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 80, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 81, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 82, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 83, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 84, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 85, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 86, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 87, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 88, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 89, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 90, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 91, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 92, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 93, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 94, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 95, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 96, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 97, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 98, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 99, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 100, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 101, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 102, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 103, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 104, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 105, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 106, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 107, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 108, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 109, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 110, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 111, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 112, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 113, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 114, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 115, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 116, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 117, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 118, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 119, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 120, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 121, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 122, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 123, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 124, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 125, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 126, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 127, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 1, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Default", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": 128, "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 1, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 1, "description": "Management VLAN", "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 1, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "Mgmt", "name10": null, "name2": "VR-Mgmt", "name3": "Mgmt", "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4095, "tagStatus": 1, "taggedPorts": null, "untaggedPorts": 1, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "Mgmt"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "10.0.1.1", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 1, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 24, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan1", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 2, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4093, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 0, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": null, "flags": null, "inactivePort": 0, "ipAddress": "10.0.1.1", "ipMtu": 0, "ipProxyArp": 0, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 24, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan1", "name10": null, "name2": null, "name3": null, "name4": null, "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 0, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 0, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan1"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "MORE", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "192.168.1.1", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 1, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 1, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 16, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan2", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4092, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan2"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "SUCCESS", "vlanProc": {"action": null, "activePorts": 0, "adminState": 1, "algorithm": 0, "altIsPrimary": 0, "arpSup": 0, "atcktInst": 0, "bgpInstances": 0, "bgpModule": null, "bgpStartCode": null, "cepPvid": 0, "count1": 0, "description": null, "dot1ahMode": 0, "erlLoopbackPort": 0, "erlPort": 0, "filter": "ANY", "flags": null, "inactivePort": 0, "ipAddress": "0.0.0.0", "ipMtu": 0, "ipProxyArp": 2, "ipStatus": 0, "ipforwardingStatus": 0, "ipmcforwardingStatus": 0, "ipv4DadState": 0, "ipv6forwardingStatus": 0, "ipv6mcforwardingStatus": 0, "iqosProfile": 0, "isAddedByAutopeering": 0, "isAddedByIdm": 0, "isAddedByLldp": 0, "isAddedByMvrp": 0, "isAddedByNetlogin": 0, "isAddedByXnv": 0, "isAlternateIp": 0, "isLoopbackPort": 0, "isMacBasedVLANsEnabled": 0, "isMlagGroupPort": 0, "isNetLogInAutheticated": 0, "isNetLogInEnabled": 0, "isOpenFlowEnabled": 0, "isPvlanSystemPort": 0, "isPvlanTranslatePort": 0, "isRemoteMirrorEnabled": 0, "isTrillAccessEnabled": 0, "isTrillAppointedForwarder": 0, "isTrillDesignated": 0, "isTrillNetworkEnabled": 0, "isTrillSuspended": 0, "isUplinkPort": 0, "isVpstBlocked": 0, "isisInstances": 0, "isisModule": null, "isisStartCode": null, "limitLearning": 0, "limitLearningAction": 0, "limitLearningNum": 0, "linkState": 0, "loopbackStatus": 0, "maskForDisplay": 0, "masterPort": "invalid port", "mplsInstances": 0, "mplsL3VpnNotificationEnable": 0, "mplsModule": null, "mplsStartCode": null, "name1": "vlan3", "name10": null, "name2": "VR-Default", "name3": null, "name4": "by user", "name5": null, "name6": null, "name7": null, "name8": null, "name9": null, "ndSup": 0, "netmask": "0.0.0.0", "noBvlans": 0, "noCvlans": 0, "noIpAddresses": 0, "noLearningDomains": 0, "noProto": 0, "noSvlans": 0, "noVlans": 0, "noVmans": 0, "ospfInstances": 0, "ospfModule": null, "ospfStartCode": null, "ospfv3Instances": 0, "ospfv3Module": null, "ospfv3StartCode": null, "overwrite_untagged_port": 2, "pimInstances": 0, "pimModule": null, "pimStartCode": null, "port": "invalid port", "portFilterList": null, "portList": null, "priority": 0, "qosProfile": 0, "rateShaping": 0, "ripInstances": 0, "ripModule": null, "ripStartCode": null, "ripngInstances": 0, "ripngModule": null, "ripngStartCode": null, "rtagStatus": 0, "serviceCount": 0, "state": 0, "stpStatus": 0, "tag": 4091, "tagStatus": 0, "taggedPorts": null, "untaggedPorts": null, "vManMode": 0, "vlanFrlQos": 0, "vlanType": 3, "vrDescription": null, "vrId": 0, "vrIpv4AdminState": 0, "vrIpv6AdminState": 0, "vrOperCause": 0, "vrOperState": 0, "vrParentId": 0, "vrParentName": null, "vrType": 0, "vrfCount": 0, "xSvid": 0}}, {"rtifIpv6Address": {"address_state": 0, "flags": 70368744177664, "ifIndex": 10, "ipMtu": 1500, "ipv6_address_mask": "fe80::202:b3ff:fe1e:8329/64", "rtifName": "vlan3"}, "status": "MORE"}, {"status": "SUCCESS", "stp_vlan": {"ignore_bpdu": 0, "ignore_stp": 0, "vlan_name": "vlan3"}}, {"message": "mpls is not running in VR VR-Default.", "status": "ERROR"}, {"status": "ERROR"}]
diff --git a/test/units/modules/network/exos/test_exos_command.py b/test/units/modules/network/exos/test_exos_command.py
deleted file mode 100644
index 14ce4fda32..0000000000
--- a/test/units/modules/network/exos/test_exos_command.py
+++ /dev/null
@@ -1,120 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.exos import exos_command
-from .exos_module import TestExosModule, load_fixture
-
-
-class TestExosCommandModule(TestExosModule):
-
- module = exos_command
-
- def setUp(self):
- super(TestExosCommandModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.exos.exos_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestExosCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item['command'])
- command = obj['command']
- except ValueError:
- command = item['command']
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_exos_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('Switch :'))
-
- def test_exos_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('Switch :'))
-
- def test_exos_command_wait_for(self):
- wait_for = 'result[0] contains "Switch :"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_exos_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_exos_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_exos_command_match_any(self):
- wait_for = ['result[0] contains "Switch"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_exos_command_match_all(self):
- wait_for = ['result[0] contains "Switch"',
- 'result[0] contains "Switch :"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_exos_command_match_all_failure(self):
- wait_for = ['result[0] contains "Switch :"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show version']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
-
- def test_exos_command_configure_error(self):
- commands = ['disable ospf']
- set_module_args({
- 'commands': commands,
- '_ansible_check_mode': True,
- })
- result = self.execute_module()
- self.assertEqual(
- result['warnings'],
- ['only show commands are supported when using check mode, not executing `disable ospf`']
- )
diff --git a/test/units/modules/network/exos/test_exos_config.py b/test/units/modules/network/exos/test_exos_config.py
deleted file mode 100644
index 78b77a64c7..0000000000
--- a/test/units/modules/network/exos/test_exos_config.py
+++ /dev/null
@@ -1,265 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch, MagicMock
-from units.modules.utils import set_module_args
-from ansible.plugins.cliconf.exos import Cliconf
-from ansible.modules.network.exos import exos_config
-from .exos_module import TestExosModule, load_fixture
-
-
-class TestExosConfigModule(TestExosModule):
-
- module = exos_config
-
- def setUp(self):
- super(TestExosConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.exos.exos_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.exos.exos_config.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.exos.exos_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- self.mock_get_startup_config = patch('ansible.modules.network.exos.exos_config.get_startup_config')
- self.get_startup_config = self.mock_get_startup_config.start()
-
- self.cliconf_obj = Cliconf(MagicMock())
-
- self.mock_get_diff = patch('ansible.modules.network.exos.exos_config.get_diff')
- self.get_diff = self.mock_get_diff.start()
-
- self.running_config = load_fixture('exos_config_config.cfg')
-
- def tearDown(self):
- super(TestExosConfigModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
- self.mock_get_startup_config.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'exos_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_exos_config_unchanged(self):
- src = load_fixture('exos_config_config.cfg')
- set_module_args(dict(src=src))
- self.get_diff.return_value = self.cliconf_obj.get_diff(src, src)
- self.execute_module()
-
- def test_exos_config_src(self):
- src = load_fixture('exos_config_src.cfg')
- set_module_args(dict(src=src))
- commands = ['configure ports 1 description-string "IDS"',
- 'configure snmp sysName "marble"']
- self.get_diff.return_value = self.cliconf_obj.get_diff(src, self.running_config)
- self.execute_module(changed=True, commands=commands)
-
- def test_exos_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_exos_config_save_always(self):
- self.run_commands.return_value = 'configure snmp sysName "marble"'
- set_module_args(dict(save_when='always'))
- self.execute_module(changed=True)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.load_config.call_count, 0)
- args = self.run_commands.call_args[0][1]
- self.assertIn('save configuration', args['command'])
-
- def test_exos_config_save_changed_true(self):
- src = load_fixture('exos_config_src.cfg')
- set_module_args(dict(src=src, save_when='changed'))
- commands = ['configure ports 1 description-string "IDS"',
- 'configure snmp sysName "marble"']
- self.get_diff.return_value = self.cliconf_obj.get_diff(src, self.running_config)
- self.execute_module(changed=True, commands=commands)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.load_config.call_count, 1)
- args = self.run_commands.call_args[0][1]
- self.assertIn('save configuration', args['command'])
-
- def test_exos_config_save_changed_true_check_mode(self):
- src = load_fixture('exos_config_src.cfg')
- set_module_args(dict(src=src, save_when='changed', _ansible_check_mode=True))
- commands = ['configure ports 1 description-string "IDS"',
- 'configure snmp sysName "marble"']
- self.get_diff.return_value = self.cliconf_obj.get_diff(src, self.running_config)
- self.execute_module(changed=True, commands=commands)
- self.assertEqual(self.run_commands.call_count, 0)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.load_config.call_count, 0)
-
- def test_exos_config_save_changed_false(self):
- set_module_args(dict(save_when='changed'))
- self.execute_module(changed=False)
- self.assertEqual(self.run_commands.call_count, 0)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.load_config.call_count, 0)
-
- def test_exos_config_save_modified_false(self):
- self.get_startup_config.return_value = load_fixture('exos_config_config.cfg')
- set_module_args(dict(save_when='modified'))
- self.execute_module(changed=False)
- self.assertEqual(self.run_commands.call_count, 0)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.get_startup_config.call_count, 1)
- self.assertEqual(self.load_config.call_count, 0)
-
- def test_exos_config_save_modified_true(self):
- self.get_startup_config.return_value = load_fixture('exos_config_modified.cfg')
- set_module_args(dict(save_when='modified'))
- self.execute_module(changed=True)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertTrue(self.get_config.call_count > 0)
- self.assertEqual(self.get_startup_config.call_count, 1)
- self.assertEqual(self.load_config.call_count, 0)
-
- def test_exos_config_lines(self):
- lines = ['configure snmp sysName "marble"']
- set_module_args(dict(lines=lines))
- commands = ['configure snmp sysName "marble"']
- self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)
- self.execute_module(changed=True, commands=commands)
-
- def test_exos_config_before(self):
- lines = ['configure snmp sysName "marble"']
- set_module_args(dict(lines=lines, before=['test1', 'test2']))
- commands = ['test1', 'test2', 'configure snmp sysName "marble"']
- self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_exos_config_after(self):
- lines = ['configure snmp sysName "marble"']
- set_module_args(dict(lines=lines, after=['test1', 'test2']))
- commands = ['configure snmp sysName "marble"', 'test1', 'test2']
- self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_exos_config_before_after_no_change(self):
- lines = ['configure snmp sysName "x870"']
- set_module_args(dict(lines=lines,
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config)
- self.execute_module()
-
- def test_exos_config_config(self):
- config = 'hostname localhost'
- lines = ['configure snmp sysName "x870"']
- set_module_args(dict(lines=lines, config=config))
- commands = ['configure snmp sysName "x870"']
- self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), config)
- self.execute_module(changed=True, commands=commands)
-
- def test_exos_config_match_none(self):
- lines = ['configure snmp sysName "x870"']
- set_module_args(dict(lines=lines, match='none'))
- self.get_diff.return_value = self.cliconf_obj.get_diff('\n'.join(lines), self.running_config, diff_match='none')
- self.execute_module(changed=True, commands=lines)
-
- def test_exos_config_src_and_lines_fails(self):
- args = dict(src='foo', lines='foo')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_exos_config_match_exact_requires_lines(self):
- args = dict(match='exact')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_exos_config_match_strict_requires_lines(self):
- args = dict(match='strict')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_exos_config_replace_block_requires_lines(self):
- args = dict(replace='block')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_exos_config_replace_config_requires_src(self):
- args = dict(replace='config')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_exos_diff_running_unchanged(self):
- args = dict(diff_against='running', _ansible_diff=True)
- set_module_args(args)
- self.execute_module(changed=False)
-
- def test_exos_diff_running_unchanged_check(self):
- args = dict(diff_against='running',
- _ansible_diff=True,
- _ansible_check_mode=True)
- set_module_args(args)
- self.execute_module(changed=False)
-
- def test_exos_diff_startup_unchanged(self):
- mock_get_startup_config = patch('ansible.modules.network.exos.exos_config.get_startup_config')
- get_startup_config = mock_get_startup_config.start()
- get_startup_config.return_value = load_fixture('exos_config_config.cfg')
-
- args = dict(diff_against='startup', _ansible_diff=True)
- set_module_args(args)
- self.execute_module(changed=False)
- self.assertEqual(get_startup_config.call_count, 1)
-
- mock_get_startup_config.stop()
-
- def test_exos_diff_startup_changed(self):
- mock_get_startup_config = patch('ansible.modules.network.exos.exos_config.get_startup_config')
- get_startup_config = mock_get_startup_config.start()
- get_startup_config.return_value = load_fixture('exos_config_modified.cfg')
-
- args = dict(diff_against='startup', _ansible_diff=True)
- set_module_args(args)
- self.execute_module(changed=True)
- self.assertEqual(get_startup_config.call_count, 1)
-
- mock_get_startup_config.stop()
-
- def test_exos_diff_intended_unchanged(self):
- intended_config = load_fixture('exos_config_config.cfg')
- args = dict(diff_against='intended',
- intended_config=intended_config,
- _ansible_diff=True)
- set_module_args(args)
- self.get_diff = self.cliconf_obj.get_diff(intended_config, self.running_config)
- self.execute_module(changed=False)
-
- def test_exos_diff_intended_modified(self):
- intended_config = load_fixture('exos_config_modified.cfg')
- args = dict(diff_against='intended',
- intended_config=intended_config,
- _ansible_diff=True)
- set_module_args(args)
- self.get_diff = self.cliconf_obj.get_diff(intended_config, self.running_config)
- self.execute_module(changed=True)
diff --git a/test/units/modules/network/exos/test_exos_facts.py b/test/units/modules/network/exos/test_exos_facts.py
deleted file mode 100644
index 85880c3a44..0000000000
--- a/test/units/modules/network/exos/test_exos_facts.py
+++ /dev/null
@@ -1,123 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.module_utils.common._collections_compat import Mapping
-from ansible.modules.network.exos import exos_facts
-from .exos_module import TestExosModule
-
-
-class TestExosFactsModule(TestExosModule):
-
- module = exos_facts
-
- def setUp(self):
- super(TestExosFactsModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.module_utils.network.exos.facts.legacy.base.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- self.mock_get_resource_connection = patch('ansible.module_utils.network.common.facts.facts.get_resource_connection')
- self.get_resource_connection = self.mock_get_resource_connection.start()
-
- def tearDown(self):
- super(TestExosFactsModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-
- for command in commands:
- if isinstance(command, Mapping):
- command = command['command']
- filename = str(command).replace(' ', '_')
- filename = os.path.join(fixture_path, filename)
- with open(filename) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- output.append(data)
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_exos_facts_default(self):
- set_module_args(dict(gather_subset='default'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_model'], 'X870-32c'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_serialnum'], '1604G-00175'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_version'], '22.5.1.7'
- )
-
- def test_exos_facts_hardware(self):
- set_module_args(dict(gather_subset='hardware'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_memfree_mb'], 7298
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_memtotal_mb'], 8192
- )
-
- def test_exos_facts_interfaces(self):
- set_module_args(dict(gather_subset='interfaces'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']['1']['bandwidth_configured'], '25000'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']['3']['description'], 'Database Server'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']['3']['type'], 'Ethernet'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']['vlan1']['ipv4'][0]['address'], '10.0.1.1'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']['vlan3']['ipv6'][0]['address'], 'fe80::202:b3ff:fe1e:8329'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_all_ipv4_addresses'], ['10.0.1.1', '192.168.1.1']
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_all_ipv6_addresses'], ['fe80::202:b3ff:fe1e:8329']
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']['vlan3']['type'], 'VLAN'
- )
diff --git a/test/units/modules/network/f5/test_bigip_gtm_facts.py b/test/units/modules/network/f5/test_bigip_gtm_facts.py
deleted file mode 100644
index b76bef6c51..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_facts.py
+++ /dev/null
@@ -1,137 +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 sys
-
-import pytest
-
-pytestmark = []
-
-if sys.version_info < (2, 7):
- pytestmark.append(pytest.mark.skip("F5 Ansible modules require Python >= 2.7"))
-
-from units.compat import unittest
-from units.compat.mock import Mock
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils.six import iteritems
-
-try:
- from library.modules.bigip_gtm_facts import Parameters
- from library.modules.bigip_gtm_facts import ModuleManager
- from library.modules.bigip_gtm_facts import PoolFactManager
- from library.modules.bigip_gtm_facts import TypedPoolFactManager
- from library.modules.bigip_gtm_facts import ArgumentSpec
- from f5.bigip.tm.gtm.pool import A
- from f5.utils.responses.handlers import Stats
- from test.unit.modules.utils import set_module_args
-except ImportError:
- try:
- from ansible.modules.network.f5.bigip_gtm_pool import Parameters
- from ansible.modules.network.f5.bigip_gtm_pool import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_pool import PoolFactManager
- from ansible.modules.network.f5.bigip_gtm_pool import TypedPoolFactManager
- from ansible.modules.network.f5.bigip_gtm_pool import ArgumentSpec
- from f5.bigip.tm.gtm.pool import A
- from f5.utils.responses.handlers import Stats
- from units.modules.utils import set_module_args
- except ImportError:
- pytestmark.append(pytest.mark.skip("F5 Ansible modules require the f5-sdk Python library"))
- # pytestmark will cause this test to skip but we have to define A so that classes can be
- # defined below
- A = object
-
-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 FakeStatResource(object):
- def __init__(self, obj):
- self.entries = obj
-
-
-class FakeARecord(A):
- def __init__(self, *args, **kwargs):
- attrs = kwargs.pop('attrs', {})
- for key, value in iteritems(attrs):
- setattr(self, key, value)
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- include=['pool'],
- filter='name.*'
- )
- p = Parameters(params=args)
- assert p.include == ['pool']
- assert p.filter == 'name.*'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_get_typed_pool_facts(self, *args):
- set_module_args(dict(
- include='pool',
- password='password',
- server='localhost',
- user='admin'
- ))
-
- fixture1 = load_fixture('load_gtm_pool_a_collection.json')
- fixture2 = load_fixture('load_gtm_pool_a_example_stats.json')
- collection = [FakeARecord(attrs=x) for x in fixture1['items']]
- stats = Stats(FakeStatResource(fixture2['entries']))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- tfm = TypedPoolFactManager(module=module)
- tfm.read_collection_from_device = Mock(return_value=collection)
- tfm.read_stats_from_device = Mock(return_value=stats.stat)
-
- tm = PoolFactManager(module=module)
- tm.version_is_less_than_12 = Mock(return_value=False)
- tm.get_manager = Mock(return_value=tfm)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=tm)
- mm.gtm_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert 'pool' in results
- assert len(results['pool']) > 0
- assert 'load_balancing_mode' in results['pool'][0]
diff --git a/test/units/modules/network/f5/test_bigip_security_address_list.py b/test/units/modules/network/f5/test_bigip_security_address_list.py
deleted file mode 100644
index dd8a48feea..0000000000
--- a/test/units/modules/network/f5/test_bigip_security_address_list.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
-
-pytestmark = []
-
-if sys.version_info < (2, 7):
- pytestmark.append(pytest.mark.skip("F5 Ansible modules require Python >= 2.7"))
-
-from units.compat import unittest
-from units.compat.mock import Mock
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_security_address_list import ApiParameters
- from library.modules.bigip_security_address_list import ModuleParameters
- from library.modules.bigip_security_address_list import ModuleManager
- from library.modules.bigip_security_address_list import ArgumentSpec
- from test.unit.modules.utils import set_module_args
-except ImportError:
- try:
- from ansible.modules.network.f5.bigip_security_address_list import ApiParameters
- from ansible.modules.network.f5.bigip_security_address_list import ModuleParameters
- from ansible.modules.network.f5.bigip_security_address_list import ModuleManager
- from ansible.modules.network.f5.bigip_security_address_list import ArgumentSpec
- from units.modules.utils import set_module_args
- except ImportError:
- pytestmark.append(pytest.mark.skip("F5 Ansible modules require the f5-sdk Python library"))
-
-
-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'],
- password='password',
- server='localhost',
- 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_security_port_list.py b/test/units/modules/network/f5/test_bigip_security_port_list.py
deleted file mode 100644
index 33283de97c..0000000000
--- a/test/units/modules/network/f5/test_bigip_security_port_list.py
+++ /dev/null
@@ -1,127 +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
-
-pytestmark = []
-
-if sys.version_info < (2, 7):
- pytestmark.append(pytest.mark.skip("F5 Ansible modules require Python >= 2.7"))
-
-from units.compat import unittest
-from units.compat.mock import Mock
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_security_port_list import ApiParameters
- from library.modules.bigip_security_port_list import ModuleParameters
- from library.modules.bigip_security_port_list import ModuleManager
- from library.modules.bigip_security_port_list import ArgumentSpec
- from test.unit.modules.utils import set_module_args
-except ImportError:
- try:
- from ansible.modules.network.f5.bigip_security_port_list import ApiParameters
- from ansible.modules.network.f5.bigip_security_port_list import ModuleParameters
- from ansible.modules.network.f5.bigip_security_port_list import ModuleManager
- from ansible.modules.network.f5.bigip_security_port_list import ArgumentSpec
- from units.modules.utils import set_module_args
- except ImportError:
- pytestmark.append(pytest.mark.skip("F5 Ansible modules require the f5-sdk Python library"))
-
-
-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()
-
- 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'],
- password='password',
- server='localhost',
- 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 '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/fortimanager/fixtures/test_fmgr_device.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_device.json
deleted file mode 100644
index 90dba75f0e..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device.json
+++ /dev/null
@@ -1,934 +0,0 @@
-{
- "add_device": [
- {
- "url": "/dvm/cmd/add/device/",
- "raw_response": {
- "device": {
- "adm_pass": "fortinet",
- "os_ver": 6,
- "ip": "10.7.220.151",
- "mgmt.__data[6]": 1,
- "vm_mem": 1003,
- "maxvdom": 10,
- "conn_mode": 1,
- "platform_id": 112,
- "branch_pt": 231,
- "hostname": "ansible-fgt01",
- "source": 1,
- "mgmt_id": 1014939351,
- "version": 600,
- "build": 231,
- "mgmt_mode": 3,
- "adm_usr": "admin",
- "av_ver": "1.00000(2018-04-09 18:07)",
- "mgmt.__data[4]": 1052262400,
- "oid": 403,
- "conn_status": 1,
- "beta": -1,
- "dev_status": 1,
- "platform_str": "FortiGate-VM64",
- "last_checked": 1550698141,
- "vm_mem_limit": 6144,
- "mgmt.__data[0]": 3870643,
- "name": "FGT1",
- "tab_status": "<unknown>",
- "patch": 4,
- "vm_cpu_limit": 4,
- "vm_status": 3,
- "ips_ver": "6.00741(2015-12-01 02:30)",
- "flags": 2097169,
- "sn": "FGVM04TM18000391",
- "mr": 0,
- "os_type": 0,
- "vm_cpu": 1
- }
- },
- "datagram_sent": {
- "device": {
- "adm_pass": "fortinet",
- "name": "FGT1",
- "ip": "10.7.220.151",
- "flags": 24,
- "sn": null,
- "mgmt_mode": "fmgfaz",
- "adm_usr": "admin"
- },
- "flags": [
- "create_task",
- "nonblocking"
- ],
- "odd_request_form": "True",
- "adom": "ansible"
- },
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.151",
- "device_unique_name": "FGT1",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "post_method": "exec"
- },
- {
- "url": "/dvm/cmd/add/device/",
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.152",
- "device_unique_name": "FGT2",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "datagram_sent": {
- "device": {
- "adm_pass": "fortinet",
- "name": "FGT2",
- "ip": "10.7.220.152",
- "flags": 24,
- "sn": null,
- "mgmt_mode": "fmgfaz",
- "adm_usr": "admin"
- },
- "flags": [
- "create_task",
- "nonblocking"
- ],
- "odd_request_form": "True",
- "adom": "ansible"
- },
- "raw_response": {
- "device": {
- "adm_pass": "fortinet",
- "ip": "10.7.220.152",
- "mgmt.__data[6]": 1,
- "vm_mem": 1003,
- "maxvdom": 10,
- "conn_mode": 1,
- "vm_cpu_limit": 4,
- "vm_cpu": 1,
- "branch_pt": 231,
- "hostname": "ansible-fgt02",
- "source": 1,
- "mgmt_id": 1879100317,
- "version": 600,
- "build": 231,
- "mgmt_mode": 3,
- "adm_usr": "admin",
- "av_ver": "1.00000(2018-04-09 18:07)",
- "oid": 415,
- "conn_status": 1,
- "beta": -1,
- "dev_status": 1,
- "platform_str": "FortiGate-VM64",
- "last_checked": 1550698177,
- "patch": 4,
- "vm_mem_limit": 6144,
- "mgmt.__data[0]": 3870643,
- "name": "FGT2",
- "tab_status": "<unknown>",
- "mgmt.__data[4]": 1052262400,
- "platform_id": 112,
- "vm_status": 3,
- "ips_ver": "6.00741(2015-12-01 02:30)",
- "flags": 2097169,
- "sn": "FGVM04TM18000392",
- "mr": 0,
- "os_type": 0,
- "os_ver": 6
- }
- },
- "post_method": "exec"
- },
- {
- "url": "/dvm/cmd/add/device/",
- "raw_response": {
- "device": {
- "adm_pass": "fortinet",
- "os_ver": 6,
- "ip": "10.7.220.153",
- "mgmt.__data[6]": 1,
- "vm_mem": 1003,
- "maxvdom": 10,
- "conn_mode": 1,
- "platform_id": 112,
- "branch_pt": 231,
- "hostname": "ansible-fgt03",
- "source": 1,
- "mgmt_id": 104863251,
- "version": 600,
- "build": 231,
- "mgmt_mode": 3,
- "adm_usr": "admin",
- "av_ver": "1.00000(2018-04-09 18:07)",
- "mgmt.__data[4]": 1052262400,
- "oid": 427,
- "conn_status": 1,
- "beta": -1,
- "dev_status": 1,
- "platform_str": "FortiGate-VM64",
- "last_checked": 1550698204,
- "vm_mem_limit": 6144,
- "mgmt.__data[0]": 3870643,
- "name": "FGT3",
- "tab_status": "<unknown>",
- "patch": 4,
- "vm_cpu_limit": 4,
- "vm_status": 3,
- "ips_ver": "6.00741(2015-12-01 02:30)",
- "flags": 2097169,
- "sn": "FGVM04TM18000393",
- "mr": 0,
- "os_type": 0,
- "vm_cpu": 1
- }
- },
- "datagram_sent": {
- "device": {
- "adm_pass": "fortinet",
- "name": "FGT3",
- "ip": "10.7.220.153",
- "flags": 24,
- "sn": null,
- "mgmt_mode": "fmgfaz",
- "adm_usr": "admin"
- },
- "flags": [
- "create_task",
- "nonblocking"
- ],
- "odd_request_form": "True",
- "adom": "ansible"
- },
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.153",
- "device_unique_name": "FGT3",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "post_method": "exec"
- }
- ],
- "discover_device": [
- {
- "url": "/dvm/cmd/discover/device/",
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.151",
- "device_unique_name": "FGT1",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "datagram_sent": {
- "device": {
- "adm_pass": "fortinet",
- "ip": "10.7.220.151",
- "adm_usr": "admin"
- },
- "odd_request_form": "True"
- },
- "raw_response": {
- "device": {
- "adm_pass": "fortinet",
- "ip": "10.7.220.151",
- "vm_mem": 1003,
- "maxvdom": 10,
- "conn_mode": 1,
- "vm_cpu_limit": 4,
- "vm_cpu": 1,
- "branch_pt": 231,
- "hostname": "ansible-fgt01",
- "source": 1,
- "version": 600,
- "build": 231,
- "adm_usr": "admin",
- "av_ver": "1.00000(2018-04-09 18:07)",
- "conn_status": 1,
- "beta": -1,
- "dev_status": 1,
- "platform_str": "FortiGate-VM64",
- "last_checked": 1550698136,
- "vm_mem_limit": 6144,
- "name": "ansible-fgt01",
- "tab_status": "<unknown>",
- "patch": 4,
- "platform_id": 112,
- "vm_status": 3,
- "ips_ver": "6.00741(2015-12-01 02:30)",
- "flags": 2097153,
- "sn": "FGVM04TM18000391",
- "mr": 0,
- "os_type": 0,
- "os_ver": 6
- }
- },
- "post_method": "exec"
- },
- {
- "url": "/dvm/cmd/discover/device/",
- "raw_response": {
- "device": {
- "adm_pass": "fortinet",
- "os_ver": 6,
- "ip": "10.7.220.152",
- "vm_mem": 1003,
- "maxvdom": 10,
- "conn_mode": 1,
- "platform_id": 112,
- "branch_pt": 231,
- "hostname": "ansible-fgt02",
- "source": 1,
- "version": 600,
- "build": 231,
- "adm_usr": "admin",
- "av_ver": "1.00000(2018-04-09 18:07)",
- "conn_status": 1,
- "beta": -1,
- "dev_status": 1,
- "platform_str": "FortiGate-VM64",
- "last_checked": 1550698173,
- "vm_mem_limit": 6144,
- "name": "ansible-fgt02",
- "tab_status": "<unknown>",
- "patch": 4,
- "vm_cpu_limit": 4,
- "vm_status": 3,
- "ips_ver": "6.00741(2015-12-01 02:30)",
- "flags": 2097153,
- "sn": "FGVM04TM18000392",
- "mr": 0,
- "os_type": 0,
- "vm_cpu": 1
- }
- },
- "datagram_sent": {
- "device": {
- "adm_pass": "fortinet",
- "ip": "10.7.220.152",
- "adm_usr": "admin"
- },
- "odd_request_form": "True"
- },
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.152",
- "device_unique_name": "FGT2",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "post_method": "exec"
- },
- {
- "url": "/dvm/cmd/discover/device/",
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.153",
- "device_unique_name": "FGT3",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "datagram_sent": {
- "device": {
- "adm_pass": "fortinet",
- "ip": "10.7.220.153",
- "adm_usr": "admin"
- },
- "odd_request_form": "True"
- },
- "raw_response": {
- "device": {
- "adm_pass": "fortinet",
- "ip": "10.7.220.153",
- "vm_mem": 1003,
- "maxvdom": 10,
- "conn_mode": 1,
- "vm_cpu_limit": 4,
- "vm_cpu": 1,
- "branch_pt": 231,
- "hostname": "ansible-fgt03",
- "source": 1,
- "version": 600,
- "build": 231,
- "adm_usr": "admin",
- "av_ver": "1.00000(2018-04-09 18:07)",
- "conn_status": 1,
- "beta": -1,
- "dev_status": 1,
- "platform_str": "FortiGate-VM64",
- "last_checked": 1550698200,
- "vm_mem_limit": 6144,
- "name": "ansible-fgt03",
- "tab_status": "<unknown>",
- "patch": 4,
- "platform_id": 112,
- "vm_status": 3,
- "ips_ver": "6.00741(2015-12-01 02:30)",
- "flags": 2097153,
- "sn": "FGVM04TM18000393",
- "mr": 0,
- "os_type": 0,
- "os_ver": 6
- }
- },
- "post_method": "exec"
- }
- ],
- "get_device": [
- {
- "url": "/dvmdb/adom/ansible/device/FGT1",
- "raw_response": {
- "adm_pass": [
- "ENC",
- "tUEPOPpQM6XsNwOPcWyrWoPoKo2DMjtFqOYEzLfF+99FpTkDmKa+GTmwBMLV1ns0OYrNgWnk6RPbRjSZSvu2LPYvCcWfQONLEZ1HlczZ00kEtDRCvRxG6l7FGtcj1Pl7QO9khy2lKWx4/lbPmLNqCzwCmlkAO5fGXR3nCbWPXH5BrRwO"
- ],
- "faz.perm": 0,
- "foslic_ram": 0,
- "foslic_type": "temporary",
- "last_checked": 1550635232,
- "psk": "",
- "opts": 0,
- "ip": "10.7.220.151",
- "foslic_utm": null,
- "logdisk_size": 30235,
- "mgmt.__data[6]": 1,
- "foslic_last_sync": 0,
- "app_ver": "",
- "ips_ext": 0,
- "vm_mem": 1003,
- "mgmt.__data[4]": 1052262400,
- "maxvdom": 10,
- "conn_mode": "passive",
- "location_from": "GUI(10.0.0.151)",
- "mgmt.__data[1]": 0,
- "mgmt.__data[2]": 0,
- "faz.full_act": 0,
- "os_ver": "6.0",
- "node_flags": 0,
- "hostname": "ansible-fgt01",
- "mgmt.__data[5]": 0,
- "mgmt_id": 2076985412,
- "hw_rev_minor": 0,
- "mgmt_if": "port1",
- "source": "faz",
- "ha_mode": "standalone",
- "version": 600,
- "build": 231,
- "latitude": "47.473991",
- "foslic_cpu": 0,
- "last_resync": 1550634702,
- "desc": "",
- "adm_usr": "admin",
- "vm_lic_expire": 0,
- "ha_slave": null,
- "av_ver": "1.00000(2018-04-09 18:07)",
- "fsw_cnt": 0,
- "tunnel_cookie": "",
- "foslic_inst_time": 0,
- "lic_flags": 0,
- "checksum": "89 1f b7 b7 2a a6 af 54 c5 a5 aa e3 32 92 c7 55",
- "oid": 366,
- "conn_status": "up",
- "fex_cnt": 0,
- "mgmt.__data[3]": 0,
- "beta": -1,
- "ha_group_name": "",
- "dev_status": "installed",
- "platform_str": "FortiGate-VM64",
- "mgmt.__data[7]": 0,
- "faz.used": 0,
- "fap_cnt": 0,
- "foslic_dr_site": "disable",
- "mgmt_mode": "fmgfaz",
- "vdom": [
- {
- "status": null,
- "oid": 3,
- "name": "root",
- "node_flags": 0,
- "devid": "FGT1",
- "tab_status": null,
- "comments": "",
- "flags": null,
- "opmode": "nat",
- "ext_flags": 1,
- "rtm_prof_id": 0
- }
- ],
- "hdisk_size": 30720,
- "vm_mem_limit": 6144,
- "mgmt.__data[0]": 3870643,
- "ha_group_id": 0,
- "name": "FGT1",
- "faz.quota": 0,
- "mgt_vdom": "root",
- "tab_status": "",
- "tunnel_ip": "169.254.0.5",
- "longitude": "-122.260963",
- "patch": 4,
- "vm_cpu_limit": 4,
- "vm_status": 3,
- "lic_region": "",
- "hw_rev_major": 0,
- "flags": [
- "has_hdd",
- "reload"
- ],
- "sn": "FGVM04TM18000391",
- "mr": 0,
- "conf_status": "insync",
- "os_type": "fos",
- "ips_ver": "6.00741(2015-12-01 02:30)",
- "db_status": "nomod",
- "branch_pt": 231,
- "vm_cpu": 1
- },
- "datagram_sent": {
- "filter": [
- "name",
- "==",
- "FGT1"
- ],
- "adom": "ansible"
- },
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.151",
- "device_unique_name": "FGT1",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "post_method": "get"
- },
- {
- "url": "/dvmdb/adom/ansible/device/FGT2",
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.152",
- "device_unique_name": "FGT2",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "datagram_sent": {
- "filter": [
- "name",
- "==",
- "FGT2"
- ],
- "adom": "ansible"
- },
- "raw_response": {
- "adm_pass": [
- "ENC",
- "F27zJSIl5O8O5rlXIi7BzHIUO5d3ZAuNxoniR42zOxGHyqZCx1OyA81b7v6dNwE30nBhjqfD+IDRmSPEW6qxKIQ2UV5eh8zgDNj8i5lj5gTvbLN5A4BR4CMLQo7nYTTomHUJQrGPfYskuxm74JGik+di9TrqOhvpZL8d1zj3XHx5pq+d"
- ],
- "faz.perm": 0,
- "hostname": "ansible-fgt02",
- "foslic_type": "temporary",
- "mgmt.__data[7]": 0,
- "av_ver": "1.00000(2018-04-09 18:07)",
- "ip": "10.7.220.152",
- "foslic_utm": null,
- "logdisk_size": 30235,
- "mgmt.__data[6]": 1,
- "fsw_cnt": 0,
- "app_ver": "",
- "ips_ext": 0,
- "vm_mem": 1003,
- "maxvdom": 10,
- "conn_mode": "passive",
- "mgt_vdom": "root",
- "mgmt.__data[1]": 0,
- "hw_rev_major": 0,
- "name": "FGT2",
- "node_flags": 0,
- "foslic_ram": 0,
- "mgmt.__data[5]": 0,
- "ha_mode": "standalone",
- "hw_rev_minor": 0,
- "mgmt_if": "port1",
- "source": "faz",
- "mgmt_id": 1555154046,
- "version": 600,
- "build": 231,
- "latitude": "47.473991",
- "foslic_cpu": 0,
- "last_resync": 1550634728,
- "hdisk_size": 30720,
- "adm_usr": "admin",
- "vm_lic_expire": 0,
- "sn": "FGVM04TM18000392",
- "ha_slave": null,
- "psk": "",
- "foslic_last_sync": 0,
- "tunnel_cookie": "",
- "vm_mem_limit": 6144,
- "mr": 0,
- "lic_flags": 0,
- "oid": 378,
- "conn_status": "up",
- "fex_cnt": 0,
- "vm_cpu": 1,
- "beta": -1,
- "ha_group_name": "",
- "dev_status": "retrieved",
- "platform_str": "FortiGate-VM64",
- "last_checked": 1550634728,
- "branch_pt": 231,
- "faz.used": 0,
- "patch": 4,
- "fap_cnt": 0,
- "foslic_dr_site": "disable",
- "mgmt_mode": "fmgfaz",
- "vdom": [
- {
- "status": null,
- "oid": 3,
- "name": "root",
- "node_flags": 4,
- "devid": "FGT2",
- "tab_status": null,
- "comments": "",
- "flags": null,
- "opmode": "nat",
- "ext_flags": 1,
- "rtm_prof_id": 0
- }
- ],
- "desc": "",
- "foslic_inst_time": 0,
- "mgmt.__data[0]": 3870643,
- "ha_group_id": 0,
- "location_from": "GUI(10.0.0.151)",
- "faz.quota": 0,
- "faz.full_act": 0,
- "tab_status": "",
- "tunnel_ip": "169.254.0.3",
- "longitude": "-122.260963",
- "mgmt.__data[4]": 1052262400,
- "vm_cpu_limit": 4,
- "vm_status": 3,
- "lic_region": "",
- "mgmt.__data[2]": 0,
- "flags": [
- "has_hdd",
- "reload"
- ],
- "opts": 0,
- "checksum": "56 e9 a7 14 e2 61 05 f9 ec 2b 00 1e 36 bc af c8",
- "conf_status": "insync",
- "os_type": "fos",
- "ips_ver": "6.00741(2015-12-01 02:30)",
- "db_status": "mod",
- "mgmt.__data[3]": 0,
- "os_ver": "6.0"
- },
- "post_method": "get"
- },
- {
- "url": "/dvmdb/adom/ansible/device/FGT3",
- "raw_response": {
- "adm_pass": [
- "ENC",
- "F27zJSIl5O8O5rlXIi7BzHIUO5d3ZAuNxoniR42zOxGHyqZCx1OyA81b7v6dNwE30nBhjqfD+IDRmSPEW6qxKIQ2UV5eh8zgDNj8i5lj5gTvbLN5A4BR4CMLQo7nYTTomHUJQrGPfYskuxm74JGik+di9TrqOhvpZL8d1zj3XHx5pq+d"
- ],
- "faz.perm": 0,
- "foslic_ram": 0,
- "foslic_type": "temporary",
- "last_checked": 1550634754,
- "psk": "",
- "opts": 0,
- "ip": "10.7.220.153",
- "foslic_utm": null,
- "logdisk_size": 30235,
- "mgmt.__data[6]": 1,
- "foslic_last_sync": 0,
- "app_ver": "",
- "ips_ext": 0,
- "vm_mem": 1003,
- "mgmt.__data[4]": 1052262400,
- "desc": "",
- "maxvdom": 10,
- "conn_mode": "passive",
- "location_from": "GUI(10.0.0.151)",
- "mgmt.__data[1]": 0,
- "os_ver": "6.0",
- "faz.full_act": 0,
- "node_flags": 0,
- "hostname": "ansible-fgt03",
- "mgmt.__data[5]": 0,
- "mgmt_id": 1175062219,
- "hw_rev_minor": 0,
- "mgmt_if": "port1",
- "source": "faz",
- "ha_mode": "standalone",
- "version": 600,
- "build": 231,
- "latitude": "47.473991",
- "foslic_cpu": 0,
- "last_resync": 1550634754,
- "hdisk_size": 30720,
- "adm_usr": "admin",
- "vm_lic_expire": 0,
- "conf_status": "insync",
- "ha_slave": null,
- "av_ver": "1.00000(2018-04-09 18:07)",
- "fsw_cnt": 0,
- "tunnel_cookie": "",
- "foslic_inst_time": 0,
- "lic_flags": 0,
- "oid": 390,
- "conn_status": "up",
- "fex_cnt": 0,
- "mgmt.__data[3]": 0,
- "beta": -1,
- "ha_group_name": "",
- "dev_status": "retrieved",
- "platform_str": "FortiGate-VM64",
- "mgmt.__data[7]": 0,
- "faz.used": 0,
- "fap_cnt": 0,
- "foslic_dr_site": "disable",
- "mgmt_mode": "fmgfaz",
- "vdom": [
- {
- "status": null,
- "oid": 3,
- "name": "root",
- "node_flags": 4,
- "devid": "FGT3",
- "tab_status": null,
- "comments": "",
- "flags": null,
- "opmode": "nat",
- "ext_flags": 1,
- "rtm_prof_id": 0
- }
- ],
- "name": "FGT3",
- "vm_mem_limit": 6144,
- "mgmt.__data[0]": 3870643,
- "ha_group_id": 0,
- "mgmt.__data[2]": 0,
- "faz.quota": 0,
- "checksum": "30 fc af f5 58 e4 1e 2d 46 c0 07 4b b6 4b c2 1b",
- "tab_status": "",
- "tunnel_ip": "169.254.0.4",
- "longitude": "-122.260963",
- "patch": 4,
- "vm_cpu_limit": 4,
- "vm_status": 3,
- "lic_region": "",
- "mgt_vdom": "root",
- "flags": [
- "has_hdd",
- "reload"
- ],
- "sn": "FGVM04TM18000393",
- "mr": 0,
- "hw_rev_major": 0,
- "os_type": "fos",
- "ips_ver": "6.00741(2015-12-01 02:30)",
- "db_status": "mod",
- "branch_pt": 231,
- "vm_cpu": 1
- },
- "datagram_sent": {
- "filter": [
- "name",
- "==",
- "FGT3"
- ],
- "adom": "ansible"
- },
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.153",
- "device_unique_name": "FGT3",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "post_method": "get"
- },
- {
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/dvmdb/adom/ansible/device/FGT1"
- },
- "datagram_sent": {
- "filter": [
- "name",
- "==",
- "FGT1"
- ],
- "adom": "ansible"
- },
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.151",
- "device_unique_name": "FGT1",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "post_method": "get"
- },
- {
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.152",
- "device_unique_name": "FGT2",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "datagram_sent": {
- "filter": [
- "name",
- "==",
- "FGT2"
- ],
- "adom": "ansible"
- },
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/dvmdb/adom/ansible/device/FGT2"
- },
- "post_method": "get"
- },
- {
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/dvmdb/adom/ansible/device/FGT3"
- },
- "datagram_sent": {
- "filter": [
- "name",
- "==",
- "FGT3"
- ],
- "adom": "ansible"
- },
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.153",
- "device_unique_name": "FGT3",
- "mode": "add",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "post_method": "get"
- }
- ],
- "delete_device": [
- {
- "paramgram_used": {
- "device_username": "admin",
- "adom": "root",
- "device_ip": "10.7.220.151",
- "device_unique_name": "FGT1",
- "mode": "delete",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "datagram_sent": {
- "device": "FGT1",
- "flags": [
- "create_task",
- "nonblocking"
- ],
- "adom": "root"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvm/cmd/del/device/"
- },
- "post_method": "exec"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvm/cmd/del/device/"
- },
- "datagram_sent": {
- "device": "FGT2",
- "flags": [
- "create_task",
- "nonblocking"
- ],
- "adom": "ansible"
- },
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.152",
- "device_unique_name": "FGT2",
- "mode": "delete",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "post_method": "exec"
- },
- {
- "paramgram_used": {
- "device_username": "admin",
- "adom": "ansible",
- "device_ip": "10.7.220.153",
- "device_unique_name": "FGT3",
- "mode": "delete",
- "device_serial": null,
- "device_password": "fortinet"
- },
- "datagram_sent": {
- "device": "FGT3",
- "flags": [
- "create_task",
- "nonblocking"
- ],
- "adom": "ansible"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvm/cmd/del/device/"
- },
- "post_method": "exec"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_config.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_config.json
deleted file mode 100644
index c4a68ecd05..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_config.json
+++ /dev/null
@@ -1,204 +0,0 @@
-{
- "update_device_interface": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/device/FGT1/global/system/interface/port2"
- },
- "datagram_sent": {
- "ip": "10.1.1.1/24",
- "allowaccess": [
- "ping",
- "telnet",
- "https",
- "http"
- ]
- },
- "paramgram_used": {
- "adom": "ansible",
- "install_config": "disable",
- "device_unique_name": "FGT1",
- "interface": "port2",
- "device_hostname": null,
- "interface_ip": "10.1.1.1/24",
- "interface_allow_access": "ping, telnet, https, http"
- },
- "post_method": "update"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/device/FGT2/global/system/interface/port2"
- },
- "datagram_sent": {
- "ip": "10.1.2.1/24",
- "allowaccess": [
- "ping",
- "telnet",
- "https",
- "http"
- ]
- },
- "paramgram_used": {
- "adom": "ansible",
- "install_config": "disable",
- "device_unique_name": "FGT2",
- "interface": "port2",
- "device_hostname": null,
- "interface_ip": "10.1.2.1/24",
- "interface_allow_access": "ping, telnet, https, http"
- },
- "post_method": "update"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/device/FGT3/global/system/interface/port2"
- },
- "datagram_sent": {
- "ip": "10.1.3.1/24",
- "allowaccess": [
- "ping",
- "telnet",
- "https",
- "http"
- ]
- },
- "paramgram_used": {
- "adom": "ansible",
- "install_config": "disable",
- "device_unique_name": "FGT3",
- "interface": "port2",
- "device_hostname": null,
- "interface_ip": "10.1.3.1/24",
- "interface_allow_access": "ping, telnet, https, http"
- },
- "post_method": "update"
- }
- ],
- "update_device_hostname": [
- {
- "paramgram_used": {
- "adom": "ansible",
- "interface": null,
- "device_unique_name": "FGT1",
- "install_config": "disable",
- "device_hostname": "ansible-fgt01",
- "interface_ip": null,
- "interface_allow_access": null
- },
- "datagram_sent": {
- "hostname": "ansible-fgt01"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "pm/config/device/FGT1/global/system/global"
- },
- "post_method": "update"
- },
- {
- "paramgram_used": {
- "adom": "ansible",
- "interface": null,
- "device_unique_name": "FGT2",
- "install_config": "disable",
- "device_hostname": "ansible-fgt02",
- "interface_ip": null,
- "interface_allow_access": null
- },
- "datagram_sent": {
- "hostname": "ansible-fgt02"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "pm/config/device/FGT2/global/system/global"
- },
- "post_method": "update"
- },
- {
- "paramgram_used": {
- "adom": "ansible",
- "interface": null,
- "device_unique_name": "FGT3",
- "install_config": "disable",
- "device_hostname": "ansible-fgt03",
- "interface_ip": null,
- "interface_allow_access": null
- },
- "datagram_sent": {
- "hostname": "ansible-fgt03"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "pm/config/device/FGT3/global/system/global"
- },
- "post_method": "update"
- }
- ],
- "exec_config": [
- {
- "url": "/securityconsole/install/device",
- "paramgram_used": {
- "adom": "ansible",
- "interface": null,
- "device_unique_name": "FGT1",
- "install_config": "enable",
- "device_hostname": null,
- "interface_ip": null,
- "interface_allow_access": null
- },
- "datagram_sent": {
- "scope": {
- "name": "FGT1"
- },
- "flags": "none",
- "adom": "ansible"
- },
- "raw_response": {
- "task": 243
- },
- "post_method": "exec"
- },
- {
- "url": "/securityconsole/install/device",
- "raw_response": {
- "task": 244
- },
- "datagram_sent": {
- "scope": {
- "name": "FGT2, FGT3"
- },
- "flags": "none",
- "adom": "ansible"
- },
- "paramgram_used": {
- "adom": "ansible",
- "install_config": "enable",
- "device_unique_name": "FGT2, FGT3",
- "interface": null,
- "device_hostname": null,
- "interface_ip": null,
- "interface_allow_access": null
- },
- "post_method": "exec"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_group.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_group.json
deleted file mode 100644
index 718c1eb322..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_group.json
+++ /dev/null
@@ -1,234 +0,0 @@
-{
- "add_group_member": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvmdb/adom/ansible/group/TestGroup/object member"
- },
- "datagram_sent": {
- "name": "FGT1",
- "vdom": "root"
- },
- "paramgram_used": {
- "grp_desc": null,
- "adom": "ansible",
- "grp_members": "FGT1",
- "mode": "add",
- "grp_name": "TestGroup",
- "vdom": "root"
- },
- "post_method": "add"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvmdb/adom/ansible/group/testtest/object member"
- },
- "datagram_sent": {
- "name": "FGT3",
- "vdom": "root"
- },
- "paramgram_used": {
- "grp_desc": null,
- "adom": "ansible",
- "grp_members": "FGT3",
- "mode": "add",
- "grp_name": "testtest",
- "vdom": "root"
- },
- "post_method": "add"
- }
- ],
- "delete_device_group": [
- {
- "paramgram_used": {
- "grp_desc": "CreatedbyAnsible",
- "adom": "ansible",
- "grp_members": null,
- "mode": "delete",
- "grp_name": "TestGroup",
- "vdom": "root"
- },
- "datagram_sent": {
- "name": "TestGroup",
- "adom": "ansible"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvmdb/adom/ansible/group/TestGroup"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvmdb/adom/ansible/group/testtest"
- },
- "datagram_sent": {
- "name": "testtest",
- "adom": "ansible"
- },
- "paramgram_used": {
- "grp_desc": "CreatedbyAnsible",
- "adom": "ansible",
- "grp_members": null,
- "mode": "delete",
- "grp_name": "testtest",
- "vdom": "root"
- },
- "post_method": "delete"
- }
- ],
- "add_device_group": [
- {
- "paramgram_used": {
- "grp_desc": "CreatedbyAnsible",
- "adom": "ansible",
- "grp_members": null,
- "mode": "add",
- "grp_name": "TestGroup",
- "vdom": "root"
- },
- "datagram_sent": {
- "os_type": "fos",
- "name": "TestGroup",
- "desc": "CreatedbyAnsible"
- },
- "raw_response": {
- "status": {
- "message": "Object already exists",
- "code": -2
- },
- "url": "/dvmdb/adom/ansible/group"
- },
- "post_method": "add"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvmdb/adom/ansible/group"
- },
- "datagram_sent": {
- "os_type": "fos",
- "name": "testtest",
- "desc": "CreatedbyAnsible"
- },
- "paramgram_used": {
- "grp_desc": "CreatedbyAnsible",
- "adom": "ansible",
- "grp_members": null,
- "mode": "add",
- "grp_name": "testtest",
- "vdom": "root"
- },
- "post_method": "add"
- },
- {
- "paramgram_used": {
- "grp_desc": null,
- "adom": "ansible",
- "grp_members": "FGT1",
- "mode": "add",
- "grp_name": "TestGroup",
- "vdom": "root"
- },
- "datagram_sent": {
- "os_type": "fos",
- "name": "TestGroup",
- "desc": null
- },
- "raw_response": {
- "status": {
- "message": "Object already exists",
- "code": -2
- },
- "url": "/dvmdb/adom/ansible/group"
- },
- "post_method": "add"
- },
- {
- "paramgram_used": {
- "grp_desc": null,
- "adom": "ansible",
- "grp_members": "FGT3",
- "mode": "add",
- "grp_name": "testtest",
- "vdom": "root"
- },
- "datagram_sent": {
- "os_type": "fos",
- "name": "testtest",
- "desc": null
- },
- "raw_response": {
- "status": {
- "message": "Object already exists",
- "code": -2
- },
- "url": "/dvmdb/adom/ansible/group"
- },
- "post_method": "add"
- }
- ],
- "delete_group_member": [
- {
- "paramgram_used": {
- "grp_desc": null,
- "adom": "ansible",
- "grp_members": "FGT3",
- "mode": "delete",
- "grp_name": "testtest",
- "vdom": "root"
- },
- "datagram_sent": {
- "name": "FGT3",
- "vdom": "root"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvmdb/adom/ansible/group/testtest/object member"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvmdb/adom/ansible/group/TestGroup/object member"
- },
- "datagram_sent": {
- "name": "FGT1",
- "vdom": "root"
- },
- "paramgram_used": {
- "grp_desc": null,
- "adom": "ansible",
- "grp_members": "FGT1",
- "mode": "delete",
- "grp_name": "TestGroup",
- "vdom": "root"
- },
- "post_method": "delete"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_provision_template.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_provision_template.json
deleted file mode 100644
index fb65ca5da9..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_device_provision_template.json
+++ /dev/null
@@ -1,2063 +0,0 @@
-{
- "set_devprof_admin": [
- {
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "provision_targets": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_id": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": 4433,
- "ntp_status": null,
- "syslog_server": null,
- "admin_switch_controller": "enable",
- "admin_timeout": 60,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_fortianalyzer_target": "10.7.220.38",
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": 8080,
- "dns_secondary_ipv4": null,
- "syslog_filter": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": "blue",
- "ntp_sync_interval": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "ntp_v3": null,
- "ntp_auth": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": "this-fmg",
- "dns_primary_ipv4": null,
- "admin_language": "english",
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": null,
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "smtp_replyto": null,
- "admin_https_redirect": "enable"
- },
- "datagram_sent": {
- "admintimeout": 60,
- "switch-controller": "enable",
- "language": "english",
- "admin-port": 8080,
- "gui-theme": "blue",
- "admin-https-redirect": "enable",
- "admin-sport": 4433
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/global"
- },
- "post_method": "set"
- }
- ],
- "set_devprof_snmp_v3": [
- {
- "paramgram_used": {
- "snmpv3_security_level": "auth-priv",
- "snmp_v2c_query_status": null,
- "provision_targets": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": "enable",
- "snmpv3_trap_status": "enable",
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": "ansibleSNMPv3",
- "snmp_v2c_id": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": "sha",
- "smtp_port": null,
- "snmpv3_priv_pwd": "fortinet",
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": 161,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": "10.7.220.59,10.7.220.60",
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": "enable",
- "syslog_status": null,
- "admin_https_redirect": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": null,
- "dns_secondary_ipv4": null,
- "syslog_filter": null,
- "snmpv3_source_ip": "0.0.0.0",
- "snmpv3_trap_rport": 162,
- "admin_gui_theme": null,
- "ntp_sync_interval": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "ntp_auth": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": "aes256",
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": "fortinet",
- "smtp_source_ipv4": null,
- "snmpv3_status": "enable",
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "ntp_v3": null
- },
- "datagram_sent": {
- "notify-hosts": [
- "10.7.220.59",
- "10.7.220.60"
- ],
- "name": "ansibleSNMPv3",
- "query-port": 161,
- "auth-pwd": "fortinet",
- "source-ip": "0.0.0.0",
- "priv-pwd": "fortinet",
- "trap-lport": 162,
- "ha-direct": 0,
- "trap-rport": 162,
- "events": 1647387997183
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/user"
- },
- "post_method": "set"
- }
- ],
- "set_devprof_scope": [
- {
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "provision_targets": "FGT1,FGT2",
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_id": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_https_redirect": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": null,
- "dns_secondary_ipv4": null,
- "syslog_filter": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "ntp_sync_interval": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "ntp_auth": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": null,
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "ntp_v3": null
- },
- "datagram_sent": {
- "type": "devprof",
- "name": "ansibleTest",
- "scope member": [
- {
- "name": "FGT1"
- },
- {
- "name": "FGT2"
- }
- ],
- "description": "CreatedByAnsible"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/devprof/adom/ansible"
- },
- "post_method": "set"
- }
- ],
- "set_devprof_snmp": [
- {
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "provision_targets": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_id": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": "enable",
- "syslog_status": null,
- "admin_https_redirect": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": null,
- "dns_secondary_ipv4": null,
- "syslog_filter": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "ntp_sync_interval": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "ntp_auth": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": null,
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "ntp_v3": null
- },
- "datagram_sent": {
- "status": "enable"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/sysinfo"
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": "enable",
- "provision_targets": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": "ansibleV2c",
- "syslog_facility": "syslog",
- "snmp_v2c_status": "enable",
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_id": 1,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0",
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": 162,
- "snmp_v2c_trap_status": "enable",
- "snmp_status": "enable",
- "syslog_status": null,
- "admin_https_redirect": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": "10.7.220.41",
- "admin_http_port": null,
- "dns_secondary_ipv4": null,
- "syslog_filter": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "ntp_sync_interval": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "ntp_auth": null,
- "snmp_v2c_trap_port": 161,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": null,
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255",
- "ntp_v3": null
- },
- "datagram_sent": {
- "status": "enable"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/sysinfo"
- },
- "post_method": "set"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/sysinfo"
- },
- "datagram_sent": {
- "status": "enable"
- },
- "paramgram_used": {
- "snmpv3_security_level": "auth-priv",
- "snmp_v2c_query_status": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": "enable",
- "snmpv3_trap_status": "enable",
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": "ansibleSNMPv3",
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": "sha",
- "smtp_port": null,
- "snmpv3_priv_pwd": "fortinet",
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": "fortinet",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": 161,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": "10.7.220.59,10.7.220.60",
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": "enable",
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "ntp_auth": null,
- "snmp_v2c_id": null,
- "admin_http_port": null,
- "ntp_v3": null,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": null,
- "snmpv3_source_ip": "0.0.0.0",
- "snmpv3_trap_rport": 162,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "provision_targets": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": "aes256",
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": "enable",
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_https_redirect": null
- },
- "post_method": "set"
- }
- ],
- "set_devprof": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/devprof/adom/ansible/ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "smtp_port": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "ntp_auth": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_replyto": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_id": null,
- "admin_http_port": null,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "provision_targets": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "delete",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": "ansibleTest",
- "ntp_v3": null,
- "admin_https_redirect": null
- },
- "post_method": "delete"
- }
- ],
- "set_devprof_dns": [
- {
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "provision_targets": null,
- "ntp_type": null,
- "dns_suffix": "ansible.local",
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_id": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": null,
- "dns_secondary_ipv4": "4.4.4.4",
- "syslog_filter": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "ntp_sync_interval": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "ntp_v3": null,
- "ntp_auth": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": "8.8.8.8",
- "admin_language": null,
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": null,
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "smtp_replyto": null,
- "admin_https_redirect": null
- },
- "datagram_sent": {
- "domain": "ansible.local",
- "primary": "8.8.8.8",
- "secondary": "4.4.4.4"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/dns"
- },
- "post_method": "set"
- }
- ],
- "set_devprof_syslog": [
- {
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "provision_targets": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "kernel",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_id": null,
- "syslog_port": 514,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": "10.7.220.59",
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": "enable",
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": null,
- "dns_secondary_ipv4": null,
- "syslog_filter": "critical",
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "ntp_sync_interval": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "ntp_v3": null,
- "ntp_auth": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": null,
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "smtp_replyto": null,
- "admin_https_redirect": null
- },
- "datagram_sent": {
- "status": "enable",
- "mode": "udp",
- "server": "10.7.220.59",
- "port": 514,
- "facility": "kernel"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/log/syslogd/setting"
- },
- "post_method": "set"
- }
- ],
- "set_devprof_snmp_v2c": [
- {
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/snmp/community",
- "raw_response": {
- "id": 1
- },
- "datagram_sent": {
- "status": "enable",
- "trap-v2c-lport": 162,
- "trap-v2c-status": "enable",
- "name": "ansibleV2c",
- "query-v1-port": 161,
- "meta fields": {},
- "query-v1-status": 0,
- "trap-v2c-rport": 161,
- "trap-v1-rport": 162,
- "query-v2c-port": 162,
- "hosts": [
- {
- "ip": [
- "10.7.220.59",
- "255.255.255.255"
- ],
- "source-ip": "0.0.0.0",
- "meta fields": {},
- "ha-direct": "enable",
- "id": 1,
- "host-type": "query"
- },
- {
- "ip": [
- "10.7.220.0",
- "255.255.255.0"
- ],
- "source-ip": "0.0.0.0",
- "meta fields": {},
- "ha-direct": "enable",
- "id": 2,
- "host-type": "query"
- },
- {
- "ip": [
- "10.7.220.59",
- "255.255.255.255"
- ],
- "source-ip": "10.7.220.41",
- "meta fields": {},
- "ha-direct": "enable",
- "id": 3,
- "host-type": "trap"
- },
- {
- "ip": [
- "10.7.220.60",
- "255.255.255.255"
- ],
- "source-ip": "10.7.220.41",
- "meta fields": {},
- "ha-direct": "enable",
- "id": 4,
- "host-type": "trap"
- }
- ],
- "trap-v1-status": 0,
- "events": 411578417151,
- "query-v2c-status": "enable",
- "id": 1,
- "trap-v1-lport": 162
- },
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": "enable",
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": "ansibleV2c",
- "syslog_facility": "syslog",
- "snmp_v2c_status": "enable",
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": "10.7.220.41",
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_replyto": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": 162,
- "snmp_v2c_trap_status": "enable",
- "snmp_status": "enable",
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "ntp_auth": null,
- "snmp_v2c_id": 1,
- "admin_http_port": null,
- "snmp_v2c_query_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0",
- "ntp_sync_interval": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "snmp_v2c_trap_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255",
- "provision_targets": null,
- "snmp_v2c_trap_port": 161,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "ntp_v3": null,
- "admin_https_redirect": null
- },
- "post_method": "set"
- }
- ],
- "get_devprof": [
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": "enable",
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "ntp_auth": null,
- "snmp_v2c_id": null,
- "admin_http_port": null,
- "ntp_v3": null,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "provision_targets": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_https_redirect": null
- },
- "post_method": "get"
- },
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "kernel",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": 514,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": "10.7.220.59",
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_replyto": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": "enable",
- "admin_fortianalyzer_target": null,
- "ntp_auth": null,
- "snmp_v2c_id": null,
- "admin_http_port": null,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": "critical",
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "snmp_v2c_trap_hosts_ipv4": null,
- "provision_targets": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "ntp_v3": null,
- "admin_https_redirect": null
- },
- "post_method": "get"
- },
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": "enable",
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": "ansibleV2c",
- "syslog_facility": "syslog",
- "snmp_v2c_status": "enable",
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": "10.7.220.41",
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": 162,
- "snmp_v2c_trap_status": "enable",
- "snmp_status": "enable",
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "ntp_auth": null,
- "snmp_v2c_id": 1,
- "admin_http_port": null,
- "ntp_v3": null,
- "snmp_v2c_query_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0",
- "ntp_sync_interval": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "provision_targets": null,
- "snmp_v2c_trap_port": 161,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": "10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255",
- "admin_https_redirect": null
- },
- "post_method": "get"
- },
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "paramgram_used": {
- "snmpv3_security_level": "auth-priv",
- "snmp_v2c_query_status": null,
- "provision_targets": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": "enable",
- "snmpv3_trap_status": "enable",
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": "ansibleSNMPv3",
- "snmp_v2c_id": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": "sha",
- "smtp_port": null,
- "snmpv3_priv_pwd": "fortinet",
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": 161,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": "10.7.220.59,10.7.220.60",
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": "enable",
- "syslog_status": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": null,
- "dns_secondary_ipv4": null,
- "syslog_filter": null,
- "snmpv3_source_ip": "0.0.0.0",
- "snmpv3_trap_rport": 162,
- "admin_gui_theme": null,
- "ntp_sync_interval": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "ntp_v3": null,
- "ntp_auth": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": "aes256",
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": "fortinet",
- "smtp_source_ipv4": null,
- "snmpv3_status": "enable",
- "delete_provisioning_template": null,
- "smtp_replyto": null,
- "admin_https_redirect": null
- },
- "datagram_sent": {},
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "post_method": "get"
- },
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "ntp_type": "fortiguard",
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": "enable",
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_replyto": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "ntp_auth": null,
- "snmp_v2c_id": null,
- "admin_http_port": null,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": 60,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "snmp_v2c_trap_hosts_ipv4": null,
- "provision_targets": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "ntp_v3": null,
- "admin_https_redirect": null
- },
- "post_method": "get"
- },
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "ntp_type": "custom",
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": null,
- "ntp_server": "10.7.220.32,10.7.220.1",
- "admin_https_port": null,
- "ntp_status": "enable",
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "ntp_auth": "enable",
- "snmp_v2c_id": null,
- "admin_http_port": null,
- "ntp_v3": null,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": 60,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": "fortinet",
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "provision_targets": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_https_redirect": null
- },
- "post_method": "get"
- },
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": 4433,
- "ntp_status": null,
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": 60,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_replyto": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_fortianalyzer_target": "10.7.220.38",
- "ntp_auth": null,
- "snmp_v2c_id": null,
- "admin_http_port": 8080,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": "blue",
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "snmp_v2c_trap_hosts_ipv4": null,
- "provision_targets": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": "this-fmg",
- "admin_switch_controller": "enable",
- "admin_language": "english",
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "ntp_v3": null,
- "admin_https_redirect": "enable"
- },
- "post_method": "get"
- },
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": "disable",
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": 25,
- "snmpv3_priv_pwd": null,
- "smtp_server": "10.7.220.32",
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_username": "ansible",
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": "fortinet",
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "ntp_auth": null,
- "snmp_v2c_id": null,
- "admin_http_port": null,
- "ntp_v3": null,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": "ansible@do-not-reply.com",
- "provision_targets": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": "starttls",
- "mode": "set",
- "smtp_source_ipv4": "0.0.0.0",
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_https_redirect": null
- },
- "post_method": "get"
- },
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "ntp_type": null,
- "dns_suffix": "ansible.local",
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "dns_primary_ipv4": "8.8.8.8",
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": "4.4.4.4",
- "smtp_replyto": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "ntp_auth": null,
- "snmp_v2c_id": null,
- "admin_http_port": null,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "snmp_v2c_trap_hosts_ipv4": null,
- "provision_targets": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "ntp_v3": null,
- "admin_https_redirect": null
- },
- "post_method": "get"
- },
- {
- "url": "/pm/devprof/adom/ansible/ansibleTest",
- "raw_response": {
- "enabled options": [
- "dns",
- "ntp",
- "email",
- "admin",
- "snmp",
- "repmsg",
- "ftgd",
- "log"
- ],
- "oid": 1542,
- "type": "devprof",
- "description": "CreatedByAnsible",
- "name": "ansibleTest"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_trap_src_ipv4": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "dns_primary_ipv4": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "dns_secondary_ipv4": null,
- "smtp_username": null,
- "snmpv3_auth_pwd": null,
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_fortianalyzer_target": null,
- "ntp_auth": null,
- "snmp_v2c_id": null,
- "admin_http_port": null,
- "ntp_v3": null,
- "snmp_v2c_query_hosts_ipv4": null,
- "ntp_sync_interval": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "syslog_filter": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "provision_targets": "FGT1,FGT2",
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "admin_switch_controller": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "mode": "set",
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_https_redirect": null
- },
- "post_method": "get"
- }
- ],
- "set_devprof_ntp": [
- {
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "provision_targets": null,
- "ntp_type": "fortiguard",
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_id": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": "enable",
- "syslog_server": null,
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": null,
- "dns_secondary_ipv4": null,
- "syslog_filter": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "ntp_sync_interval": 60,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "ntp_v3": null,
- "ntp_auth": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": null,
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "smtp_replyto": null,
- "admin_https_redirect": null
- },
- "datagram_sent": {
- "ntpsync": 1,
- "syncinterval": 60,
- "type": 0
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/ntp"
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "provision_targets": null,
- "ntp_type": "custom",
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": null,
- "snmpv3_name": null,
- "snmp_v2c_id": null,
- "syslog_port": null,
- "ntp_server": "10.7.220.32,10.7.220.1",
- "admin_https_port": null,
- "ntp_status": "enable",
- "syslog_server": null,
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": null,
- "snmpv3_priv_pwd": null,
- "smtp_server": null,
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": null,
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": null,
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_https_redirect": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": null,
- "dns_secondary_ipv4": null,
- "syslog_filter": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "ntp_sync_interval": 60,
- "ntp_auth_pwd": "fortinet",
- "provisioning_template": "ansibleTest",
- "smtp_replyto": null,
- "ntp_auth": "enable",
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": null,
- "admin_language": null,
- "smtp_conn_sec": null,
- "snmpv3_auth_pwd": null,
- "smtp_source_ipv4": null,
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "ntp_v3": null
- },
- "datagram_sent": {
- "ntpsync": 1,
- "syncinterval": 60,
- "type": 1,
- "ntpserver": [
- {
- "ntpv3": 0,
- "server": "10.7.220.32",
- "authentication": 1,
- "key": "fortinet",
- "id": 1,
- "key-id": 1
- },
- {
- "ntpv3": 0,
- "server": "10.7.220.1",
- "authentication": 1,
- "key": "fortinet",
- "id": 2,
- "key-id": 2
- }
- ]
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/ntp"
- },
- "post_method": "set"
- }
- ],
- "set_devprof_smtp": [
- {
- "paramgram_used": {
- "snmpv3_security_level": null,
- "snmp_v2c_query_status": null,
- "provision_targets": null,
- "ntp_type": null,
- "dns_suffix": null,
- "snmpv3_queries": null,
- "snmpv3_trap_status": null,
- "snmp_v2c_name": null,
- "syslog_facility": "syslog",
- "snmp_v2c_status": null,
- "smtp_validate_cert": "disable",
- "snmpv3_name": null,
- "snmp_v2c_id": null,
- "syslog_port": null,
- "ntp_server": null,
- "admin_https_port": null,
- "ntp_status": null,
- "syslog_server": null,
- "admin_switch_controller": null,
- "admin_timeout": null,
- "snmpv3_auth_proto": null,
- "smtp_port": 25,
- "snmpv3_priv_pwd": null,
- "smtp_server": "10.7.220.32",
- "syslog_enc_algorithm": "disable",
- "snmp_v2c_query_hosts_ipv4": null,
- "smtp_username": "ansible",
- "mode": "set",
- "syslog_certificate": null,
- "admin_fortiguard_target": null,
- "snmpv3_query_port": null,
- "smtp_password": "fortinet",
- "adom": "ansible",
- "snmpv3_notify_hosts": null,
- "syslog_mode": "udp",
- "snmp_v2c_query_port": null,
- "snmp_v2c_trap_status": null,
- "snmp_status": null,
- "syslog_status": null,
- "admin_https_redirect": null,
- "admin_fortianalyzer_target": null,
- "snmp_v2c_trap_src_ipv4": null,
- "admin_http_port": null,
- "dns_secondary_ipv4": null,
- "syslog_filter": null,
- "snmpv3_source_ip": null,
- "snmpv3_trap_rport": null,
- "admin_gui_theme": null,
- "ntp_sync_interval": null,
- "ntp_auth_pwd": null,
- "provisioning_template": "ansibleTest",
- "smtp_replyto": "ansible@do-not-reply.com",
- "ntp_auth": null,
- "snmp_v2c_trap_port": null,
- "snmpv3_priv_proto": null,
- "admin_enable_fortiguard": null,
- "dns_primary_ipv4": null,
- "admin_language": null,
- "smtp_conn_sec": "starttls",
- "snmpv3_auth_pwd": null,
- "smtp_source_ipv4": "0.0.0.0",
- "snmpv3_status": null,
- "delete_provisioning_template": null,
- "snmp_v2c_trap_hosts_ipv4": null,
- "ntp_v3": null
- },
- "datagram_sent": {
- "username": "ansible",
- "authenticate": 1,
- "source-ip": "0.0.0.0",
- "validate-server": 0,
- "server": "10.7.220.32",
- "port": 25,
- "security": 1,
- "password": "fortinet",
- "reply-to": "ansible@do-not-reply.com"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/devprof/ansibleTest/system/email-server"
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_address.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_address.json
deleted file mode 100644
index 1fab14f3ee..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_address.json
+++ /dev/null
@@ -1,1051 +0,0 @@
-{
- "fmgr_fwobj_ipv6": [
- {
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": "ansibleIPv6Group",
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": null,
- "ipv6": "group",
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": null,
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/ansible/obj/firewall/addrgrp6/ansibleIPv6Group"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address6/ansible_v6Obj_Range"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": null,
- "ipv6": "iprange",
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v6Obj_Range",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": null,
- "ipv6": "ip",
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v6Obj",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address6/ansible_v6Obj"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address6"
- },
- "datagram_sent": {
- "comment": "Dev Example for Ansible",
- "name": "ansible_v6Obj",
- "color": "22",
- "dynamic_mapping": [],
- "visibility": "enable",
- "ip6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
- "type": "ipprefix"
- },
- "paramgram_used": {
- "comment": "Dev Example for Ansible",
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": null,
- "ipv6": "ip",
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v6Obj",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "add",
- "wildcard": null,
- "ipv6addr": "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
- },
- "post_method": "add"
- },
- {
- "paramgram_used": {
- "comment": "test123 comment",
- "obj-id": null,
- "color": "22",
- "group_name": "ansibleIPv6Group",
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": null,
- "ipv6": "group",
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": "ansible_v6Obj_Range, ansible_v6Obj",
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": null,
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "add",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {
- "comment": "test123 comment",
- "color": "22",
- "member": [
- "ansible_v6Obj_Range",
- "ansible_v6Obj"
- ],
- "name": "ansibleIPv6Group",
- "visibility": "enable"
- },
- "raw_response": {
- "status": {
- "message": "datasrc invalid. object: firewall addrgrp6 member ansibleIPv6Group. detail: ansible_v6Obj_Range. solution: data not exist",
- "code": -10131
- },
- "url": "/pm/config/adom/ansible/obj/firewall/addrgrp6"
- },
- "post_method": "add"
- }
- ],
- "fmgr_fwobj_ipv4": [
- {
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": "ansibleIPv4Group",
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "group",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": null,
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/ansible/obj/firewall/addrgrp/ansibleIPv4Group"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_Range"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "iprange",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_Range",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "iprange",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_MORE",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_MORE"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_ipMask2"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "iprange",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_ipMask2",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "iprange",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_Range2",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_Range2"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_ipMask"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "ipmask",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_ipMask",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "ipmask",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_Subnet2",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_Subnet2"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_Subnet1"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "ipmask",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_Subnet1",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "wildcard",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_wildCard",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_wildCard"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/Synology myds DDNS service"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "wildcard-fqdn",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "Synology myds DDNS service",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "fqdn",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "Bluesnews",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/Bluesnews"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_geo"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "geography",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_geo",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address"
- },
- "datagram_sent": {
- "comment": "Dev Example for Ansible",
- "cache-ttl": null,
- "name": "ansible_v4Obj_Range",
- "subnet": [
- "0.0.0.0",
- "0.0.0.0"
- ],
- "color": "22",
- "meta fields": {},
- "dynamic_mapping": [],
- "visibility": "disable",
- "associated-interface": null,
- "end-ip": "10.7.220.50",
- "start-ip": "10.7.220.1",
- "allow-routing": "disable",
- "type": "iprange"
- },
- "paramgram_used": {
- "comment": "Dev Example for Ansible",
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "iprange",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": "10.7.220.50",
- "start-ip": "10.7.220.1",
- "name": "ansible_v4Obj_Range",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "set",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "comment": "Dev Example for Ansible",
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "iprange",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": "10.7.220.150",
- "start-ip": "10.7.220.100",
- "name": "ansible_v4Obj_Range2",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "set",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {
- "comment": "Dev Example for Ansible",
- "cache-ttl": null,
- "name": "ansible_v4Obj_Range2",
- "subnet": [
- "0.0.0.0",
- "0.0.0.0"
- ],
- "color": "22",
- "meta fields": {},
- "dynamic_mapping": [],
- "visibility": "disable",
- "associated-interface": null,
- "end-ip": "10.7.220.150",
- "start-ip": "10.7.220.100",
- "allow-routing": "disable",
- "type": "iprange"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address"
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "comment": "Dev Example for Ansible",
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "fqdn",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "Bluesnews",
- "country": null,
- "ipv4addr": null,
- "fqdn": "bluesnews.com",
- "multicast": null,
- "associated-interface": null,
- "mode": "add",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {
- "comment": "Dev Example for Ansible",
- "cache-ttl": null,
- "name": "Bluesnews",
- "color": "22",
- "meta fields": {},
- "dynamic_mapping": [],
- "fqdn": "bluesnews.com",
- "visibility": "disable",
- "associated-interface": null,
- "allow-routing": "disable",
- "type": "fqdn"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address"
- },
- "post_method": "add"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address"
- },
- "datagram_sent": {
- "comment": "Dev Example for Ansible",
- "cache-ttl": null,
- "name": "ansible_geo",
- "color": "22",
- "meta fields": {},
- "dynamic_mapping": [],
- "visibility": "disable",
- "associated-interface": null,
- "country": "US",
- "allow-routing": "disable",
- "type": "geography"
- },
- "paramgram_used": {
- "comment": "Dev Example for Ansible",
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "geography",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_geo",
- "country": "US",
- "ipv4addr": null,
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "add",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "add"
- },
- {
- "paramgram_used": {
- "comment": "Ansible is fun! Paramgram!",
- "obj-id": null,
- "color": "26",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": "ipmask",
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_ipMask2",
- "country": null,
- "ipv4addr": "10.7.220.30/32",
- "fqdn": null,
- "multicast": null,
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address/ansible_v4Obj_ipMask2"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/address"
- },
- "datagram_sent": {
- "comment": "Ansible more options",
- "cache-ttl": "180",
- "color": "6",
- "meta fields": {},
- "dynamic_mapping": [],
- "visibility": "enable",
- "allow-routing": "enable",
- "subnet": [
- "10.7.220.41",
- "255.255.255.255"
- ],
- "name": "ansible_v4Obj_MORE",
- "associated-interface": "port1",
- "type": "ipmask"
- },
- "paramgram_used": {
- "comment": "Ansible more options",
- "obj-id": null,
- "color": "6",
- "group_name": null,
- "allow-routing": "enable",
- "wildcard-fqdn": null,
- "ipv4": "ipmask",
- "ipv6": null,
- "cache-ttl": "180",
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_v4Obj_MORE",
- "country": null,
- "ipv4addr": "10.7.220.41/32",
- "fqdn": null,
- "multicast": null,
- "associated-interface": "port1",
- "mode": "set",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "set"
- }
- ],
- "fmgr_fwobj_multicast": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/multicast-address/ansible_broadcastSubnet"
- },
- "datagram_sent": {
- "name": "ansible_broadcastSubnet"
- },
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": null,
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_broadcastSubnet",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": "broadcastmask",
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": null,
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": null,
- "start-ip": null,
- "name": "ansible_multicastrange",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": "multicastrange",
- "associated-interface": null,
- "mode": "delete",
- "wildcard": null,
- "ipv6addr": null
- },
- "datagram_sent": {
- "name": "ansible_multicastrange"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/multicast-address/ansible_multicastrange"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/multicast-address"
- },
- "datagram_sent": {
- "comment": "Dev by Ansible",
- "subnet": [
- "0.0.0.0",
- "0.0.0.0"
- ],
- "name": "ansible_multicastrange",
- "color": "22",
- "visibility": "enable",
- "associated-interface": null,
- "end-ip": "224.0.0.251",
- "start-ip": "224.0.0.251",
- "type": "multicastrange"
- },
- "paramgram_used": {
- "comment": "Dev by Ansible",
- "obj-id": null,
- "color": "22",
- "group_name": null,
- "allow-routing": "disable",
- "wildcard-fqdn": null,
- "ipv4": null,
- "ipv6": null,
- "cache-ttl": null,
- "adom": "ansible",
- "group_members": null,
- "visibility": "enable",
- "end-ip": "224.0.0.251",
- "start-ip": "224.0.0.251",
- "name": "ansible_multicastrange",
- "country": null,
- "ipv4addr": null,
- "fqdn": null,
- "multicast": "multicastrange",
- "associated-interface": null,
- "mode": "add",
- "wildcard": null,
- "ipv6addr": null
- },
- "post_method": "add"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool.json
deleted file mode 100644
index 48e79fde6d..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool.json
+++ /dev/null
@@ -1,388 +0,0 @@
-{
- "fmgr_fwobj_ippool_modify": [
- {
- "paramgram_used": {
- "source-endip": null,
- "arp-intf": null,
- "num-blocks-per-user": null,
- "name": "Ansible_pool4_overload",
- "adom": "ansible",
- "startip": "10.10.10.10",
- "dynamic_mapping": {
- "endip": null,
- "num-blocks-per-user": null,
- "block-size": null,
- "startip": null,
- "arp-intf": null,
- "comments": null,
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "associated-interface": null,
- "source-startip": null,
- "permit-any-host": null,
- "type": null
- },
- "comments": "Created by ansible",
- "permit-any-host": null,
- "arp-reply": "enable",
- "pba-timeout": null,
- "endip": "10.10.10.100",
- "associated-interface": null,
- "mode": "add",
- "source-startip": null,
- "type": "overload",
- "block-size": null
- },
- "datagram_sent": {
- "endip": "10.10.10.100",
- "name": "Ansible_pool4_overload",
- "startip": "10.10.10.10",
- "comments": "Created by ansible",
- "arp-reply": "enable",
- "type": "overload"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool"
- },
- "post_method": "add"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool"
- },
- "datagram_sent": {
- "endip": "10.10.20.100",
- "name": "Ansible_pool4_121",
- "startip": "10.10.20.10",
- "comments": "Created by ansible",
- "arp-reply": "enable",
- "type": "one-to-one"
- },
- "paramgram_used": {
- "permit-any-host": null,
- "dynamic_mapping": {
- "endip": null,
- "num-blocks-per-user": null,
- "block-size": null,
- "startip": null,
- "arp-intf": null,
- "comments": null,
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "associated-interface": null,
- "source-startip": null,
- "permit-any-host": null,
- "type": null
- },
- "num-blocks-per-user": null,
- "name": "Ansible_pool4_121",
- "adom": "ansible",
- "startip": "10.10.20.10",
- "arp-intf": null,
- "comments": "Created by ansible",
- "source-endip": null,
- "arp-reply": "enable",
- "pba-timeout": null,
- "endip": "10.10.20.100",
- "associated-interface": null,
- "mode": "add",
- "source-startip": null,
- "type": "one-to-one",
- "block-size": null
- },
- "post_method": "add"
- },
- {
- "paramgram_used": {
- "source-endip": "192.168.20.20",
- "arp-intf": null,
- "num-blocks-per-user": null,
- "name": "Ansible_pool4_fixed_port",
- "adom": "ansible",
- "startip": "10.10.40.10",
- "dynamic_mapping": {
- "endip": null,
- "num-blocks-per-user": null,
- "block-size": null,
- "startip": null,
- "arp-intf": null,
- "comments": null,
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "associated-interface": null,
- "source-startip": null,
- "permit-any-host": null,
- "type": null
- },
- "comments": "Created by ansible",
- "permit-any-host": null,
- "arp-reply": "enable",
- "pba-timeout": null,
- "endip": "10.10.40.100",
- "associated-interface": null,
- "mode": "add",
- "source-startip": "192.168.20.1",
- "type": "fixed-port-range",
- "block-size": null
- },
- "datagram_sent": {
- "endip": "10.10.40.100",
- "name": "Ansible_pool4_fixed_port",
- "startip": "10.10.40.10",
- "comments": "Created by ansible",
- "source-endip": "192.168.20.20",
- "arp-reply": "enable",
- "source-startip": "192.168.20.1",
- "type": "fixed-port-range"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool"
- },
- "post_method": "add"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool"
- },
- "datagram_sent": {
- "endip": "10.10.30.100",
- "num-blocks-per-user": 1,
- "name": "Ansible_pool4_port_block_allocation",
- "startip": "10.10.30.10",
- "comments": "Created by ansible",
- "arp-reply": "enable",
- "type": "port-block-allocation",
- "block-size": 128
- },
- "paramgram_used": {
- "permit-any-host": null,
- "dynamic_mapping": {
- "endip": null,
- "num-blocks-per-user": null,
- "block-size": null,
- "startip": null,
- "arp-intf": null,
- "comments": null,
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "associated-interface": null,
- "source-startip": null,
- "permit-any-host": null,
- "type": null
- },
- "num-blocks-per-user": 1,
- "name": "Ansible_pool4_port_block_allocation",
- "adom": "ansible",
- "startip": "10.10.30.10",
- "arp-intf": null,
- "comments": "Created by ansible",
- "source-endip": null,
- "arp-reply": "enable",
- "pba-timeout": null,
- "endip": "10.10.30.100",
- "associated-interface": null,
- "mode": "add",
- "source-startip": null,
- "type": "port-block-allocation",
- "block-size": 128
- },
- "post_method": "add"
- },
- {
- "paramgram_used": {
- "source-endip": null,
- "arp-intf": null,
- "num-blocks-per-user": null,
- "name": "Ansible_pool4_overload",
- "adom": "ansible",
- "startip": null,
- "dynamic_mapping": {
- "endip": null,
- "num-blocks-per-user": null,
- "block-size": null,
- "startip": null,
- "arp-intf": null,
- "comments": null,
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "associated-interface": null,
- "source-startip": null,
- "permit-any-host": null,
- "type": null
- },
- "comments": "Created by ansible",
- "permit-any-host": null,
- "arp-reply": null,
- "pba-timeout": null,
- "endip": null,
- "associated-interface": null,
- "mode": "delete",
- "source-startip": null,
- "type": null,
- "block-size": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool/Ansible_pool4_overload"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool/Ansible_pool4_121"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "permit-any-host": null,
- "dynamic_mapping": {
- "endip": null,
- "num-blocks-per-user": null,
- "block-size": null,
- "startip": null,
- "arp-intf": null,
- "comments": null,
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "associated-interface": null,
- "source-startip": null,
- "permit-any-host": null,
- "type": null
- },
- "num-blocks-per-user": null,
- "name": "Ansible_pool4_121",
- "adom": "ansible",
- "startip": null,
- "arp-intf": null,
- "comments": "Created by ansible",
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "endip": null,
- "associated-interface": null,
- "mode": "delete",
- "source-startip": null,
- "type": null,
- "block-size": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "source-endip": null,
- "arp-intf": null,
- "num-blocks-per-user": null,
- "name": "Ansible_pool4_fixed_port",
- "adom": "ansible",
- "startip": null,
- "dynamic_mapping": {
- "endip": null,
- "num-blocks-per-user": null,
- "block-size": null,
- "startip": null,
- "arp-intf": null,
- "comments": null,
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "associated-interface": null,
- "source-startip": null,
- "permit-any-host": null,
- "type": null
- },
- "comments": "Created by ansible",
- "permit-any-host": null,
- "arp-reply": null,
- "pba-timeout": null,
- "endip": null,
- "associated-interface": null,
- "mode": "delete",
- "source-startip": null,
- "type": null,
- "block-size": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool/Ansible_pool4_fixed_port"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool/Ansible_pool4_port_block_allocation"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "permit-any-host": null,
- "dynamic_mapping": {
- "num-blocks-per-user": null,
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "endip": null,
- "block-size": null,
- "startip": null,
- "arp-intf": null,
- "comments": null,
- "permit-any-host": null,
- "associated-interface": null,
- "source-startip": null,
- "type": null
- },
- "num-blocks-per-user": null,
- "name": "Ansible_pool4_port_block_allocation",
- "adom": "ansible",
- "startip": null,
- "arp-intf": null,
- "comments": "Created by ansible",
- "source-endip": null,
- "arp-reply": null,
- "pba-timeout": null,
- "endip": null,
- "associated-interface": null,
- "mode": "delete",
- "source-startip": null,
- "type": null,
- "block-size": null
- },
- "post_method": "delete"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool6.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool6.json
deleted file mode 100644
index 078c97cb4b..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_ippool6.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "fmgr_fwobj_ippool6_modify": [
- {
- "paramgram_used": {
- "endip": null,
- "name": "IPv6 IPPool",
- "adom": "ansible",
- "startip": null,
- "dynamic_mapping": {
- "startip": null,
- "endip": null,
- "comments": null
- },
- "comments": null,
- "mode": "delete"
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool6/IPv6 IPPool"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/ippool6"
- },
- "datagram_sent": {
- "startip": "fd30:fc67:cb18:ae44::aaaa:aaaa",
- "endip": "fd30:fc67:cb18:ae44::ffff:ffff",
- "name": "IPv6 IPPool",
- "comments": "Created by Ansible"
- },
- "paramgram_used": {
- "endip": "fd30:fc67:cb18:ae44::ffff:ffff",
- "name": "IPv6 IPPool",
- "adom": "ansible",
- "startip": "fd30:fc67:cb18:ae44::aaaa:aaaa",
- "dynamic_mapping": {
- "startip": null,
- "endip": null,
- "comments": null
- },
- "comments": "Created by Ansible",
- "mode": "add"
- },
- "post_method": "add"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_service.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_service.json
deleted file mode 100644
index 7909db218a..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_service.json
+++ /dev/null
@@ -1,745 +0,0 @@
-{
- "fmgr_fwobj_service_custom": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_service"
- },
- "datagram_sent": {
- "name": "ansible_custom_service"
- },
- "paramgram_used": {
- "comment": null,
- "protocol": null,
- "custom_type": "all",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "protocol-number": null,
- "udp-idle-timer": 0,
- "explicit-proxy": "disable",
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_service",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "delete",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "protocol-number": null,
- "protocol": null,
- "custom_type": "all",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "explicit-proxy": "disable",
- "udp-idle-timer": 0,
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_icmp",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "delete",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "datagram_sent": {
- "name": "ansible_custom_icmp"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_icmp"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_icmp6"
- },
- "datagram_sent": {
- "name": "ansible_custom_icmp6"
- },
- "paramgram_used": {
- "comment": null,
- "protocol": null,
- "custom_type": "all",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "protocol-number": null,
- "udp-idle-timer": 0,
- "explicit-proxy": "disable",
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_icmp6",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "delete",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "protocol-number": null,
- "protocol": null,
- "custom_type": "all",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "explicit-proxy": "disable",
- "udp-idle-timer": 0,
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_ip",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "delete",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "datagram_sent": {
- "name": "ansible_custom_ip"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_ip"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_serviceWithSource"
- },
- "datagram_sent": {
- "name": "ansible_custom_serviceWithSource"
- },
- "paramgram_used": {
- "comment": null,
- "protocol": null,
- "custom_type": "all",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "protocol-number": null,
- "udp-idle-timer": 0,
- "explicit-proxy": "disable",
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_serviceWithSource",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "delete",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "protocol-number": null,
- "protocol": null,
- "custom_type": "all",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "explicit-proxy": "disable",
- "udp-idle-timer": 0,
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_proxy_all",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "delete",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "datagram_sent": {
- "name": "ansible_custom_proxy_all"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom/ansible_custom_proxy_all"
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "protocol-number": null,
- "protocol": null,
- "custom_type": "tcp_udp_sctp",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": "ansibleCategoryTest",
- "explicit-proxy": "disable",
- "udp-idle-timer": 0,
- "group-member": null,
- "application": null,
- "tcp-portrange": "443",
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_service",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "add",
- "tcp-halfopen-timer": 0,
- "udp-portrange": "51",
- "sctp-portrange": "100"
- },
- "datagram_sent": {
- "category": "ansibleCategoryTest",
- "protocol": "TCP/UDP/SCTP",
- "name": "ansible_custom_service",
- "color": 22,
- "visibility": "enable",
- "proxy": "disable",
- "sctp-portrange": [
- "100"
- ],
- "udp-portrange": [
- "51"
- ],
- "tcp-portrange": [
- "443"
- ]
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom"
- },
- "post_method": "add"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom"
- },
- "datagram_sent": {
- "protocol": "TCP/UDP/SCTP",
- "name": "ansible_custom_serviceWithSource",
- "color": 22,
- "visibility": "enable",
- "proxy": "disable",
- "tcp-portrange": [
- "443:1000-2000",
- "80-82:10000-20000"
- ],
- "udp-portrange": [
- "51:100-200",
- "162:200-400"
- ],
- "sctp-portrange": [
- "100:2000-2500"
- ]
- },
- "paramgram_used": {
- "comment": null,
- "protocol": null,
- "custom_type": "tcp_udp_sctp",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "protocol-number": null,
- "udp-idle-timer": 0,
- "explicit-proxy": "disable",
- "group-member": null,
- "application": null,
- "tcp-portrange": "443:1000-2000,80-82:10000-20000",
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_serviceWithSource",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "add",
- "tcp-halfopen-timer": 0,
- "udp-portrange": "51:100-200,162:200-400",
- "sctp-portrange": "100:2000-2500"
- },
- "post_method": "add"
- },
- {
- "paramgram_used": {
- "comment": null,
- "protocol-number": null,
- "protocol": null,
- "custom_type": "icmp",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": 8,
- "iprange": "0.0.0.0",
- "category": null,
- "explicit-proxy": "disable",
- "udp-idle-timer": 0,
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": 3,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_icmp",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "add",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "datagram_sent": {
- "protocol": "ICMP",
- "name": "ansible_custom_icmp",
- "color": 22,
- "visibility": "enable",
- "icmptype": 8,
- "proxy": "disable",
- "icmpcode": 3
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom"
- },
- "post_method": "add"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom"
- },
- "datagram_sent": {
- "protocol": "ICMP6",
- "name": "ansible_custom_icmp6",
- "color": 22,
- "visibility": "enable",
- "icmptype": 5,
- "proxy": "disable",
- "icmpcode": 1
- },
- "paramgram_used": {
- "comment": null,
- "protocol": null,
- "custom_type": "icmp6",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": 5,
- "iprange": "0.0.0.0",
- "category": null,
- "protocol-number": null,
- "udp-idle-timer": 0,
- "explicit-proxy": "disable",
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": 1,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_icmp6",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "add",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "post_method": "add"
- },
- {
- "paramgram_used": {
- "comment": null,
- "protocol-number": 12,
- "protocol": null,
- "custom_type": "ip",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "explicit-proxy": "disable",
- "udp-idle-timer": 0,
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_ip",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "add",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "datagram_sent": {
- "protocol-number": 12,
- "protocol": "IP",
- "name": "ansible_custom_ip",
- "color": 22,
- "visibility": "enable",
- "proxy": "disable"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom"
- },
- "post_method": "add"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/custom"
- },
- "datagram_sent": {
- "protocol": "ALL",
- "name": "ansible_custom_proxy_all",
- "color": 22,
- "visibility": "enable",
- "proxy": "enable",
- "iprange": "www.ansible.com",
- "tcp-portrange": [
- "443:1000-2000",
- "80-82:10000-20000"
- ]
- },
- "paramgram_used": {
- "comment": null,
- "protocol": null,
- "custom_type": "all",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "www.ansible.com",
- "category": null,
- "protocol-number": null,
- "udp-idle-timer": 0,
- "explicit-proxy": "enable",
- "group-member": null,
- "application": null,
- "tcp-portrange": "443:1000-2000,80-82:10000-20000",
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_proxy_all",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "add",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "post_method": "add"
- }
- ],
- "fmgr_fwobj_service_group": [
- {
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/group/ansibleTestGroup"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "comment": null,
- "protocol": null,
- "custom_type": "all",
- "color": 22,
- "object_type": "group",
- "group-name": "ansibleTestGroup",
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "protocol-number": null,
- "udp-idle-timer": 0,
- "explicit-proxy": "disable",
- "group-member": null,
- "application": null,
- "tcp-portrange": null,
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": null,
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "delete",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": "created by ansible",
- "protocol-number": null,
- "protocol": null,
- "custom_type": "all",
- "color": 10,
- "object_type": "group",
- "group-name": "ansibleTestGroup",
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": null,
- "explicit-proxy": "disable",
- "udp-idle-timer": 0,
- "group-member": "ansible_custom_ip, ansible_custom_icmp, ansible_custom_service",
- "application": null,
- "tcp-portrange": null,
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": null,
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "add",
- "tcp-halfopen-timer": 0,
- "udp-portrange": null,
- "sctp-portrange": null
- },
- "datagram_sent": {
- "comment": "created by ansible",
- "color": 10,
- "member": [
- "ansible_custom_ip",
- "ansible_custom_icmp",
- "ansible_custom_service"
- ],
- "name": "ansibleTestGroup",
- "proxy": "disable"
- },
- "raw_response": {
- "status": {
- "message": "datasrc invalid. object: firewall service group member ansibleTestGroup. detail: ansible_custom_ip. solution: data not exist",
- "code": -10131
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/group"
- },
- "post_method": "add"
- }
- ],
- "fmgr_fwobj_service_category": [
- {
- "raw_response": {
- "status": {
- "message": "Object already exists",
- "code": -2
- },
- "url": "/pm/config/adom/ansible/obj/firewall/service/category"
- },
- "datagram_sent": {
- "comment": "Created by Ansible",
- "name": "ansibleCategoryTest"
- },
- "paramgram_used": {
- "comment": null,
- "protocol": null,
- "custom_type": "tcp_udp_sctp",
- "color": 22,
- "object_type": "custom",
- "group-name": null,
- "tcp-halfclose-timer": 0,
- "icmp_type": null,
- "iprange": "0.0.0.0",
- "category": "ansibleCategoryTest",
- "protocol-number": null,
- "udp-idle-timer": 0,
- "explicit-proxy": "disable",
- "group-member": null,
- "application": null,
- "tcp-portrange": "443",
- "icmp_code": null,
- "session-ttl": 0,
- "adom": "ansible",
- "visibility": "enable",
- "tcp-timewait-timer": 0,
- "name": "ansible_custom_service",
- "app-service-type": null,
- "fqdn": "",
- "app-category": null,
- "check-reset-range": null,
- "mode": "add",
- "tcp-halfopen-timer": 0,
- "udp-portrange": "51",
- "sctp-portrange": "100"
- },
- "post_method": "add"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_vip.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_vip.json
deleted file mode 100644
index 5da45908a2..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwobj_vip.json
+++ /dev/null
@@ -1,1787 +0,0 @@
-{
- "fmgr_firewall_vip_modify": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/vip"
- },
- "datagram_sent": {
- "comment": "Created by Ansible",
- "extip": "82.72.192.185",
- "protocol": "tcp",
- "name": "Basic PNAT Map Port 10443",
- "color": 17,
- "extport": "10443",
- "mappedip": "10.7.220.25",
- "portforward": "enable",
- "type": "static-nat",
- "extintf": "any",
- "mappedport": "443"
- },
- "paramgram_used": {
- "comment": "Created by Ansible",
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp": null,
- "mapped-addr": null,
- "ssl-client-session-state-timeout": null,
- "src-filter": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": "10.7.220.25",
- "ssl-server-cipher-suites": {
- "priority": null,
- "cipher": null,
- "versions": null
- },
- "protocol": "tcp",
- "ssl-hpkp-backup": null,
- "ssl-dh-bits": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "ssl-client-renegotiation": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "weblogic-server": null,
- "http-cookie-share": null,
- "color": 17,
- "ssl-mode": null,
- "portforward": "enable",
- "http-multiplex": null,
- "http-cookie-generation": null,
- "ssl-client-fallback": null,
- "extip": "82.72.192.185",
- "extintf": "any",
- "persistence": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "dynamic_mapping": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "protocol": null,
- "ssl-hpkp": null,
- "color": null,
- "src-filter": null,
- "ldb-method": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-client-renegotiation": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp-backup": null,
- "extip": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "http-cookie-share": null,
- "ssl-server-session-state-timeout": null,
- "mapped-addr": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "http-cookie-domain": null,
- "ssl-hpkp-report-uri": null,
- "type": null,
- "extintf": null,
- "gratuitous-arp-interval": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "extport": null,
- "ssl-min-version": null,
- "ssl-server-algorithm": null,
- "ssl-certificate": null,
- "ssl-server-min-version": null,
- "ssl-client-fallback": null,
- "mappedport": null,
- "ssl-http-match-host": null,
- "ssl-dh-bits": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "outlook-web-access": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-server-max-version": null,
- "ssl-client-session-state-timeout": null,
- "http-cookie-domain-from-host": null,
- "ssl-algorithm": null,
- "ssl-hsts-include-subdomains": null,
- "max-embryonic-connections": null,
- "persistence": null,
- "http-cookie-path": null,
- "ssl-pfs": null,
- "http-multiplex": null
- },
- "adom": "ansible",
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-certificate": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-hsts-include-subdomains": null,
- "ssl-min-version": null,
- "ldb-method": null,
- "ssl-server-session-state-timeout": null,
- "ssl-server-min-version": null,
- "http-cookie-domain": null,
- "mappedport": "443",
- "name": "Basic PNAT Map Port 10443",
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "outlook-web-access": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "type": "static-nat",
- "ssl-http-match-host": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-server-max-version": null,
- "ssl-hpkp-report-uri": null,
- "http-cookie-domain-from-host": null,
- "ssl-algorithm": null,
- "gratuitous-arp-interval": null,
- "extport": "10443",
- "max-embryonic-connections": null,
- "mode": "set",
- "http-cookie-path": null,
- "ssl-pfs": null,
- "ssl-server-algorithm": null
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "comment": "Created by Ansible",
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp": null,
- "ssl-hsts-include-subdomains": null,
- "mapped-addr": null,
- "src-filter": null,
- "server-type": null,
- "mode": "set",
- "ssl-hpkp-include-subdomains": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": "3.3.3.0/24, 4.0.0.0/24",
- "ssl-server-cipher-suites": {
- "priority": null,
- "cipher": null,
- "versions": null
- },
- "protocol": null,
- "ssl-hpkp-backup": null,
- "ssl-dh-bits": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "ssl-client-renegotiation": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "adom": "ansible",
- "http-cookie-share": null,
- "ssl-server-session-state-timeout": null,
- "color": 12,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "max-embryonic-connections": null,
- "ssl-client-fallback": null,
- "ssl-hpkp-report-uri": null,
- "extip": "192.168.0.1-192.168.0.100",
- "extintf": "dmz",
- "persistence": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "http-ip-header-name": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "dynamic_mapping": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "protocol": null,
- "ssl-hpkp": null,
- "color": null,
- "ssl-client-session-state-timeout": null,
- "src-filter": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "extport": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp-backup": null,
- "extip": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "ssl-server-algorithm": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "http-cookie-share": null,
- "mapped-addr": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "max-embryonic-connections": null,
- "http-cookie-domain": null,
- "type": null,
- "extintf": null,
- "gratuitous-arp-interval": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-certificate": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-client-renegotiation": null,
- "ssl-min-version": null,
- "ldb-method": null,
- "ssl-server-session-state-timeout": null,
- "ssl-server-min-version": null,
- "ssl-client-fallback": null,
- "mappedport": null,
- "outlook-web-access": null,
- "ssl-dh-bits": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "ssl-http-match-host": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-pfs": null,
- "ssl-hpkp-report-uri": null,
- "http-cookie-domain-from-host": null,
- "ssl-hsts-include-subdomains": null,
- "ssl-server-max-version": null,
- "persistence": null,
- "http-cookie-path": null,
- "ssl-algorithm": null,
- "http-multiplex": null
- },
- "ssl-hsts": null,
- "arp-reply": null,
- "extaddr": null,
- "ssl-min-version": null,
- "ldb-method": null,
- "ssl-certificate": null,
- "ssl-server-min-version": null,
- "http-cookie-domain": null,
- "mappedport": null,
- "outlook-web-access": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "name": "Basic DNS Translation",
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "type": "dns-translation",
- "ssl-http-match-host": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-pfs": null,
- "ssl-server-max-version": null,
- "ssl-client-session-state-timeout": null,
- "http-cookie-domain-from-host": null,
- "extport": null,
- "ssl-server-algorithm": null,
- "gratuitous-arp-interval": null,
- "http-cookie-path": null,
- "ssl-algorithm": null,
- "http-multiplex": null
- },
- "datagram_sent": {
- "comment": "Created by Ansible",
- "name": "Basic DNS Translation",
- "color": 12,
- "mappedip": "3.3.3.0/24, 4.0.0.0/24",
- "extip": "192.168.0.1-192.168.0.100",
- "type": "dns-translation",
- "extintf": "dmz"
- },
- "raw_response": {
- "status": {
- "message": "datasrc invalid. object: firewall vip extintf Basic DNS Translation. detail: dmz. solution: data not exist",
- "code": -10131
- },
- "url": "/pm/config/adom/ansible/obj/firewall/vip"
- },
- "post_method": "set"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/vip"
- },
- "datagram_sent": {
- "comment": "Created by Ansible",
- "mapped-addr": "google-play",
- "type": "fqdn",
- "name": "Basic FQDN Translation",
- "color": 5
- },
- "paramgram_used": {
- "comment": "Created by Ansible",
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp": null,
- "mapped-addr": "google-play",
- "ssl-client-session-state-timeout": null,
- "src-filter": null,
- "ldb-method": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-client-renegotiation": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-cipher-suites": {
- "priority": null,
- "cipher": null,
- "versions": null
- },
- "protocol": null,
- "ssl-hpkp-backup": null,
- "ssl-dh-bits": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "weblogic-server": null,
- "http-cookie-share": null,
- "color": 5,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "ssl-client-fallback": null,
- "extip": null,
- "extintf": null,
- "persistence": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "dynamic_mapping": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "protocol": null,
- "ssl-hpkp": null,
- "color": null,
- "src-filter": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-client-renegotiation": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp-backup": null,
- "extip": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "http-cookie-share": null,
- "ssl-server-session-state-timeout": null,
- "mapped-addr": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "http-cookie-domain": null,
- "ssl-hpkp-report-uri": null,
- "type": null,
- "extintf": null,
- "gratuitous-arp-interval": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-min-version": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-hsts-include-subdomains": null,
- "http-multiplex": null,
- "ldb-method": null,
- "ssl-certificate": null,
- "ssl-server-min-version": null,
- "ssl-client-fallback": null,
- "mappedport": null,
- "ssl-http-match-host": null,
- "ssl-dh-bits": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "outlook-web-access": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-server-max-version": null,
- "ssl-client-session-state-timeout": null,
- "http-cookie-domain-from-host": null,
- "ssl-algorithm": null,
- "extport": null,
- "max-embryonic-connections": null,
- "persistence": null,
- "http-cookie-path": null,
- "ssl-pfs": null,
- "ssl-server-algorithm": null
- },
- "adom": "ansible",
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-certificate": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "extport": null,
- "ssl-min-version": null,
- "ssl-server-algorithm": null,
- "ssl-server-session-state-timeout": null,
- "ssl-server-min-version": null,
- "http-cookie-domain": null,
- "mappedport": null,
- "name": "Basic FQDN Translation",
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "outlook-web-access": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "type": "fqdn",
- "ssl-http-match-host": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-server-max-version": null,
- "ssl-hpkp-report-uri": null,
- "http-cookie-domain-from-host": null,
- "ssl-algorithm": null,
- "gratuitous-arp-interval": null,
- "ssl-hsts-include-subdomains": null,
- "max-embryonic-connections": null,
- "mode": "set",
- "http-cookie-path": null,
- "ssl-pfs": null,
- "http-multiplex": null
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "comment": "Created by Ansible",
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp": null,
- "mapped-addr": null,
- "src-filter": null,
- "server-type": null,
- "mode": "set",
- "ssl-hpkp-include-subdomains": null,
- "extport": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": "10.7.220.25",
- "ssl-server-cipher-suites": {
- "priority": null,
- "cipher": null,
- "versions": null
- },
- "protocol": null,
- "ssl-hpkp-backup": null,
- "ssl-dh-bits": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "ssl-server-algorithm": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "adom": "ansible",
- "http-cookie-share": null,
- "ssl-server-session-state-timeout": null,
- "color": 17,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "max-embryonic-connections": null,
- "ssl-client-fallback": null,
- "ssl-hpkp-report-uri": null,
- "extip": "82.72.192.185",
- "extintf": "any",
- "persistence": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "http-ip-header-name": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "dynamic_mapping": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "protocol": null,
- "ssl-hpkp": null,
- "ssl-hsts-include-subdomains": null,
- "color": null,
- "ssl-client-session-state-timeout": null,
- "src-filter": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp-backup": null,
- "extip": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "http-cookie-share": null,
- "mapped-addr": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "max-embryonic-connections": null,
- "http-cookie-domain": null,
- "type": null,
- "extintf": null,
- "gratuitous-arp-interval": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-certificate": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-client-renegotiation": null,
- "http-multiplex": null,
- "ldb-method": null,
- "ssl-server-session-state-timeout": null,
- "ssl-server-min-version": null,
- "ssl-client-fallback": null,
- "mappedport": null,
- "outlook-web-access": null,
- "ssl-dh-bits": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "ssl-http-match-host": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-pfs": null,
- "ssl-server-max-version": null,
- "ssl-hpkp-report-uri": null,
- "http-cookie-domain-from-host": null,
- "extport": null,
- "ssl-server-algorithm": null,
- "persistence": null,
- "http-cookie-path": null,
- "ssl-algorithm": null,
- "ssl-min-version": null
- },
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-client-renegotiation": null,
- "ssl-min-version": null,
- "ldb-method": null,
- "ssl-certificate": null,
- "ssl-server-min-version": null,
- "http-cookie-domain": null,
- "mappedport": null,
- "outlook-web-access": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "name": "Basic StaticNAT Map",
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "type": "static-nat",
- "ssl-http-match-host": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-pfs": null,
- "ssl-client-session-state-timeout": null,
- "http-cookie-domain-from-host": null,
- "ssl-hsts-include-subdomains": null,
- "ssl-server-max-version": null,
- "gratuitous-arp-interval": null,
- "http-cookie-path": null,
- "ssl-algorithm": null,
- "http-multiplex": null
- },
- "datagram_sent": {
- "comment": "Created by Ansible",
- "name": "Basic StaticNAT Map",
- "color": 17,
- "mappedip": "10.7.220.25",
- "extip": "82.72.192.185",
- "type": "static-nat",
- "extintf": "any"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/vip"
- },
- "post_method": "set"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/vip"
- },
- "datagram_sent": {
- "comment": "Created by Ansible",
- "extip": "82.72.192.185",
- "protocol": "tcp",
- "name": "Basic PNAT Map Port 10443",
- "color": 17,
- "extport": "10443",
- "mappedip": "10.7.220.25",
- "portforward": "enable",
- "type": "static-nat",
- "extintf": "any",
- "mappedport": "443"
- },
- "paramgram_used": {
- "comment": "Created by Ansible",
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp": null,
- "mapped-addr": null,
- "ssl-client-session-state-timeout": null,
- "src-filter": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-client-renegotiation": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": "10.7.220.25",
- "ssl-server-cipher-suites": {
- "priority": null,
- "cipher": null,
- "versions": null
- },
- "protocol": "tcp",
- "ssl-hpkp-backup": null,
- "ssl-dh-bits": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "weblogic-server": null,
- "http-cookie-share": null,
- "color": 17,
- "ssl-mode": null,
- "portforward": "enable",
- "http-cookie-generation": null,
- "ssl-client-fallback": null,
- "extip": "82.72.192.185",
- "extintf": "any",
- "persistence": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "dynamic_mapping": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "protocol": null,
- "ssl-hpkp": null,
- "color": null,
- "src-filter": null,
- "ldb-method": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-client-renegotiation": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp-backup": null,
- "extip": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "http-cookie-share": null,
- "ssl-server-session-state-timeout": null,
- "mapped-addr": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "http-cookie-domain": null,
- "ssl-hpkp-report-uri": null,
- "type": null,
- "extintf": null,
- "gratuitous-arp-interval": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "extport": null,
- "http-multiplex": null,
- "ssl-server-algorithm": null,
- "ssl-certificate": null,
- "ssl-server-min-version": null,
- "ssl-client-fallback": null,
- "mappedport": null,
- "ssl-http-match-host": null,
- "ssl-dh-bits": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "outlook-web-access": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-server-max-version": null,
- "ssl-client-session-state-timeout": null,
- "http-cookie-domain-from-host": null,
- "ssl-algorithm": null,
- "ssl-hsts-include-subdomains": null,
- "max-embryonic-connections": null,
- "persistence": null,
- "http-cookie-path": null,
- "ssl-pfs": null,
- "ssl-min-version": null
- },
- "adom": "ansible",
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-min-version": null,
- "ssl-certificate": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-hsts-include-subdomains": null,
- "http-multiplex": null,
- "ldb-method": null,
- "ssl-server-session-state-timeout": null,
- "ssl-server-min-version": null,
- "http-cookie-domain": null,
- "mappedport": "443",
- "name": "Basic PNAT Map Port 10443",
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "outlook-web-access": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "type": "static-nat",
- "ssl-http-match-host": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-server-max-version": null,
- "ssl-hpkp-report-uri": null,
- "http-cookie-domain-from-host": null,
- "ssl-algorithm": null,
- "gratuitous-arp-interval": null,
- "extport": "10443",
- "max-embryonic-connections": null,
- "mode": "set",
- "http-cookie-path": null,
- "ssl-pfs": null,
- "ssl-server-algorithm": null
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp": null,
- "ssl-hsts-include-subdomains": null,
- "mapped-addr": null,
- "src-filter": null,
- "server-type": null,
- "mode": "delete",
- "ssl-hpkp-include-subdomains": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-cipher-suites": {
- "priority": null,
- "cipher": null,
- "versions": null
- },
- "protocol": null,
- "ssl-hpkp-backup": null,
- "ssl-dh-bits": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "adom": "ansible",
- "http-cookie-share": null,
- "ssl-server-session-state-timeout": null,
- "color": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "max-embryonic-connections": null,
- "ssl-client-fallback": null,
- "ssl-hpkp-report-uri": null,
- "extip": null,
- "extintf": null,
- "persistence": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "http-ip-header-name": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "dynamic_mapping": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "protocol": null,
- "ssl-hpkp": null,
- "color": null,
- "ssl-client-session-state-timeout": null,
- "src-filter": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "extport": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp-backup": null,
- "extip": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "ssl-server-algorithm": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "http-cookie-share": null,
- "mapped-addr": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "max-embryonic-connections": null,
- "http-cookie-domain": null,
- "type": null,
- "extintf": null,
- "gratuitous-arp-interval": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-certificate": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-client-renegotiation": null,
- "http-multiplex": null,
- "ldb-method": null,
- "ssl-server-session-state-timeout": null,
- "ssl-server-min-version": null,
- "ssl-client-fallback": null,
- "mappedport": null,
- "outlook-web-access": null,
- "ssl-dh-bits": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "ssl-http-match-host": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-pfs": null,
- "ssl-hpkp-report-uri": null,
- "http-cookie-domain-from-host": null,
- "ssl-hsts-include-subdomains": null,
- "ssl-server-max-version": null,
- "persistence": null,
- "http-cookie-path": null,
- "ssl-algorithm": null,
- "ssl-min-version": null
- },
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-client-renegotiation": null,
- "http-multiplex": null,
- "ldb-method": null,
- "ssl-certificate": null,
- "ssl-server-min-version": null,
- "http-cookie-domain": null,
- "mappedport": null,
- "outlook-web-access": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "name": "Basic PNAT Map Port 10443",
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "type": null,
- "ssl-http-match-host": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-pfs": null,
- "ssl-server-max-version": null,
- "ssl-client-session-state-timeout": null,
- "http-cookie-domain-from-host": null,
- "extport": null,
- "ssl-server-algorithm": null,
- "gratuitous-arp-interval": null,
- "http-cookie-path": null,
- "ssl-algorithm": null,
- "ssl-min-version": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/vip/Basic PNAT Map Port 10443"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/vip/Basic StaticNAT Map"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "ssl-server-session-state-max": null,
- "mappedip": null,
- "mapped-addr": null,
- "ssl-client-session-state-timeout": null,
- "src-filter": null,
- "ldb-method": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "ssl-hpkp": null,
- "ssl-server-cipher-suites": {
- "priority": null,
- "cipher": null,
- "versions": null
- },
- "protocol": null,
- "ssl-hpkp-backup": null,
- "ssl-dh-bits": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "ssl-client-renegotiation": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "weblogic-server": null,
- "http-cookie-share": null,
- "color": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "ssl-client-fallback": null,
- "extip": null,
- "extintf": null,
- "persistence": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "dynamic_mapping": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "protocol": null,
- "ssl-hpkp": null,
- "color": null,
- "src-filter": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-client-renegotiation": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp-backup": null,
- "extip": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "http-cookie-share": null,
- "ssl-server-session-state-timeout": null,
- "mapped-addr": null,
- "ssl-mode": null,
- "portforward": null,
- "http-multiplex": null,
- "http-cookie-generation": null,
- "http-cookie-domain": null,
- "ssl-hpkp-report-uri": null,
- "type": null,
- "extintf": null,
- "gratuitous-arp-interval": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-hsts-include-subdomains": null,
- "ssl-min-version": null,
- "ldb-method": null,
- "ssl-certificate": null,
- "ssl-server-min-version": null,
- "ssl-client-fallback": null,
- "mappedport": null,
- "ssl-http-match-host": null,
- "ssl-dh-bits": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "outlook-web-access": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-server-max-version": null,
- "ssl-client-session-state-timeout": null,
- "http-cookie-domain-from-host": null,
- "ssl-algorithm": null,
- "extport": null,
- "max-embryonic-connections": null,
- "persistence": null,
- "http-cookie-path": null,
- "ssl-pfs": null,
- "ssl-server-algorithm": null
- },
- "adom": "ansible",
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-certificate": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "extport": null,
- "http-multiplex": null,
- "ssl-server-algorithm": null,
- "ssl-server-session-state-timeout": null,
- "ssl-server-min-version": null,
- "http-cookie-domain": null,
- "mappedport": null,
- "name": "Basic StaticNAT Map",
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-hpkp-primary": null,
- "outlook-web-access": null,
- "ssl-server-session-state-type": null,
- "ssl-client-session-state-type": null,
- "type": null,
- "ssl-http-match-host": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-server-max-version": null,
- "ssl-hpkp-report-uri": null,
- "http-cookie-domain-from-host": null,
- "ssl-algorithm": null,
- "gratuitous-arp-interval": null,
- "ssl-hsts-include-subdomains": null,
- "max-embryonic-connections": null,
- "mode": "delete",
- "http-cookie-path": null,
- "ssl-pfs": null,
- "ssl-min-version": null
- },
- "post_method": "delete"
- },
- {
- "paramgram_used": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "ssl-server-session-state-max": null,
- "mappedip": null,
- "mapped-addr": null,
- "src-filter": null,
- "server-type": null,
- "mode": "delete",
- "ssl-hpkp-include-subdomains": null,
- "extport": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "ssl-hpkp": null,
- "ssl-server-cipher-suites": {
- "priority": null,
- "cipher": null,
- "versions": null
- },
- "protocol": null,
- "ssl-hpkp-backup": null,
- "ssl-dh-bits": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "ssl-server-algorithm": null,
- "ssl-client-renegotiation": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "adom": "ansible",
- "http-cookie-share": null,
- "ssl-server-session-state-timeout": null,
- "color": null,
- "ssl-mode": null,
- "portforward": null,
- "http-multiplex": null,
- "http-cookie-generation": null,
- "max-embryonic-connections": null,
- "ssl-client-fallback": null,
- "ssl-hpkp-report-uri": null,
- "extip": null,
- "extintf": null,
- "persistence": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "http-ip-header-name": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "dynamic_mapping": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "protocol": null,
- "ssl-hpkp": null,
- "ssl-hsts-include-subdomains": null,
- "color": null,
- "src-filter": null,
- "ldb-method": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp-backup": null,
- "extip": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "http-cookie-share": null,
- "mapped-addr": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "max-embryonic-connections": null,
- "http-cookie-domain": null,
- "type": null,
- "extintf": null,
- "gratuitous-arp-interval": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-min-version": null,
- "ssl-certificate": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "ssl-client-renegotiation": null,
- "ssl-hpkp-primary": null,
- "ssl-server-algorithm": null,
- "ssl-server-session-state-timeout": null,
- "ssl-server-min-version": null,
- "ssl-client-fallback": null,
- "mappedport": null,
- "outlook-web-access": null,
- "ssl-dh-bits": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-client-session-state-type": null,
- "ssl-http-match-host": null,
- "ssl-server-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "ssl-client-session-state-timeout": null,
- "ssl-pfs": null,
- "ssl-hpkp-report-uri": null,
- "http-cookie-domain-from-host": null,
- "extport": null,
- "ssl-server-max-version": null,
- "persistence": null,
- "http-cookie-path": null,
- "ssl-algorithm": null,
- "http-multiplex": null
- },
- "ssl-hsts": null,
- "arp-reply": null,
- "extaddr": null,
- "ssl-hpkp-primary": null,
- "ldb-method": null,
- "ssl-certificate": null,
- "ssl-server-min-version": null,
- "http-cookie-domain": null,
- "mappedport": null,
- "outlook-web-access": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-client-session-state-type": null,
- "name": "Basic DNS Translation",
- "ssl-server-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "seq": null,
- "weight": null,
- "ip": null,
- "holddown-interval": null,
- "healthcheck": null,
- "max-connections": null,
- "port": null,
- "monitor": null
- },
- "type": null,
- "ssl-http-match-host": null,
- "ssl-pfs": null,
- "ssl-client-session-state-timeout": null,
- "http-cookie-domain-from-host": null,
- "ssl-hsts-include-subdomains": null,
- "ssl-server-max-version": null,
- "gratuitous-arp-interval": null,
- "http-cookie-path": null,
- "ssl-algorithm": null,
- "ssl-min-version": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/ansible/obj/firewall/vip/Basic DNS Translation"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/firewall/vip/Basic FQDN Translation"
- },
- "datagram_sent": {},
- "paramgram_used": {
- "ldb-method": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "ssl-server-session-state-max": null,
- "mappedip": null,
- "ssl-hsts": null,
- "mapped-addr": null,
- "src-filter": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-client-renegotiation": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "extip": null,
- "ssl-hpkp": null,
- "ssl-server-cipher-suites": {
- "priority": null,
- "cipher": null,
- "versions": null
- },
- "protocol": null,
- "ssl-hpkp-backup": null,
- "ssl-dh-bits": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "extaddr": null,
- "ssl-hpkp-primary": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "weblogic-server": null,
- "http-cookie-share": null,
- "name": "Basic FQDN Translation",
- "color": null,
- "ssl-mode": null,
- "portforward": null,
- "http-cookie-generation": null,
- "ssl-client-fallback": null,
- "type": null,
- "http-ip-header": null,
- "persistence": null,
- "websphere-server": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "dynamic_mapping": {
- "comment": null,
- "ssl-send-empty-frags": null,
- "srcintf-filter": null,
- "ssl-max-version": null,
- "protocol": null,
- "ssl-hpkp": null,
- "color": null,
- "src-filter": null,
- "server-type": null,
- "ssl-hpkp-include-subdomains": null,
- "ssl-client-renegotiation": null,
- "ssl-http-location-conversion": null,
- "https-cookie-secure": null,
- "mappedip": null,
- "websphere-server": null,
- "ssl-server-session-state-max": null,
- "ssl-hpkp-backup": null,
- "extip": null,
- "dns-mapping-ttl": null,
- "ssl-hsts-age": null,
- "ssl-server-algorithm": null,
- "extaddr": null,
- "monitor": null,
- "service": null,
- "ssl-hpkp-age": null,
- "http-cookie-age": null,
- "http-cookie-share": null,
- "ssl-server-session-state-timeout": null,
- "mapped-addr": null,
- "ssl-mode": null,
- "portforward": null,
- "ssl-hpkp-primary": null,
- "http-cookie-generation": null,
- "http-cookie-domain": null,
- "ssl-hpkp-report-uri": null,
- "type": null,
- "extintf": null,
- "gratuitous-arp-interval": null,
- "ssl-algorithm": null,
- "nat-source-vip": null,
- "portmapping-type": null,
- "weblogic-server": null,
- "ssl-client-session-state-max": null,
- "http-ip-header": null,
- "http-ip-header-name": null,
- "ssl-hsts": null,
- "arp-reply": null,
- "extport": null,
- "http-multiplex": null,
- "ldb-method": null,
- "ssl-certificate": null,
- "ssl-server-min-version": null,
- "ssl-client-fallback": null,
- "mappedport": null,
- "ssl-http-match-host": null,
- "ssl-dh-bits": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-client-session-state-type": null,
- "outlook-web-access": null,
- "ssl-server-session-state-type": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "weight": null,
- "ip": null,
- "max-connections": null,
- "port": null,
- "seq": null,
- "holddown-interval": null,
- "monitor": null,
- "healthcheck": null
- },
- "ssl-server-max-version": null,
- "ssl-client-session-state-timeout": null,
- "http-cookie-domain-from-host": null,
- "ssl-hsts-include-subdomains": null,
- "max-embryonic-connections": null,
- "persistence": null,
- "http-cookie-path": null,
- "ssl-pfs": null,
- "ssl-min-version": null
- },
- "adom": "ansible",
- "ssl-client-session-state-max": null,
- "extintf": null,
- "ssl-server-max-version": null,
- "http-ip-header-name": null,
- "ssl-certificate": null,
- "ssl-server-session-state-type": null,
- "arp-reply": null,
- "ssl-hsts-include-subdomains": null,
- "ssl-min-version": null,
- "ssl-server-algorithm": null,
- "ssl-server-session-state-timeout": null,
- "ssl-server-min-version": null,
- "http-cookie-domain": null,
- "mappedport": null,
- "outlook-web-access": null,
- "ssl-cipher-suites": {
- "cipher": null,
- "versions": null
- },
- "ssl-client-session-state-type": null,
- "ssl-http-match-host": null,
- "realservers": {
- "status": null,
- "http-host": null,
- "client-ip": null,
- "weight": null,
- "ip": null,
- "max-connections": null,
- "port": null,
- "seq": null,
- "holddown-interval": null,
- "monitor": null,
- "healthcheck": null
- },
- "ssl-client-session-state-timeout": null,
- "comment": null,
- "ssl-hpkp-report-uri": null,
- "http-cookie-domain-from-host": null,
- "ssl-algorithm": null,
- "gratuitous-arp-interval": null,
- "extport": null,
- "max-embryonic-connections": null,
- "mode": "delete",
- "http-cookie-path": null,
- "ssl-pfs": null,
- "http-multiplex": null
- },
- "post_method": "delete"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_ipv4.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_ipv4.json
deleted file mode 100644
index 3de787e6b3..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_ipv4.json
+++ /dev/null
@@ -1,620 +0,0 @@
-{
- "fmgr_firewall_policy_modify": [
- {
- "url": "/pm/config/adom/ansible/pkg/default/firewall/policy",
- "paramgram_used": {
- "wanopt-passive-opt": null,
- "package_name": "default",
- "wanopt-detection": null,
- "scan-botnet-connections": null,
- "profile-group": null,
- "wanopt-peer": null,
- "dscp-match": null,
- "replacemsg-override-group": null,
- "internet-service-negate": null,
- "np-acceleration": null,
- "learning-mode": null,
- "session-ttl": null,
- "ntlm-guest": null,
- "ips-sensor": null,
- "diffservcode-rev": null,
- "match-vip": null,
- "natip": null,
- "dlp-sensor": null,
- "traffic-shaper": null,
- "groups": null,
- "schedule-timeout": null,
- "name": "Basic_IPv4_Policy",
- "tcp-session-without-syn": null,
- "ntlm": null,
- "permit-stun-host": null,
- "diffservcode-forward": null,
- "internet-service-src-custom": null,
- "mode": "set",
- "disclaimer": null,
- "rtp-nat": null,
- "auth-cert": null,
- "timeout-send-rst": null,
- "auth-redirect-addr": null,
- "ssl-mirror-intf": null,
- "identity-based-route": null,
- "natoutbound": null,
- "wanopt-profile": null,
- "per-ip-shaper": null,
- "profile-protocol-options": null,
- "diffserv-forward": null,
- "poolname": null,
- "comments": "Created by Ansible",
- "label": null,
- "global-label": null,
- "firewall-session-dirty": null,
- "wanopt": null,
- "schedule": "always",
- "internet-service-id": null,
- "auth-path": null,
- "vlan-cos-fwd": null,
- "custom-log-fields": null,
- "dstintf": "any",
- "srcintf": "any",
- "block-notification": null,
- "internet-service-src-id": null,
- "redirect-url": null,
- "waf-profile": null,
- "ntlm-enabled-browsers": null,
- "dscp-negate": null,
- "action": "accept",
- "fsso-agent-for-ntlm": null,
- "logtraffic": "utm",
- "vlan-filter": null,
- "policyid": null,
- "logtraffic-start": null,
- "webcache-https": null,
- "webfilter-profile": null,
- "internet-service-src": null,
- "webcache": null,
- "utm-status": null,
- "vpn_src_node": {
- "subnet": null,
- "host": null,
- "seq": null
- },
- "ippool": null,
- "service": "ALL",
- "wccp": null,
- "auto-asic-offload": null,
- "dscp-value": null,
- "url-category": null,
- "capture-packet": null,
- "adom": "ansible",
- "inbound": null,
- "internet-service": null,
- "profile-type": null,
- "ssl-mirror": null,
- "srcaddr-negate": null,
- "gtp-profile": null,
- "mms-profile": null,
- "send-deny-packet": null,
- "devices": null,
- "permit-any-host": null,
- "av-profile": null,
- "internet-service-src-negate": null,
- "service-negate": null,
- "rsso": null,
- "app-group": null,
- "tcp-mss-sender": null,
- "natinbound": null,
- "fixedport": null,
- "ssl-ssh-profile": null,
- "outbound": null,
- "spamfilter-profile": null,
- "application-list": null,
- "application": null,
- "dnsfilter-profile": null,
- "nat": null,
- "fsso": null,
- "vlan-cos-rev": null,
- "status": null,
- "dsri": null,
- "users": null,
- "voip-profile": null,
- "dstaddr-negate": null,
- "traffic-shaper-reverse": null,
- "internet-service-custom": null,
- "diffserv-reverse": null,
- "srcaddr": "all",
- "ssh-filter-profile": null,
- "delay-tcp-npu-session": null,
- "icap-profile": null,
- "captive-portal-exempt": null,
- "vpn_dst_node": {
- "subnet": null,
- "host": null,
- "seq": null
- },
- "app-category": null,
- "rtp-addr": null,
- "wsso": null,
- "tcp-mss-receiver": null,
- "dstaddr": "all",
- "radius-mac-auth-bypass": null,
- "vpntunnel": null
- },
- "datagram_sent": {
- "name": "Basic_IPv4_Policy",
- "service": "ALL",
- "schedule": "always",
- "comments": "Created by Ansible",
- "srcaddr": "all",
- "dstintf": "any",
- "srcintf": "any",
- "action": "accept",
- "dstaddr": "all",
- "logtraffic": "utm"
- },
- "raw_response": {
- "policyid": 36
- },
- "post_method": "set"
- },
- {
- "url": "/pm/config/adom/ansible/pkg/default/firewall/policy",
- "raw_response": {
- "policyid": 37
- },
- "datagram_sent": {
- "name": "Basic_IPv4_Policy_2",
- "service": [
- "HTTP",
- "HTTPS"
- ],
- "schedule": "always",
- "comments": "Created by Ansible",
- "srcaddr": "all",
- "dstintf": "any",
- "srcintf": "any",
- "nat": "enable",
- "action": "accept",
- "dstaddr": "google-play",
- "logtraffic": "utm"
- },
- "paramgram_used": {
- "package_name": "default",
- "wanopt-detection": null,
- "scan-botnet-connections": null,
- "profile-group": null,
- "dlp-sensor": null,
- "dscp-match": null,
- "replacemsg-override-group": null,
- "internet-service-negate": null,
- "np-acceleration": null,
- "learning-mode": null,
- "session-ttl": null,
- "ntlm-guest": null,
- "ips-sensor": null,
- "diffservcode-rev": null,
- "match-vip": null,
- "natip": null,
- "wanopt-peer": null,
- "traffic-shaper": null,
- "groups": null,
- "schedule-timeout": null,
- "name": "Basic_IPv4_Policy_2",
- "tcp-session-without-syn": null,
- "rtp-nat": null,
- "permit-stun-host": null,
- "natoutbound": null,
- "internet-service-src-custom": null,
- "mode": "set",
- "logtraffic": "utm",
- "ntlm": null,
- "auth-cert": null,
- "timeout-send-rst": null,
- "auth-redirect-addr": null,
- "ssl-mirror-intf": null,
- "identity-based-route": null,
- "diffservcode-forward": null,
- "wanopt-profile": null,
- "per-ip-shaper": null,
- "users": null,
- "diffserv-forward": null,
- "poolname": null,
- "comments": "Created by Ansible",
- "label": null,
- "global-label": null,
- "firewall-session-dirty": null,
- "wanopt": null,
- "schedule": "always",
- "internet-service-id": null,
- "auth-path": null,
- "vlan-cos-fwd": null,
- "custom-log-fields": null,
- "dstintf": "any",
- "srcintf": "any",
- "block-notification": null,
- "internet-service-src-id": null,
- "redirect-url": null,
- "waf-profile": null,
- "ntlm-enabled-browsers": null,
- "dscp-negate": null,
- "action": "accept",
- "fsso-agent-for-ntlm": null,
- "disclaimer": null,
- "vlan-filter": null,
- "dstaddr-negate": null,
- "logtraffic-start": null,
- "webcache-https": null,
- "webfilter-profile": null,
- "internet-service-src": null,
- "webcache": null,
- "utm-status": null,
- "vpn_src_node": {
- "subnet": null,
- "host": null,
- "seq": null
- },
- "ippool": null,
- "service": "HTTP, HTTPS",
- "wccp": null,
- "auto-asic-offload": null,
- "dscp-value": null,
- "url-category": null,
- "capture-packet": null,
- "adom": "ansible",
- "inbound": null,
- "internet-service": null,
- "profile-type": null,
- "ssl-mirror": null,
- "srcaddr-negate": null,
- "gtp-profile": null,
- "mms-profile": null,
- "send-deny-packet": null,
- "devices": null,
- "permit-any-host": null,
- "av-profile": null,
- "internet-service-src-negate": null,
- "service-negate": null,
- "rsso": null,
- "application-list": null,
- "app-group": null,
- "tcp-mss-sender": null,
- "natinbound": null,
- "fixedport": null,
- "ssl-ssh-profile": null,
- "outbound": null,
- "spamfilter-profile": null,
- "wanopt-passive-opt": null,
- "application": null,
- "dnsfilter-profile": null,
- "nat": "enable",
- "fsso": null,
- "vlan-cos-rev": null,
- "status": null,
- "dsri": null,
- "profile-protocol-options": null,
- "voip-profile": null,
- "policyid": null,
- "traffic-shaper-reverse": null,
- "internet-service-custom": null,
- "diffserv-reverse": null,
- "srcaddr": "all",
- "dstaddr": "google-play",
- "delay-tcp-npu-session": null,
- "icap-profile": null,
- "captive-portal-exempt": null,
- "vpn_dst_node": {
- "subnet": null,
- "host": null,
- "seq": null
- },
- "app-category": null,
- "rtp-addr": null,
- "wsso": null,
- "tcp-mss-receiver": null,
- "ssh-filter-profile": null,
- "radius-mac-auth-bypass": null,
- "vpntunnel": null
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "wanopt-passive-opt": null,
- "package_name": "default",
- "wanopt-detection": null,
- "scan-botnet-connections": null,
- "profile-group": null,
- "wanopt-peer": null,
- "dscp-match": null,
- "replacemsg-override-group": null,
- "internet-service-negate": null,
- "np-acceleration": null,
- "learning-mode": null,
- "session-ttl": null,
- "ntlm-guest": null,
- "ips-sensor": null,
- "diffservcode-rev": null,
- "match-vip": null,
- "natip": null,
- "dlp-sensor": null,
- "traffic-shaper": null,
- "groups": null,
- "schedule-timeout": null,
- "name": "Basic_IPv4_Policy",
- "tcp-session-without-syn": null,
- "ntlm": null,
- "permit-stun-host": null,
- "diffservcode-forward": null,
- "internet-service-src-custom": null,
- "mode": "delete",
- "disclaimer": null,
- "rtp-nat": null,
- "auth-cert": null,
- "timeout-send-rst": null,
- "auth-redirect-addr": null,
- "ssl-mirror-intf": null,
- "identity-based-route": null,
- "natoutbound": null,
- "wanopt-profile": null,
- "per-ip-shaper": null,
- "profile-protocol-options": null,
- "diffserv-forward": null,
- "poolname": null,
- "comments": null,
- "label": null,
- "global-label": null,
- "firewall-session-dirty": null,
- "wanopt": null,
- "schedule": null,
- "internet-service-id": null,
- "auth-path": null,
- "vlan-cos-fwd": null,
- "custom-log-fields": null,
- "dstintf": null,
- "srcintf": null,
- "block-notification": null,
- "internet-service-src-id": null,
- "redirect-url": null,
- "waf-profile": null,
- "ntlm-enabled-browsers": null,
- "dscp-negate": null,
- "action": null,
- "fsso-agent-for-ntlm": null,
- "logtraffic": null,
- "vlan-filter": null,
- "policyid": 36,
- "logtraffic-start": null,
- "webcache-https": null,
- "webfilter-profile": null,
- "internet-service-src": null,
- "webcache": null,
- "utm-status": null,
- "vpn_src_node": {
- "subnet": null,
- "host": null,
- "seq": null
- },
- "ippool": null,
- "service": null,
- "wccp": null,
- "auto-asic-offload": null,
- "dscp-value": null,
- "url-category": null,
- "capture-packet": null,
- "adom": "ansible",
- "inbound": null,
- "internet-service": null,
- "profile-type": null,
- "ssl-mirror": null,
- "srcaddr-negate": null,
- "gtp-profile": null,
- "mms-profile": null,
- "send-deny-packet": null,
- "devices": null,
- "permit-any-host": null,
- "av-profile": null,
- "internet-service-src-negate": null,
- "service-negate": null,
- "rsso": null,
- "app-group": null,
- "tcp-mss-sender": null,
- "natinbound": null,
- "fixedport": null,
- "ssl-ssh-profile": null,
- "outbound": null,
- "spamfilter-profile": null,
- "application-list": null,
- "application": null,
- "dnsfilter-profile": null,
- "nat": null,
- "fsso": null,
- "vlan-cos-rev": null,
- "status": null,
- "dsri": null,
- "users": null,
- "voip-profile": null,
- "dstaddr-negate": null,
- "traffic-shaper-reverse": null,
- "internet-service-custom": null,
- "diffserv-reverse": null,
- "srcaddr": null,
- "ssh-filter-profile": null,
- "delay-tcp-npu-session": null,
- "icap-profile": null,
- "captive-portal-exempt": null,
- "vpn_dst_node": {
- "subnet": null,
- "host": null,
- "seq": null
- },
- "app-category": null,
- "rtp-addr": null,
- "wsso": null,
- "tcp-mss-receiver": null,
- "dstaddr": null,
- "radius-mac-auth-bypass": null,
- "vpntunnel": null
- },
- "datagram_sent": {
- "policyid": 36
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/pkg/default/firewall/policy/36"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/pkg/default/firewall/policy/37"
- },
- "datagram_sent": {
- "policyid": 37
- },
- "paramgram_used": {
- "package_name": "default",
- "wanopt-detection": null,
- "scan-botnet-connections": null,
- "profile-group": null,
- "dlp-sensor": null,
- "dscp-match": null,
- "replacemsg-override-group": null,
- "internet-service-negate": null,
- "np-acceleration": null,
- "learning-mode": null,
- "session-ttl": null,
- "ntlm-guest": null,
- "ips-sensor": null,
- "diffservcode-rev": null,
- "match-vip": null,
- "natip": null,
- "wanopt-peer": null,
- "traffic-shaper": null,
- "groups": null,
- "schedule-timeout": null,
- "name": "Basic_IPv4_Policy_2",
- "tcp-session-without-syn": null,
- "rtp-nat": null,
- "permit-stun-host": null,
- "natoutbound": null,
- "internet-service-src-custom": null,
- "mode": "delete",
- "logtraffic": null,
- "ntlm": null,
- "auth-cert": null,
- "timeout-send-rst": null,
- "auth-redirect-addr": null,
- "ssl-mirror-intf": null,
- "identity-based-route": null,
- "diffservcode-forward": null,
- "wanopt-profile": null,
- "per-ip-shaper": null,
- "users": null,
- "diffserv-forward": null,
- "poolname": null,
- "comments": null,
- "label": null,
- "global-label": null,
- "firewall-session-dirty": null,
- "wanopt": null,
- "schedule": null,
- "internet-service-id": null,
- "auth-path": null,
- "vlan-cos-fwd": null,
- "custom-log-fields": null,
- "dstintf": null,
- "srcintf": null,
- "block-notification": null,
- "internet-service-src-id": null,
- "redirect-url": null,
- "waf-profile": null,
- "ntlm-enabled-browsers": null,
- "dscp-negate": null,
- "action": null,
- "fsso-agent-for-ntlm": null,
- "disclaimer": null,
- "vlan-filter": null,
- "dstaddr-negate": null,
- "logtraffic-start": null,
- "webcache-https": null,
- "webfilter-profile": null,
- "internet-service-src": null,
- "webcache": null,
- "utm-status": null,
- "vpn_src_node": {
- "subnet": null,
- "host": null,
- "seq": null
- },
- "ippool": null,
- "service": null,
- "wccp": null,
- "auto-asic-offload": null,
- "dscp-value": null,
- "url-category": null,
- "capture-packet": null,
- "adom": "ansible",
- "internet-service": null,
- "inbound": null,
- "profile-type": null,
- "ssl-mirror": null,
- "srcaddr-negate": null,
- "gtp-profile": null,
- "mms-profile": null,
- "send-deny-packet": null,
- "devices": null,
- "permit-any-host": null,
- "av-profile": null,
- "internet-service-src-negate": null,
- "service-negate": null,
- "rsso": null,
- "application-list": null,
- "app-group": null,
- "tcp-mss-sender": null,
- "natinbound": null,
- "fixedport": null,
- "ssl-ssh-profile": null,
- "outbound": null,
- "spamfilter-profile": null,
- "wanopt-passive-opt": null,
- "application": null,
- "dnsfilter-profile": null,
- "nat": null,
- "fsso": null,
- "vlan-cos-rev": null,
- "status": null,
- "dsri": null,
- "profile-protocol-options": null,
- "voip-profile": null,
- "policyid": 37,
- "traffic-shaper-reverse": null,
- "internet-service-custom": null,
- "diffserv-reverse": null,
- "srcaddr": null,
- "dstaddr": null,
- "delay-tcp-npu-session": null,
- "icap-profile": null,
- "captive-portal-exempt": null,
- "vpn_dst_node": {
- "subnet": null,
- "host": null,
- "seq": null
- },
- "app-category": null,
- "rtp-addr": null,
- "wsso": null,
- "tcp-mss-receiver": null,
- "ssh-filter-profile": null,
- "radius-mac-auth-bypass": null,
- "vpntunnel": null
- },
- "post_method": "delete"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_package.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_package.json
deleted file mode 100644
index 8d1267fd81..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_fwpol_package.json
+++ /dev/null
@@ -1,279 +0,0 @@
-{
- "fmgr_fwpol_package_folder": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/pkg/adom/ansible"
- },
- "datagram_sent": {
- "type": "folder",
- "name": "ansibleTestFolder1"
- },
- "paramgram_used": {
- "ssl-ssh-profile": null,
- "name": "ansibleTestFolder1",
- "adom": "ansible",
- "fwpolicy6-implicit-log": "disable",
- "object_type": "folder",
- "fwpolicy-implicit-log": "disable",
- "package-folder": null,
- "inspection-mode": "flow",
- "scope_members": null,
- "mode": "set",
- "parent_folder": null,
- "scope_members_vdom": "root",
- "central-nat": "disable",
- "ngfw-mode": "profile-based"
- },
- "post_method": "set"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/pkg/adom/ansible"
- },
- "datagram_sent": {
- "subobj": [
- {
- "type": "folder",
- "name": "ansibleTestFolder2"
- }
- ],
- "type": "folder",
- "name": "ansibleTestFolder1"
- },
- "paramgram_used": {
- "ssl-ssh-profile": null,
- "name": "ansibleTestFolder2",
- "adom": "ansible",
- "fwpolicy6-implicit-log": "disable",
- "object_type": "folder",
- "fwpolicy-implicit-log": "disable",
- "package-folder": null,
- "inspection-mode": "flow",
- "scope_members": null,
- "mode": "set",
- "parent_folder": "ansibleTestFolder1",
- "scope_members_vdom": "root",
- "central-nat": "disable",
- "ngfw-mode": "profile-based"
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "ssl-ssh-profile": null,
- "scope_members_vdom": "root",
- "name": "ansibleTestFolder2",
- "adom": "ansible",
- "fwpolicy6-implicit-log": "disable",
- "object_type": "folder",
- "fwpolicy-implicit-log": "disable",
- "central-nat": "disable",
- "inspection-mode": "flow",
- "scope_members": null,
- "mode": "delete",
- "parent_folder": "ansibleTestFolder1",
- "package-folder": null,
- "ngfw-mode": "profile-based"
- },
- "datagram_sent": {
- "name": "ansibleTestFolder2"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/pkg/adom/ansible/ansibleTestFolder1/ansibleTestFolder2"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/pkg/adom/ansible/ansibleTestFolder1"
- },
- "datagram_sent": {
- "name": "ansibleTestFolder1"
- },
- "paramgram_used": {
- "adom": "ansible",
- "fwpolicy6-implicit-log": "disable",
- "object_type": "folder",
- "inspection-mode": "flow",
- "parent_folder": null,
- "ngfw-mode": "profile-based",
- "ssl-ssh-profile": null,
- "name": "ansibleTestFolder1",
- "central-nat": "disable",
- "fwpolicy-implicit-log": "disable",
- "package-folder": null,
- "scope_members": null,
- "mode": "delete",
- "scope_members_vdom": "root"
- },
- "post_method": "delete"
- }
- ],
- "fmgr_fwpol_package": [
- {
- "paramgram_used": {
- "ssl-ssh-profile": null,
- "name": "ansibleTestPackage1",
- "adom": "ansible",
- "fwpolicy6-implicit-log": "disable",
- "object_type": "pkg",
- "fwpolicy-implicit-log": "disable",
- "package-folder": null,
- "inspection-mode": "flow",
- "scope_members": "FGT2, FGT3",
- "mode": "set",
- "parent_folder": null,
- "scope_members_vdom": "root",
- "central-nat": "disable",
- "ngfw-mode": "profile-based"
- },
- "datagram_sent": {
- "type": "pkg",
- "name": "ansibleTestPackage1",
- "scope member": [
- {
- "name": "FGT2",
- "vdom": "root"
- },
- {
- "name": "FGT3",
- "vdom": "root"
- }
- ],
- "package settings": {
- "inspection-mode": "flow",
- "central-nat": "disable",
- "fwpolicy-implicit-log": "disable",
- "fwpolicy6-implicit-log": "disable",
- "ngfw-mode": "profile-based"
- }
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/pkg/adom/ansible"
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "ssl-ssh-profile": null,
- "name": "ansibleTestPackage2",
- "adom": "ansible",
- "fwpolicy6-implicit-log": "disable",
- "object_type": "pkg",
- "fwpolicy-implicit-log": "disable",
- "package-folder": null,
- "inspection-mode": "flow",
- "scope_members": null,
- "mode": "set",
- "parent_folder": "ansibleTestFolder1",
- "scope_members_vdom": "root",
- "central-nat": "disable",
- "ngfw-mode": "profile-based"
- },
- "datagram_sent": {
- "subobj": [
- {
- "type": "pkg",
- "name": "ansibleTestPackage2",
- "scope member": [],
- "package settings": {
- "inspection-mode": "flow",
- "central-nat": "disable",
- "fwpolicy-implicit-log": "disable",
- "fwpolicy6-implicit-log": "disable",
- "ngfw-mode": "profile-based"
- }
- }
- ],
- "type": "folder",
- "name": "ansibleTestFolder1"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/pkg/adom/ansible"
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "ssl-ssh-profile": null,
- "name": "ansibleTestPackage1",
- "adom": "ansible",
- "fwpolicy6-implicit-log": "disable",
- "object_type": "pkg",
- "fwpolicy-implicit-log": "disable",
- "package-folder": null,
- "inspection-mode": "flow",
- "scope_members": null,
- "mode": "delete",
- "parent_folder": null,
- "scope_members_vdom": "root",
- "central-nat": "disable",
- "ngfw-mode": "profile-based"
- },
- "datagram_sent": {
- "name": "ansibleTestPackage1"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/pkg/adom/ansible/ansibleTestPackage1"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/pkg/adom/ansible/ansibleTestFolder1/ansibleTestPackage2"
- },
- "datagram_sent": {
- "name": "ansibleTestPackage2"
- },
- "paramgram_used": {
- "ssl-ssh-profile": null,
- "name": "ansibleTestPackage2",
- "adom": "ansible",
- "fwpolicy6-implicit-log": "disable",
- "object_type": "pkg",
- "fwpolicy-implicit-log": "disable",
- "package-folder": null,
- "inspection-mode": "flow",
- "scope_members": null,
- "mode": "delete",
- "parent_folder": "ansibleTestFolder1",
- "scope_members_vdom": "root",
- "central-nat": "disable",
- "ngfw-mode": "profile-based"
- },
- "post_method": "delete"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_ha.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_ha.json
deleted file mode 100644
index 27c8483a5d..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_ha.json
+++ /dev/null
@@ -1,241 +0,0 @@
-{
- "fmgr_set_ha_peer": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/cli/global/system/ha/peer/"
- },
- "datagram_sent": {
- "status": "enable",
- "ip": "10.7.220.36",
- "serial-number": "FMG-VMTM18001882",
- "ip6": null,
- "id": 1
- },
- "paramgram_used": {
- "fmgr_ha_peer_sn": "FMG-VMTM18001882",
- "next_peer_id": 2,
- "fmgr_ha_hb_threshold": 3,
- "fmgr_ha_cluster_pw": null,
- "fmgr_ha_peer_ipv6": null,
- "fmgr_ha_peer_status": "enable",
- "fmgr_ha_file_quota": 4096,
- "fmgr_ha_cluster_id": 1,
- "peer_id": 1,
- "fmgr_ha_peer_ipv4": "10.7.220.36",
- "fmgr_ha_hb_interval": 5,
- "fmgr_ha_mode": null
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "fmgr_ha_peer_sn": "FMG-VMTM18001881",
- "next_peer_id": 1,
- "fmgr_ha_hb_threshold": 3,
- "fmgr_ha_cluster_pw": "fortinet",
- "fmgr_ha_hb_interval": 5,
- "fmgr_ha_cluster_id": 2,
- "fmgr_ha_file_quota": 4096,
- "fmgr_ha_peer_status": "enable",
- "peer_id": 1,
- "fmgr_ha_peer_ipv4": "10.7.220.35",
- "fmgr_ha_peer_ipv6": null,
- "fmgr_ha_mode": "slave"
- },
- "datagram_sent": {
- "status": "enable",
- "ip": "10.7.220.35",
- "serial-number": "FMG-VMTM18001881",
- "ip6": null,
- "id": 1
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/cli/global/system/ha/peer/"
- },
- "post_method": "set"
- }
- ],
- "fmgr_get_ha_peer_list": [
- {
- "url": "/cli/global/system/ha/peer/",
- "paramgram_used": {
- "fmgr_ha_peer_sn": "FMG-VMTM18001882",
- "fmgr_ha_hb_threshold": 3,
- "fmgr_ha_cluster_pw": null,
- "fmgr_ha_peer_ipv6": null,
- "fmgr_ha_peer_status": "enable",
- "fmgr_ha_file_quota": 4096,
- "fmgr_ha_cluster_id": 1,
- "fmgr_ha_peer_ipv4": "10.7.220.36",
- "fmgr_ha_hb_interval": 5,
- "fmgr_ha_mode": null
- },
- "datagram_sent": {},
- "raw_response": [
- {
- "status": "enable",
- "ip": "10.7.220.140",
- "serial-number": "FMG-VM0A17005535",
- "ip6": "::",
- "id": 1
- }
- ],
- "post_method": "get"
- },
- {
- "url": "/cli/global/system/ha/peer/",
- "raw_response": [
- {
- "status": "enable",
- "ip": "10.7.220.35",
- "serial-number": "FMG-VMTM18001881",
- "ip6": "::",
- "id": 1
- }
- ],
- "datagram_sent": {},
- "paramgram_used": {
- "fmgr_ha_peer_sn": "FMG-VMTM18001881",
- "fmgr_ha_hb_threshold": 3,
- "fmgr_ha_cluster_pw": "fortinet",
- "fmgr_ha_hb_interval": 5,
- "fmgr_ha_cluster_id": 2,
- "fmgr_ha_file_quota": 4096,
- "fmgr_ha_peer_status": "enable",
- "fmgr_ha_peer_ipv4": "10.7.220.35",
- "fmgr_ha_peer_ipv6": null,
- "fmgr_ha_mode": "slave"
- },
- "post_method": "get"
- }
- ],
- "fmgr_set_ha_mode": [
- {
- "paramgram_used": {
- "fmgr_ha_peer_sn": null,
- "fmgr_ha_hb_threshold": 10,
- "fmgr_ha_cluster_pw": "fortinet",
- "fmgr_ha_peer_ipv6": null,
- "fmgr_ha_peer_status": null,
- "fmgr_ha_file_quota": 2048,
- "fmgr_ha_cluster_id": 2,
- "fmgr_ha_peer_ipv4": null,
- "fmgr_ha_hb_interval": 15,
- "fmgr_ha_mode": "master"
- },
- "datagram_sent": {
- "file-quota": 2048,
- "clusterid": 2,
- "hb-lost-threshold": 10,
- "mode": "master",
- "hb-interval": 15,
- "password": "fortinet"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/cli/global/system/ha"
- },
- "post_method": "set"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/cli/global/system/ha"
- },
- "datagram_sent": {
- "file-quota": 4096,
- "clusterid": 2,
- "hb-lost-threshold": 3,
- "mode": "slave",
- "hb-interval": 5,
- "password": "fortinet"
- },
- "paramgram_used": {
- "fmgr_ha_peer_sn": null,
- "fmgr_ha_hb_threshold": 3,
- "fmgr_ha_cluster_pw": "fortinet",
- "fmgr_ha_hb_interval": 5,
- "fmgr_ha_cluster_id": 2,
- "fmgr_ha_file_quota": 4096,
- "fmgr_ha_peer_status": null,
- "fmgr_ha_peer_ipv4": null,
- "fmgr_ha_peer_ipv6": null,
- "fmgr_ha_mode": "slave"
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "fmgr_ha_peer_sn": "FMG-VMTM18001881",
- "fmgr_ha_hb_threshold": 3,
- "fmgr_ha_cluster_pw": "fortinet",
- "fmgr_ha_peer_ipv6": null,
- "fmgr_ha_peer_status": "enable",
- "fmgr_ha_file_quota": 4096,
- "fmgr_ha_cluster_id": 2,
- "fmgr_ha_peer_ipv4": "10.7.220.35",
- "fmgr_ha_hb_interval": 5,
- "fmgr_ha_mode": "slave"
- },
- "datagram_sent": {
- "file-quota": 4096,
- "clusterid": 2,
- "hb-lost-threshold": 3,
- "mode": "slave",
- "hb-interval": 5,
- "password": "fortinet"
- },
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/cli/global/system/ha"
- },
- "post_method": "set"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/cli/global/system/ha"
- },
- "datagram_sent": {
- "hb-lost-threshold": 3,
- "hb-interval": 5,
- "clusterid": 1,
- "mode": "standalone",
- "file-quota": 4096
- },
- "paramgram_used": {
- "fmgr_ha_file_quota": 4096,
- "fmgr_ha_cluster_pw": null,
- "fmgr_ha_peer_sn": null,
- "fmgr_ha_hb_interval": 5,
- "fmgr_ha_cluster_id": 1,
- "fmgr_ha_mode": "standalone",
- "fmgr_ha_peer_status": null,
- "fmgr_ha_hb_threshold": 3,
- "fmgr_ha_peer_ipv4": null,
- "fmgr_ha_peer_ipv6": null
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_query.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_query.json
deleted file mode 100644
index 6013b6d832..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_query.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
- "fmgr_get_task_status": [
- {
- "url": "/task/task/247",
- "paramgram_used": {
- "custom_endpoint": null,
- "object": "task",
- "task_id": "247",
- "adom": "ansible",
- "device_ip": null,
- "custom_dict": null,
- "device_unique_name": null,
- "nodes": null,
- "device_serial": null
- },
- "datagram_sent": {
- "adom": "ansible"
- },
- "raw_response": {
- "src": "device manager",
- "num_warn": 0,
- "num_lines": 1,
- "adom": 133,
- "tot_percent": 100,
- "pid": 0,
- "end_tm": 1550716014,
- "num_err": 0,
- "percent": 100,
- "state": "done",
- "start_tm": 1550716010,
- "flags": 0,
- "user": "ansible",
- "title": "upddevtitle",
- "line": [
- {
- "name": "FGT3",
- "err": 0,
- "ip": "10.7.220.153",
- "oid": 0,
- "percent": 100,
- "detail": "updatesuccess",
- "state": "done",
- "vdom": null
- }
- ],
- "num_done": 1,
- "id": 247,
- "history": [
- {
- "percent": 100,
- "detail": "2019-02-20 18:26:54:updatesuccess",
- "vdom": null,
- "name": "FGT3"
- }
- ]
- },
- "post_method": "get"
- }
- ],
- "fmgr_get_custom": [
- {
- "url": "/dvmdb/adom/ansible/script",
- "raw_response": [
- {
- "filter_hostname": null,
- "filter_device": 0,
- "filter_serial": null,
- "name": "TestScript",
- "type": "cli",
- "oid": 365,
- "filter_osver": "unknown",
- "content": "get system status",
- "modification_time": "2019-02-13 23:45:29",
- "filter_build": -1,
- "filter_platform": "",
- "desc": "Create by Ansible",
- "script_schedule": null,
- "filter_ostype": "unknown",
- "target": "remote_device"
- }
- ],
- "datagram_sent": {
- "type": "cli"
- },
- "paramgram_used": {
- "custom_endpoint": "/dvmdb/adom/ansible/script",
- "device_ip": null,
- "device_unique_name": null,
- "task_id": null,
- "adom": "ansible",
- "nodes": null,
- "object": "custom",
- "device_serial": null,
- "custom_dict": {
- "type": "cli"
- }
- },
- "post_method": "get"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_script.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_script.json
deleted file mode 100644
index 5ce77021eb..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_script.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- "delete_script": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvmdb/adom/ansible/script/TestScript"
- },
- "datagram_sent": {
- "name": "TestScript"
- },
- "paramgram_used": {
- "vdom": "root",
- "script_target": null,
- "script_content": null,
- "adom": "ansible",
- "script_description": null,
- "script_package": null,
- "mode": "delete",
- "script_scope": null,
- "script_name": "TestScript",
- "script_type": null
- },
- "post_method": "delete"
- }
- ],
- "set_script": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/dvmdb/adom/ansible/script/"
- },
- "datagram_sent": {
- "content": "get system status",
- "type": "cli",
- "target": "remote_device",
- "name": "TestScript",
- "desc": "Create by Ansible"
- },
- "paramgram_used": {
- "script_content": "get system status",
- "adom": "ansible",
- "script_scope": null,
- "script_name": "TestScript",
- "script_target": "remote_device",
- "mode": "add",
- "script_description": "Create by Ansible",
- "script_package": null,
- "vdom": "root",
- "script_type": "cli"
- },
- "post_method": "set"
- }
- ],
- "execute_script": [
- {
- "url": "/dvmdb/adom/ansible/script/execute",
- "paramgram_used": {
- "script_content": null,
- "adom": "ansible",
- "script_scope": "FGT1",
- "script_name": "TestScript",
- "script_target": null,
- "mode": "execute",
- "script_description": null,
- "script_package": null,
- "vdom": "root",
- "script_type": null
- },
- "datagram_sent": {
- "scope": [
- {
- "name": "FGT1",
- "vdom": "root"
- }
- ],
- "adom": "ansible",
- "script": "TestScript",
- "package": null
- },
- "raw_response": {
- "task": 277
- },
- "post_method": "exec"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_appctrl.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_appctrl.json
deleted file mode 100644
index a0333e75bb..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_appctrl.json
+++ /dev/null
@@ -1,250 +0,0 @@
-{
- "fmgr_application_list_modify": [
- {
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "other-application-log": null,
- "replacemsg-group": null,
- "adom": "ansible",
- "unknown-application-log": null,
- "p2p-black-list": null,
- "unknown-application-action": null,
- "extended-log": null,
- "deep-app-inspection": null,
- "mode": "delete",
- "other-application-action": null,
- "entries": {
- "behavior": null,
- "rate-duration": null,
- "sub-category": null,
- "session-ttl": null,
- "per-ip-shaper": null,
- "category": null,
- "log": null,
- "parameters": {
- "value": null
- },
- "technology": null,
- "quarantine-expiry": null,
- "application": null,
- "protocols": null,
- "log-packet": null,
- "quarantine-log": null,
- "vendor": null,
- "risk": null,
- "rate-count": null,
- "quarantine": null,
- "popularity": null,
- "shaper": null,
- "shaper-reverse": null,
- "rate-track": null,
- "rate-mode": null,
- "action": null
- },
- "options": null,
- "app-replacemsg": null,
- "name": "Ansible_Application_Control_Profile"
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/application/list/Ansible_Application_Control_Profile"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/application/list"
- },
- "datagram_sent": {
- "comment": "Created by Ansible Module TEST",
- "name": "Ansible_Application_Control_Profile",
- "entries": [
- {
- "quarantine-log": "enable",
- "log": "enable",
- "quarantine": "attacker",
- "action": "block",
- "log-packet": "enable",
- "protocols": [
- "1"
- ]
- },
- {
- "action": "pass",
- "category": [
- "2",
- "3",
- "4"
- ]
- }
- ]
- },
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "other-application-log": null,
- "replacemsg-group": null,
- "p2p-black-list": null,
- "unknown-application-log": null,
- "adom": "ansible",
- "unknown-application-action": null,
- "extended-log": null,
- "deep-app-inspection": null,
- "mode": "set",
- "other-application-action": null,
- "entries": [
- {
- "quarantine-log": "enable",
- "log": "enable",
- "quarantine": "attacker",
- "action": "block",
- "log-packet": "enable",
- "protocols": [
- "1"
- ]
- },
- {
- "action": "pass",
- "category": [
- "2",
- "3",
- "4"
- ]
- }
- ],
- "options": null,
- "app-replacemsg": null,
- "name": "Ansible_Application_Control_Profile"
- },
- "post_method": "set"
- },
- {
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "other-application-log": null,
- "replacemsg-group": null,
- "adom": "ansible",
- "unknown-application-log": null,
- "p2p-black-list": null,
- "unknown-application-action": null,
- "extended-log": null,
- "options": null,
- "deep-app-inspection": null,
- "mode": "delete",
- "other-application-action": null,
- "entries": {
- "behavior": null,
- "rate-duration": null,
- "sub-category": null,
- "session-ttl": null,
- "per-ip-shaper": null,
- "category": null,
- "log": null,
- "parameters": {
- "value": null
- },
- "technology": null,
- "quarantine-expiry": null,
- "application": null,
- "protocols": null,
- "log-packet": null,
- "quarantine-log": null,
- "vendor": null,
- "risk": null,
- "rate-count": null,
- "quarantine": null,
- "popularity": null,
- "shaper": null,
- "shaper-reverse": null,
- "rate-track": null,
- "rate-mode": null,
- "action": null
- },
- "app-replacemsg": null,
- "name": "Ansible_Application_Ctl_Profile2"
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/application/list/Ansible_Application_Ctl_Profile2"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/application/list"
- },
- "datagram_sent": {
- "comment": "Created by Ansible Module TEST",
- "name": "Ansible_Application_Ctl_Profile2",
- "entries": {
- "quarantine-log": "enable",
- "log": "enable",
- "quarantine": "attacker",
- "action": "pass",
- "log-packet": "enable",
- "protocols": "['1']"
- }
- },
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "adom": "ansible",
- "unknown-application-log": null,
- "extended-log": null,
- "other-application-action": null,
- "entries": {
- "rate-duration": null,
- "sub-category": null,
- "vendor": null,
- "technology": null,
- "risk": null,
- "category": null,
- "log": "enable",
- "parameters": {
- "value": null
- },
- "per-ip-shaper": null,
- "quarantine-expiry": null,
- "application": null,
- "protocols": "['1']",
- "log-packet": "enable",
- "quarantine-log": "enable",
- "session-ttl": null,
- "behavior": null,
- "rate-count": null,
- "quarantine": "attacker",
- "popularity": null,
- "shaper": null,
- "shaper-reverse": null,
- "rate-track": null,
- "rate-mode": null,
- "action": "pass"
- },
- "replacemsg-group": null,
- "other-application-log": null,
- "name": "Ansible_Application_Ctl_Profile2",
- "p2p-black-list": null,
- "unknown-application-action": null,
- "deep-app-inspection": null,
- "mode": "set",
- "app-replacemsg": null,
- "options": null
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_av.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_av.json
deleted file mode 100644
index 9f80833b5e..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_av.json
+++ /dev/null
@@ -1,252 +0,0 @@
-{
- "fmgr_antivirus_profile_modify": [
- {
- "paramgram_used": {
- "comment": null,
- "smtp": {
- "executables": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "content-disarm": null,
- "options": null
- },
- "extended-log": null,
- "analytics-db": null,
- "analytics-wl-filetype": null,
- "av-virus-log": null,
- "content-disarm": {
- "office-hylink": null,
- "pdf-act-gotor": null,
- "pdf-act-java": null,
- "original-file-destination": null,
- "cover-page": null,
- "pdf-act-sound": null,
- "detect-only": null,
- "office-embed": null,
- "office-linked": null,
- "pdf-javacode": null,
- "pdf-hyperlink": null,
- "pdf-embedfile": null,
- "office-macro": null,
- "pdf-act-form": null,
- "pdf-act-launch": null,
- "pdf-act-movie": null
- },
- "ftp": {
- "archive-block": null,
- "emulator": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "options": null
- },
- "mapi": {
- "executables": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "options": null
- },
- "analytics-max-upload": null,
- "nntp": {
- "archive-block": null,
- "emulator": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "options": null
- },
- "smb": {
- "archive-block": null,
- "emulator": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "options": null
- },
- "analytics-bl-filetype": null,
- "http": {
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "content-disarm": null,
- "options": null
- },
- "adom": "ansible",
- "av-block-log": null,
- "pop3": {
- "executables": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "content-disarm": null,
- "options": null
- },
- "inspection-mode": null,
- "ftgd-analytics": null,
- "imap": {
- "executables": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "content-disarm": null,
- "options": null
- },
- "replacemsg-group": null,
- "name": "Ansible_AV_Profile",
- "scan-mode": null,
- "nac-quar": {
- "infected": null,
- "log": null,
- "expiry": null
- },
- "mode": "delete",
- "mobile-malware-db": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/antivirus/profile/Ansible_AV_Profile"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/ansible/obj/antivirus/profile"
- },
- "datagram_sent": {
- "comment": "Created by Ansible Module TEST",
- "ftp": {
- "outbreak-prevention": "files",
- "options": "scan",
- "archive-log": "timeout",
- "emulator": "disable",
- "archive-block": "encrypted"
- },
- "name": "Ansible_AV_Profile",
- "scan-mode": "full",
- "av-block-log": "enable",
- "inspection-mode": "proxy",
- "av-virus-log": "enable",
- "ftgd-analytics": "everything",
- "mobile-malware-db": "enable"
- },
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "av-block-log": "enable",
- "extended-log": null,
- "analytics-db": null,
- "analytics-wl-filetype": null,
- "av-virus-log": "enable",
- "content-disarm": {
- "pdf-act-movie": null,
- "pdf-act-gotor": null,
- "pdf-act-java": null,
- "original-file-destination": null,
- "cover-page": null,
- "pdf-act-sound": null,
- "detect-only": null,
- "office-embed": null,
- "pdf-embedfile": null,
- "office-linked": null,
- "pdf-javacode": null,
- "pdf-hyperlink": null,
- "office-hylink": null,
- "office-macro": null,
- "pdf-act-form": null,
- "pdf-act-launch": null
- },
- "ftp": {
- "outbreak-prevention": "files",
- "options": "scan",
- "archive-log": "timeout",
- "emulator": "disable",
- "archive-block": "encrypted"
- },
- "smtp": {
- "executables": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "content-disarm": null,
- "options": null
- },
- "mapi": {
- "executables": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "options": null
- },
- "analytics-max-upload": null,
- "nntp": {
- "outbreak-prevention": null,
- "options": null,
- "archive-log": null,
- "emulator": null,
- "archive-block": null
- },
- "smb": {
- "outbreak-prevention": null,
- "options": null,
- "archive-log": null,
- "emulator": null,
- "archive-block": null
- },
- "analytics-bl-filetype": null,
- "http": {
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "content-disarm": null,
- "options": null
- },
- "adom": "ansible",
- "scan-mode": "full",
- "pop3": {
- "executables": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "content-disarm": null,
- "options": null
- },
- "inspection-mode": "proxy",
- "ftgd-analytics": "everything",
- "imap": {
- "executables": null,
- "archive-log": null,
- "outbreak-prevention": null,
- "emulator": null,
- "archive-block": null,
- "content-disarm": null,
- "options": null
- },
- "name": "Ansible_AV_Profile",
- "replacemsg-group": null,
- "nac-quar": {
- "infected": null,
- "log": null,
- "expiry": null
- },
- "mode": "set",
- "mobile-malware-db": "enable"
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_dns.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_dns.json
deleted file mode 100644
index 3d436380e7..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_dns.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "fmgr_dnsfilter_profile_modify": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/dnsfilter/profile"
- },
- "datagram_sent": {
- "comment": "Created by Ansible Module TEST",
- "name": "Ansible_DNS_Profile",
- "block-action": "block"
- },
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "ftgd-dns": {
- "options": null,
- "filters": {
- "action": null,
- "category": null,
- "log": null
- }
- },
- "adom": "root",
- "youtube-restrict": null,
- "sdns-domain-log": null,
- "block-botnet": null,
- "external-ip-blocklist": null,
- "block-action": "block",
- "name": "Ansible_DNS_Profile",
- "redirect-portal": null,
- "sdns-ftgd-err-log": null,
- "safe-search": null,
- "domain-filter": {
- "domain-filter-table": null
- },
- "log-all-domain": null,
- "mode": "set"
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ips.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ips.json
deleted file mode 100644
index 14cd92217a..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ips.json
+++ /dev/null
@@ -1,79 +0,0 @@
-{
- "fmgr_ips_sensor_modify": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/ips/sensor"
- },
- "datagram_sent": {
- "comment": "Created by Ansible Module TEST",
- "block-malicious-url": "enable",
- "name": "Ansible_IPS_Profile",
- "entries": [
- {
- "action": "block",
- "log-packet": "enable",
- "severity": "high"
- },
- {
- "action": "pass",
- "severity": "medium"
- }
- ]
- },
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "block-malicious-url": "enable",
- "mode": "set",
- "name": "Ansible_IPS_Profile",
- "adom": "root",
- "override": {
- "status": null,
- "exempt-ip": {
- "src-ip": null,
- "dst-ip": null
- },
- "quarantine-log": null,
- "log": null,
- "action": null,
- "log-packet": null,
- "quarantine": null,
- "quarantine-expiry": null,
- "rule-id": null
- },
- "entries": [
- {
- "action": "block",
- "log-packet": "enable",
- "severity": "high"
- },
- {
- "action": "pass",
- "severity": "medium"
- }
- ],
- "filter": {
- "status": null,
- "quarantine-log": null,
- "protocol": null,
- "severity": null,
- "log": null,
- "name": null,
- "quarantine": null,
- "quarantine-expiry": null,
- "application": null,
- "location": null,
- "action": null,
- "log-packet": null,
- "os": null
- },
- "extended-log": null,
- "replacemsg-group": null
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_profile_group.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_profile_group.json
deleted file mode 100644
index 63ce11a537..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_profile_group.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "fmgr_firewall_profile_group_modify": [
- {
- "paramgram_used": {
- "ssl-ssh-profile": null,
- "waf-profile": null,
- "adom": "root",
- "webfilter-profile": null,
- "profile-protocol-options": null,
- "application-list": null,
- "icap-profile": null,
- "voip-profile": null,
- "ips-sensor": null,
- "dnsfilter-profile": null,
- "av-profile": null,
- "spamfilter-profile": null,
- "dlp-sensor": null,
- "mode": "delete",
- "ssh-filter-profile": null,
- "mms-profile": null,
- "name": "Ansible_TEST_Profile_Group"
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "Object does not exist",
- "code": -3
- },
- "url": "/pm/config/adom/root/obj/firewall/profile-group/Ansible_TEST_Profile_Group"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "datasrc invalid. object: firewall profile-group av-profile Ansible_TEST_Profile_Group. detail: Ansible_AV_Profile. solution: data not exist",
- "code": -10131
- },
- "url": "/pm/config/adom/root/obj/firewall/profile-group"
- },
- "datagram_sent": {
- "av-profile": "Ansible_AV_Profile",
- "profile-protocol-options": "default",
- "name": "Ansible_TEST_Profile_Group"
- },
- "paramgram_used": {
- "ssl-ssh-profile": null,
- "application-list": null,
- "waf-profile": null,
- "adom": "root",
- "webfilter-profile": null,
- "ips-sensor": null,
- "spamfilter-profile": null,
- "icap-profile": null,
- "dnsfilter-profile": null,
- "name": "Ansible_TEST_Profile_Group",
- "voip-profile": null,
- "av-profile": "Ansible_AV_Profile",
- "mode": "set",
- "dlp-sensor": null,
- "mms-profile": null,
- "ssh-filter-profile": null,
- "profile-protocol-options": "default"
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_proxy.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_proxy.json
deleted file mode 100644
index df0833b9c8..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_proxy.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "fmgr_web_proxy_profile_modify": [
- {
- "paramgram_used": {
- "header-via-request": null,
- "name": "Ansible_Web_Proxy_Profile",
- "header-front-end-https": null,
- "log-header-change": null,
- "adom": "root",
- "headers": {
- "action": null,
- "content": null,
- "name": null
- },
- "mode": "delete",
- "header-via-response": null,
- "header-x-authenticated-user": null,
- "strip-encoding": null,
- "header-x-forwarded-for": null,
- "header-x-authenticated-groups": null,
- "header-client-ip": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/web-proxy/profile/Ansible_Web_Proxy_Profile"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/web-proxy/profile"
- },
- "datagram_sent": {
- "header-via-request": "remove",
- "name": "Ansible_Web_Proxy_Profile",
- "header-front-end-https": "add",
- "log-header-change": "enable",
- "headers": {
- "action": "add-to-request",
- "content": "test",
- "name": "test_header"
- },
- "header-via-response": "pass",
- "header-x-authenticated-user": "remove",
- "strip-encoding": "enable",
- "header-x-forwarded-for": "pass",
- "header-x-authenticated-groups": "add",
- "header-client-ip": "pass"
- },
- "paramgram_used": {
- "header-via-request": "remove",
- "header-client-ip": "pass",
- "header-front-end-https": "add",
- "header-x-authenticated-groups": "add",
- "name": "Ansible_Web_Proxy_Profile",
- "log-header-change": "enable",
- "adom": "root",
- "headers": {
- "action": "add-to-request",
- "content": "test",
- "name": "test_header"
- },
- "mode": "set",
- "header-via-response": "pass",
- "header-x-authenticated-user": "remove",
- "strip-encoding": "enable",
- "header-x-forwarded-for": "pass"
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_spam.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_spam.json
deleted file mode 100644
index d75156e1de..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_spam.json
+++ /dev/null
@@ -1,157 +0,0 @@
-{
- "fmgr_spamfilter_profile_modify": [
- {
- "paramgram_used": {
- "comment": null,
- "smtp": {
- "local-override": null,
- "hdrip": null,
- "log": null,
- "tag-type": null,
- "tag-msg": null,
- "action": null
- },
- "spam-log": null,
- "gmail": {
- "log": null
- },
- "spam-bword-table": null,
- "mapi": {
- "action": null,
- "log": null
- },
- "flow-based": null,
- "spam-mheader-table": null,
- "spam-log-fortiguard-response": null,
- "yahoo-mail": {
- "log": null
- },
- "adom": "root",
- "pop3": {
- "action": null,
- "tag-msg": null,
- "tag-type": null,
- "log": null
- },
- "external": null,
- "spam-rbl-table": null,
- "imap": {
- "action": null,
- "tag-msg": null,
- "tag-type": null,
- "log": null
- },
- "spam-iptrust-table": null,
- "replacemsg-group": null,
- "name": "Ansible_Spam_Filter_Profile",
- "spam-bwl-table": null,
- "spam-filtering": null,
- "msn-hotmail": {
- "log": null
- },
- "spam-bword-threshold": null,
- "mode": "delete",
- "options": null
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/spamfilter/profile/Ansible_Spam_Filter_Profile"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/spamfilter/profile"
- },
- "datagram_sent": {
- "comment": "Created by Ansible",
- "spam-log-fortiguard-response": "enable",
- "spam-log": "enable",
- "name": "Ansible_Spam_Filter_Profile",
- "spam-filtering": "enable",
- "flow-based": "enable",
- "spam-bword-threshold": 10,
- "external": "enable",
- "options": [
- "bannedword",
- "spamfsip",
- "spamfsurl",
- "spamrbl",
- "spamfsphish",
- "spambwl"
- ],
- "gmail": {
- "log": "enable"
- }
- },
- "paramgram_used": {
- "comment": "Created by Ansible",
- "smtp": {
- "local-override": null,
- "hdrip": null,
- "log": null,
- "tag-type": null,
- "tag-msg": null,
- "action": null
- },
- "yahoo-mail": {
- "log": null
- },
- "gmail": {
- "log": "enable"
- },
- "spam-bword-table": null,
- "mapi": {
- "action": null,
- "log": null
- },
- "flow-based": "enable",
- "spam-mheader-table": null,
- "spam-log-fortiguard-response": "enable",
- "spam-log": "enable",
- "adom": "root",
- "pop3": {
- "action": null,
- "tag-type": null,
- "log": null,
- "tag-msg": null
- },
- "external": "enable",
- "spam-rbl-table": null,
- "imap": {
- "action": null,
- "tag-type": null,
- "log": null,
- "tag-msg": null
- },
- "spam-iptrust-table": null,
- "name": "Ansible_Spam_Filter_Profile",
- "replacemsg-group": null,
- "spam-bwl-table": null,
- "spam-filtering": "enable",
- "msn-hotmail": {
- "log": null
- },
- "spam-bword-threshold": 10,
- "mode": "set",
- "options": [
- "bannedword",
- "spamfsip",
- "spamfsurl",
- "spamrbl",
- "spamfsphish",
- "spambwl"
- ]
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ssl_ssh.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ssl_ssh.json
deleted file mode 100644
index 6dc02883f0..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_ssl_ssh.json
+++ /dev/null
@@ -1,214 +0,0 @@
-{
- "fmgr_firewall_ssl_ssh_profile_modify": [
- {
- "paramgram_used": {
- "comment": null,
- "untrusted-caname": null,
- "mapi-over-https": null,
- "whitelist": null,
- "caname": null,
- "ftps": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "client-cert-request": null,
- "ports": null,
- "untrusted-cert": null
- },
- "ssl-exemptions-log": null,
- "https": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "client-cert-request": null,
- "ports": null,
- "untrusted-cert": null
- },
- "imaps": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "client-cert-request": null,
- "ports": null,
- "untrusted-cert": null
- },
- "server-cert-mode": null,
- "adom": "root",
- "ssl-exempt": {
- "regex": null,
- "wildcard-fqdn": null,
- "fortiguard-category": null,
- "address6": null,
- "address": null,
- "type": null
- },
- "ssl": {
- "inspect-all": null,
- "allow-invalid-server-cert": null,
- "client-cert-request": null,
- "untrusted-cert": null,
- "unsupported-ssl": null
- },
- "ssh": {
- "status": null,
- "inspect-all": null,
- "ssh-tun-policy-check": null,
- "ssh-policy-check": null,
- "ssh-algorithm": null,
- "unsupported-version": null,
- "ports": null
- },
- "use-ssl-server": null,
- "server-cert": null,
- "name": "Ansible_SSL_SSH_Profile",
- "ssl-anomalies-log": null,
- "ssl-server": {
- "pop3s-client-cert-request": null,
- "imaps-client-cert-request": null,
- "smtps-client-cert-request": null,
- "ip": null,
- "ssl-other-client-cert-request": null,
- "https-client-cert-request": null,
- "ftps-client-cert-request": null
- },
- "smtps": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "client-cert-request": null,
- "ports": null,
- "untrusted-cert": null
- },
- "rpc-over-https": null,
- "mode": "delete",
- "pop3s": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "client-cert-request": null,
- "ports": null,
- "untrusted-cert": null
- }
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/firewall/ssl-ssh-profile/Ansible_SSL_SSH_Profile"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/firewall/ssl-ssh-profile"
- },
- "datagram_sent": {
- "comment": "Created by Ansible Module TEST",
- "server-cert-mode": "replace",
- "name": "Ansible_SSL_SSH_Profile",
- "ssl-anomalies-log": "enable",
- "mapi-over-https": "enable",
- "whitelist": "enable",
- "ssl-exemptions-log": "enable",
- "rpc-over-https": "enable",
- "use-ssl-server": "enable"
- },
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "untrusted-caname": null,
- "mapi-over-https": "enable",
- "whitelist": "enable",
- "caname": null,
- "ftps": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "untrusted-cert": null,
- "client-cert-request": null,
- "ports": null
- },
- "ssl-exemptions-log": "enable",
- "https": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "untrusted-cert": null,
- "client-cert-request": null,
- "ports": null
- },
- "pop3s": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "untrusted-cert": null,
- "client-cert-request": null,
- "ports": null
- },
- "server-cert-mode": "replace",
- "adom": "root",
- "ssl-exempt": {
- "regex": null,
- "wildcard-fqdn": null,
- "fortiguard-category": null,
- "address6": null,
- "address": null,
- "type": null
- },
- "ssl": {
- "unsupported-ssl": null,
- "inspect-all": null,
- "allow-invalid-server-cert": null,
- "untrusted-cert": null,
- "client-cert-request": null
- },
- "ssh": {
- "status": null,
- "inspect-all": null,
- "ssh-tun-policy-check": null,
- "ssh-policy-check": null,
- "ssh-algorithm": null,
- "unsupported-version": null,
- "ports": null
- },
- "server-cert": null,
- "name": "Ansible_SSL_SSH_Profile",
- "ssl-anomalies-log": "enable",
- "ssl-server": {
- "pop3s-client-cert-request": null,
- "imaps-client-cert-request": null,
- "smtps-client-cert-request": null,
- "ip": null,
- "ssl-other-client-cert-request": null,
- "https-client-cert-request": null,
- "ftps-client-cert-request": null
- },
- "smtps": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "untrusted-cert": null,
- "client-cert-request": null,
- "ports": null
- },
- "imaps": {
- "status": null,
- "allow-invalid-server-cert": null,
- "unsupported-ssl": null,
- "untrusted-cert": null,
- "client-cert-request": null,
- "ports": null
- },
- "rpc-over-https": "enable",
- "mode": "set",
- "use-ssl-server": "enable"
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_voip.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_voip.json
deleted file mode 100644
index 3513e14f71..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_voip.json
+++ /dev/null
@@ -1,257 +0,0 @@
-{
- "fmgr_voip_profile_modify": [
- {
- "paramgram_used": {
- "comment": null,
- "sip": {
- "block-publish": null,
- "ssl-max-version": null,
- "malformed-header-rack": null,
- "rtp": null,
- "publish-rate": null,
- "ssl-client-renegotiation": null,
- "malformed-header-from": null,
- "open-contact-pinhole": null,
- "ssl-client-certificate": null,
- "malformed-header-p-asserted-identity": null,
- "rfc2543-branch": null,
- "malformed-header-via": null,
- "notify-rate": null,
- "preserve-override": null,
- "block-info": null,
- "options-rate": null,
- "block-update": null,
- "max-body-length": null,
- "block-subscribe": null,
- "ssl-pfs": null,
- "ssl-send-empty-frags": null,
- "ssl-auth-client": null,
- "malformed-header-record-route": null,
- "refer-rate": null,
- "info-rate": null,
- "open-record-route-pinhole": null,
- "register-rate": null,
- "unknown-header": null,
- "block-unknown": null,
- "ssl-server-certificate": null,
- "block-invite": null,
- "strict-register": null,
- "max-dialogs": null,
- "block-cancel": null,
- "no-sdp-fixup": null,
- "open-register-pinhole": null,
- "block-notify": null,
- "max-idle-dialogs": null,
- "malformed-request-line": null,
- "block-long-lines": null,
- "log-violations": null,
- "ssl-min-version": null,
- "provisional-invite-expiry-time": null,
- "block-prack": null,
- "malformed-header-max-forwards": null,
- "block-message": null,
- "malformed-header-call-id": null,
- "invite-rate": null,
- "cancel-rate": null,
- "register-contact-trace": null,
- "block-register": null,
- "ssl-mode": null,
- "prack-rate": null,
- "block-bye": null,
- "ssl-algorithm": null,
- "malformed-header-to": null,
- "block-geo-red-options": null,
- "call-keepalive": null,
- "message-rate": null,
- "malformed-header-expires": null,
- "block-options": null,
- "log-call-summary": null,
- "hnt-restrict-source-ip": null,
- "ssl-auth-server": null,
- "contact-fixup": null,
- "ack-rate": null,
- "malformed-header-allow": null,
- "malformed-header-sdp-v": null,
- "malformed-header-sdp-t": null,
- "malformed-header-contact": null,
- "malformed-header-sdp-s": null,
- "hosted-nat-traversal": null,
- "subscribe-rate": null,
- "malformed-header-content-length": null,
- "malformed-header-sdp-z": null,
- "malformed-header-route": null,
- "malformed-header-sdp-b": null,
- "malformed-header-sdp-c": null,
- "malformed-header-sdp-a": null,
- "malformed-header-sdp-o": null,
- "malformed-header-sdp-m": null,
- "malformed-header-sdp-k": null,
- "malformed-header-sdp-i": null,
- "status": null,
- "open-via-pinhole": null,
- "bye-rate": null,
- "block-ack": null,
- "malformed-header-sdp-r": null,
- "block-refer": null,
- "ips-rtp": null,
- "malformed-header-content-type": null,
- "nat-trace": null,
- "malformed-header-rseq": null,
- "max-line-length": null,
- "update-rate": null,
- "malformed-header-cseq": null
- },
- "name": "Ansible_VOIP_Profile",
- "adom": "root",
- "sccp": {
- "status": null,
- "log-call-summary": null,
- "block-mcast": null,
- "max-calls": null,
- "verify-header": null,
- "log-violations": null
- },
- "mode": "delete"
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/voip/profile/Ansible_VOIP_Profile"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/voip/profile"
- },
- "datagram_sent": {
- "comment": "Created by Ansible",
- "sccp": {
- "status": "enable",
- "log-call-summary": "enable",
- "log-violations": "enable",
- "block-mcast": "enable"
- },
- "name": "Ansible_VOIP_Profile"
- },
- "paramgram_used": {
- "comment": "Created by Ansible",
- "sip": {
- "block-publish": null,
- "ssl-max-version": null,
- "malformed-header-rack": null,
- "rtp": null,
- "publish-rate": null,
- "ssl-client-renegotiation": null,
- "malformed-header-from": null,
- "ssl-client-certificate": null,
- "malformed-header-p-asserted-identity": null,
- "info-rate": null,
- "malformed-header-via": null,
- "notify-rate": null,
- "preserve-override": null,
- "block-info": null,
- "options-rate": null,
- "block-update": null,
- "max-body-length": null,
- "block-subscribe": null,
- "ssl-pfs": null,
- "ssl-send-empty-frags": null,
- "ssl-auth-client": null,
- "malformed-header-record-route": null,
- "refer-rate": null,
- "open-record-route-pinhole": null,
- "register-rate": null,
- "unknown-header": null,
- "block-unknown": null,
- "ssl-server-certificate": null,
- "block-invite": null,
- "malformed-request-line": null,
- "max-dialogs": null,
- "block-cancel": null,
- "no-sdp-fixup": null,
- "open-register-pinhole": null,
- "block-options": null,
- "max-idle-dialogs": null,
- "strict-register": null,
- "block-long-lines": null,
- "log-violations": null,
- "ssl-min-version": null,
- "provisional-invite-expiry-time": null,
- "rfc2543-branch": null,
- "block-ack": null,
- "malformed-header-max-forwards": null,
- "block-message": null,
- "malformed-header-call-id": null,
- "invite-rate": null,
- "cancel-rate": null,
- "register-contact-trace": null,
- "block-refer": null,
- "block-register": null,
- "ssl-mode": null,
- "prack-rate": null,
- "block-bye": null,
- "ssl-algorithm": null,
- "malformed-header-to": null,
- "block-geo-red-options": null,
- "call-keepalive": null,
- "message-rate": null,
- "malformed-header-expires": null,
- "log-call-summary": null,
- "hnt-restrict-source-ip": null,
- "ssl-auth-server": null,
- "contact-fixup": null,
- "ack-rate": null,
- "malformed-header-allow": null,
- "malformed-header-sdp-v": null,
- "malformed-header-sdp-t": null,
- "malformed-header-contact": null,
- "malformed-header-sdp-s": null,
- "hosted-nat-traversal": null,
- "subscribe-rate": null,
- "malformed-header-content-length": null,
- "malformed-header-sdp-z": null,
- "malformed-header-route": null,
- "block-notify": null,
- "malformed-header-sdp-b": null,
- "malformed-header-sdp-c": null,
- "malformed-header-sdp-a": null,
- "malformed-header-sdp-o": null,
- "malformed-header-sdp-m": null,
- "malformed-header-sdp-k": null,
- "malformed-header-sdp-i": null,
- "status": null,
- "open-via-pinhole": null,
- "bye-rate": null,
- "block-prack": null,
- "malformed-header-sdp-r": null,
- "open-contact-pinhole": null,
- "ips-rtp": null,
- "malformed-header-content-type": null,
- "nat-trace": null,
- "malformed-header-rseq": null,
- "max-line-length": null,
- "update-rate": null,
- "malformed-header-cseq": null
- },
- "name": "Ansible_VOIP_Profile",
- "adom": "root",
- "sccp": {
- "status": "enable",
- "log-call-summary": "enable",
- "log-violations": "enable",
- "block-mcast": "enable"
- },
- "mode": "set"
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_waf.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_waf.json
deleted file mode 100644
index 93579f12f7..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_waf.json
+++ /dev/null
@@ -1,365 +0,0 @@
-{
- "fmgr_waf_profile_modify": [
- {
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "name": "Ansible_WAF_Profile",
- "adom": "root",
- "address-list": {
- "blocked-address": null,
- "status": null,
- "severity": null,
- "blocked-log": null,
- "trusted-address": null
- },
- "constraint": {
- "header-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "content-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "max-cookie": {
- "action": null,
- "status": null,
- "max-cookie": null,
- "log": null,
- "severity": null
- },
- "url-param-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "hostname": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- },
- "line-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "exception": {
- "regex": null,
- "header-length": null,
- "content-length": null,
- "max-cookie": null,
- "pattern": null,
- "hostname": null,
- "line-length": null,
- "max-range-segment": null,
- "url-param-length": null,
- "version": null,
- "param-length": null,
- "malformed": null,
- "address": null,
- "max-url-param": null,
- "max-header-line": null,
- "method": null
- },
- "max-range-segment": {
- "action": null,
- "status": null,
- "max-range-segment": null,
- "severity": null,
- "log": null
- },
- "version": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- },
- "param-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "malformed": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- },
- "max-url-param": {
- "action": null,
- "status": null,
- "max-url-param": null,
- "log": null,
- "severity": null
- },
- "max-header-line": {
- "action": null,
- "status": null,
- "max-header-line": null,
- "log": null,
- "severity": null
- },
- "method": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- }
- },
- "extended-log": null,
- "url-access": {
- "action": null,
- "address": null,
- "severity": null,
- "access-pattern": {
- "negate": null,
- "pattern": null,
- "srcaddr": null,
- "regex": null
- },
- "log": null
- },
- "external": null,
- "signature": {
- "custom-signature": {
- "status": null,
- "direction": null,
- "target": null,
- "severity": null,
- "case-sensitivity": null,
- "name": null,
- "pattern": null,
- "action": null,
- "log": null
- },
- "credit-card-detection-threshold": null,
- "main-class": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- },
- "disabled-signature": null,
- "disabled-sub-class": null
- },
- "method": {
- "status": null,
- "severity": null,
- "default-allowed-methods": null,
- "log": null,
- "method-policy": {
- "regex": null,
- "pattern": null,
- "allowed-methods": null,
- "address": null
- }
- },
- "mode": "delete"
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/waf/profile/Ansible_WAF_Profile"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/waf/profile"
- },
- "datagram_sent": {
- "comment": "Created by Ansible Module TEST",
- "name": "Ansible_WAF_Profile"
- },
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "adom": "root",
- "address-list": {
- "blocked-address": null,
- "status": null,
- "severity": null,
- "blocked-log": null,
- "trusted-address": null
- },
- "extended-log": null,
- "url-access": {
- "action": null,
- "severity": null,
- "log": null,
- "access-pattern": {
- "negate": null,
- "pattern": null,
- "srcaddr": null,
- "regex": null
- },
- "address": null
- },
- "external": null,
- "name": "Ansible_WAF_Profile",
- "constraint": {
- "content-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "max-cookie": {
- "action": null,
- "status": null,
- "max-cookie": null,
- "log": null,
- "severity": null
- },
- "line-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "max-range-segment": {
- "action": null,
- "severity": null,
- "status": null,
- "log": null,
- "max-range-segment": null
- },
- "param-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "malformed": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- },
- "max-url-param": {
- "action": null,
- "status": null,
- "max-url-param": null,
- "log": null,
- "severity": null
- },
- "header-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "exception": {
- "regex": null,
- "header-length": null,
- "content-length": null,
- "max-cookie": null,
- "pattern": null,
- "hostname": null,
- "line-length": null,
- "max-range-segment": null,
- "url-param-length": null,
- "version": null,
- "param-length": null,
- "malformed": null,
- "address": null,
- "max-url-param": null,
- "max-header-line": null,
- "method": null
- },
- "hostname": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- },
- "url-param-length": {
- "action": null,
- "status": null,
- "length": null,
- "log": null,
- "severity": null
- },
- "version": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- },
- "max-header-line": {
- "action": null,
- "status": null,
- "max-header-line": null,
- "log": null,
- "severity": null
- },
- "method": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- }
- },
- "mode": "set",
- "signature": {
- "custom-signature": {
- "status": null,
- "direction": null,
- "log": null,
- "severity": null,
- "target": null,
- "action": null,
- "pattern": null,
- "case-sensitivity": null,
- "name": null
- },
- "credit-card-detection-threshold": null,
- "main-class": {
- "action": null,
- "status": null,
- "log": null,
- "severity": null
- },
- "disabled-signature": null,
- "disabled-sub-class": null
- },
- "method": {
- "status": null,
- "default-allowed-methods": null,
- "method-policy": {
- "regex": null,
- "pattern": null,
- "allowed-methods": null,
- "address": null
- },
- "log": null,
- "severity": null
- }
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_wanopt.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_wanopt.json
deleted file mode 100644
index ae9cd041cc..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_wanopt.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "fmgr_wanopt_profile_modify": [
- {
- "paramgram_used": {
- "ftp": {
- "status": null,
- "log-traffic": null,
- "byte-caching": null,
- "prefer-chunking": null,
- "secure-tunnel": null,
- "port": null,
- "tunnel-sharing": null
- },
- "http": {
- "status": null,
- "ssl": null,
- "tunnel-non-http": null,
- "log-traffic": null,
- "byte-caching": null,
- "unknown-http-version": null,
- "prefer-chunking": null,
- "tunnel-sharing": null,
- "port": null,
- "ssl-port": null,
- "secure-tunnel": null
- },
- "cifs": {
- "status": null,
- "log-traffic": null,
- "byte-caching": null,
- "prefer-chunking": null,
- "secure-tunnel": null,
- "port": null,
- "tunnel-sharing": null
- },
- "adom": "root",
- "auth-group": null,
- "mapi": {
- "status": null,
- "log-traffic": null,
- "byte-caching": null,
- "secure-tunnel": null,
- "port": null,
- "tunnel-sharing": null
- },
- "tcp": {
- "status": null,
- "byte-caching-opt": null,
- "ssl": null,
- "log-traffic": null,
- "byte-caching": null,
- "secure-tunnel": null,
- "port": null,
- "ssl-port": null,
- "tunnel-sharing": null
- },
- "mode": "delete",
- "comments": null,
- "transparent": null,
- "name": "Ansible_WanOpt_Profile"
- },
- "datagram_sent": {},
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/wanopt/profile/Ansible_WanOpt_Profile"
- },
- "post_method": "delete"
- },
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/wanopt/profile"
- },
- "datagram_sent": {
- "ftp": {
- "status": "enable",
- "log-traffic": "enable",
- "byte-caching": "enable",
- "prefer-chunking": "dynamic",
- "tunnel-sharing": "private",
- "port": 80,
- "secure-tunnel": "disable"
- },
- "name": "Ansible_WanOpt_Profile",
- "cifs": {
- "status": "enable",
- "log-traffic": "enable",
- "byte-caching": "enable",
- "prefer-chunking": "dynamic",
- "port": 80,
- "tunnel-sharing": "private"
- },
- "comments": "Created by Ansible",
- "transparent": "enable"
- },
- "paramgram_used": {
- "http": {
- "status": null,
- "log-traffic": null,
- "prefer-chunking": null,
- "port": null,
- "ssl": null,
- "tunnel-non-http": null,
- "byte-caching": null,
- "unknown-http-version": null,
- "secure-tunnel": null,
- "ssl-port": null,
- "tunnel-sharing": null
- },
- "cifs": {
- "status": "enable",
- "log-traffic": "enable",
- "byte-caching": "enable",
- "prefer-chunking": "dynamic",
- "port": 80,
- "tunnel-sharing": "private"
- },
- "adom": "root",
- "auth-group": null,
- "tcp": {
- "status": null,
- "log-traffic": null,
- "byte-caching-opt": null,
- "byte-caching": null,
- "ssl": null,
- "tunnel-sharing": null,
- "port": null,
- "ssl-port": null,
- "secure-tunnel": null
- },
- "transparent": "enable",
- "ftp": {
- "status": "enable",
- "log-traffic": "enable",
- "byte-caching": "enable",
- "prefer-chunking": "dynamic",
- "tunnel-sharing": "private",
- "port": 80,
- "secure-tunnel": "disable"
- },
- "name": "Ansible_WanOpt_Profile",
- "mapi": {
- "status": null,
- "log-traffic": null,
- "byte-caching": null,
- "secure-tunnel": null,
- "port": null,
- "tunnel-sharing": null
- },
- "comments": "Created by Ansible",
- "mode": "set"
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_web.json b/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_web.json
deleted file mode 100644
index b7e5e4c740..0000000000
--- a/test/units/modules/network/fortimanager/fixtures/test_fmgr_secprof_web.json
+++ /dev/null
@@ -1,146 +0,0 @@
-{
- "fmgr_webfilter_profile_modify": [
- {
- "raw_response": {
- "status": {
- "message": "OK",
- "code": 0
- },
- "url": "/pm/config/adom/root/obj/webfilter/profile"
- },
- "datagram_sent": {
- "comment": "Created by Ansible Module TEST",
- "web-extended-all-action-log": "enable",
- "web-filter-cookie-removal-log": "enable",
- "extended-log": "enable",
- "log-all-url": "enable",
- "wisp": "enable",
- "web-filter-vbs-log": "enable",
- "ovrd-perm": [
- "bannedword-override"
- ],
- "web-filter-command-block-log": "enable",
- "web-invalid-domain-log": "enable",
- "web-filter-referer-log": "enable",
- "inspection-mode": "proxy",
- "post-action": "block",
- "web-content-log": "enable",
- "web-filter-applet-log": "enable",
- "web-ftgd-err-log": "enable",
- "name": "Ansible_Web_Proxy_Profile",
- "web-filter-jscript-log": "enable",
- "web-filter-activex-log": "enable",
- "web-filter-js-log": "enable",
- "web-ftgd-quota-usage": "enable",
- "web-filter-unknown-log": "enable",
- "web-filter-cookie-log": "enable",
- "youtube-channel-status": "blacklist",
- "web-url-log": "enable",
- "options": [
- "js"
- ],
- "wisp-algorithm": "auto-learning"
- },
- "paramgram_used": {
- "comment": "Created by Ansible Module TEST",
- "web-filter-command-block-log": "enable",
- "web-invalid-domain-log": "enable",
- "web-extended-all-action-log": "enable",
- "adom": "root",
- "ftgd-wf": {
- "rate-javascript-urls": null,
- "quota": {
- "category": null,
- "value": null,
- "override-replacemsg": null,
- "duration": null,
- "type": null,
- "unit": null
- },
- "rate-image-urls": null,
- "filters": {
- "category": null,
- "auth-usr-grp": null,
- "log": null,
- "warning-prompt": null,
- "override-replacemsg": null,
- "action": null,
- "warn-duration": null,
- "warning-duration-type": null
- },
- "rate-css-urls": null,
- "ovrd": null,
- "exempt-quota": null,
- "max-quota-timeout": null,
- "rate-crl-urls": null,
- "options": null
- },
- "web-content-log": "enable",
- "web-filter-referer-log": "enable",
- "log-all-url": "enable",
- "extended-log": "enable",
- "inspection-mode": "proxy",
- "web-filter-cookie-removal-log": "enable",
- "post-action": "block",
- "web-filter-activex-log": "enable",
- "web-filter-cookie-log": "enable",
- "web": {
- "blacklist": null,
- "log-search": null,
- "keyword-match": null,
- "urlfilter-table": null,
- "bword-table": null,
- "safe-search": null,
- "whitelist": null,
- "content-header-list": null,
- "youtube-restrict": null,
- "bword-threshold": null
- },
- "web-filter-applet-log": "enable",
- "web-ftgd-err-log": "enable",
- "replacemsg-group": null,
- "web-filter-jscript-log": "enable",
- "web-ftgd-quota-usage": "enable",
- "url-extraction": {
- "status": null,
- "server-fqdn": null,
- "redirect-url": null,
- "redirect-header": null,
- "redirect-no-content": null
- },
- "web-filter-js-log": "enable",
- "youtube-channel-filter": {
- "comment": null,
- "channel-id": null
- },
- "name": "Ansible_Web_Proxy_Profile",
- "wisp": "enable",
- "web-filter-vbs-log": "enable",
- "web-filter-unknown-log": "enable",
- "mode": "set",
- "youtube-channel-status": "blacklist",
- "override": {
- "profile": null,
- "ovrd-user-group": null,
- "ovrd-scope": null,
- "ovrd-cookie": null,
- "ovrd-dur-mode": null,
- "profile-attribute": null,
- "ovrd-dur": null,
- "profile-type": null
- },
- "web-url-log": "enable",
- "ovrd-perm": [
- "bannedword-override"
- ],
- "https-replacemsg": null,
- "options": [
- "js"
- ],
- "wisp-servers": null,
- "wisp-algorithm": "auto-learning"
- },
- "post_method": "set"
- }
- ]
-}
diff --git a/test/units/modules/network/fortimanager/fortimanager_module.py b/test/units/modules/network/fortimanager/fortimanager_module.py
deleted file mode 100644
index b9f424ee11..0000000000
--- a/test/units/modules/network/fortimanager/fortimanager_module.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-class TestFortimanagerModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/fortimanager/test_fmgr_device.py b/test/units/modules/network/fortimanager/test_fmgr_device.py
deleted file mode 100644
index 64f9b3765c..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_device.py
+++ /dev/null
@@ -1,272 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_device
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_device.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_discover_device(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.151
- # device_unique_name: FGT1
- # mode: exec
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.152
- # device_unique_name: FGT2
- # mode: exec
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.153
- # device_unique_name: FGT3
- # mode: exec
- # device_serial: None
- # device_password: fortinet
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device.discover_device(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 2 #
- output = fmgr_device.discover_device(fmg_instance, fixture_data[1]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 3 #
- output = fmgr_device.discover_device(fmg_instance, fixture_data[2]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
-
-
-def test_add_device(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.151
- # device_unique_name: FGT1
- # mode: exec
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.152
- # device_unique_name: FGT2
- # mode: exec
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.153
- # device_unique_name: FGT3
- # mode: exec
- # device_serial: None
- # device_password: fortinet
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device.add_device(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 2 #
- output = fmgr_device.add_device(fmg_instance, fixture_data[1]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 3 #
- output = fmgr_device.add_device(fmg_instance, fixture_data[2]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
-
-
-def test_delete_device(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # device_username: admin
- # adom: root
- # device_ip: 10.7.220.151
- # device_unique_name: FGT1
- # mode: exec
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.152
- # device_unique_name: FGT2
- # mode: exec
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.153
- # device_unique_name: FGT3
- # mode: exec
- # device_serial: None
- # device_password: fortinet
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device.delete_device(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_device.delete_device(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_device.delete_device(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_get_device(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.151
- # device_unique_name: FGT1
- # mode: get
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.152
- # device_unique_name: FGT2
- # mode: get
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.153
- # device_unique_name: FGT3
- # mode: get
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.151
- # device_unique_name: FGT1
- # mode: get
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.152
- # device_unique_name: FGT2
- # mode: get
- # device_serial: None
- # device_password: fortinet
- ##################################################
- ##################################################
- # device_username: admin
- # adom: ansible
- # device_ip: 10.7.220.153
- # device_unique_name: FGT3
- # mode: get
- # device_serial: None
- # device_password: fortinet
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device.get_device(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 2 #
- output = fmgr_device.get_device(fmg_instance, fixture_data[1]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 3 #
- output = fmgr_device.get_device(fmg_instance, fixture_data[2]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 4 #
- output = fmgr_device.get_device(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 5 #
- output = fmgr_device.get_device(fmg_instance, fixture_data[4]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 6 #
- output = fmgr_device.get_device(fmg_instance, fixture_data[5]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
diff --git a/test/units/modules/network/fortimanager/test_fmgr_device_config.py b/test/units/modules/network/fortimanager/test_fmgr_device_config.py
deleted file mode 100644
index ade2e1199f..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_device_config.py
+++ /dev/null
@@ -1,188 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_device_config
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_device_config.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_update_device_hostname(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # adom: ansible
- # interface: None
- # device_unique_name: FGT1
- # install_config: disable
- # device_hostname: ansible-fgt01
- # interface_ip: None
- # interface_allow_access: None
- # mode: update
- ##################################################
- ##################################################
- # adom: ansible
- # interface: None
- # device_unique_name: FGT2
- # install_config: disable
- # device_hostname: ansible-fgt02
- # interface_ip: None
- # interface_allow_access: None
- # mode: update
- ##################################################
- ##################################################
- # adom: ansible
- # interface: None
- # device_unique_name: FGT3
- # install_config: disable
- # device_hostname: ansible-fgt03
- # interface_ip: None
- # interface_allow_access: None
- # mode: update
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_config.update_device_hostname(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_device_config.update_device_hostname(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_device_config.update_device_hostname(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_update_device_interface(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # adom: ansible
- # install_config: disable
- # device_unique_name: FGT1
- # interface: port2
- # device_hostname: None
- # interface_ip: 10.1.1.1/24
- # interface_allow_access: ping, telnet, https, http
- # mode: update
- ##################################################
- ##################################################
- # adom: ansible
- # install_config: disable
- # device_unique_name: FGT2
- # interface: port2
- # device_hostname: None
- # interface_ip: 10.1.2.1/24
- # interface_allow_access: ping, telnet, https, http
- # mode: update
- ##################################################
- ##################################################
- # adom: ansible
- # install_config: disable
- # device_unique_name: FGT3
- # interface: port2
- # device_hostname: None
- # interface_ip: 10.1.3.1/24
- # interface_allow_access: ping, telnet, https, http
- # mode: update
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_config.update_device_interface(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_device_config.update_device_interface(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_device_config.update_device_interface(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_exec_config(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # adom: ansible
- # interface: None
- # device_unique_name: FGT1
- # install_config: enable
- # device_hostname: None
- # interface_ip: None
- # interface_allow_access: None
- # mode: exec
- ##################################################
- ##################################################
- # adom: ansible
- # install_config: enable
- # device_unique_name: FGT2, FGT3
- # interface: None
- # device_hostname: None
- # interface_ip: None
- # interface_allow_access: None
- # mode: exec
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_config.exec_config(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 2 #
- output = fmgr_device_config.exec_config(fmg_instance, fixture_data[1]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
diff --git a/test/units/modules/network/fortimanager/test_fmgr_device_group.py b/test/units/modules/network/fortimanager/test_fmgr_device_group.py
deleted file mode 100644
index 3c6d876909..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_device_group.py
+++ /dev/null
@@ -1,202 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_device_group
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_device_group.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_add_device_group(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # grp_desc: CreatedbyAnsible
- # adom: ansible
- # grp_members: None
- # mode: add
- # grp_name: TestGroup
- # vdom: root
- ##################################################
- ##################################################
- # grp_desc: CreatedbyAnsible
- # adom: ansible
- # grp_members: None
- # mode: add
- # grp_name: testtest
- # vdom: root
- ##################################################
- ##################################################
- # grp_desc: None
- # adom: ansible
- # grp_members: FGT1
- # mode: add
- # grp_name: TestGroup
- # vdom: root
- ##################################################
- ##################################################
- # grp_desc: None
- # adom: ansible
- # grp_members: FGT3
- # mode: add
- # grp_name: testtest
- # vdom: root
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_group.add_device_group(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -2
- # Test using fixture 2 #
- output = fmgr_device_group.add_device_group(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_device_group.add_device_group(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -2
- # Test using fixture 4 #
- output = fmgr_device_group.add_device_group(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -2
-
-
-def test_delete_device_group(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # grp_desc: CreatedbyAnsible
- # adom: ansible
- # grp_members: None
- # mode: delete
- # grp_name: TestGroup
- # vdom: root
- ##################################################
- ##################################################
- # grp_desc: CreatedbyAnsible
- # adom: ansible
- # grp_members: None
- # mode: delete
- # grp_name: testtest
- # vdom: root
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_group.delete_device_group(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_device_group.delete_device_group(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_add_group_member(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # grp_desc: None
- # adom: ansible
- # grp_members: FGT1
- # mode: add
- # grp_name: TestGroup
- # vdom: root
- ##################################################
- ##################################################
- # grp_desc: None
- # adom: ansible
- # grp_members: FGT3
- # mode: add
- # grp_name: testtest
- # vdom: root
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_group.add_group_member(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_device_group.add_group_member(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_delete_group_member(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # grp_desc: None
- # adom: ansible
- # grp_members: FGT3
- # mode: delete
- # grp_name: testtest
- # vdom: root
- ##################################################
- ##################################################
- # grp_desc: None
- # adom: ansible
- # grp_members: FGT1
- # mode: delete
- # grp_name: TestGroup
- # vdom: root
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_group.delete_group_member(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_device_group.delete_group_member(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_device_provision_template.py b/test/units/modules/network/fortimanager/test_fmgr_device_provision_template.py
deleted file mode 100644
index 4a58a67b44..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_device_provision_template.py
+++ /dev/null
@@ -1,1759 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_device_provision_template
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.'
- 'fmgr_device_provision_template.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_get_devprof(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: enable
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # ntp_auth: None
- # snmp_v2c_id: None
- # admin_http_port: None
- # ntp_v3: None
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # provision_targets: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: get
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_https_redirect: None
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: kernel
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: 514
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: 10.7.220.59
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_replyto: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: enable
- # admin_fortianalyzer_target: None
- # ntp_auth: None
- # snmp_v2c_id: None
- # admin_http_port: None
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: critical
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # snmp_v2c_trap_hosts_ipv4: None
- # provision_targets: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: get
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # ntp_v3: None
- # admin_https_redirect: None
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: enable
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: ansibleV2c
- # syslog_facility: syslog
- # snmp_v2c_status: enable
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: 10.7.220.41
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: 162
- # snmp_v2c_trap_status: enable
- # snmp_status: enable
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # ntp_auth: None
- # snmp_v2c_id: 1
- # admin_http_port: None
- # ntp_v3: None
- # snmp_v2c_query_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0
- # ntp_sync_interval: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # provision_targets: None
- # snmp_v2c_trap_port: 161
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: get
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255
- # admin_https_redirect: None
- ##################################################
- ##################################################
- # snmpv3_security_level: auth-priv
- # snmp_v2c_query_status: None
- # provision_targets: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: enable
- # snmpv3_trap_status: enable
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: ansibleSNMPv3
- # snmp_v2c_id: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: sha
- # smtp_port: None
- # snmpv3_priv_pwd: fortinet
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: None
- # mode: get
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: 161
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: 10.7.220.59,10.7.220.60
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: enable
- # syslog_status: None
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: None
- # dns_secondary_ipv4: None
- # syslog_filter: None
- # snmpv3_source_ip: 0.0.0.0
- # snmpv3_trap_rport: 162
- # admin_gui_theme: None
- # ntp_sync_interval: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # ntp_v3: None
- # ntp_auth: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: aes256
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: None
- # admin_language: None
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: fortinet
- # smtp_source_ipv4: None
- # snmpv3_status: enable
- # delete_provisioning_template: None
- # smtp_replyto: None
- # admin_https_redirect: None
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # ntp_type: fortiguard
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: enable
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_replyto: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # ntp_auth: None
- # snmp_v2c_id: None
- # admin_http_port: None
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: 60
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # snmp_v2c_trap_hosts_ipv4: None
- # provision_targets: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: get
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # ntp_v3: None
- # admin_https_redirect: None
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # ntp_type: custom
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: None
- # ntp_server: 10.7.220.32,10.7.220.1
- # admin_https_port: None
- # ntp_status: enable
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # ntp_auth: enable
- # snmp_v2c_id: None
- # admin_http_port: None
- # ntp_v3: None
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: 60
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: fortinet
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # provision_targets: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: get
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_https_redirect: None
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: 4433
- # ntp_status: None
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: 60
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_replyto: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_fortianalyzer_target: 10.7.220.38
- # ntp_auth: None
- # snmp_v2c_id: None
- # admin_http_port: 8080
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: blue
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # snmp_v2c_trap_hosts_ipv4: None
- # provision_targets: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: this-fmg
- # admin_switch_controller: enable
- # admin_language: english
- # smtp_conn_sec: None
- # mode: get
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # ntp_v3: None
- # admin_https_redirect: enable
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: disable
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: 25
- # snmpv3_priv_pwd: None
- # smtp_server: 10.7.220.32
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_username: ansible
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: fortinet
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # ntp_auth: None
- # snmp_v2c_id: None
- # admin_http_port: None
- # ntp_v3: None
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: ansible@do-not-reply.com
- # provision_targets: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: starttls
- # mode: get
- # smtp_source_ipv4: 0.0.0.0
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_https_redirect: None
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # ntp_type: None
- # dns_suffix: ansible.local
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # dns_primary_ipv4: 8.8.8.8
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: 4.4.4.4
- # smtp_replyto: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # ntp_auth: None
- # snmp_v2c_id: None
- # admin_http_port: None
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # snmp_v2c_trap_hosts_ipv4: None
- # provision_targets: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: get
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # ntp_v3: None
- # admin_https_redirect: None
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # ntp_auth: None
- # snmp_v2c_id: None
- # admin_http_port: None
- # ntp_v3: None
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # provision_targets: FGT1,FGT2
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: get
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_https_redirect: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 2 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[1]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 3 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[2]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 4 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[3]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 5 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[4]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 6 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[5]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 7 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[6]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 8 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[7]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 9 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[8]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 10 #
- output = fmgr_device_provision_template.get_devprof(fmg_instance, fixture_data[9]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
-
-
-def test_set_devprof(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # smtp_port: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # ntp_auth: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_replyto: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_id: None
- # admin_http_port: None
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # provision_targets: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: delete
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: ansibleTest
- # ntp_v3: None
- # admin_https_redirect: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_set_devprof_scope(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # provision_targets: FGT1,FGT2
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_id: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: None
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_https_redirect: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: None
- # dns_secondary_ipv4: None
- # syslog_filter: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # ntp_sync_interval: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # ntp_auth: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: None
- # admin_language: None
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: None
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # ntp_v3: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof_scope(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_set_devprof_snmp(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # provision_targets: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_id: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: None
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: enable
- # syslog_status: None
- # admin_https_redirect: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: None
- # dns_secondary_ipv4: None
- # syslog_filter: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # ntp_sync_interval: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # ntp_auth: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: None
- # admin_language: None
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: None
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # ntp_v3: None
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: enable
- # provision_targets: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: ansibleV2c
- # syslog_facility: syslog
- # snmp_v2c_status: enable
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_id: 1
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0
- # smtp_username: None
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: 162
- # snmp_v2c_trap_status: enable
- # snmp_status: enable
- # syslog_status: None
- # admin_https_redirect: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: 10.7.220.41
- # admin_http_port: None
- # dns_secondary_ipv4: None
- # syslog_filter: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # ntp_sync_interval: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # ntp_auth: None
- # snmp_v2c_trap_port: 161
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: None
- # admin_language: None
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: None
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255
- # ntp_v3: None
- ##################################################
- ##################################################
- # snmpv3_security_level: auth-priv
- # snmp_v2c_query_status: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: enable
- # snmpv3_trap_status: enable
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: ansibleSNMPv3
- # snmp_v2c_trap_src_ipv4: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: sha
- # smtp_port: None
- # snmpv3_priv_pwd: fortinet
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_username: None
- # snmpv3_auth_pwd: fortinet
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: 161
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: 10.7.220.59,10.7.220.60
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: enable
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # ntp_auth: None
- # snmp_v2c_id: None
- # admin_http_port: None
- # ntp_v3: None
- # snmp_v2c_query_hosts_ipv4: None
- # ntp_sync_interval: None
- # snmpv3_source_ip: 0.0.0.0
- # snmpv3_trap_rport: 162
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # provision_targets: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: aes256
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: set
- # smtp_source_ipv4: None
- # snmpv3_status: enable
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_https_redirect: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof_snmp(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_device_provision_template.set_devprof_snmp(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_device_provision_template.set_devprof_snmp(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_set_devprof_snmp_v2c(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: enable
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: ansibleV2c
- # syslog_facility: syslog
- # snmp_v2c_status: enable
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_trap_src_ipv4: 10.7.220.41
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # dns_primary_ipv4: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # dns_secondary_ipv4: None
- # smtp_replyto: None
- # smtp_username: None
- # snmpv3_auth_pwd: None
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: 162
- # snmp_v2c_trap_status: enable
- # snmp_status: enable
- # syslog_status: None
- # admin_fortianalyzer_target: None
- # ntp_auth: None
- # snmp_v2c_id: 1
- # admin_http_port: None
- # snmp_v2c_query_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.0 255.255.255.0
- # ntp_sync_interval: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # syslog_filter: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # snmp_v2c_trap_hosts_ipv4: 10.7.220.59 255.255.255.255, 10.7.220.60 255.255.255.255
- # provision_targets: None
- # snmp_v2c_trap_port: 161
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # admin_switch_controller: None
- # admin_language: None
- # smtp_conn_sec: None
- # mode: set
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # ntp_v3: None
- # admin_https_redirect: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof_snmp_v2c(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
-
-
-def test_set_devprof_snmp_v3(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: auth-priv
- # snmp_v2c_query_status: None
- # provision_targets: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: enable
- # snmpv3_trap_status: enable
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: ansibleSNMPv3
- # snmp_v2c_id: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: sha
- # smtp_port: None
- # snmpv3_priv_pwd: fortinet
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: None
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: 161
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: 10.7.220.59,10.7.220.60
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: enable
- # syslog_status: None
- # admin_https_redirect: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: None
- # dns_secondary_ipv4: None
- # syslog_filter: None
- # snmpv3_source_ip: 0.0.0.0
- # snmpv3_trap_rport: 162
- # admin_gui_theme: None
- # ntp_sync_interval: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # ntp_auth: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: aes256
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: None
- # admin_language: None
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: fortinet
- # smtp_source_ipv4: None
- # snmpv3_status: enable
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # ntp_v3: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof_snmp_v3(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_set_devprof_syslog(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # provision_targets: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: kernel
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_id: None
- # syslog_port: 514
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: 10.7.220.59
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: None
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: enable
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: None
- # dns_secondary_ipv4: None
- # syslog_filter: critical
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # ntp_sync_interval: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # ntp_v3: None
- # ntp_auth: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: None
- # admin_language: None
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: None
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # smtp_replyto: None
- # admin_https_redirect: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof_syslog(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_set_devprof_ntp(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # provision_targets: None
- # ntp_type: fortiguard
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_id: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: enable
- # syslog_server: None
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: None
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: None
- # dns_secondary_ipv4: None
- # syslog_filter: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # ntp_sync_interval: 60
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # ntp_v3: None
- # ntp_auth: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: None
- # admin_language: None
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: None
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # smtp_replyto: None
- # admin_https_redirect: None
- ##################################################
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # provision_targets: None
- # ntp_type: custom
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_id: None
- # syslog_port: None
- # ntp_server: 10.7.220.32,10.7.220.1
- # admin_https_port: None
- # ntp_status: enable
- # syslog_server: None
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: None
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_https_redirect: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: None
- # dns_secondary_ipv4: None
- # syslog_filter: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # ntp_sync_interval: 60
- # ntp_auth_pwd: fortinet
- # provisioning_template: ansibleTest
- # smtp_replyto: None
- # ntp_auth: enable
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: None
- # admin_language: None
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: None
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # ntp_v3: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof_ntp(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_device_provision_template.set_devprof_ntp(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_set_devprof_admin(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # provision_targets: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_id: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: 4433
- # ntp_status: None
- # syslog_server: None
- # admin_switch_controller: enable
- # admin_timeout: 60
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: None
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_fortianalyzer_target: 10.7.220.38
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: 8080
- # dns_secondary_ipv4: None
- # syslog_filter: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: blue
- # ntp_sync_interval: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # ntp_v3: None
- # ntp_auth: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: this-fmg
- # dns_primary_ipv4: None
- # admin_language: english
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: None
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # smtp_replyto: None
- # admin_https_redirect: enable
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof_admin(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_set_devprof_smtp(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # provision_targets: None
- # ntp_type: None
- # dns_suffix: None
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: disable
- # snmpv3_name: None
- # snmp_v2c_id: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: 25
- # snmpv3_priv_pwd: None
- # smtp_server: 10.7.220.32
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: ansible
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: fortinet
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # admin_https_redirect: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: None
- # dns_secondary_ipv4: None
- # syslog_filter: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # ntp_sync_interval: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # smtp_replyto: ansible@do-not-reply.com
- # ntp_auth: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: None
- # admin_language: None
- # smtp_conn_sec: starttls
- # snmpv3_auth_pwd: None
- # smtp_source_ipv4: 0.0.0.0
- # snmpv3_status: None
- # delete_provisioning_template: None
- # snmp_v2c_trap_hosts_ipv4: None
- # ntp_v3: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof_smtp(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_set_devprof_dns(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # snmpv3_security_level: None
- # snmp_v2c_query_status: None
- # provision_targets: None
- # ntp_type: None
- # dns_suffix: ansible.local
- # snmpv3_queries: None
- # snmpv3_trap_status: None
- # snmp_v2c_name: None
- # syslog_facility: syslog
- # snmp_v2c_status: None
- # smtp_validate_cert: None
- # snmpv3_name: None
- # snmp_v2c_id: None
- # syslog_port: None
- # ntp_server: None
- # admin_https_port: None
- # ntp_status: None
- # syslog_server: None
- # admin_switch_controller: None
- # admin_timeout: None
- # snmpv3_auth_proto: None
- # smtp_port: None
- # snmpv3_priv_pwd: None
- # smtp_server: None
- # syslog_enc_algorithm: disable
- # snmp_v2c_query_hosts_ipv4: None
- # smtp_username: None
- # mode: set
- # syslog_certificate: None
- # admin_fortiguard_target: None
- # snmpv3_query_port: None
- # smtp_password: None
- # adom: ansible
- # snmpv3_notify_hosts: None
- # syslog_mode: udp
- # snmp_v2c_query_port: None
- # snmp_v2c_trap_status: None
- # snmp_status: None
- # syslog_status: None
- # snmp_v2c_trap_hosts_ipv4: None
- # admin_fortianalyzer_target: None
- # snmp_v2c_trap_src_ipv4: None
- # admin_http_port: None
- # dns_secondary_ipv4: 4.4.4.4
- # syslog_filter: None
- # snmpv3_source_ip: None
- # snmpv3_trap_rport: None
- # admin_gui_theme: None
- # ntp_sync_interval: None
- # ntp_auth_pwd: None
- # provisioning_template: ansibleTest
- # ntp_v3: None
- # ntp_auth: None
- # snmp_v2c_trap_port: None
- # snmpv3_priv_proto: None
- # admin_enable_fortiguard: None
- # dns_primary_ipv4: 8.8.8.8
- # admin_language: None
- # smtp_conn_sec: None
- # snmpv3_auth_pwd: None
- # smtp_source_ipv4: None
- # snmpv3_status: None
- # delete_provisioning_template: None
- # smtp_replyto: None
- # admin_https_redirect: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_device_provision_template.set_devprof_dns(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_address.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_address.py
deleted file mode 100644
index cb37dabeed..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_address.py
+++ /dev/null
@@ -1,156 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_fwobj_address
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_address.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_fwobj_ipv4(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 2 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 5 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[4]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 6 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[5]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 7 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[6]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 8 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[7]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 9 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[8]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 10 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[9]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 11 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[10]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 12 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[11]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 13 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[12]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 14 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[13]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 15 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[14]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 16 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[15]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 17 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[16]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 18 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv4(fmg_instance, fixture_data[17]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_fmgr_fwobj_ipv6(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 2 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 3 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 5 #
- output = fmgr_fwobj_address.fmgr_fwobj_ipv6(fmg_instance, fixture_data[4]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -10131
-
-
-def test_fmgr_fwobj_multicast(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwobj_address.fmgr_fwobj_multicast(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_fwobj_address.fmgr_fwobj_multicast(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_fwobj_address.fmgr_fwobj_multicast(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool.py
deleted file mode 100644
index 6edd046711..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_fwobj_ippool
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_ippool.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_fwobj_ippool_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 5 #
- output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[4]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 6 #
- output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[5]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 7 #
- output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[6]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 8 #
- output = fmgr_fwobj_ippool.fmgr_fwobj_ippool_modify(fmg_instance, fixture_data[7]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool6.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool6.py
deleted file mode 100644
index eab1cfd1c8..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_ippool6.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_fwobj_ippool6
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_ippool6.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_fwobj_ippool6_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwobj_ippool6.fmgr_fwobj_ippool6_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_fwobj_ippool6.fmgr_fwobj_ippool6_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_service.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_service.py
deleted file mode 100644
index 85bfcc2f53..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_service.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_fwobj_service
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_service.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_fwobj_service_custom(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 5 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[4]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 6 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[5]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 7 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[6]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 8 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[7]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 9 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[8]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 10 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[9]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 11 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[10]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 12 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_custom(fmg_instance, fixture_data[11]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_fmgr_fwobj_service_group(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_group(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 2 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_group(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -10131
-
-
-def test_fmgr_fwobj_service_category(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwobj_service.fmgr_fwobj_service_category(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -2
diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwobj_vip.py b/test/units/modules/network/fortimanager/test_fmgr_fwobj_vip.py
deleted file mode 100644
index 09e36d2edc..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_fwobj_vip.py
+++ /dev/null
@@ -1,785 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_fwobj_vip
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwobj_vip.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_firewall_vip_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # comment: Created by Ansible
- # ssl-send-empty-frags: None
- # srcintf-filter: None
- # ssl-max-version: None
- # ssl-server-session-state-max: None
- # ssl-hpkp: None
- # mapped-addr: None
- # ssl-client-session-state-timeout: None
- # src-filter: None
- # server-type: None
- # ssl-hpkp-include-subdomains: None
- # ssl-http-location-conversion: None
- # https-cookie-secure: None
- # mappedip: 10.7.220.25
- # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None}
- # protocol: tcp
- # ssl-hpkp-backup: None
- # ssl-dh-bits: None
- # dns-mapping-ttl: None
- # ssl-hsts-age: None
- # extaddr: None
- # ssl-client-renegotiation: None
- # monitor: None
- # service: None
- # ssl-hpkp-age: None
- # http-cookie-age: None
- # weblogic-server: None
- # http-cookie-share: None
- # color: 17
- # ssl-mode: None
- # portforward: enable
- # http-multiplex: None
- # http-cookie-generation: None
- # ssl-client-fallback: None
- # extip: 82.72.192.185
- # extintf: any
- # persistence: None
- # websphere-server: None
- # nat-source-vip: None
- # portmapping-type: None
-
- # adom: ansible
- # ssl-client-session-state-max: None
- # http-ip-header: None
- # http-ip-header-name: None
- # ssl-certificate: None
- # ssl-hsts: None
- # arp-reply: None
- # ssl-hsts-include-subdomains: None
- # ssl-min-version: None
- # ldb-method: None
- # ssl-server-session-state-timeout: None
- # ssl-server-min-version: None
- # http-cookie-domain: None
- # mappedport: 443
- # name: Basic PNAT Map Port 10443
- # ssl-cipher-suites: {'cipher': None, 'versions': None}
- # ssl-hpkp-primary: None
- # outlook-web-access: None
- # ssl-server-session-state-type: None
- # ssl-client-session-state-type: None
-
- # ssl-http-match-host: None
-
- # ssl-server-max-version: None
- # ssl-hpkp-report-uri: None
- # http-cookie-domain-from-host: None
- # ssl-algorithm: None
- # gratuitous-arp-interval: None
- # extport: 10443
- # max-embryonic-connections: None
- # mode: set
- # http-cookie-path: None
- # ssl-pfs: None
- # ssl-server-algorithm: None
- ##################################################
- ##################################################
- # comment: Created by Ansible
- # ssl-send-empty-frags: None
- # srcintf-filter: None
- # ssl-max-version: None
- # ssl-server-session-state-max: None
- # ssl-hpkp: None
- # ssl-hsts-include-subdomains: None
- # mapped-addr: None
- # src-filter: None
- # server-type: None
- # mode: set
- # ssl-hpkp-include-subdomains: None
- # ssl-http-location-conversion: None
- # https-cookie-secure: None
- # mappedip: 3.3.3.0/24, 4.0.0.0/24
- # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None}
- # protocol: None
- # ssl-hpkp-backup: None
- # ssl-dh-bits: None
- # dns-mapping-ttl: None
- # ssl-hsts-age: None
- # ssl-client-renegotiation: None
- # monitor: None
- # service: None
- # ssl-hpkp-age: None
- # http-cookie-age: None
- # adom: ansible
- # http-cookie-share: None
- # ssl-server-session-state-timeout: None
- # color: 12
- # ssl-mode: None
- # portforward: None
- # http-cookie-generation: None
- # max-embryonic-connections: None
- # ssl-client-fallback: None
- # ssl-hpkp-report-uri: None
- # extip: 192.168.0.1-192.168.0.100
- # extintf: dmz
- # persistence: None
- # websphere-server: None
- # nat-source-vip: None
- # portmapping-type: None
- # http-ip-header-name: None
- # weblogic-server: None
- # ssl-client-session-state-max: None
- # http-ip-header: None
-
- # ssl-hsts: None
- # arp-reply: None
- # extaddr: None
- # ssl-min-version: None
- # ldb-method: None
- # ssl-certificate: None
- # ssl-server-min-version: None
- # http-cookie-domain: None
- # mappedport: None
- # outlook-web-access: None
- # ssl-cipher-suites: {'cipher': None, 'versions': None}
- # ssl-hpkp-primary: None
- # name: Basic DNS Translation
- # ssl-server-session-state-type: None
- # ssl-client-session-state-type: None
-
- # ssl-http-match-host: None
-
- # ssl-pfs: None
- # ssl-server-max-version: None
- # ssl-client-session-state-timeout: None
- # http-cookie-domain-from-host: None
- # extport: None
- # ssl-server-algorithm: None
- # gratuitous-arp-interval: None
- # http-cookie-path: None
- # ssl-algorithm: None
- # http-multiplex: None
- ##################################################
- ##################################################
- # comment: Created by Ansible
- # ssl-send-empty-frags: None
- # srcintf-filter: None
- # ssl-max-version: None
- # ssl-server-session-state-max: None
- # ssl-hpkp: None
- # mapped-addr: google-play
- # ssl-client-session-state-timeout: None
- # src-filter: None
- # ldb-method: None
- # server-type: None
- # ssl-hpkp-include-subdomains: None
- # ssl-client-renegotiation: None
- # ssl-http-location-conversion: None
- # https-cookie-secure: None
- # mappedip: None
- # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None}
- # protocol: None
- # ssl-hpkp-backup: None
- # ssl-dh-bits: None
- # dns-mapping-ttl: None
- # ssl-hsts-age: None
- # extaddr: None
- # monitor: None
- # service: None
- # ssl-hpkp-age: None
- # http-cookie-age: None
- # weblogic-server: None
- # http-cookie-share: None
- # color: 5
- # ssl-mode: None
- # portforward: None
- # http-cookie-generation: None
- # ssl-client-fallback: None
- # extip: None
- # extintf: None
- # persistence: None
- # websphere-server: None
- # nat-source-vip: None
- # portmapping-type: None
-
- # adom: ansible
- # ssl-client-session-state-max: None
- # http-ip-header: None
- # http-ip-header-name: None
- # ssl-certificate: None
- # ssl-hsts: None
- # arp-reply: None
- # extport: None
- # ssl-min-version: None
- # ssl-server-algorithm: None
- # ssl-server-session-state-timeout: None
- # ssl-server-min-version: None
- # http-cookie-domain: None
- # mappedport: None
- # name: Basic FQDN Translation
- # ssl-cipher-suites: {'cipher': None, 'versions': None}
- # ssl-hpkp-primary: None
- # outlook-web-access: None
- # ssl-server-session-state-type: None
- # ssl-client-session-state-type: None
-
- # ssl-http-match-host: None
-
- # ssl-server-max-version: None
- # ssl-hpkp-report-uri: None
- # http-cookie-domain-from-host: None
- # ssl-algorithm: None
- # gratuitous-arp-interval: None
- # ssl-hsts-include-subdomains: None
- # max-embryonic-connections: None
- # mode: set
- # http-cookie-path: None
- # ssl-pfs: None
- # http-multiplex: None
- ##################################################
- ##################################################
- # comment: Created by Ansible
- # ssl-send-empty-frags: None
- # srcintf-filter: None
- # ssl-max-version: None
- # ssl-server-session-state-max: None
- # ssl-hpkp: None
- # mapped-addr: None
- # src-filter: None
- # server-type: None
- # mode: set
- # ssl-hpkp-include-subdomains: None
- # extport: None
- # ssl-http-location-conversion: None
- # https-cookie-secure: None
- # mappedip: 10.7.220.25
- # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None}
- # protocol: None
- # ssl-hpkp-backup: None
- # ssl-dh-bits: None
- # dns-mapping-ttl: None
- # ssl-hsts-age: None
- # ssl-server-algorithm: None
- # extaddr: None
- # monitor: None
- # service: None
- # ssl-hpkp-age: None
- # http-cookie-age: None
- # adom: ansible
- # http-cookie-share: None
- # ssl-server-session-state-timeout: None
- # color: 17
- # ssl-mode: None
- # portforward: None
- # http-cookie-generation: None
- # max-embryonic-connections: None
- # ssl-client-fallback: None
- # ssl-hpkp-report-uri: None
- # extip: 82.72.192.185
- # extintf: any
- # persistence: None
- # websphere-server: None
- # nat-source-vip: None
- # portmapping-type: None
- # http-ip-header-name: None
- # weblogic-server: None
- # ssl-client-session-state-max: None
- # http-ip-header: None
-
- # ssl-hsts: None
- # arp-reply: None
- # ssl-client-renegotiation: None
- # ssl-min-version: None
- # ldb-method: None
- # ssl-certificate: None
- # ssl-server-min-version: None
- # http-cookie-domain: None
- # mappedport: None
- # outlook-web-access: None
- # ssl-cipher-suites: {'cipher': None, 'versions': None}
- # ssl-hpkp-primary: None
- # name: Basic StaticNAT Map
- # ssl-server-session-state-type: None
- # ssl-client-session-state-type: None
-
- # ssl-http-match-host: None
-
- # ssl-pfs: None
- # ssl-client-session-state-timeout: None
- # http-cookie-domain-from-host: None
- # ssl-hsts-include-subdomains: None
- # ssl-server-max-version: None
- # gratuitous-arp-interval: None
- # http-cookie-path: None
- # ssl-algorithm: None
- # http-multiplex: None
- ##################################################
- ##################################################
- # comment: Created by Ansible
- # ssl-send-empty-frags: None
- # srcintf-filter: None
- # ssl-max-version: None
- # ssl-server-session-state-max: None
- # ssl-hpkp: None
- # mapped-addr: None
- # ssl-client-session-state-timeout: None
- # src-filter: None
- # server-type: None
- # ssl-hpkp-include-subdomains: None
- # ssl-client-renegotiation: None
- # ssl-http-location-conversion: None
- # https-cookie-secure: None
- # mappedip: 10.7.220.25
- # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None}
- # protocol: tcp
- # ssl-hpkp-backup: None
- # ssl-dh-bits: None
- # dns-mapping-ttl: None
- # ssl-hsts-age: None
- # extaddr: None
- # monitor: None
- # service: None
- # ssl-hpkp-age: None
- # http-cookie-age: None
- # weblogic-server: None
- # http-cookie-share: None
- # color: 17
- # ssl-mode: None
- # portforward: enable
- # http-cookie-generation: None
- # ssl-client-fallback: None
- # extip: 82.72.192.185
- # extintf: any
- # persistence: None
- # websphere-server: None
- # nat-source-vip: None
- # portmapping-type: None
-
- # adom: ansible
- # ssl-client-session-state-max: None
- # http-ip-header: None
- # http-ip-header-name: None
- # ssl-min-version: None
- # ssl-certificate: None
- # ssl-hsts: None
- # arp-reply: None
- # ssl-hsts-include-subdomains: None
- # http-multiplex: None
- # ldb-method: None
- # ssl-server-session-state-timeout: None
- # ssl-server-min-version: None
- # http-cookie-domain: None
- # mappedport: 443
- # name: Basic PNAT Map Port 10443
- # ssl-cipher-suites: {'cipher': None, 'versions': None}
- # ssl-hpkp-primary: None
- # outlook-web-access: None
- # ssl-server-session-state-type: None
- # ssl-client-session-state-type: None
-
- # ssl-http-match-host: None
-
- # ssl-server-max-version: None
- # ssl-hpkp-report-uri: None
- # http-cookie-domain-from-host: None
- # ssl-algorithm: None
- # gratuitous-arp-interval: None
- # extport: 10443
- # max-embryonic-connections: None
- # mode: set
- # http-cookie-path: None
- # ssl-pfs: None
- # ssl-server-algorithm: None
- ##################################################
- ##################################################
- # comment: None
- # ssl-send-empty-frags: None
- # srcintf-filter: None
- # ssl-max-version: None
- # ssl-server-session-state-max: None
- # ssl-hpkp: None
- # ssl-hsts-include-subdomains: None
- # mapped-addr: None
- # src-filter: None
- # server-type: None
- # mode: delete
- # ssl-hpkp-include-subdomains: None
- # ssl-http-location-conversion: None
- # https-cookie-secure: None
- # mappedip: None
- # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None}
- # protocol: None
- # ssl-hpkp-backup: None
- # ssl-dh-bits: None
- # dns-mapping-ttl: None
- # ssl-hsts-age: None
- # extaddr: None
- # monitor: None
- # service: None
- # ssl-hpkp-age: None
- # http-cookie-age: None
- # adom: ansible
- # http-cookie-share: None
- # ssl-server-session-state-timeout: None
- # color: None
- # ssl-mode: None
- # portforward: None
- # http-cookie-generation: None
- # max-embryonic-connections: None
- # ssl-client-fallback: None
- # ssl-hpkp-report-uri: None
- # extip: None
- # extintf: None
- # persistence: None
- # websphere-server: None
- # nat-source-vip: None
- # portmapping-type: None
- # http-ip-header-name: None
- # weblogic-server: None
- # ssl-client-session-state-max: None
- # http-ip-header: None
-
- # ssl-hsts: None
- # arp-reply: None
- # ssl-client-renegotiation: None
- # http-multiplex: None
- # ldb-method: None
- # ssl-certificate: None
- # ssl-server-min-version: None
- # http-cookie-domain: None
- # mappedport: None
- # outlook-web-access: None
- # ssl-cipher-suites: {'cipher': None, 'versions': None}
- # ssl-hpkp-primary: None
- # name: Basic PNAT Map Port 10443
- # ssl-server-session-state-type: None
- # ssl-client-session-state-type: None
-
- # ssl-http-match-host: None
-
- # ssl-pfs: None
- # ssl-server-max-version: None
- # ssl-client-session-state-timeout: None
- # http-cookie-domain-from-host: None
- # extport: None
- # ssl-server-algorithm: None
- # gratuitous-arp-interval: None
- # http-cookie-path: None
- # ssl-algorithm: None
- # ssl-min-version: None
- ##################################################
- ##################################################
- # comment: None
- # ssl-send-empty-frags: None
- # srcintf-filter: None
- # ssl-max-version: None
- # ssl-server-session-state-max: None
- # mappedip: None
- # mapped-addr: None
- # ssl-client-session-state-timeout: None
- # src-filter: None
- # ldb-method: None
- # server-type: None
- # ssl-hpkp-include-subdomains: None
- # ssl-http-location-conversion: None
- # https-cookie-secure: None
- # ssl-hpkp: None
- # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None}
- # protocol: None
- # ssl-hpkp-backup: None
- # ssl-dh-bits: None
- # dns-mapping-ttl: None
- # ssl-hsts-age: None
- # extaddr: None
- # ssl-client-renegotiation: None
- # monitor: None
- # service: None
- # ssl-hpkp-age: None
- # http-cookie-age: None
- # weblogic-server: None
- # http-cookie-share: None
- # color: None
- # ssl-mode: None
- # portforward: None
- # http-cookie-generation: None
- # ssl-client-fallback: None
- # extip: None
- # extintf: None
- # persistence: None
- # websphere-server: None
- # nat-source-vip: None
- # portmapping-type: None
-
- # adom: ansible
- # ssl-client-session-state-max: None
- # http-ip-header: None
- # http-ip-header-name: None
- # ssl-certificate: None
- # ssl-hsts: None
- # arp-reply: None
- # extport: None
- # http-multiplex: None
- # ssl-server-algorithm: None
- # ssl-server-session-state-timeout: None
- # ssl-server-min-version: None
- # http-cookie-domain: None
- # mappedport: None
- # name: Basic StaticNAT Map
- # ssl-cipher-suites: {'cipher': None, 'versions': None}
- # ssl-hpkp-primary: None
- # outlook-web-access: None
- # ssl-server-session-state-type: None
- # ssl-client-session-state-type: None
-
- # ssl-http-match-host: None
-
- # ssl-server-max-version: None
- # ssl-hpkp-report-uri: None
- # http-cookie-domain-from-host: None
- # ssl-algorithm: None
- # gratuitous-arp-interval: None
- # ssl-hsts-include-subdomains: None
- # max-embryonic-connections: None
- # mode: delete
- # http-cookie-path: None
- # ssl-pfs: None
- # ssl-min-version: None
- ##################################################
- ##################################################
- # comment: None
- # ssl-send-empty-frags: None
- # srcintf-filter: None
- # ssl-max-version: None
- # ssl-server-session-state-max: None
- # mappedip: None
- # mapped-addr: None
- # src-filter: None
- # server-type: None
- # mode: delete
- # ssl-hpkp-include-subdomains: None
- # extport: None
- # ssl-http-location-conversion: None
- # https-cookie-secure: None
- # ssl-hpkp: None
- # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None}
- # protocol: None
- # ssl-hpkp-backup: None
- # ssl-dh-bits: None
- # dns-mapping-ttl: None
- # ssl-hsts-age: None
- # ssl-server-algorithm: None
- # ssl-client-renegotiation: None
- # monitor: None
- # service: None
- # ssl-hpkp-age: None
- # http-cookie-age: None
- # adom: ansible
- # http-cookie-share: None
- # ssl-server-session-state-timeout: None
- # color: None
- # ssl-mode: None
- # portforward: None
- # http-multiplex: None
- # http-cookie-generation: None
- # max-embryonic-connections: None
- # ssl-client-fallback: None
- # ssl-hpkp-report-uri: None
- # extip: None
- # extintf: None
- # persistence: None
- # websphere-server: None
- # nat-source-vip: None
- # portmapping-type: None
- # http-ip-header-name: None
- # weblogic-server: None
- # ssl-client-session-state-max: None
- # http-ip-header: None
- # ssl-hsts: None
- # arp-reply: None
- # extaddr: None
- # ssl-hpkp-primary: None
- # ldb-method: None
- # ssl-certificate: None
- # ssl-server-min-version: None
- # http-cookie-domain: None
- # mappedport: None
- # outlook-web-access: None
- # ssl-cipher-suites: {'cipher': None, 'versions': None}
- # ssl-client-session-state-type: None
- # name: Basic DNS Translation
- # ssl-server-session-state-type: None
-
- # ssl-http-match-host: None
- # ssl-pfs: None
- # ssl-client-session-state-timeout: None
- # http-cookie-domain-from-host: None
- # ssl-hsts-include-subdomains: None
- # ssl-server-max-version: None
- # gratuitous-arp-interval: None
- # http-cookie-path: None
- # ssl-algorithm: None
- # ssl-min-version: None
- ##################################################
- ##################################################
- # ldb-method: None
- # ssl-send-empty-frags: None
- # srcintf-filter: None
- # ssl-max-version: None
- # ssl-server-session-state-max: None
- # mappedip: None
- # ssl-hsts: None
- # mapped-addr: None
- # src-filter: None
- # server-type: None
- # ssl-hpkp-include-subdomains: None
- # ssl-client-renegotiation: None
- # ssl-http-location-conversion: None
- # https-cookie-secure: None
- # extip: None
- # ssl-hpkp: None
- # ssl-server-cipher-suites: {'priority': None, 'cipher': None, 'versions': None}
- # protocol: None
- # ssl-hpkp-backup: None
- # ssl-dh-bits: None
- # dns-mapping-ttl: None
- # ssl-hsts-age: None
- # extaddr: None
- # ssl-hpkp-primary: None
- # monitor: None
- # service: None
- # ssl-hpkp-age: None
- # http-cookie-age: None
- # weblogic-server: None
- # http-cookie-share: None
- # name: Basic FQDN Translation
- # color: None
- # ssl-mode: None
- # portforward: None
- # http-cookie-generation: None
- # ssl-client-fallback: None
-
- # http-ip-header: None
- # persistence: None
- # websphere-server: None
- # nat-source-vip: None
- # portmapping-type: None
- # adom: ansible
- # ssl-client-session-state-max: None
- # extintf: None
- # ssl-server-max-version: None
- # http-ip-header-name: None
- # ssl-certificate: None
- # ssl-server-session-state-type: None
- # arp-reply: None
- # ssl-hsts-include-subdomains: None
- # ssl-min-version: None
- # ssl-server-algorithm: None
- # ssl-server-session-state-timeout: None
- # ssl-server-min-version: None
- # http-cookie-domain: None
- # mappedport: None
- # outlook-web-access: None
- # ssl-cipher-suites: {'cipher': None, 'versions': None}
- # ssl-client-session-state-type: None
- # ssl-http-match-host: None
-
- # ssl-client-session-state-timeout: None
- # comment: None
- # ssl-hpkp-report-uri: None
- # http-cookie-domain-from-host: None
- # ssl-algorithm: None
- # gratuitous-arp-interval: None
- # extport: None
- # max-embryonic-connections: None
- # mode: delete
- # http-cookie-path: None
- # ssl-pfs: None
- # http-multiplex: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -10131
- # Test using fixture 3 #
- output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 5 #
- output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[4]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 6 #
- output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[5]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 7 #
- output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[6]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 8 #
- output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[7]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 9 #
- output = fmgr_fwobj_vip.fmgr_firewall_vip_modify(fmg_instance, fixture_data[8]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwpol_ipv4.py b/test/units/modules/network/fortimanager/test_fmgr_fwpol_ipv4.py
deleted file mode 100644
index 3ef1e52c78..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_fwpol_ipv4.py
+++ /dev/null
@@ -1,596 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_fwpol_ipv4
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwpol_ipv4.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_firewall_policy_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # wanopt-passive-opt: None
- # package_name: default
- # wanopt-detection: None
- # scan-botnet-connections: None
- # profile-group: None
- # wanopt-peer: None
- # dscp-match: None
- # replacemsg-override-group: None
- # internet-service-negate: None
- # np-acceleration: None
- # learning-mode: None
- # session-ttl: None
- # ntlm-guest: None
- # ips-sensor: None
- # diffservcode-rev: None
- # match-vip: None
- # natip: None
- # dlp-sensor: None
- # traffic-shaper: None
- # groups: None
- # schedule-timeout: None
- # name: Basic_IPv4_Policy
- # tcp-session-without-syn: None
- # ntlm: None
- # permit-stun-host: None
- # diffservcode-forward: None
- # internet-service-src-custom: None
- # mode: set
- # disclaimer: None
- # rtp-nat: None
- # auth-cert: None
- # timeout-send-rst: None
- # auth-redirect-addr: None
- # ssl-mirror-intf: None
- # identity-based-route: None
- # natoutbound: None
- # wanopt-profile: None
- # per-ip-shaper: None
- # profile-protocol-options: None
- # diffserv-forward: None
- # poolname: None
- # comments: Created by Ansible
- # label: None
- # global-label: None
- # firewall-session-dirty: None
- # wanopt: None
- # schedule: always
- # internet-service-id: None
- # auth-path: None
- # vlan-cos-fwd: None
- # custom-log-fields: None
- # dstintf: any
- # srcintf: any
- # block-notification: None
- # internet-service-src-id: None
- # redirect-url: None
- # waf-profile: None
- # ntlm-enabled-browsers: None
- # dscp-negate: None
- # action: accept
- # fsso-agent-for-ntlm: None
- # logtraffic: utm
- # vlan-filter: None
- # policyid: None
- # logtraffic-start: None
- # webcache-https: None
- # webfilter-profile: None
- # internet-service-src: None
- # webcache: None
- # utm-status: None
- # vpn_src_node: {'subnet': None, 'host': None, 'seq': None}
- # ippool: None
- # service: ALL
- # wccp: None
- # auto-asic-offload: None
- # dscp-value: None
- # url-category: None
- # capture-packet: None
- # adom: ansible
- # inbound: None
- # internet-service: None
- # profile-type: None
- # ssl-mirror: None
- # srcaddr-negate: None
- # gtp-profile: None
- # mms-profile: None
- # send-deny-packet: None
- # devices: None
- # permit-any-host: None
- # av-profile: None
- # internet-service-src-negate: None
- # service-negate: None
- # rsso: None
- # app-group: None
- # tcp-mss-sender: None
- # natinbound: None
- # fixedport: None
- # ssl-ssh-profile: None
- # outbound: None
- # spamfilter-profile: None
- # application-list: None
- # application: None
- # dnsfilter-profile: None
- # nat: None
- # fsso: None
- # vlan-cos-rev: None
- # status: None
- # dsri: None
- # users: None
- # voip-profile: None
- # dstaddr-negate: None
- # traffic-shaper-reverse: None
- # internet-service-custom: None
- # diffserv-reverse: None
- # srcaddr: all
- # ssh-filter-profile: None
- # delay-tcp-npu-session: None
- # icap-profile: None
- # captive-portal-exempt: None
- # vpn_dst_node: {'subnet': None, 'host': None, 'seq': None}
- # app-category: None
- # rtp-addr: None
- # wsso: None
- # tcp-mss-receiver: None
- # dstaddr: all
- # radius-mac-auth-bypass: None
- # vpntunnel: None
- ##################################################
- ##################################################
- # package_name: default
- # wanopt-detection: None
- # scan-botnet-connections: None
- # profile-group: None
- # dlp-sensor: None
- # dscp-match: None
- # replacemsg-override-group: None
- # internet-service-negate: None
- # np-acceleration: None
- # learning-mode: None
- # session-ttl: None
- # ntlm-guest: None
- # ips-sensor: None
- # diffservcode-rev: None
- # match-vip: None
- # natip: None
- # wanopt-peer: None
- # traffic-shaper: None
- # groups: None
- # schedule-timeout: None
- # name: Basic_IPv4_Policy_2
- # tcp-session-without-syn: None
- # rtp-nat: None
- # permit-stun-host: None
- # natoutbound: None
- # internet-service-src-custom: None
- # mode: set
- # logtraffic: utm
- # ntlm: None
- # auth-cert: None
- # timeout-send-rst: None
- # auth-redirect-addr: None
- # ssl-mirror-intf: None
- # identity-based-route: None
- # diffservcode-forward: None
- # wanopt-profile: None
- # per-ip-shaper: None
- # users: None
- # diffserv-forward: None
- # poolname: None
- # comments: Created by Ansible
- # label: None
- # global-label: None
- # firewall-session-dirty: None
- # wanopt: None
- # schedule: always
- # internet-service-id: None
- # auth-path: None
- # vlan-cos-fwd: None
- # custom-log-fields: None
- # dstintf: any
- # srcintf: any
- # block-notification: None
- # internet-service-src-id: None
- # redirect-url: None
- # waf-profile: None
- # ntlm-enabled-browsers: None
- # dscp-negate: None
- # action: accept
- # fsso-agent-for-ntlm: None
- # disclaimer: None
- # vlan-filter: None
- # dstaddr-negate: None
- # logtraffic-start: None
- # webcache-https: None
- # webfilter-profile: None
- # internet-service-src: None
- # webcache: None
- # utm-status: None
- # vpn_src_node: {'subnet': None, 'host': None, 'seq': None}
- # ippool: None
- # service: HTTP, HTTPS
- # wccp: None
- # auto-asic-offload: None
- # dscp-value: None
- # url-category: None
- # capture-packet: None
- # adom: ansible
- # inbound: None
- # internet-service: None
- # profile-type: None
- # ssl-mirror: None
- # srcaddr-negate: None
- # gtp-profile: None
- # mms-profile: None
- # send-deny-packet: None
- # devices: None
- # permit-any-host: None
- # av-profile: None
- # internet-service-src-negate: None
- # service-negate: None
- # rsso: None
- # application-list: None
- # app-group: None
- # tcp-mss-sender: None
- # natinbound: None
- # fixedport: None
- # ssl-ssh-profile: None
- # outbound: None
- # spamfilter-profile: None
- # wanopt-passive-opt: None
- # application: None
- # dnsfilter-profile: None
- # nat: enable
- # fsso: None
- # vlan-cos-rev: None
- # status: None
- # dsri: None
- # profile-protocol-options: None
- # voip-profile: None
- # policyid: None
- # traffic-shaper-reverse: None
- # internet-service-custom: None
- # diffserv-reverse: None
- # srcaddr: all
- # dstaddr: google-play
- # delay-tcp-npu-session: None
- # icap-profile: None
- # captive-portal-exempt: None
- # vpn_dst_node: {'subnet': None, 'host': None, 'seq': None}
- # app-category: None
- # rtp-addr: None
- # wsso: None
- # tcp-mss-receiver: None
- # ssh-filter-profile: None
- # radius-mac-auth-bypass: None
- # vpntunnel: None
- ##################################################
- ##################################################
- # wanopt-passive-opt: None
- # package_name: default
- # wanopt-detection: None
- # scan-botnet-connections: None
- # profile-group: None
- # wanopt-peer: None
- # dscp-match: None
- # replacemsg-override-group: None
- # internet-service-negate: None
- # np-acceleration: None
- # learning-mode: None
- # session-ttl: None
- # ntlm-guest: None
- # ips-sensor: None
- # diffservcode-rev: None
- # match-vip: None
- # natip: None
- # dlp-sensor: None
- # traffic-shaper: None
- # groups: None
- # schedule-timeout: None
- # name: Basic_IPv4_Policy
- # tcp-session-without-syn: None
- # ntlm: None
- # permit-stun-host: None
- # diffservcode-forward: None
- # internet-service-src-custom: None
- # mode: delete
- # disclaimer: None
- # rtp-nat: None
- # auth-cert: None
- # timeout-send-rst: None
- # auth-redirect-addr: None
- # ssl-mirror-intf: None
- # identity-based-route: None
- # natoutbound: None
- # wanopt-profile: None
- # per-ip-shaper: None
- # profile-protocol-options: None
- # diffserv-forward: None
- # poolname: None
- # comments: None
- # label: None
- # global-label: None
- # firewall-session-dirty: None
- # wanopt: None
- # schedule: None
- # internet-service-id: None
- # auth-path: None
- # vlan-cos-fwd: None
- # custom-log-fields: None
- # dstintf: None
- # srcintf: None
- # block-notification: None
- # internet-service-src-id: None
- # redirect-url: None
- # waf-profile: None
- # ntlm-enabled-browsers: None
- # dscp-negate: None
- # action: None
- # fsso-agent-for-ntlm: None
- # logtraffic: None
- # vlan-filter: None
- # policyid: 36
- # logtraffic-start: None
- # webcache-https: None
- # webfilter-profile: None
- # internet-service-src: None
- # webcache: None
- # utm-status: None
- # vpn_src_node: {'subnet': None, 'host': None, 'seq': None}
- # ippool: None
- # service: None
- # wccp: None
- # auto-asic-offload: None
- # dscp-value: None
- # url-category: None
- # capture-packet: None
- # adom: ansible
- # inbound: None
- # internet-service: None
- # profile-type: None
- # ssl-mirror: None
- # srcaddr-negate: None
- # gtp-profile: None
- # mms-profile: None
- # send-deny-packet: None
- # devices: None
- # permit-any-host: None
- # av-profile: None
- # internet-service-src-negate: None
- # service-negate: None
- # rsso: None
- # app-group: None
- # tcp-mss-sender: None
- # natinbound: None
- # fixedport: None
- # ssl-ssh-profile: None
- # outbound: None
- # spamfilter-profile: None
- # application-list: None
- # application: None
- # dnsfilter-profile: None
- # nat: None
- # fsso: None
- # vlan-cos-rev: None
- # status: None
- # dsri: None
- # users: None
- # voip-profile: None
- # dstaddr-negate: None
- # traffic-shaper-reverse: None
- # internet-service-custom: None
- # diffserv-reverse: None
- # srcaddr: None
- # ssh-filter-profile: None
- # delay-tcp-npu-session: None
- # icap-profile: None
- # captive-portal-exempt: None
- # vpn_dst_node: {'subnet': None, 'host': None, 'seq': None}
- # app-category: None
- # rtp-addr: None
- # wsso: None
- # tcp-mss-receiver: None
- # dstaddr: None
- # radius-mac-auth-bypass: None
- # vpntunnel: None
- ##################################################
- ##################################################
- # package_name: default
- # wanopt-detection: None
- # scan-botnet-connections: None
- # profile-group: None
- # dlp-sensor: None
- # dscp-match: None
- # replacemsg-override-group: None
- # internet-service-negate: None
- # np-acceleration: None
- # learning-mode: None
- # session-ttl: None
- # ntlm-guest: None
- # ips-sensor: None
- # diffservcode-rev: None
- # match-vip: None
- # natip: None
- # wanopt-peer: None
- # traffic-shaper: None
- # groups: None
- # schedule-timeout: None
- # name: Basic_IPv4_Policy_2
- # tcp-session-without-syn: None
- # rtp-nat: None
- # permit-stun-host: None
- # natoutbound: None
- # internet-service-src-custom: None
- # mode: delete
- # logtraffic: None
- # ntlm: None
- # auth-cert: None
- # timeout-send-rst: None
- # auth-redirect-addr: None
- # ssl-mirror-intf: None
- # identity-based-route: None
- # diffservcode-forward: None
- # wanopt-profile: None
- # per-ip-shaper: None
- # users: None
- # diffserv-forward: None
- # poolname: None
- # comments: None
- # label: None
- # global-label: None
- # firewall-session-dirty: None
- # wanopt: None
- # schedule: None
- # internet-service-id: None
- # auth-path: None
- # vlan-cos-fwd: None
- # custom-log-fields: None
- # dstintf: None
- # srcintf: None
- # block-notification: None
- # internet-service-src-id: None
- # redirect-url: None
- # waf-profile: None
- # ntlm-enabled-browsers: None
- # dscp-negate: None
- # action: None
- # fsso-agent-for-ntlm: None
- # disclaimer: None
- # vlan-filter: None
- # dstaddr-negate: None
- # logtraffic-start: None
- # webcache-https: None
- # webfilter-profile: None
- # internet-service-src: None
- # webcache: None
- # utm-status: None
- # vpn_src_node: {'subnet': None, 'host': None, 'seq': None}
- # ippool: None
- # service: None
- # wccp: None
- # auto-asic-offload: None
- # dscp-value: None
- # url-category: None
- # capture-packet: None
- # adom: ansible
- # internet-service: None
- # inbound: None
- # profile-type: None
- # ssl-mirror: None
- # srcaddr-negate: None
- # gtp-profile: None
- # mms-profile: None
- # send-deny-packet: None
- # devices: None
- # permit-any-host: None
- # av-profile: None
- # internet-service-src-negate: None
- # service-negate: None
- # rsso: None
- # application-list: None
- # app-group: None
- # tcp-mss-sender: None
- # natinbound: None
- # fixedport: None
- # ssl-ssh-profile: None
- # outbound: None
- # spamfilter-profile: None
- # wanopt-passive-opt: None
- # application: None
- # dnsfilter-profile: None
- # nat: None
- # fsso: None
- # vlan-cos-rev: None
- # status: None
- # dsri: None
- # profile-protocol-options: None
- # voip-profile: None
- # policyid: 37
- # traffic-shaper-reverse: None
- # internet-service-custom: None
- # diffserv-reverse: None
- # srcaddr: None
- # dstaddr: None
- # delay-tcp-npu-session: None
- # icap-profile: None
- # captive-portal-exempt: None
- # vpn_dst_node: {'subnet': None, 'host': None, 'seq': None}
- # app-category: None
- # rtp-addr: None
- # wsso: None
- # tcp-mss-receiver: None
- # ssh-filter-profile: None
- # radius-mac-auth-bypass: None
- # vpntunnel: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_fwpol_ipv4.fmgr_firewall_policy_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 2 #
- output = fmgr_fwpol_ipv4.fmgr_firewall_policy_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
- # Test using fixture 3 #
- output = fmgr_fwpol_ipv4.fmgr_firewall_policy_modify(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_fwpol_ipv4.fmgr_firewall_policy_modify(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_fwpol_package.py b/test/units/modules/network/fortimanager/test_fmgr_fwpol_package.py
deleted file mode 100644
index a374fa5403..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_fwpol_package.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_fwpol_package
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_fwpol_package.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_fwpol_package(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwpol_package.fmgr_fwpol_package(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_fwpol_package.fmgr_fwpol_package(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_fwpol_package.fmgr_fwpol_package(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_fwpol_package.fmgr_fwpol_package(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_fmgr_fwpol_package_folder(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_fwpol_package.fmgr_fwpol_package_folder(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_fwpol_package.fmgr_fwpol_package_folder(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_fwpol_package.fmgr_fwpol_package_folder(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_fwpol_package.fmgr_fwpol_package_folder(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_ha.py b/test/units/modules/network/fortimanager/test_fmgr_ha.py
deleted file mode 100644
index 90dea79ff1..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_ha.py
+++ /dev/null
@@ -1,216 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_ha
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_ha.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_set_ha_mode(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # fmgr_ha_peer_sn: None
- # fmgr_ha_hb_threshold: 10
- # fmgr_ha_cluster_pw: fortinet
- # fmgr_ha_peer_ipv6: None
- # fmgr_ha_peer_status: None
- # fmgr_ha_file_quota: 2048
- # fmgr_ha_cluster_id: 2
- # fmgr_ha_peer_ipv4: None
- # fmgr_ha_hb_interval: 15
- # fmgr_ha_mode: master
- # mode: set
- ##################################################
- ##################################################
- # fmgr_ha_peer_sn: None
- # fmgr_ha_hb_threshold: 3
- # fmgr_ha_cluster_pw: fortinet
- # fmgr_ha_hb_interval: 5
- # fmgr_ha_cluster_id: 2
- # fmgr_ha_file_quota: 4096
- # fmgr_ha_peer_status: None
- # fmgr_ha_peer_ipv4: None
- # fmgr_ha_peer_ipv6: None
- # fmgr_ha_mode: slave
- # mode: set
- ##################################################
- ##################################################
- # fmgr_ha_peer_sn: FMG-VMTM18001881
- # fmgr_ha_hb_threshold: 3
- # fmgr_ha_cluster_pw: fortinet
- # fmgr_ha_peer_ipv6: None
- # fmgr_ha_peer_status: enable
- # fmgr_ha_file_quota: 4096
- # fmgr_ha_cluster_id: 2
- # fmgr_ha_peer_ipv4: 10.7.220.35
- # fmgr_ha_hb_interval: 5
- # fmgr_ha_mode: slave
- # mode: set
- ##################################################
- ##################################################
- # fmgr_ha_file_quota: 4096
- # fmgr_ha_cluster_pw: None
- # fmgr_ha_peer_sn: None
- # fmgr_ha_hb_interval: 5
- # fmgr_ha_cluster_id: 1
- # fmgr_ha_mode: standalone
- # fmgr_ha_peer_status: None
- # fmgr_ha_hb_threshold: 3
- # fmgr_ha_peer_ipv4: None
- # fmgr_ha_peer_ipv6: None
- # mode: set
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_ha.fmgr_set_ha_mode(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_ha.fmgr_set_ha_mode(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_ha.fmgr_set_ha_mode(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_ha.fmgr_set_ha_mode(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_fmgr_get_ha_peer_list(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # fmgr_ha_peer_sn: FMG-VMTM18001882
- # fmgr_ha_hb_threshold: 3
- # fmgr_ha_cluster_pw: None
- # fmgr_ha_peer_ipv6: None
- # fmgr_ha_peer_status: enable
- # fmgr_ha_file_quota: 4096
- # fmgr_ha_cluster_id: 1
- # fmgr_ha_peer_ipv4: 10.7.220.36
- # fmgr_ha_hb_interval: 5
- # fmgr_ha_mode: None
- # mode: get
- ##################################################
- ##################################################
- # fmgr_ha_peer_sn: FMG-VMTM18001881
- # fmgr_ha_hb_threshold: 3
- # fmgr_ha_cluster_pw: fortinet
- # fmgr_ha_hb_interval: 5
- # fmgr_ha_cluster_id: 2
- # fmgr_ha_file_quota: 4096
- # fmgr_ha_peer_status: enable
- # fmgr_ha_peer_ipv4: 10.7.220.35
- # fmgr_ha_peer_ipv6: None
- # fmgr_ha_mode: slave
- # mode: get
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_ha.fmgr_get_ha_peer_list(fmg_instance)
- assert isinstance(output['raw_response'], list) is True
- # Test using fixture 2 #
- output = fmgr_ha.fmgr_get_ha_peer_list(fmg_instance)
- assert isinstance(output['raw_response'], list) is True
-
-
-def test_fmgr_set_ha_peer(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # fmgr_ha_peer_sn: FMG-VMTM18001882
- # next_peer_id: 2
- # fmgr_ha_hb_threshold: 3
- # fmgr_ha_cluster_pw: None
- # fmgr_ha_peer_ipv6: None
- # fmgr_ha_peer_status: enable
- # fmgr_ha_file_quota: 4096
- # fmgr_ha_cluster_id: 1
- # peer_id: 1
- # fmgr_ha_peer_ipv4: 10.7.220.36
- # fmgr_ha_hb_interval: 5
- # fmgr_ha_mode: None
- # mode: set
- ##################################################
- ##################################################
- # fmgr_ha_peer_sn: FMG-VMTM18001881
- # next_peer_id: 1
- # fmgr_ha_hb_threshold: 3
- # fmgr_ha_cluster_pw: fortinet
- # fmgr_ha_hb_interval: 5
- # fmgr_ha_cluster_id: 2
- # fmgr_ha_file_quota: 4096
- # fmgr_ha_peer_status: enable
- # peer_id: 1
- # fmgr_ha_peer_ipv4: 10.7.220.35
- # fmgr_ha_peer_ipv6: None
- # fmgr_ha_mode: slave
- # mode: set
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_ha.fmgr_set_ha_peer(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_ha.fmgr_set_ha_peer(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_provisioning.py b/test/units/modules/network/fortimanager/test_fmgr_provisioning.py
deleted file mode 100644
index 8755c56a5b..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_provisioning.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import pytest
-
-pytestmark = []
-try:
- from ansible.modules.network.fortimanager import fmgr_provisioning
- from .fortimanager_module import TestFortimanagerModule
- from units.modules.utils import set_module_args
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load required modules for testing"))
-
-try:
- from pyFMG.fortimgr import FortiManager
-except ImportError:
- pytestmark.append(pytest.mark.skip("FortiManager tests require pyFMG package"))
-
-
-class TestFmgrProvisioningModule(TestFortimanagerModule):
-
- module = fmgr_provisioning
-
- def test_fmg_script_fail_connect(self):
- set_module_args(dict(host='1.1.1.1', username='admin', password='admin', adom='root',
- vdom='root', policy_package='root', name='FGT1', serial='FGVM000000117992',
- platform='FortiGate-VM64', os_version='5.0', minor_release='6',
- patch_release='0', os_type='fos'))
- result = self.execute_module(failed=True)
- self.assertEqual(result['msg'], 'Connection to FortiManager Failed')
-
- def test_fmg_script_login_fail_host(self):
- set_module_args(dict(username='admin', password='admin', adom='root',
- vdom='root', policy_package='root', name='FGT1', serial='FGVM000000117992',
- platform='FortiGate-VM64', os_version='5.0', minor_release='6',
- patch_release='0', os_type='fos'))
- result = self.execute_module(failed=True)
- self.assertEqual(result['msg'], 'missing required arguments: host')
-
- def test_fmg_script_login_fail_username(self):
- set_module_args(dict(host='1.1.1.1', password='admin', adom='root',
- vdom='root', policy_package='root', name='FGT1', serial='FGVM000000117992',
- platform='FortiGate-VM64', os_version='5.0', minor_release='6',
- patch_release='0', os_type='fos'))
- result = self.execute_module(failed=True)
- self.assertEqual(result['msg'], 'Host and username are required for connection')
diff --git a/test/units/modules/network/fortimanager/test_fmgr_query.py b/test/units/modules/network/fortimanager/test_fmgr_query.py
deleted file mode 100644
index 315b748c9c..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_query.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_query
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_query.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_get_custom(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # custom_endpoint: /dvmdb/adom/ansible/script
- # device_ip: None
- # device_unique_name: None
- # task_id: None
- # adom: ansible
- # nodes: None
- # object: custom
- # device_serial: None
- # custom_dict: {'type': 'cli'}
- # mode: get
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_query.fmgr_get_custom(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], list) is True
-
-
-def test_fmgr_get_task_status(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # custom_endpoint: None
- # object: task
- # task_id: 247
- # adom: ansible
- # device_ip: None
- # custom_dict: None
- # device_unique_name: None
- # nodes: None
- # device_serial: None
- # mode: get
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_query.fmgr_get_task_status(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
diff --git a/test/units/modules/network/fortimanager/test_fmgr_script.py b/test/units/modules/network/fortimanager/test_fmgr_script.py
deleted file mode 100644
index 6810497bb1..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_script.py
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_script
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_script.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_set_script(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # script_content: get system status
- # adom: ansible
- # script_scope: None
- # script_name: TestScript
- # script_target: remote_device
- # mode: set
- # script_description: Create by Ansible
- # script_package: None
- # vdom: root
- # script_type: cli
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_script.set_script(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_delete_script(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # vdom: root
- # script_target: None
- # script_content: None
- # adom: ansible
- # script_description: None
- # script_package: None
- # mode: delete
- # script_scope: None
- # script_name: TestScript
- # script_type: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_script.delete_script(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
-
-
-def test_execute_script(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # script_content: None
- # adom: ansible
- # script_scope: FGT1
- # script_name: TestScript
- # script_target: None
- # mode: exec
- # script_description: None
- # script_package: None
- # vdom: root
- # script_type: None
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_script.execute_script(fmg_instance, fixture_data[0]['paramgram_used'])
- assert isinstance(output['raw_response'], dict) is True
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_appctrl.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_appctrl.py
deleted file mode 100644
index c49ee7a764..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_appctrl.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_appctrl
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_appctrl.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_application_list_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_secprof_appctrl.fmgr_application_list_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_secprof_appctrl.fmgr_application_list_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 3 #
- output = fmgr_secprof_appctrl.fmgr_application_list_modify(fmg_instance, fixture_data[2]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 4 #
- output = fmgr_secprof_appctrl.fmgr_application_list_modify(fmg_instance, fixture_data[3]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_av.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_av.py
deleted file mode 100644
index b6ab7302cc..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_av.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_av
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_av.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_antivirus_profile_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_secprof_av.fmgr_antivirus_profile_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_secprof_av.fmgr_antivirus_profile_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_dns.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_dns.py
deleted file mode 100644
index c4b995b22a..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_dns.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_dns
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_dns.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_dnsfilter_profile_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # comment: Created by Ansible Module TEST
- # ftgd-dns: {'options': None, 'filters': {'action': None, 'category': None, 'log': None}}
- # adom: root
- # youtube-restrict: None
- # sdns-domain-log: None
- # block-botnet: None
- # external-ip-blocklist: None
- # block-action: block
- # name: Ansible_DNS_Profile
- # redirect-portal: None
- # sdns-ftgd-err-log: None
- # safe-search: None
- # domain-filter: {'domain-filter-table': None}
- # log-all-domain: None
- # mode: set
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_secprof_dns.fmgr_dnsfilter_profile_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_ips.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_ips.py
deleted file mode 100644
index 1d366176b6..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_ips.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_ips
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_ips.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_ips_sensor_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_secprof_ips.fmgr_ips_sensor_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_profile_group.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_profile_group.py
deleted file mode 100644
index d549cec5b9..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_profile_group.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_profile_group
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_profile_group.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_firewall_profile_group_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- # Fixture sets used:###########################
-
- ##################################################
- # ssl-ssh-profile: None
- # waf-profile: None
- # adom: root
- # webfilter-profile: None
- # profile-protocol-options: None
- # application-list: None
- # icap-profile: None
- # voip-profile: None
- # ips-sensor: None
- # dnsfilter-profile: None
- # av-profile: None
- # spamfilter-profile: None
- # dlp-sensor: None
- # mode: delete
- # ssh-filter-profile: None
- # mms-profile: None
- # name: Ansible_TEST_Profile_Group
- ##################################################
- ##################################################
- # ssl-ssh-profile: None
- # application-list: None
- # waf-profile: None
- # adom: root
- # webfilter-profile: None
- # ips-sensor: None
- # spamfilter-profile: None
- # icap-profile: None
- # dnsfilter-profile: None
- # name: Ansible_TEST_Profile_Group
- # voip-profile: None
- # av-profile: Ansible_AV_Profile
- # mode: set
- # dlp-sensor: None
- # mms-profile: None
- # ssh-filter-profile: None
- # profile-protocol-options: default
- ##################################################
-
- # Test using fixture 1 #
- output = fmgr_secprof_profile_group.fmgr_firewall_profile_group_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -3
- # Test using fixture 2 #
- output = fmgr_secprof_profile_group.fmgr_firewall_profile_group_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == -10131
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_proxy.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_proxy.py
deleted file mode 100644
index 85da9309b9..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_proxy.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_proxy
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_proxy.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_web_proxy_profile_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_secprof_proxy.fmgr_web_proxy_profile_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_secprof_proxy.fmgr_web_proxy_profile_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_spam.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_spam.py
deleted file mode 100644
index 9db77c7430..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_spam.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_spam
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_spam.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_spamfilter_profile_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_secprof_spam.fmgr_spamfilter_profile_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_secprof_spam.fmgr_spamfilter_profile_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_ssl_ssh.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_ssl_ssh.py
deleted file mode 100644
index 54625283e0..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_ssl_ssh.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_ssl_ssh
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_ssl_ssh.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_firewall_ssl_ssh_profile_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- output = fmgr_secprof_ssl_ssh.fmgr_firewall_ssl_ssh_profile_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- output = fmgr_secprof_ssl_ssh.fmgr_firewall_ssl_ssh_profile_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_voip.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_voip.py
deleted file mode 100644
index aec91ac22a..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_voip.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_voip
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_voip.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_voip_profile_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_secprof_voip.fmgr_voip_profile_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_secprof_voip.fmgr_voip_profile_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_waf.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_waf.py
deleted file mode 100644
index 933689f7db..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_waf.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_waf
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_waf.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_waf_profile_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- output = fmgr_secprof_waf.fmgr_waf_profile_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- output = fmgr_secprof_waf.fmgr_waf_profile_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_wanopt.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_wanopt.py
deleted file mode 100644
index 44949aaf47..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_wanopt.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_wanopt
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_wanopt.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_wanopt_profile_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
-
- # Test using fixture 1 #
- output = fmgr_secprof_wanopt.fmgr_wanopt_profile_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
- # Test using fixture 2 #
- output = fmgr_secprof_wanopt.fmgr_wanopt_profile_modify(fmg_instance, fixture_data[1]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/fortimanager/test_fmgr_secprof_web.py b/test/units/modules/network/fortimanager/test_fmgr_secprof_web.py
deleted file mode 100644
index 189412055f..0000000000
--- a/test/units/modules/network/fortimanager/test_fmgr_secprof_web.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 2018 Fortinet, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-from ansible.module_utils.network.fortimanager.fortimanager import FortiManagerHandler
-import pytest
-
-try:
- from ansible.modules.network.fortimanager import fmgr_secprof_web
-except ImportError:
- pytest.skip("Could not load required modules for testing", allow_module_level=True)
-
-
-def load_fixtures():
- fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures') + "/{filename}.json".format(
- filename=os.path.splitext(os.path.basename(__file__))[0])
- try:
- with open(fixture_path, "r") as fixture_file:
- fixture_data = json.load(fixture_file)
- except IOError:
- return []
- return [fixture_data]
-
-
-@pytest.fixture(autouse=True)
-def module_mock(mocker):
- connection_class_mock = mocker.patch('ansible.module_utils.basic.AnsibleModule')
- return connection_class_mock
-
-
-@pytest.fixture(autouse=True)
-def connection_mock(mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.fortimanager.fmgr_secprof_web.Connection')
- return connection_class_mock
-
-
-@pytest.fixture(scope="function", params=load_fixtures())
-def fixture_data(request):
- func_name = request.function.__name__.replace("test_", "")
- return request.param.get(func_name, None)
-
-
-fmg_instance = FortiManagerHandler(connection_mock, module_mock)
-
-
-def test_fmgr_webfilter_profile_modify(fixture_data, mocker):
- mocker.patch("ansible.module_utils.network.fortimanager.fortimanager.FortiManagerHandler.process_request",
- side_effect=fixture_data)
- output = fmgr_secprof_web.fmgr_webfilter_profile_modify(fmg_instance, fixture_data[0]['paramgram_used'])
- assert output['raw_response']['status']['code'] == 0
diff --git a/test/units/modules/network/ftd/test_ftd_configuration.py b/test/units/modules/network/ftd/test_ftd_configuration.py
deleted file mode 100644
index a860ebabb5..0000000000
--- a/test/units/modules/network/ftd/test_ftd_configuration.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# Copyright (c) 2018-2019 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import absolute_import
-
-import pytest
-from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson
-
-from ansible.module_utils import basic
-from ansible.module_utils.network.ftd.common import FtdConfigurationError, FtdServerError, FtdUnexpectedResponse
-from ansible.module_utils.network.ftd.configuration import FtdInvalidOperationNameError, CheckModeException
-from ansible.module_utils.network.ftd.fdm_swagger_client import ValidationError
-from ansible.modules.network.ftd import ftd_configuration
-
-
-class TestFtdConfiguration(object):
- module = ftd_configuration
-
- @pytest.fixture(autouse=True)
- def module_mock(self, mocker):
- return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json)
-
- @pytest.fixture(autouse=True)
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_configuration.Connection')
- return connection_class_mock.return_value
-
- @pytest.fixture
- def resource_mock(self, mocker):
- resource_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_configuration.BaseConfigurationResource')
- resource_instance = resource_class_mock.return_value
- return resource_instance.execute_operation
-
- def test_module_should_fail_when_ftd_invalid_operation_name_error(self, resource_mock):
- operation_name = 'test name'
- resource_mock.side_effect = FtdInvalidOperationNameError(operation_name)
-
- result = self._run_module_with_fail_json({'operation': operation_name})
- assert result['failed']
- assert 'Invalid operation name provided: %s' % operation_name == result['msg']
-
- def test_module_should_fail_when_ftd_configuration_error(self, resource_mock):
- operation_name = 'test name'
- msg = 'Foo error.'
- resource_mock.side_effect = FtdConfigurationError(msg)
-
- result = self._run_module_with_fail_json({'operation': operation_name})
- assert result['failed']
- assert 'Failed to execute %s operation because of the configuration error: %s' % (operation_name, msg) == \
- result['msg']
-
- def test_module_should_fail_when_ftd_server_error(self, resource_mock):
- operation_name = 'test name'
- code = 500
- response = {'error': 'foo'}
- resource_mock.side_effect = FtdServerError(response, code)
-
- result = self._run_module_with_fail_json({'operation': operation_name})
- assert result['failed']
- assert 'Server returned an error trying to execute %s operation. Status code: %s. ' \
- 'Server response: %s' % (operation_name, code, response) == \
- result['msg']
-
- def test_module_should_fail_when_validation_error(self, resource_mock):
- operation_name = 'test name'
- msg = 'Foo error.'
- resource_mock.side_effect = ValidationError(msg)
-
- result = self._run_module_with_fail_json({'operation': operation_name})
- assert result['failed']
- assert msg == result['msg']
-
- def test_module_should_fail_when_unexpected_server_response(self, resource_mock):
- operation_name = 'test name'
- msg = 'Foo error.'
- resource_mock.side_effect = FtdUnexpectedResponse(msg)
-
- result = self._run_module_with_fail_json({'operation': operation_name})
-
- assert result['failed']
- assert msg == result['msg']
-
- def test_module_should_fail_when_check_mode_exception(self, resource_mock):
- operation_name = 'test name'
- msg = 'Foo error.'
- resource_mock.side_effect = CheckModeException(msg)
-
- result = self._run_module({'operation': operation_name})
- assert not result['changed']
-
- def test_module_should_run_successful(self, resource_mock):
- operation_name = 'test name'
- resource_mock.return_value = {'result': 'ok'}
-
- result = self._run_module({'operation': operation_name})
- assert result['response'] == {'result': 'ok'}
-
- def _run_module(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
- return ex.value.args[0]
-
- def _run_module_with_fail_json(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleFailJson) as exc:
- self.module.main()
- result = exc.value.args[0]
- return result
diff --git a/test/units/modules/network/ftd/test_ftd_file_download.py b/test/units/modules/network/ftd/test_ftd_file_download.py
deleted file mode 100644
index ebb465e9eb..0000000000
--- a/test/units/modules/network/ftd/test_ftd_file_download.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import absolute_import
-
-import pytest
-
-from ansible.module_utils import basic
-from ansible.module_utils.network.ftd.common import HTTPMethod
-from ansible.module_utils.network.ftd.fdm_swagger_client import FILE_MODEL_NAME, OperationField
-from ansible.modules.network.ftd import ftd_file_download
-from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson
-
-
-class TestFtdFileDownload(object):
- module = ftd_file_download
-
- @pytest.fixture(autouse=True)
- def module_mock(self, mocker):
- return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json)
-
- @pytest.fixture
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_file_download.Connection')
- return connection_class_mock.return_value
-
- @pytest.mark.parametrize("missing_arg", ['operation', 'destination'])
- def test_module_should_fail_without_required_args(self, missing_arg):
- module_args = {'operation': 'downloadFile', 'destination': '/tmp'}
- del module_args[missing_arg]
- set_module_args(module_args)
-
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- assert 'missing required arguments: %s' % missing_arg in str(ex.value)
-
- def test_module_should_fail_when_no_operation_spec_found(self, connection_mock):
- connection_mock.get_operation_spec.return_value = None
- set_module_args({'operation': 'nonExistingDownloadOperation', 'destination': '/tmp'})
-
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['failed']
- assert result['msg'] == 'Operation with specified name is not found: nonExistingDownloadOperation'
-
- def test_module_should_fail_when_not_download_operation_specified(self, connection_mock):
- connection_mock.get_operation_spec.return_value = {
- OperationField.METHOD: HTTPMethod.GET,
- OperationField.URL: '/object',
- OperationField.MODEL_NAME: 'NetworkObject'
- }
- set_module_args({'operation': 'nonDownloadOperation', 'destination': '/tmp'})
-
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['failed']
- assert result['msg'] == 'Invalid download operation: nonDownloadOperation. ' \
- 'The operation must make GET request and return a file.'
-
- def test_module_should_call_download_and_return(self, connection_mock):
- connection_mock.validate_path_params.return_value = (True, None)
- connection_mock.get_operation_spec.return_value = {
- OperationField.METHOD: HTTPMethod.GET,
- OperationField.URL: '/file/{objId}',
- OperationField.MODEL_NAME: FILE_MODEL_NAME
- }
-
- set_module_args({
- 'operation': 'downloadFile',
- 'path_params': {'objId': '12'},
- 'destination': '/tmp'
- })
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert not result['changed']
- connection_mock.download_file.assert_called_once_with('/file/{objId}', '/tmp', {'objId': '12'})
diff --git a/test/units/modules/network/ftd/test_ftd_file_upload.py b/test/units/modules/network/ftd/test_ftd_file_upload.py
deleted file mode 100644
index addb012601..0000000000
--- a/test/units/modules/network/ftd/test_ftd_file_upload.py
+++ /dev/null
@@ -1,80 +0,0 @@
-from __future__ import absolute_import
-
-import pytest
-from ansible.module_utils import basic
-from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson
-
-from ansible.modules.network.ftd import ftd_file_upload
-from ansible.module_utils.network.ftd.fdm_swagger_client import OperationField
-from ansible.module_utils.network.ftd.common import HTTPMethod
-
-
-class TestFtdFileUpload(object):
- module = ftd_file_upload
-
- @pytest.fixture(autouse=True)
- def module_mock(self, mocker):
- return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json)
-
- @pytest.fixture
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_file_upload.Connection')
- return connection_class_mock.return_value
-
- @pytest.mark.parametrize("missing_arg", ['operation', 'file_to_upload'])
- def test_module_should_fail_without_required_args(self, missing_arg):
- module_args = {'operation': 'uploadFile', 'file_to_upload': '/tmp/test.txt'}
- del module_args[missing_arg]
- set_module_args(module_args)
-
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- assert 'missing required arguments: %s' % missing_arg in str(ex.value)
-
- def test_module_should_fail_when_no_operation_spec_found(self, connection_mock):
- connection_mock.get_operation_spec.return_value = None
- set_module_args({'operation': 'nonExistingUploadOperation', 'file_to_upload': '/tmp/test.txt'})
-
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['failed']
- assert result['msg'] == 'Operation with specified name is not found: nonExistingUploadOperation'
-
- def test_module_should_fail_when_not_upload_operation_specified(self, connection_mock):
- connection_mock.get_operation_spec.return_value = {
- OperationField.METHOD: HTTPMethod.GET,
- OperationField.URL: '/object/network',
- OperationField.MODEL_NAME: 'NetworkObject'
- }
- set_module_args({'operation': 'nonUploadOperation', 'file_to_upload': '/tmp/test.txt'})
-
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['failed']
- assert result['msg'] == 'Invalid upload operation: nonUploadOperation. ' \
- 'The operation must make POST request and return UploadStatus model.'
-
- def test_module_should_call_upload_and_return_response(self, connection_mock):
- connection_mock.get_operation_spec.return_value = {
- OperationField.METHOD: HTTPMethod.POST,
- OperationField.URL: '/uploadFile',
- OperationField.MODEL_NAME: 'FileUploadStatus'
- }
- connection_mock.upload_file.return_value = {'id': '123'}
-
- set_module_args({
- 'operation': 'uploadFile',
- 'file_to_upload': '/tmp/test.txt'
- })
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['changed']
- assert {'id': '123'} == result['response']
- connection_mock.upload_file.assert_called_once_with('/tmp/test.txt', '/uploadFile')
diff --git a/test/units/modules/network/ftd/test_ftd_install.py b/test/units/modules/network/ftd/test_ftd_install.py
deleted file mode 100644
index 88803b724f..0000000000
--- a/test/units/modules/network/ftd/test_ftd_install.py
+++ /dev/null
@@ -1,248 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from __future__ import absolute_import
-
-import pytest
-from units.compat.mock import PropertyMock
-from ansible.module_utils import basic
-from units.modules.utils import set_module_args, exit_json, fail_json, AnsibleFailJson, AnsibleExitJson
-
-from ansible.modules.network.ftd import ftd_install
-from ansible.module_utils.network.ftd.device import FtdModel
-
-DEFAULT_MODULE_PARAMS = dict(
- device_hostname="firepower",
- device_username="admin",
- device_password="pass",
- device_new_password="newpass",
- device_sudo_password="sudopass",
- device_ip="192.168.0.1",
- device_netmask="255.255.255.0",
- device_gateway="192.168.0.254",
- device_model=FtdModel.FTD_ASA5516_X,
- dns_server="8.8.8.8",
- console_ip="10.89.0.0",
- console_port="2004",
- console_username="console_user",
- console_password="console_pass",
- rommon_file_location="tftp://10.0.0.1/boot/ftd-boot-1.9.2.0.lfbff",
- image_file_location="http://10.0.0.1/Release/ftd-6.2.3-83.pkg",
- image_version="6.2.3-83",
- search_domains="cisco.com",
- force_install=False
-)
-
-
-class TestFtdInstall(object):
- module = ftd_install
-
- @pytest.fixture(autouse=True)
- def module_mock(self, mocker):
- mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json)
- mocker.patch.object(basic.AnsibleModule, '_socket_path', new_callable=PropertyMock, create=True,
- return_value=mocker.MagicMock())
-
- @pytest.fixture(autouse=True)
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_install.Connection')
- return connection_class_mock.return_value
-
- @pytest.fixture
- def config_resource_mock(self, mocker):
- resource_class_mock = mocker.patch('ansible.modules.network.ftd.ftd_install.BaseConfigurationResource')
- return resource_class_mock.return_value
-
- @pytest.fixture(autouse=True)
- def ftd_factory_mock(self, mocker):
- return mocker.patch('ansible.modules.network.ftd.ftd_install.FtdPlatformFactory')
-
- @pytest.fixture(autouse=True)
- def has_kick_mock(self, mocker):
- return mocker.patch('ansible.module_utils.network.ftd.device.HAS_KICK', True)
-
- def test_module_should_fail_when_kick_is_not_installed(self, mocker):
- mocker.patch('ansible.module_utils.network.ftd.device.HAS_KICK', False)
-
- set_module_args(dict(DEFAULT_MODULE_PARAMS))
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['failed']
- assert "Firepower-kickstart library is required to run this module" in result['msg']
-
- def test_module_should_fail_when_platform_is_not_supported(self, config_resource_mock):
- config_resource_mock.execute_operation.return_value = {'platformModel': 'nonSupportedModel'}
- module_params = dict(DEFAULT_MODULE_PARAMS)
- del module_params['device_model']
-
- set_module_args(module_params)
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['failed']
- assert result['msg'] == "Platform model 'nonSupportedModel' is not supported by this module."
-
- def test_module_should_fail_when_device_model_is_missing_with_local_connection(self, mocker):
- mocker.patch.object(basic.AnsibleModule, '_socket_path', create=True, return_value=None)
- module_params = dict(DEFAULT_MODULE_PARAMS)
- del module_params['device_model']
-
- set_module_args(module_params)
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['failed']
- expected_msg = \
- "The following parameters are mandatory when the module is used with 'local' connection: device_model."
- assert expected_msg == result['msg']
-
- def test_module_should_fail_when_management_ip_values_are_missing_with_local_connection(self, mocker):
- mocker.patch.object(basic.AnsibleModule, '_socket_path', create=True, return_value=None)
- module_params = dict(DEFAULT_MODULE_PARAMS)
- del module_params['device_ip']
- del module_params['device_netmask']
- del module_params['device_gateway']
-
- set_module_args(module_params)
- with pytest.raises(AnsibleFailJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['failed']
- expected_msg = "The following parameters are mandatory when the module is used with 'local' connection: " \
- "device_gateway, device_ip, device_netmask."
- assert expected_msg == result['msg']
-
- def test_module_should_return_when_software_is_already_installed(self, config_resource_mock):
- config_resource_mock.execute_operation.return_value = {
- 'softwareVersion': '6.3.0-11',
- 'platformModel': 'Cisco ASA5516-X Threat Defense'
- }
- module_params = dict(DEFAULT_MODULE_PARAMS)
- module_params['image_version'] = '6.3.0-11'
-
- set_module_args(module_params)
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert not result['changed']
- assert result['msg'] == 'FTD already has 6.3.0-11 version of software installed.'
-
- def test_module_should_proceed_if_software_is_already_installed_and_force_param_given(self, config_resource_mock):
- config_resource_mock.execute_operation.return_value = {
- 'softwareVersion': '6.3.0-11',
- 'platformModel': 'Cisco ASA5516-X Threat Defense'
- }
- module_params = dict(DEFAULT_MODULE_PARAMS)
- module_params['image_version'] = '6.3.0-11'
- module_params['force_install'] = True
-
- set_module_args(module_params)
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['changed']
- assert result['msg'] == 'Successfully installed FTD image 6.3.0-11 on the firewall device.'
-
- def test_module_should_install_ftd_image(self, config_resource_mock, ftd_factory_mock):
- config_resource_mock.execute_operation.side_effect = [
- {
- 'softwareVersion': '6.2.3-11',
- 'platformModel': 'Cisco ASA5516-X Threat Defense'
- }
- ]
- module_params = dict(DEFAULT_MODULE_PARAMS)
-
- set_module_args(module_params)
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
-
- result = ex.value.args[0]
- assert result['changed']
- assert result['msg'] == 'Successfully installed FTD image 6.2.3-83 on the firewall device.'
- ftd_factory_mock.create.assert_called_once_with('Cisco ASA5516-X Threat Defense', DEFAULT_MODULE_PARAMS)
- ftd_factory_mock.create.return_value.install_ftd_image.assert_called_once_with(DEFAULT_MODULE_PARAMS)
-
- def test_module_should_fill_management_ip_values_when_missing(self, config_resource_mock, ftd_factory_mock):
- config_resource_mock.execute_operation.side_effect = [
- {
- 'softwareVersion': '6.3.0-11',
- 'platformModel': 'Cisco ASA5516-X Threat Defense'
- },
- {
- 'items': [{
- 'ipv4Address': '192.168.1.1',
- 'ipv4NetMask': '255.255.255.0',
- 'ipv4Gateway': '192.168.0.1'
- }]
- }
- ]
- module_params = dict(DEFAULT_MODULE_PARAMS)
- expected_module_params = dict(module_params)
- del module_params['device_ip']
- del module_params['device_netmask']
- del module_params['device_gateway']
- expected_module_params.update(
- device_ip='192.168.1.1',
- device_netmask='255.255.255.0',
- device_gateway='192.168.0.1'
- )
-
- set_module_args(module_params)
- with pytest.raises(AnsibleExitJson):
- self.module.main()
-
- ftd_factory_mock.create.assert_called_once_with('Cisco ASA5516-X Threat Defense', expected_module_params)
- ftd_factory_mock.create.return_value.install_ftd_image.assert_called_once_with(expected_module_params)
-
- def test_module_should_fill_dns_server_when_missing(self, config_resource_mock, ftd_factory_mock):
- config_resource_mock.execute_operation.side_effect = [
- {
- 'softwareVersion': '6.3.0-11',
- 'platformModel': 'Cisco ASA5516-X Threat Defense'
- },
- {
- 'items': [{
- 'dnsServerGroup': {
- 'id': '123'
- }
- }]
- },
- {
- 'dnsServers': [{
- 'ipAddress': '8.8.9.9'
- }]
- }
- ]
- module_params = dict(DEFAULT_MODULE_PARAMS)
- expected_module_params = dict(module_params)
- del module_params['dns_server']
- expected_module_params['dns_server'] = '8.8.9.9'
-
- set_module_args(module_params)
- with pytest.raises(AnsibleExitJson):
- self.module.main()
-
- ftd_factory_mock.create.assert_called_once_with('Cisco ASA5516-X Threat Defense', expected_module_params)
- ftd_factory_mock.create.return_value.install_ftd_image.assert_called_once_with(expected_module_params)
diff --git a/test/units/modules/network/icx/fixtures/configure_terminal b/test/units/modules/network/icx/fixtures/configure_terminal
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/units/modules/network/icx/fixtures/configure_terminal
+++ /dev/null
diff --git a/test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt b/test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt
deleted file mode 100644
index 4847885148..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_banner_show_banner.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-banner motd require-enter-key
-banner motd $
-welcome
-new user
-$
-!
-interface ethernet 1/1/1
- port-name port name
- disable
- speed-duplex 10-full
- inline power power-limit 7000
-!
-interface ethernet 1/1/2
- speed-duplex 10-full
- inline power power-limit 3000
-! \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_config_config.cfg b/test/units/modules/network/icx/fixtures/icx_config_config.cfg
deleted file mode 100644
index e57790ea8a..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_config_config.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-!
-hostname router
-!
-interface ethernet 1/1/4
- port-name test-interface-4
- speed-duplex 10-full
-!
-interface ethernet 1/1/5
- port-name port5
- ip address 172.18.20.4 255.255.255.0
-! \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_config_src.cfg b/test/units/modules/network/icx/fixtures/icx_config_src.cfg
deleted file mode 100644
index a4a3468e31..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_config_src.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-!
-hostname foo
-!
-interface ethernet 1/1/4
- disable
-!
-interface ethernet 1/1/5
- port-name port5
- ip address 172.18.20.4 255.255.255.0
-!
diff --git a/test/units/modules/network/icx/fixtures/icx_copy.txt b/test/units/modules/network/icx/fixtures/icx_copy.txt
deleted file mode 100644
index b4165c1968..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_copy.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Translating hostname client fileserver.alethea.in ....
-...... \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_interface_config.cfg b/test/units/modules/network/icx/fixtures/icx_interface_config.cfg
deleted file mode 100644
index 8365ebfea8..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_interface_config.cfg
+++ /dev/null
@@ -1,91 +0,0 @@
-lag blue static id 11
- ports ethe 1/1/1
- port-name test-interface-1 ethernet 1/1/1
-!
-interface ethernet 1/1/1
- port-name test-interface-1
- speed-duplex 10-full
-!
-interface ethernet 1/1/2
- port-name test-interface-2
- speed-duplex 10-full
- inline power power-limit 2000
-!
-interface ethernet 1/1/48
- inline power power-by-class 2
-!
-interface ethernet 1/1/3
- speed-duplex 10-full
- inline power power-limit 3000
-!
-interface loopback 10
- port-name loopback10
- disable
-!
-interface lag 11
- port-name lag ports
- speed-duplex 10-full
-!
-
-GigabitEthernet1/1/1 is up, line protocol is up
- Port up for 18 hour(s) 40 minute(s) 16 second(s)
- Hardware is GigabitEthernet, address is 609c.9fe7.d130 (bia 609c.9fe7.d130)
- Configured speed 10Mbit, actual 10Mbit, configured duplex fdx, actual fdx
- Configured mdi mode AUTO, actual MDI
- Member of L2 VLAN ID 1, port is untagged, port state is FORWARDING
- BPDU guard is Disabled, ROOT protect is Disabled, Designated protect is Disabled
- Link Error Dampening is Disabled
- STP configured to ON, priority is level0, mac-learning is enabled
- Openflow is Disabled, Openflow Hybrid mode is Disabled, Flow Control is config enabled, oper enabled, negotiation disabled
- Mirror disabled, Monitor disabled
- Mac-notification is disabled
- Member of active trunk ports 1/1/1,1/1/2,1/1/4,lg11, Lag Interface is lg11
- Member of configured trunk ports 1/1/1,1/1/2,1/1/4,lg11, Lag Interface is lg11
- Port name is test-interface-1
- IPG MII 0 bits-time, IPG GMII 0 bits-time
- MTU 1500 bytes, encapsulation ethernet
- MMU Mode is Store-and-forward
- 300 second input rate: 88 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 616 bits/sec, 0 packets/sec, 0.00% utilization
- 14836 packets input, 2695975 bytes, 0 no buffer
- Received 3223 broadcasts, 11613 multicasts, 0 unicasts
- 2 input errors, 2 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- 64676 packets output, 5181136 bytes, 0 underruns
- Transmitted 28724 broadcasts, 35952 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- Relay Agent Information option: Disabled
- Protected: No
- MAC Port Security: Disabled
-
- This port is not being monitored for queue drops
-Egress queues:
-Queue counters Queued packets Dropped Packets
- 0 6682 0
- 1 0 0
- 2 0 0
- 3 0 0
- 4 22042 0
- 5 20 0
- 6 33680 0
- 7 2252 0
-
-
-Local port: 1/1/48
- Neighbor: 609c.9fe7.d15f, TTL 95 seconds
- + Chassis ID (MAC address): 609c.9fe7.d130
- + Port ID (MAC address): 609c.9fe7.d15f
- + Time to live: 120 seconds
- + System name : "ICX7150-48 Router"
- + Port description : "GigabitEthernet1/1/48"
- + System capabilities : bridge, router
- Enabled capabilities: bridge, router
- + 802.3 MAC/PHY : auto-negotiation enabled
- Advertised capabilities: 10BaseT-HD, 10BaseT-FD, 100BaseTX-HD,
- 100BaseTX-FD, fdxSPause, fdxBPause,
- 1000BaseT-HD, 1000BaseT-FD
- Operational MAU type : 1000BaseT-FD
- + Link aggregation: not capable
- + Maximum frame size: 1522 octets
- + Port VLAN ID: 1
- + Management address (IPv4): 172.16.10.182
diff --git a/test/units/modules/network/icx/fixtures/icx_lldp_None b/test/units/modules/network/icx/fixtures/icx_lldp_None
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_lldp_None
+++ /dev/null
diff --git a/test/units/modules/network/icx/fixtures/icx_lldp_absent b/test/units/modules/network/icx/fixtures/icx_lldp_absent
deleted file mode 100644
index 163439739c..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_lldp_absent
+++ /dev/null
@@ -1,9 +0,0 @@
-LLDP transmit interval : 30 seconds
-LLDP transmit hold multiplier : 4 (transmit TTL: 120 seconds)
-LLDP transmit delay : 2 seconds
-LLDP SNMP notification interval : 5 seconds
-LLDP reinitialize delay : 2 seconds
-LLDP-MED fast start repeat count : 3
-
-LLDP maximum neighbors : 2048
-LLDP maximum neighbors per port : 4
diff --git a/test/units/modules/network/icx/fixtures/icx_lldp_present b/test/units/modules/network/icx/fixtures/icx_lldp_present
deleted file mode 100644
index 680c076709..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_lldp_present
+++ /dev/null
@@ -1 +0,0 @@
-LLDP is not running \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_logging_config.cfg b/test/units/modules/network/icx/fixtures/icx_logging_config.cfg
deleted file mode 100644
index da94326353..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_logging_config.cfg
+++ /dev/null
@@ -1,17 +0,0 @@
-logging host 172.16.10.21
-logging host 172.16.10.21 udp-port 2000
-logging host 172.16.10.22
-logging host 172.16.10.23 udp-port 2500
-logging host 172.16.10.55 udp-port 2500
-logging facility local1
-logging host ipv6 2001:db8::1 udp-port 5500
-logging buffered 200
-no logging buffered critical
-no logging buffered debugging
-no logging buffered emergencies
-no logging buffered errors
-no logging buffered informational
-no logging buffered notifications
-logging enable rfc5424
-logging console
-logging persistence \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2 b/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2
deleted file mode 100644
index 1d9dfd44a2..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2
+++ /dev/null
@@ -1,4 +0,0 @@
-Sending 1, 16-byte ICMP Echo to 10.255.255.250, timeout 100 msec, TTL 64
-Type Control-c to abort
-Request timed out.
-No reply from remote host. \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2_timeout_45 b/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2_timeout_45
deleted file mode 100644
index 1d9dfd44a2..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_ping_ping_10.255.255.250_count_2_timeout_45
+++ /dev/null
@@ -1,4 +0,0 @@
-Sending 1, 16-byte ICMP Echo to 10.255.255.250, timeout 100 msec, TTL 64
-Type Control-c to abort
-Request timed out.
-No reply from remote host. \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_2 b/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_2
deleted file mode 100644
index 3b775361c2..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_2
+++ /dev/null
@@ -1,5 +0,0 @@
-Sending 2, 16-byte ICMP Echo to 8.8.8.8, timeout 5000 msec, TTL 64
-Type Control-c to abort
-Reply from 8.8.8.8 : bytes=16 time=49ms TTL=45
-Reply from 8.8.8.8 : bytes=16 time=41ms TTL=45
-Success rate is 100 percent (2/2), round-trip min/avg/max=41/45/49 ms. \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_5_ttl_70 b/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_5_ttl_70
deleted file mode 100644
index 2f9dcabf16..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_count_5_ttl_70
+++ /dev/null
@@ -1,8 +0,0 @@
-Sending 5, 16-byte ICMP Echo to 8.8.8.8, timeout 5000 msec, TTL 70
-Type Control-c to abort
-Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45
-Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45
-Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45
-Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45
-Reply from 8.8.8.8 : bytes=16 time=40ms TTL=45
-Success rate is 100 percent (5/5), round-trip min/avg/max=40/40/40 ms. \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_size_10001 b/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_size_10001
deleted file mode 100644
index c067988b78..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_size_10001
+++ /dev/null
@@ -1 +0,0 @@
-Invalid size - valid range (0-10000) \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_ttl_300 b/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_ttl_300
deleted file mode 100644
index d40ed2870d..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_ping_ping_8.8.8.8_ttl_300
+++ /dev/null
@@ -1 +0,0 @@
-Bad value for TTL, valid range is from 1 to 255. \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_static_route_config.txt b/test/units/modules/network/icx/fixtures/icx_static_route_config.txt
deleted file mode 100644
index 19381bcef5..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_static_route_config.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-ip route 172.16.0.0/16 10.0.0.8
-ip route 172.16.10.0/24 10.0.0.8
-ip route 192.0.0.0/8 10.10.15.3
-ip route 192.126.0.0/16 10.10.14.31
-ip route 192.126.23.0/24 10.10.14.31
-ip route 192.128.0.0/16 10.10.14.3
-ip route 192.128.0.0/16 10.10.15.3
-ip route 192.128.0.0/16 10.10.15.31 \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_system.txt b/test/units/modules/network/icx/fixtures/icx_system.txt
deleted file mode 100644
index 1f6663b779..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_system.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-ip dns domain-list ansib.eg.com
-ip dns domain-list red.com
-ip dns domain-list test1.com
-ip dns server-address 10.22.22.64
-ip dns server-address 172.22.22.64
-radius-server host 172.16.20.14 auth-port 1837 acct-port 5021 accounting-only key database mac-auth
-tacacs-server host 182.16.10.20 \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/icx_vlan_config b/test/units/modules/network/icx/fixtures/icx_vlan_config
deleted file mode 100644
index b42e30f31b..0000000000
--- a/test/units/modules/network/icx/fixtures/icx_vlan_config
+++ /dev/null
@@ -1,32 +0,0 @@
-************show vlan brief*****************
-System-max vlan Params: Max(4095) Default(64) Current(64)
-Default vlan Id :1
-Total Number of Vlan Configured :5
-VLANs Configured :1 3 6 10 21
-
-
-************* show vlan id**********
-Maximum PORT-VLAN entries: 64
-
-Legend: [Stk=Stack-Id, S=Slot]
-
-PORT-VLAN 3, Name vlan, Priority level0, Spanning tree On
- Untagged Ports: (U1/M1) 1 2 3 4 5 7 20 21 22 23 24 25
- Untagged Ports: (U1/M1) 26 27 28
- Untagged Ports: (LAG) 11 12 15
- Tagged Ports: (U1/M1) 9 10 11 31
- Tagged Ports: (LAG) 13
- Uplink Ports: None
- DualMode Ports: None
- Mac-Vlan Ports: None
- Monitoring: Disabled
-
-************* show run vlan id**********
-vlan 3 name vlan by port
- tagged ethe 1/1/31 ethe 1/1/9 to 1/1/11 lag 13
- untagged ethe 1/1/27 ethe 1/1/20 to 1/1/22 lag 11 to 12
- spanning-tree
-!
-!
-
-
diff --git a/test/units/modules/network/icx/fixtures/lag_running_config.txt b/test/units/modules/network/icx/fixtures/lag_running_config.txt
deleted file mode 100644
index fdec5106ff..0000000000
--- a/test/units/modules/network/icx/fixtures/lag_running_config.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-lag LAG1 dynamic id 100
- ports ethe 1/1/3 ethe 1/1/5 to 1/1/8
- disable ethe 1/1/3 ethe 1/1/5 to 1/1/8
-!
-lag LAG2 dynamic id 200
- ports ethe 1/1/11 ethe 1/1/13 ethe 1/1/15
- disable ethe 1/1/11 ethe 1/1/13 ethe 1/1/15 \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/show_flash b/test/units/modules/network/icx/fixtures/show_flash
deleted file mode 100644
index fff40e91a6..0000000000
--- a/test/units/modules/network/icx/fixtures/show_flash
+++ /dev/null
@@ -1,6 +0,0 @@
-Stack unit 1:
- NAND Type: Micron NAND 2GiB (x 1)
- Compressed Pri Code size = 25966800, Version:08.0.80bT211 (primary.bin)
- Compressed Sec Code size = 29451996, Version:08.0.70dT213 (SPR08070d.bin)
- Compressed Boot-Monitor Image size = 786944, Version:10.1.09T225
- Code Flash Free Space = 1318699008
diff --git a/test/units/modules/network/icx/fixtures/show_interfaces b/test/units/modules/network/icx/fixtures/show_interfaces
deleted file mode 100644
index d6d0e5760e..0000000000
--- a/test/units/modules/network/icx/fixtures/show_interfaces
+++ /dev/null
@@ -1,85 +0,0 @@
-GigabitEthernet1/1/1 is down, line protocol is down
- Port down for 2 day(s) 23 hour(s) 4 minute(s) 18 second(s)
- Hardware is GigabitEthernet, address is 609c.9fe7.d600 (bia 609c.9fe7.d600)
- Configured speed 10Mbit, actual unknown, configured duplex fdx, actual unknown
- Configured mdi mode AUTO, actual unknown
- Member of L2 VLAN ID 1, port is untagged, port state is BLOCKING
- BPDU guard is Disabled, ROOT protect is Disabled, Designated protect is Disabled
- Link Error Dampening is Disabled
- STP configured to ON, priority is level0, mac-learning is enabled
- Openflow is Disabled, Openflow Hybrid mode is Disabled, Flow Control is config enabled, oper enabled, negotiation disabled
- Mirror disabled, Monitor disabled
- Mac-notification is disabled
- Not member of any active trunks
- Not member of any configured trunks
- Port name is test name
- IPG MII 0 bits-time, IPG GMII 0 bits-time
- Internet address is 192.168.1.1/24, MTU 1500 bytes, encapsulation ethernet
- MMU Mode is Store-and-forward
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- Relay Agent Information option: Disabled
- Protected: No
- MAC Port Security: Disabled
-
- This port is not being monitored for queue drops
-Egress queues:
-Queue counters Queued packets Dropped Packets
- 0 0 0
- 1 0 0
- 2 0 0
- 3 0 0
- 4 0 0
- 5 0 0
- 6 0 0
- 7 0 0
-
-GigabitEthernet1/1/2 is down, line protocol is down
- Port down for 2 day(s) 23 hour(s) 4 minute(s) 18 second(s)
- Hardware is GigabitEthernet, address is 609c.9fe7.d601 (bia 609c.9fe7.d601)
- Configured speed auto, actual unknown, configured duplex fdx, actual unknown
- Configured mdi mode AUTO, actual unknown
- Member of L2 VLAN ID 1, port is untagged, port state is BLOCKING
- BPDU guard is Disabled, ROOT protect is Disabled, Designated protect is Disabled
- Link Error Dampening is Disabled
- STP configured to ON, priority is level0, mac-learning is enabled
- Openflow is Disabled, Openflow Hybrid mode is Disabled, Flow Control is config enabled, oper enabled, negotiation disabled
- Mirror disabled, Monitor disabled
- Mac-notification is disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- IPG MII 0 bits-time, IPG GMII 0 bits-time
- MTU 1500 bytes, encapsulation ethernet
- MMU Mode is Store-and-forward
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- Relay Agent Information option: Disabled
- Protected: No
- MAC Port Security: Disabled
-
- This port is not being monitored for queue drops
-Egress queues:
-Queue counters Queued packets Dropped Packets
- 0 0 0
- 1 0 0
- 2 0 0
- 3 0 0
- 4 0 0
- 5 0 0
- 6 0 0
- 7 0 0
diff --git a/test/units/modules/network/icx/fixtures/show_lldp b/test/units/modules/network/icx/fixtures/show_lldp
deleted file mode 100644
index 163439739c..0000000000
--- a/test/units/modules/network/icx/fixtures/show_lldp
+++ /dev/null
@@ -1,9 +0,0 @@
-LLDP transmit interval : 30 seconds
-LLDP transmit hold multiplier : 4 (transmit TTL: 120 seconds)
-LLDP transmit delay : 2 seconds
-LLDP SNMP notification interval : 5 seconds
-LLDP reinitialize delay : 2 seconds
-LLDP-MED fast start repeat count : 3
-
-LLDP maximum neighbors : 2048
-LLDP maximum neighbors per port : 4
diff --git a/test/units/modules/network/icx/fixtures/show_lldp_neighbors_detail b/test/units/modules/network/icx/fixtures/show_lldp_neighbors_detail
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/units/modules/network/icx/fixtures/show_lldp_neighbors_detail
+++ /dev/null
diff --git a/test/units/modules/network/icx/fixtures/show_media b/test/units/modules/network/icx/fixtures/show_media
deleted file mode 100644
index 22cc87fd80..0000000000
--- a/test/units/modules/network/icx/fixtures/show_media
+++ /dev/null
@@ -1,2 +0,0 @@
-Port 1/1/1: Type : 1G M-C (Gig-Copper)
-Port 1/1/2: Type : 1G M-C (Gig-Copper)
diff --git a/test/units/modules/network/icx/fixtures/show_memory b/test/units/modules/network/icx/fixtures/show_memory
deleted file mode 100644
index 7e4e070ac0..0000000000
--- a/test/units/modules/network/icx/fixtures/show_memory
+++ /dev/null
@@ -1,3 +0,0 @@
-Stack unit 1:
-Total DRAM: 954695680 bytes
- Dynamic memory: 954695680 bytes total, 375963648 bytes free, 60% used \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/show_running-config b/test/units/modules/network/icx/fixtures/show_running-config
deleted file mode 100644
index dc4c912de0..0000000000
--- a/test/units/modules/network/icx/fixtures/show_running-config
+++ /dev/null
@@ -1,76 +0,0 @@
-Current configuration:
-!
-ver 08.0.70dT213
-!
-stack unit 1
- module 1 icx7150-48-port-management-module
- module 2 icx7150-2-copper-port-2g-module
- module 3 icx7150-4-sfp-plus-port-40g-module
-!
-!
-!
-lag LAG1 dynamic id 100
- ports ethe 1/1/4 to 1/1/7
-!
-lag LAG2 dynamic id 200
- ports ethe 1/1/12 to 1/1/15
-!
-!
-!
-!
-!
-!
-!
-!
-!
-aaa authentication enable implicit-user
-aaa authentication login default local
-enable super-user-password .....
-hostname ruchusRouter148
-ip dns domain-list fileserver.alethea.in
-ip dns server-address 8.8.8.8
-!
-username alethea password .....
-username ale6 password .....
-!
-!
-banner exec ^C
-welcome icx exec^C
-^C
-!
-banner motd ^C
-welcome icx motd^C
-^C
-!
-banner incoming ^C
-welcome icx incomingg^C
-^C
-!
-!
-!
-!
-!
-!
-!
-!
-interface management 1
- no ip dhcp-client enable
- ip address 10.10.10.148 255.255.255.0
-!
-interface ethernet 1/1/1
- port-name test name
- ip address 192.168.1.1 255.255.255.0
- ipv6 address 2001:db8:85a3::8a2e:370:7334/64
- speed-duplex 10-full
-!
-!
-!
-!
-!
-lldp run
-!
-!
-!
-!
-!
-end
diff --git a/test/units/modules/network/icx/fixtures/show_running-config_begin_interface b/test/units/modules/network/icx/fixtures/show_running-config_begin_interface
deleted file mode 100644
index 10bdbb9958..0000000000
--- a/test/units/modules/network/icx/fixtures/show_running-config_begin_interface
+++ /dev/null
@@ -1,77 +0,0 @@
-router-interface ve 1
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-aaa authentication enable implicit-user
-aaa authentication login default local
-enable super-user-password .....
-hostname ruchusRouter148
-ip dns domain-list fileserver.alethea.in
-ip dns server-address 8.8.8.8
-!
-username alethea password .....
-username ale6 password .....
-!
-!
-banner exec ^C
-welcome icx exec^C
-^C
-!
-banner motd ^C
-welcome icx motd^C
-^C
-!
-banner incoming ^C
-welcome icx incomingg^C
-^C
-!
-!
-!
-!
-!
-!
-!
-!
-interface management 1
- no ip dhcp-client enable
- ip address 10.10.10.148 255.255.255.0
-!
-interface ethernet 1/1/1
- port-name test name
- ip address 192.160.1.1 255.255.255.0
- ipv6 address 2001:db8:85a3::8a2e:370:7334/64
- ipv6 address 2001:db8:85a3:0:0:0:0:0/64
- ip address 192.168.1.1 255.255.255.0
- ipv6 ospf area 1
- ip ospf area 2
- speed-duplex 10-full
-!
-interface ethernet 1/1/2
- ip address 192.161.1.1 255.255.255.0
- ip address 192.168.255.1 255.255.255.0
-!
-interface ve 1
- ip address 10.1.2.1 255.255.255.0
- ip address 192.163.1.1 255.255.255.0
-!
-!
-!
-!
-!
-lldp run
-!
-!
-!
-!
-!
-end
diff --git a/test/units/modules/network/icx/fixtures/show_running-config_include_hostname b/test/units/modules/network/icx/fixtures/show_running-config_include_hostname
deleted file mode 100644
index 6835875d3a..0000000000
--- a/test/units/modules/network/icx/fixtures/show_running-config_include_hostname
+++ /dev/null
@@ -1 +0,0 @@
-hostname ruchusRouter148 \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/show_running-config_include_username.txt b/test/units/modules/network/icx/fixtures/show_running-config_include_username.txt
deleted file mode 100644
index 336427bda8..0000000000
--- a/test/units/modules/network/icx/fixtures/show_running-config_include_username.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-username ale1 privilege 5 password .....
-username ale1 expires 3
-username ale2 privilege 5 password .....
-username ale2 expires 3
-username ale3 privilege 5 password .....
-username ale3 expires 3
-username ale4 privilege 5 password .....
-username ale4 expires 3 \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/show_version b/test/units/modules/network/icx/fixtures/show_version
deleted file mode 100644
index 5559427cb1..0000000000
--- a/test/units/modules/network/icx/fixtures/show_version
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 1996-2017 Brocade Communications Systems, Inc. All rights reserved.
- UNIT 1: compiled on Feb 17 2017 at 16:03:13 labeled as SPS08060
- (23946048 bytes) from Secondary SPS08060.bin
- SW: Version 08.0.60T211
- Compressed Boot-Monitor Image size = 786944, Version:10.1.09T225 (mnz10109)
- Compiled on Sat Feb 18 00:15:43 2017
-
- HW: Stackable ICX7150-48-POE
-==========================================================================
-UNIT 1: SL 1: ICX7150-48P-4X1G POE 48-port Management Module
- Serial #:FEC3220N00C
- Current License: 4X1G
- P-ASIC 0: type B160, rev 11 Chip BCM56160_B0
-==========================================================================
-UNIT 1: SL 2: ICX7150-2X1GC 2-port 2G Module
-==========================================================================
-UNIT 1: SL 3: ICX7150-4X10GF 4-port 40G Module
-==========================================================================
- 1000 MHz ARM processor ARMv7 88 MHz bus
- 8192 KB boot flash memory
- 2048 MB code flash memory
- 1024 MB DRAM
-STACKID 1 system uptime is 4 day(s) 19 hour(s) 53 minute(s) 5 second(s)
-The system started at 00:01:49 GMT+00 Sat Jan 01 2000
-
-The system : started=cold start \ No newline at end of file
diff --git a/test/units/modules/network/icx/fixtures/skip b/test/units/modules/network/icx/fixtures/skip
deleted file mode 100644
index 66cd422fb2..0000000000
--- a/test/units/modules/network/icx/fixtures/skip
+++ /dev/null
@@ -1 +0,0 @@
-Disable page display mode \ No newline at end of file
diff --git a/test/units/modules/network/icx/icx_module.py b/test/units/modules/network/icx/icx_module.py
deleted file mode 100644
index f3f9e92f2a..0000000000
--- a/test/units/modules/network/icx/icx_module.py
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestICXModule(ModuleTestCase):
- ENV_ICX_USE_DIFF = True
-
- def set_running_config(self):
- self.ENV_ICX_USE_DIFF = self.get_running_config()
-
- def get_running_config(self, compare=None):
- if compare is not None:
- diff = compare
- elif os.environ.get('ANSIBLE_CHECK_ICX_RUNNING_CONFIG') is not None:
- if os.environ.get('ANSIBLE_CHECK_ICX_RUNNING_CONFIG') == 'False':
- diff = False
- else:
- diff = True
- else:
- diff = True
- return diff
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False, fields=None):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']))
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- if fields is not None:
- for key in fields:
- if fields.get(key) is not None:
- self.assertEqual(fields.get(key), result.get(key))
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/icx/test_icx_banner.py b/test/units/modules/network/icx/test_icx_banner.py
deleted file mode 100644
index 4217410725..0000000000
--- a/test/units/modules/network/icx/test_icx_banner.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_banner
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXBannerModule(TestICXModule):
-
- module = icx_banner
-
- def setUp(self):
- super(TestICXBannerModule, self).setUp()
- self.mock_exec_command = patch('ansible.modules.network.icx.icx_banner.exec_command')
- self.exec_command = self.mock_exec_command.start()
-
- self.mock_load_config = patch('ansible.modules.network.icx.icx_banner.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_config = patch('ansible.modules.network.icx.icx_banner.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXBannerModule, self).tearDown()
- self.mock_exec_command.stop()
- self.mock_load_config.stop()
- self.mock_get_config.stop()
-
- def load_fixtures(self, commands=None):
- compares = None
-
- def load_file(*args, **kwargs):
- module = args
- for arg in args:
- if arg.params['check_running_config'] is True:
- return load_fixture('icx_banner_show_banner.txt').strip()
- else:
- return ''
-
- self.exec_command.return_value = (0, '', None)
- self.get_config.side_effect = load_file
- self.load_config.return_value = dict(diff=None, session='session')
-
- def test_icx_banner_create(self):
- if not self.ENV_ICX_USE_DIFF:
- set_module_args(dict(banner='motd', text='welcome\nnew user'))
- commands = ['banner motd $\nwelcome\nnew user\n$']
- self.execute_module(changed=True, commands=commands)
- else:
- for banner_type in ('motd', 'exec', 'incoming'):
- set_module_args(dict(banner=banner_type, text='test\nbanner\nstring'))
- commands = ['banner {0} $\ntest\nbanner\nstring\n$'.format(banner_type)]
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_banner_remove(self):
- set_module_args(dict(banner='motd', state='absent'))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['no banner motd']
- self.execute_module(changed=True, commands=commands)
- else:
- commands = ['no banner motd']
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_banner_motd_enter_set(self):
- set_module_args(dict(banner='motd', enterkey=True))
-
- if not self.ENV_ICX_USE_DIFF:
- commands = ['banner motd require-enter-key']
- self.execute_module(changed=True, commands=commands)
- else:
- self.execute_module(changed=False)
-
- def test_icx_banner_motd_enter_remove(self):
- set_module_args(dict(banner='motd', state='absent', enterkey=False))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['no banner motd', 'no banner motd require-enter-key']
- self.execute_module(changed=True, commands=commands)
-
- else:
- commands = ['no banner motd', 'no banner motd require-enter-key']
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_banner_remove_compare(self):
- set_module_args(dict(banner='incoming', state='absent', check_running_config='True'))
- if self.get_running_config(compare=True):
- if not self.ENV_ICX_USE_DIFF:
- commands = []
- self.execute_module(changed=False, commands=commands)
- else:
- commands = []
- self.execute_module()
diff --git a/test/units/modules/network/icx/test_icx_command.py b/test/units/modules/network/icx/test_icx_command.py
deleted file mode 100644
index f60c39a365..0000000000
--- a/test/units/modules/network/icx/test_icx_command.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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 json
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_command
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXCommandModule(TestICXModule):
-
- module = icx_command
-
- def setUp(self):
- super(TestICXCommandModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.icx.icx_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestICXCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- if item == 'skip':
- continue
- obj = json.loads(item['command'])
- command = obj['command']
- except ValueError:
- command = item['command']
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
-
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_icx_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('Copyright (c) 1996-2017 Brocade Communications Systems'))
-
- def test_icx_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('Copyright (c) 1996-2017 Brocade Communications Systems'))
-
- def test_icx_command_wait_for(self):
- wait_for = 'result[0] contains "ICX"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_icx_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- # run_commands call count is 1(skip) + 10(current)
- self.assertEqual(self.run_commands.call_count, 11)
-
- def test_icx_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 3)
-
- def test_icx_command_match_any(self):
- wait_for = ['result[0] contains "ICX"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_icx_command_match_all(self):
- wait_for = ['result[0] contains "ICX"',
- 'result[0] contains "Version:10.1.09T225"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_icx_command_match_all_failure(self):
- wait_for = ['result[0] contains "ICX"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show version']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
-
- def test_icx_command_configure_check_warning(self):
- commands = ['configure terminal']
- set_module_args({
- 'commands': commands,
- '_ansible_check_mode': True,
- })
- result = self.execute_module()
- self.assertEqual(
- result['warnings'],
- ['Only show commands are supported when using check mode, not executing configure terminal'],
- )
-
- def test_icx_command_configure_not_warning(self):
- commands = ['configure terminal']
- set_module_args(dict(commands=commands))
- result = self.execute_module()
- self.assertEqual(result['warnings'], [])
diff --git a/test/units/modules/network/icx/test_icx_config.py b/test/units/modules/network/icx/test_icx_config.py
deleted file mode 100644
index 86b9570a15..0000000000
--- a/test/units/modules/network/icx/test_icx_config.py
+++ /dev/null
@@ -1,219 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-
-from units.compat.mock import patch, MagicMock
-from ansible.modules.network.icx import icx_config
-from ansible.plugins.cliconf.icx import Cliconf
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXConfigModule(TestICXModule):
-
- module = icx_config
-
- def setUp(self):
- super(TestICXConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.icx.icx_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_get_connection = patch('ansible.modules.network.icx.icx_config.get_connection')
- self.get_connection = self.mock_get_connection.start()
-
- self.conn = self.get_connection()
- self.conn.edit_config = MagicMock()
-
- self.mock_run_commands = patch('ansible.modules.network.icx.icx_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- self.cliconf_obj = Cliconf(MagicMock())
- self.running_config = load_fixture('icx_config_config.cfg')
-
- def tearDown(self):
- super(TestICXConfigModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_run_commands.stop()
- self.mock_get_connection.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'icx_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.get_connection.edit_config.return_value = None
-
- def test_icx_config_unchanged(self):
- src = load_fixture('icx_config_config.cfg')
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, src))
- set_module_args(dict(src=src))
- self.execute_module(changed=False)
-
- def test_icx_config_src(self):
- src = load_fixture('icx_config_src.cfg')
- set_module_args(dict(src=src))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config))
- commands = ['hostname foo', 'interface ethernet 1/1/4',
- 'disable']
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_icx_config_save_always(self):
- self.run_commands.return_value = "Hostname foo"
- set_module_args(dict(save_when='always'))
- self.execute_module(changed=True)
- self.assertEqual(self.run_commands.call_count, 2)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.conn.edit_config.call_count, 0)
- args = self.run_commands.call_args[0][1]
- self.assertIn('write memory', args)
-
- def test_icx_config_save_changed_false(self):
- set_module_args(dict(save_when='changed'))
- self.execute_module(changed=False)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.conn.edit_config.call_count, 0)
-
- def test_icx_config_lines_wo_parents(self):
- lines = ['hostname foo']
- set_module_args(dict(lines=lines))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config))
- commands = ['hostname foo']
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_config_lines_w_parents(self):
- lines = ['disable']
- parents = ['interface ethernet 1/1/4']
- set_module_args(dict(lines=lines, parents=parents))
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = icx_config.get_candidate_config(module)
-
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config))
-
- commands = ['interface ethernet 1/1/4', 'disable']
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_config_before_after_no_change(self):
- lines = ['hostname router']
- set_module_args(dict(lines=lines,
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config))
- self.execute_module()
-
- def test_icx_config_config(self):
- config = 'hostname localhost'
- lines = ['hostname router']
- set_module_args(dict(lines=lines, config=config))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), config))
- commands = ['hostname router']
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_config_replace_block(self):
- lines = ['port-name test string', 'test string']
- parents = ['interface ethernet 1/1/4']
- set_module_args(dict(lines=lines, replace='block', parents=parents))
-
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = icx_config.get_candidate_config(module)
-
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_replace='block', path=parents))
-
- commands = parents + lines
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_config_match_none(self):
- lines = ['hostname router']
- set_module_args(dict(lines=lines, match='none'))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config, diff_match='none'))
- self.execute_module(changed=True, commands=lines)
-
- def test_icx_config_match_none_block(self):
- lines = ['speed-duplex 10-full', 'port-name test-interface-4']
- parents = ['interface ethernet 1/1/4']
- set_module_args(dict(lines=lines, parents=parents, match='none'))
-
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = icx_config.get_candidate_config(module)
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='none', path=parents))
-
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_icx_config_match_strict(self):
- lines = ['port-name test-interface-4', 'speed-duplex 10-full',
- 'disable']
- parents = ['interface ethernet 1/1/4']
- set_module_args(dict(lines=lines, parents=parents, match='strict'))
-
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = icx_config.get_candidate_config(module)
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='strict', path=parents))
-
- commands = parents + ['disable']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_icx_config_match_exact(self):
- lines = ['speed-duplex 10-full', 'port-name test-interface-4',
- 'disable']
- parents = ['interface ethernet 1/1/4']
- set_module_args(dict(lines=lines, parents=parents, match='exact'))
-
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = icx_config.get_candidate_config(module)
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='exact', path=parents))
-
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_icx_config_src_and_lines_fails(self):
- args = dict(src='foo', lines='foo')
- set_module_args(args)
- result = self.execute_module(failed=True)
-
- def test_icx_config_src_and_parents_fails(self):
- args = dict(src='foo', parents='foo')
- set_module_args(args)
- result = self.execute_module(failed=True)
-
- def test_icx_config_match_exact_requires_lines(self):
- args = dict(match='exact')
- set_module_args(args)
- result = self.execute_module(failed=True)
-
- def test_icx_config_match_strict_requires_lines(self):
- args = dict(match='strict')
- set_module_args(args)
- result = self.execute_module(failed=True)
-
- def test_icx_config_replace_block_requires_lines(self):
- args = dict(replace='block')
- set_module_args(args)
- result = self.execute_module(failed=True)
-
- def test_icx_config_replace_config_requires_src(self):
- args = dict(replace='config')
- set_module_args(args)
- result = self.execute_module(failed=True)
-
- def test_icx_config_save_changed_true(self):
- src = load_fixture('icx_config_src.cfg')
- set_module_args(dict(src=src, save_when='changed'))
- commands = ['hostname foo', 'interface ethernet 1/1/4', 'disable']
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config))
- self.execute_module(changed=True, commands=commands)
- self.assertEqual(self.run_commands.call_count, 2)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.conn.edit_config.call_count, 1)
- args = self.run_commands.call_args[0][1]
- self.assertIn('write memory', args)
diff --git a/test/units/modules/network/icx/test_icx_copy.py b/test/units/modules/network/icx/test_icx_copy.py
deleted file mode 100644
index 1a5b5781bb..0000000000
--- a/test/units/modules/network/icx/test_icx_copy.py
+++ /dev/null
@@ -1,203 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_copy
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXSCPModule(TestICXModule):
-
- module = icx_copy
-
- def setUp(self):
- super(TestICXSCPModule, self).setUp()
- self.mock_exec_scp = patch('ansible.modules.network.icx.icx_copy.exec_scp')
- self.mock_run_commands = patch('ansible.modules.network.icx.icx_copy.run_commands')
- self.exec_command = self.mock_exec_scp.start()
- self.run_commands = self.mock_run_commands.start()
- self.mock_exec_command = patch('ansible.modules.network.icx.icx_copy.exec_command')
- self.exec_commands = self.mock_exec_command.start()
-
- def tearDown(self):
- super(TestICXSCPModule, self).tearDown()
- self.mock_exec_scp.stop()
- self.mock_run_commands.stop()
- self.mock_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- self.exec_commands.return_value = (0, load_fixture('icx_copy.txt').strip(), None)
- # self.exec_command.return_value = (0, load_fixture('icx_banner_show_banner.txt').strip(), None)
- if(commands is not None):
- fixtureName = commands[0].replace(" ", "_") + ".txt"
- # print("loading fixture: ",load_fixture(fixtureName).strip())
- self.mock_exec_scp.return_value = load_fixture("icx_copy.txt").strip()
- self.mock_run_commands.return_value = load_fixture("icx_copy.txt").strip()
- else:
- self.exec_command.return_value = ""
-
- def test_icx_scp_upload_running(self):
- set_module_args(
- dict(
- upload='running-config',
- protocol='scp',
- remote_server='172.16.10.49',
- remote_filename='running.conf',
- remote_user='alethea',
- remote_pass='alethea123'))
- commands = ['copy running-config scp 172.16.10.49 running.conf']
- self.execute_module(commands=commands)
-
- def test_icx_scp_download_running(self):
- set_module_args(
- dict(
- download='running-config',
- protocol='scp',
- remote_server='172.16.10.49',
- remote_filename='running.conf',
- remote_user='alethea',
- remote_pass='alethea123'))
- commands = ['copy scp running-config 172.16.10.49 running.conf']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_scp_upload_startup(self):
- set_module_args(
- dict(
- upload='startup-config',
- protocol='scp',
- remote_server='172.16.10.49',
- remote_filename='running.conf',
- remote_user='alethea',
- remote_pass='alethea123'))
- commands = ['copy startup-config scp 172.16.10.49 running.conf']
- self.execute_module(commands=commands, changed=False)
-
- def test_icx_scp_download_startup(self):
- set_module_args(
- dict(
- download='startup-config',
- protocol='scp',
- remote_server='172.16.10.49',
- remote_filename='running.conf',
- remote_user='alethea',
- remote_pass='alethea123'))
- commands = ['copy scp startup-config 172.16.10.49 running.conf']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_scp_upload_primary(self):
- set_module_args(
- dict(
- upload='flash_primary',
- protocol='scp',
- remote_server='172.16.10.49',
- remote_filename='SPS08080b.bin',
- remote_user='alethea',
- remote_pass='alethea123'))
- commands = ['copy flash scp 172.16.10.49 SPS08080b.bin primary']
- self.execute_module(commands=commands, changed=False)
-
- def test_icx_scp_download_primary(self):
- set_module_args(
- dict(
- download='flash_primary',
- protocol='scp',
- remote_server='172.16.10.49',
- remote_filename='SPS08080b.bin',
- remote_user='alethea',
- remote_pass='alethea123'))
- commands = ['copy scp flash 172.16.10.49 SPS08080b.bin primary']
- self.execute_module(commands=commands, changed=True)
-
- # HTTPS tests
-
- def test_icx_https_upload_running(self):
- set_module_args(
- dict(
- upload='running-config',
- protocol='https',
- remote_server='fileserver.alethea.in',
- remote_filename='filestorage/test/upload_running'))
- commands = ['copy running-config https fileserver.alethea.in filestorage/test/upload_running']
- self.execute_module(commands=commands)
-
- def test_icx_https_download_running(self):
- set_module_args(
- dict(
- download='running-config',
- protocol='https',
- remote_server='fileserver.alethea.in',
- remote_filename='filestorage/test/running.conf'))
- commands = ['copy https running-config fileserver.alethea.in filestorage/test/running.conf']
- self.execute_module(failed=True)
-
- def test_icx_https_upload_startup(self):
- set_module_args(
- dict(
- upload='startup-config',
- protocol='https',
- remote_server='fileserver.alethea.in',
- remote_filename='filestorage/test/upload_startup'))
- commands = ['copy startup-config https fileserver.alethea.in filestorage/test/upload_startup']
- self.execute_module(commands=commands)
-
- def test_icx_https_download_startup(self):
- set_module_args(
- dict(
- download='startup-config',
- protocol='https',
- remote_server='fileserver.alethea.in',
- remote_filename='filestorage/test/startup.conf'))
- commands = ['copy https startup-config fileserver.alethea.in filestorage/test/startup.conf']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_https_upload_primary(self):
- set_module_args(
- dict(
- upload='flash_primary',
- protocol='https',
- remote_server='fileserver.alethea.in',
- remote_filename='filestorage/test/upload_primary'))
- commands = ['copy startup-config https fileserver.alethea.in filestorage/test/upload_primary']
- self.execute_module(failed=True)
-
- def test_icx_https_download_primary(self):
- set_module_args(dict(download='flash_primary', protocol='https', remote_server='fileserver.alethea.in', remote_filename='filestorage/test/primary.bin'))
- commands = ['copy https flash fileserver.alethea.in filestorage/test/primary.bin primary']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_https_upload_secondary(self):
- set_module_args(
- dict(
- upload='flash_secondary',
- protocol='https',
- remote_server='fileserver.alethea.in',
- remote_filename='filestorage/test/upload_secondary'))
- commands = ['copy flash https fileserver.alethea.in filestorage/test/upload_secondary secondary']
- self.execute_module(failed=True)
-
- def test_icx_https_download_secondary(self):
- set_module_args(
- dict(
- download='flash_secondary',
- protocol='https',
- remote_server='fileserver.alethea.in',
- remote_filename='filestorage/test/secondary.bin'))
- commands = ['copy https flash fileserver.alethea.in filestorage/test/secondary.bin secondary']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_https_upload_download(self):
- set_module_args(
- dict(
- upload='flash_secondary',
- download='flash_secondary',
- protocol='https',
- remote_server='fileserver.alethea.in',
- remote_filename='filestorage/test/secondary.bin'))
- self.execute_module(failed=True)
-
- def test_icx_scp_no_user(self):
- set_module_args(dict(upload='running-config', protocol='scp', remote_server='172.16.10.49', remote_filename='running.conf'))
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/icx/test_icx_facts.py b/test/units/modules/network/icx/test_icx_facts.py
deleted file mode 100644
index 03af204cea..0000000000
--- a/test/units/modules/network/icx/test_icx_facts.py
+++ /dev/null
@@ -1,137 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_facts
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXFactsModule(TestICXModule):
-
- module = icx_facts
-
- def setUp(self):
- super(TestICXFactsModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.icx.icx_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestICXFactsModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- module = args
- commands = kwargs['commands']
- if(commands):
- resp = list()
- for cmd in commands:
- fixtureName = cmd.replace(" ", "_")
- newFixtureName = fixtureName.replace("_|_", "_")
- output = load_fixture(newFixtureName).strip()
- if(output):
- resp.append(output)
- return resp
- self.run_commands.side_effect = load_from_file
-
- def test_icx_facts_default(self):
- set_module_args(dict(gather_subset=["default"]))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_model'], 'Stackable ICX7150-48-POE'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_serialnum'], 'FEC3220N00C'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_version'], '08.0.60T211'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_hostname'], 'ruchusRouter148'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_image'], 'SPS08060.bin'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_stacked_models'], ['ICX7150-48P-4X1G', 'ICX7150-2X1GC', 'ICX7150-4X10GF']
- )
-
- def test_icx_facts_interfaces(self):
- set_module_args(dict(gather_subset=["interfaces"]))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["macaddress"], "609c.9fe7.d600"
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["ipv4"]["address"], "192.168.1.1"
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["ipv4"]["subnet"], "24"
- )
-
- def test_icx_facts_hardware(self):
- set_module_args(dict(gather_subset=["hardware"]))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_filesystems'], "flash"
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_filesystems_info'], {'flash': {'Stack unit 1': {'spacetotal': '2GiB', 'spacefree': '1287792Kb'}}}
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_memfree_mb'], 367152
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_memtotal_mb'], 932320
- )
-
- def test_icx_facts_not_hardware(self):
- set_module_args(dict(gather_subset=["!hardware"]))
- result = self.execute_module()
- print(result)
-
- def test_icx_facts_all(self):
- set_module_args(dict(gather_subset=["all"]))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_filesystems'], "flash"
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_filesystems_info'], {'flash': {'Stack unit 1': {'spacetotal': '2GiB', 'spacefree': '1287792Kb'}}}
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_memfree_mb'], 367152
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_memtotal_mb'], 932320
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["macaddress"], "609c.9fe7.d600"
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["ipv4"]["address"], "192.168.1.1"
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']["GigabitEthernet1/1/1"]["ipv4"]["subnet"], "24"
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_model'], 'Stackable ICX7150-48-POE'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_serialnum'], 'FEC3220N00C'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_version'], '08.0.60T211'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_hostname'], 'ruchusRouter148'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_image'], 'SPS08060.bin'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_stacked_models'], ['ICX7150-48P-4X1G', 'ICX7150-2X1GC', 'ICX7150-4X10GF']
- )
diff --git a/test/units/modules/network/icx/test_icx_interface.py b/test/units/modules/network/icx/test_icx_interface.py
deleted file mode 100644
index 02df1ae516..0000000000
--- a/test/units/modules/network/icx/test_icx_interface.py
+++ /dev/null
@@ -1,208 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_interface
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXInterfaceModule(TestICXModule):
-
- module = icx_interface
-
- def setUp(self):
- super(TestICXInterfaceModule, self).setUp()
- self.mock_exec_command = patch('ansible.modules.network.icx.icx_interface.exec_command')
- self.exec_command = self.mock_exec_command.start()
-
- self.mock_load_config = patch('ansible.modules.network.icx.icx_interface.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_config = patch('ansible.modules.network.icx.icx_interface.get_config')
- self.get_config = self.mock_get_config.start()
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXInterfaceModule, self).tearDown()
- self.mock_exec_command.stop()
- self.mock_load_config.stop()
- self.mock_get_config.stop()
-
- def load_fixtures(self, commands=None):
- compares = None
-
- def load_file(*args, **kwargs):
- module, commands, val = args
- for arg in args:
- if arg.params['check_running_config'] is True:
- self.exec_command.return_value = (0, load_fixture('icx_interface_config.cfg').strip(), None)
- return load_fixture('icx_interface_config.cfg').strip()
- else:
- self.exec_command.return_value = 0, '', None
- return ''
-
- self.get_config.side_effect = load_file
- self.load_config.return_value = None
-
- def test_icx_interface_set_config(self):
- power = dict(dict(enabled='True'))
- set_module_args(dict(name='ethernet 1/1/1', description='welcome port', speed='1000-full', power=power))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface ethernet 1/1/1',
- 'speed-duplex 1000-full',
- 'port-name welcome port',
- 'inline power',
- 'enable'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface ethernet 1/1/1',
- 'speed-duplex 1000-full',
- 'port-name welcome port',
- 'inline power'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_interface_remove(self):
- set_module_args(dict(name='ethernet 1/1/1', state='absent'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['no interface ethernet 1/1/1'])
- else:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['no interface ethernet 1/1/1'])
-
- def test_icx_interface_disable(self):
- set_module_args(dict(name='ethernet 1/1/1', enabled=False))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['interface ethernet 1/1/1', 'disable'])
- else:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['interface ethernet 1/1/1', 'disable'])
-
- def test_icx_interface_set_power(self):
- power = dict(by_class='2')
- set_module_args(dict(name='ethernet 1/1/2', power=dict(power)))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface ethernet 1/1/2',
- 'inline power power-by-class 2',
- 'enable'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface ethernet 1/1/2',
- 'inline power power-by-class 2'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_interface_aggregate(self):
- power = dict(dict(enabled='True'))
- aggregate = [
- dict(name='ethernet 1/1/9', description='welcome port9', speed='1000-full', power=power),
- dict(name='ethernet 1/1/10', description='welcome port10', speed='1000-full', power=power)
- ]
- set_module_args(dict(aggregate=aggregate))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface ethernet 1/1/9',
- 'speed-duplex 1000-full',
- 'port-name welcome port9',
- 'inline power',
- 'enable',
- 'interface ethernet 1/1/10',
- 'speed-duplex 1000-full',
- 'port-name welcome port10',
- 'inline power',
- 'enable'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface ethernet 1/1/9',
- 'speed-duplex 1000-full',
- 'port-name welcome port9',
- 'inline power',
- 'enable',
- 'interface ethernet 1/1/10',
- 'speed-duplex 1000-full',
- 'port-name welcome port10',
- 'inline power',
- 'enable'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_interface_lag_config(self):
- set_module_args(dict(name='lag 11', description='lag ports of id 11', speed='auto'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface lag 11',
- 'speed-duplex auto',
- 'port-name lag ports of id 11',
- 'enable'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface lag 11',
- 'speed-duplex auto',
- 'port-name lag ports of id 11'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_interface_loopback_config(self):
- set_module_args(dict(name='loopback 10', description='loopback ports', enabled=True))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface loopback 10',
- 'port-name loopback ports',
- 'enable'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'interface loopback 10',
- 'port-name loopback ports',
- 'enable'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_interface_state_up_cndt(self):
- set_module_args(dict(name='ethernet 1/1/1', state='up', tx_rate='ge(0)'))
- if not self.ENV_ICX_USE_DIFF:
- self.assertTrue(self.execute_module(failed=True))
- else:
- self.assertTrue(self.execute_module(failed=False))
-
- def test_icx_interface_lldp_neighbors_cndt(self):
- set_module_args(dict(name='ethernet 1/1/48', neighbors=[dict(port='GigabitEthernet1/1/48', host='ICX7150-48 Router')]))
- if not self.ENV_ICX_USE_DIFF:
- self.assertTrue(self.execute_module(changed=False, failed=True))
- else:
- self.assertTrue(self.execute_module(changed=False, failed=False))
-
- def test_icx_interface_disable_compare(self):
- set_module_args(dict(name='ethernet 1/1/1', enabled=True, check_running_config='True'))
- if self.get_running_config(compare=True):
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=False)
- self.assertEqual(result['commands'], [])
- else:
- result = self.execute_module(changed=False)
- self.assertEqual(result['commands'], [])
diff --git a/test/units/modules/network/icx/test_icx_l3_interface.py b/test/units/modules/network/icx/test_icx_l3_interface.py
deleted file mode 100644
index e0d22e8a96..0000000000
--- a/test/units/modules/network/icx/test_icx_l3_interface.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_l3_interface
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXFactsModule(TestICXModule):
-
- module = icx_l3_interface
-
- def setUp(self):
- super(TestICXFactsModule, self).setUp()
- self.mock_exec_command = patch('ansible.modules.network.icx.icx_l3_interface.exec_command')
- self.exec_command = self.mock_exec_command.start()
- self.mock_get_config = patch('ansible.modules.network.icx.icx_l3_interface.get_config')
- self.get_config = self.mock_get_config.start()
- self.mock_load_config = patch('ansible.modules.network.icx.icx_l3_interface.load_config')
- self.load_config = self.mock_load_config.start()
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXFactsModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- compares = None
-
- def load_from_file(*args, **kwargs):
- module = args
- for arg in args:
- if arg.params['check_running_config'] is True:
- return load_fixture('show_running-config_begin_interface').strip()
- else:
- return ''
-
- def write_config(*args, **kwargs):
- return ""
-
- self.get_config.side_effect = load_from_file
- self.load_config.side_effect = write_config
-
- def test_icx_l3_interface_set_ipv4(self):
- set_module_args(dict(name="ethernet 1/1/1", ipv4="192.168.1.1/24"))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- "interface ethernet 1/1/1",
- "ip address 192.168.1.1 255.255.255.0",
- "exit"
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- "interface ethernet 1/1/1",
- "ip address 192.168.1.1 255.255.255.0",
- "exit"
- ]
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_l3_interface_set_ipv6(self):
- set_module_args(dict(name="ethernet 1/1/1", ipv6="2001:db8:85a3:0:0:0:0:1/64"))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- "interface ethernet 1/1/1",
- "ipv6 address 2001:db8:85a3:0:0:0:0:1/64",
- "exit"
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- "interface ethernet 1/1/1",
- "ipv6 address 2001:db8:85a3:0:0:0:0:1/64",
- "exit"
- ]
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_l3_interface_remove_ipv6(self):
- set_module_args(dict(name="ethernet 1/1/1", ipv6="2001:db8:85a3:0:0:0:0:0/64", ipv4="192.168.1.1/24", state="absent"))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- "interface ethernet 1/1/1",
- "no ip address 192.168.1.1 255.255.255.0",
- "no ipv6 address 2001:db8:85a3:0:0:0:0:0/64",
- "exit"
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- "interface ethernet 1/1/1",
- 'no ip address 192.168.1.1 255.255.255.0',
- "no ipv6 address 2001:db8:85a3:0:0:0:0:0/64",
- "exit"
- ]
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_l3_interface_set_aggregate(self):
- set_module_args(dict(aggregate=[
- dict(name="ve 1", ipv6="2001:db8:85a3:0:0:0:0:0/64", ipv4="192.168.1.1/24")
- ]))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- "interface ve 1",
- "ipv6 address 2001:db8:85a3:0:0:0:0:0/64",
- "ip address 192.168.1.1 255.255.255.0",
- "exit"
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- "interface ve 1",
- "ipv6 address 2001:db8:85a3:0:0:0:0:0/64",
- "ip address 192.168.1.1 255.255.255.0",
- "exit"
- ]
- self.execute_module(commands=commands, changed=True)
diff --git a/test/units/modules/network/icx/test_icx_linkagg.py b/test/units/modules/network/icx/test_icx_linkagg.py
deleted file mode 100644
index 17580e7564..0000000000
--- a/test/units/modules/network/icx/test_icx_linkagg.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_linkagg
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXLinkaggModule(TestICXModule):
-
- module = icx_linkagg
-
- def setUp(self):
- super(TestICXLinkaggModule, self).setUp()
- self.mock_get_config = patch('ansible.modules.network.icx.icx_linkagg.get_config')
- self.get_config = self.mock_get_config.start()
- self.mock_load_config = patch('ansible.modules.network.icx.icx_linkagg.load_config')
- self.load_config = self.mock_load_config.start()
- self.mock_exec_command = patch('ansible.modules.network.icx.icx_linkagg.exec_command')
- self.exec_command = self.mock_exec_command.start()
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXLinkaggModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- compares = None
-
- def load_from_file(*args, **kwargs):
- module = args
- for arg in args:
- if arg.params['check_running_config'] is True:
- return load_fixture('lag_running_config.txt').strip()
- else:
- return ''
-
- self.get_config.side_effect = load_from_file
- self.load_config.return_value = None
-
- def test_icx_linkage_create_new_LAG(self):
- set_module_args(dict(group=10, name="LAG3", mode='static', members=['ethernet 1/1/4 to ethernet 1/1/7']))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['lag LAG3 static id 10', 'ports ethernet 1/1/4 to ethernet 1/1/7', 'exit']
- self.execute_module(commands=commands, changed=True)
- else:
- commands = ['lag LAG3 static id 10', 'ports ethernet 1/1/4 to ethernet 1/1/7', 'exit']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_linkage_modify_LAG(self):
- set_module_args(dict(group=100, name="LAG1", mode='dynamic', members=['ethernet 1/1/4 to 1/1/7']))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'lag LAG1 dynamic id 100',
- 'ports ethernet 1/1/4 to 1/1/7',
- 'exit'
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- 'lag LAG1 dynamic id 100',
- 'no ports ethernet 1/1/3',
- 'no ports ethernet 1/1/8',
- 'ports ethernet 1/1/4',
- 'exit'
- ]
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_linkage_modify_LAG_compare(self):
- set_module_args(dict(group=100, name="LAG1", mode='dynamic', members=['ethernet 1/1/4 to 1/1/7'], check_running_config=True))
- if self.get_running_config(compare=True):
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'lag LAG1 dynamic id 100',
- 'no ports ethernet 1/1/3',
- 'no ports ethernet 1/1/8',
- 'ports ethernet 1/1/4',
- 'exit'
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- 'lag LAG1 dynamic id 100',
- 'no ports ethernet 1/1/3',
- 'no ports ethernet 1/1/8',
- 'ports ethernet 1/1/4',
- 'exit'
- ]
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_linkage_purge_LAG(self):
- set_module_args(dict(aggregate=[dict(group=100, name="LAG1", mode='dynamic')], purge=True))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'lag LAG1 dynamic id 100',
- 'exit'
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- 'lag LAG1 dynamic id 100',
- 'exit',
- 'no lag LAG2 dynamic id 200'
- ]
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_linkage_remove_LAG(self):
- set_module_args(dict(group=100, name="LAG1", mode='dynamic', members=['ethernet 1/1/4 to 1/1/7'], state='absent'))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'no lag LAG1 dynamic id 100'
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- 'no lag LAG1 dynamic id 100'
- ]
- self.execute_module(commands=commands, changed=True)
diff --git a/test/units/modules/network/icx/test_icx_lldp.py b/test/units/modules/network/icx/test_icx_lldp.py
deleted file mode 100644
index be94ed3192..0000000000
--- a/test/units/modules/network/icx/test_icx_lldp.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_lldp
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXlldpModule(TestICXModule):
-
- module = icx_lldp
-
- def setUp(self):
- super(TestICXlldpModule, self).setUp()
-
- self.mock_load_config = patch('ansible.modules.network.icx.icx_lldp.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.icx.icx_lldp.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXlldpModule, self).tearDown()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- compares = None
- module, commands = args
- state = module.params['state']
- if module.params['check_running_config'] is True:
- return load_fixture('icx_lldp_%s' % state).strip()
- else:
- return ''
-
- self.run_commands.side_effect = load_from_file
-
- def test_icx_lldp_enable_state_None(self):
- interfaces_spec = [dict(name='ethernet 1/1/9', state='present')]
- set_module_args(dict(interfaces=interfaces_spec))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(failed=True)
- else:
- result = self.execute_module(failed=True)
-
- def test_icx_lldp_enable_state_absent_compare(self):
- interfaces_spec = [dict(name='ethernet 1/1/9', state='present')]
- set_module_args(dict(interfaces=interfaces_spec, state='absent', check_running_config=True))
- if self.get_running_config(compare=True):
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['no lldp run'])
- else:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['no lldp run'])
-
- def test_icx_lldp_enable_state_present(self):
- interfaces_spec = [dict(name='ethernet 1/1/9', state='present')]
- set_module_args(dict(interfaces=interfaces_spec, state='present'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['lldp enable ports ethernet 1/1/9'])
-
- else:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['lldp enable ports ethernet 1/1/9'])
-
- def test_icx_lldp_multi_enable_state_present(self):
- interfaces_spec = [dict(name=['ethernet 1/1/9', 'ethernet 1/1/1 to 1/1/6'], state='present')]
- set_module_args(dict(interfaces=interfaces_spec, state='present'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['lldp enable ports ethernet 1/1/9', 'lldp enable ports ethernet 1/1/1 to 1/1/6'])
- else:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['lldp enable ports ethernet 1/1/9', 'lldp enable ports ethernet 1/1/1 to 1/1/6'])
-
- def test_icx_lldp_multi_disable_state_present(self):
- interfaces_spec = [dict(name=['ethernet 1/1/9', 'ethernet 1/1/1 to 1/1/6'], state='absent')]
- set_module_args(dict(interfaces=interfaces_spec, state='present'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['no lldp enable ports ethernet 1/1/9', 'no lldp enable ports ethernet 1/1/1 to 1/1/6'])
- else:
- result = self.execute_module(changed=True)
- self.assertEqual(result['commands'], ['no lldp enable ports ethernet 1/1/9', 'no lldp enable ports ethernet 1/1/1 to 1/1/6'])
-
- def test_icx_lldp_all_error(self):
- interfaces_spec = [dict(name=['ethernet all'], state='absent')]
- set_module_args(dict(interfaces=interfaces_spec, state='present'))
- if not self.ENV_ICX_USE_DIFF:
- self.execute_module(failed=True)
- else:
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/icx/test_icx_logging.py b/test/units/modules/network/icx/test_icx_logging.py
deleted file mode 100644
index f04c92c45e..0000000000
--- a/test/units/modules/network/icx/test_icx_logging.py
+++ /dev/null
@@ -1,149 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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 json
-
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_logging
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXLoggingModule(TestICXModule):
-
- module = icx_logging
-
- def setUp(self):
- super(TestICXLoggingModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.icx.icx_logging.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.icx.icx_logging.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_exec_command = patch('ansible.modules.network.icx.icx_logging.exec_command')
- self.exec_command = self.mock_exec_command.start()
-
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXLoggingModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- compares = None
-
- def load_file(*args, **kwargs):
- module = args
- for arg in args:
- if arg.params['check_running_config'] is True:
- return load_fixture('icx_logging_config.cfg').strip()
- else:
- return ''
-
- self.get_config.side_effect = load_file
- self.load_config.return_value = None
-
- def test_icx_logging_set_host(self):
- set_module_args(dict(dest='host', name='172.16.10.15'))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['logging host 172.16.10.15']
- self.execute_module(changed=True, commands=commands)
- else:
- commands = ['logging host 172.16.10.15']
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_logging_set_ipv6_host(self):
- set_module_args(dict(dest='host', name='2001:db8::1'))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['logging host 2001:db8::1']
- else:
- commands = ['logging host 2001:db8::1']
-
- def test_icx_logging_set_host_udp_port(self):
- set_module_args(dict(dest='host', name='172.16.10.15', udp_port=2500))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['logging host 172.16.10.15 udp-port 2500']
- self.execute_module(changed=True, commands=commands)
- else:
- commands = ['logging host 172.16.10.15 udp-port 2500']
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_logging_remove_console(self):
- set_module_args(dict(dest='console', state='absent'))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['no logging console']
- self.execute_module(changed=True, commands=commands)
- else:
- commands = ['no logging console']
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_logging_remove_on(self):
- set_module_args(dict(dest='on', state='absent'))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['no logging on']
- self.exec_command(changed=True, commands=commands)
- else:
- commands = ['no logging on']
- self.exec_command(changed=True, commands=commands)
-
- def test_icx_logging_set_aggregate(self):
- aggregate = [
- dict(dest='host', name='172.16.10.16', udp_port=2500, facility='local0'),
- dict(dest='host', name='2001:db8::1', udp_port=5000)
- ]
- set_module_args(dict(aggregate=aggregate, state='present'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'logging facility local0',
- 'logging host 172.16.10.16 udp-port 2500',
- 'logging host ipv6 2001:db8::1 udp-port 5000'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'logging facility local0',
- 'logging host 172.16.10.16 udp-port 2500',
- 'logging host ipv6 2001:db8::1 udp-port 5000'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_logging_set_aggregate_remove(self):
- aggregate = [
- dict(dest='host', name='172.16.10.55', udp_port=2500, facility='local0'),
- dict(dest='host', name='2001:db8::1', udp_port=5500)
- ]
- set_module_args(dict(aggregate=aggregate, state='absent'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'no logging facility',
- 'no logging host 172.16.10.55 udp-port 2500',
- 'no logging host ipv6 2001:db8::1 udp-port 5500'
- ]
-
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'no logging facility',
- 'no logging host 172.16.10.55 udp-port 2500',
- 'no logging host ipv6 2001:db8::1 udp-port 5500'
- ]
-
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_logging_compare(self):
- set_module_args(dict(dest='host', name='172.16.10.21', check_running_config=True))
- if self.get_running_config(compare=True):
- if not self.ENV_ICX_USE_DIFF:
- self.execute_module(changed=False)
- else:
- self.execute_module(changed=False)
diff --git a/test/units/modules/network/icx/test_icx_ping.py b/test/units/modules/network/icx/test_icx_ping.py
deleted file mode 100644
index c9b99d8be1..0000000000
--- a/test/units/modules/network/icx/test_icx_ping.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_ping
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXPingModule(TestICXModule):
- ''' Class used for Unit Tests agains icx_ping module '''
- module = icx_ping
-
- def setUp(self):
- super(TestICXPingModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.icx.icx_ping.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestICXPingModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- module = args
- commands = kwargs['commands']
- output = list()
-
- for command in commands:
- filename = str(command).split(' | ')[0].replace(' ', '_')
- output.append(load_fixture('icx_ping_%s' % filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_icx_ping_expected_success(self):
- ''' Test for successful pings when destination should be reachable '''
- set_module_args(dict(count=2, dest="8.8.8.8"))
- commands = ['ping 8.8.8.8 count 2']
- fields = {'packets_tx': 2}
- self.execute_module(commands=commands, fields=fields)
-
- def test_icx_ping_expected_failure(self):
- ''' Test for unsuccessful pings when destination should not be reachable '''
- set_module_args(dict(count=2, dest="10.255.255.250", state="absent"))
- self.execute_module()
-
- def test_icx_ping_unexpected_success(self):
- ''' Test for successful pings when destination should not be reachable - FAIL. '''
- set_module_args(dict(count=2, dest="8.8.8.8", state="absent"))
- self.execute_module(failed=True)
-
- def test_icx_ping_unexpected_failure(self):
- ''' Test for unsuccessful pings when destination should be reachable - FAIL. '''
- set_module_args(dict(count=2, dest="10.255.255.250", timeout=45))
- fields = {'packets_tx': 1, 'packets_rx': 0, 'packet_loss': '100%', 'rtt': {'max': 0, 'avg': 0, 'min': 0}}
- self.execute_module(failed=True, fields=fields)
-
- def test_icx_ping_expected_success_cmd(self):
- ''' Test for successful pings when destination should be reachable '''
- set_module_args(dict(count=5, dest="8.8.8.8", ttl=70))
- commands = ['ping 8.8.8.8 count 5 ttl 70']
- self.execute_module(commands=commands)
-
- def test_icx_ping_invalid_ttl(self):
- ''' Test for invalid range of ttl for reachable '''
- set_module_args(dict(dest="8.8.8.8", ttl=300))
- commands = ['ping 8.8.8.8 ttl 300']
- self.execute_module(failed=True, sort=False)
-
- def test_icx_ping_invalid_timeout(self):
- ''' Test for invalid range of timeout for reachable '''
- set_module_args(dict(dest="8.8.8.8", timeout=4294967296))
- self.execute_module(failed=True, sort=False)
-
- def test_icx_ping_invalid_count(self):
- ''' Test for invalid range of count for reachable '''
- set_module_args(dict(dest="8.8.8.8", count=4294967296))
- self.execute_module(failed=True, sort=False)
-
- def test_icx_ping_invalid_size(self):
- '''Test for invalid range of size for reachable '''
- set_module_args(dict(dest="8.8.8.8", size=10001))
- self.execute_module(failed=True, sort=False)
diff --git a/test/units/modules/network/icx/test_icx_static_route.py b/test/units/modules/network/icx/test_icx_static_route.py
deleted file mode 100644
index 9ec5034668..0000000000
--- a/test/units/modules/network/icx/test_icx_static_route.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_static_route
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXStaticRouteModule(TestICXModule):
-
- module = icx_static_route
-
- def setUp(self):
- super(TestICXStaticRouteModule, self).setUp()
- self.mock_get_config = patch('ansible.modules.network.icx.icx_static_route.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.icx.icx_static_route.load_config')
- self.load_config = self.mock_load_config.start()
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXStaticRouteModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None):
- compares = None
-
- def load_file(*args, **kwargs):
- module = args
- for arg in args:
- if arg.params['check_running_config'] is True:
- return load_fixture('icx_static_route_config.txt').strip()
- else:
- return ''
-
- self.get_config.side_effect = load_file
- self.load_config.return_value = None
-
- def test_icx_static_route_config(self):
- set_module_args(dict(prefix='192.126.23.0/24', next_hop='10.10.14.3'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'ip route 192.126.23.0 255.255.255.0 10.10.14.3'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'ip route 192.126.23.0 255.255.255.0 10.10.14.3'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_static_route_config_compare(self):
- set_module_args(dict(prefix='172.16.10.0/24', next_hop='10.0.0.8', check_running_config=True))
- if self.get_running_config(compare=True):
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=False)
- expected_commands = [
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=False)
- expected_commands = [
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_static_route_distance_config(self):
- set_module_args(dict(prefix='192.126.0.0', mask='255.255.0.0', next_hop='10.10.14.3', admin_distance='40'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'ip route 192.126.0.0 255.255.0.0 10.10.14.3 distance 40'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'ip route 192.126.0.0 255.255.0.0 10.10.14.3 distance 40'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_static_route_aggregate(self):
- aggregate = [
- dict(prefix='192.126.23.0/24', next_hop='10.10.14.3'),
- dict(prefix='192.126.0.0', mask='255.255.0.0', next_hop='10.10.14.3', admin_distance='40')
- ]
- set_module_args(dict(aggregate=aggregate))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'ip route 192.126.23.0 255.255.255.0 10.10.14.3',
- 'ip route 192.126.0.0 255.255.0.0 10.10.14.3 distance 40'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'ip route 192.126.23.0 255.255.255.0 10.10.14.3',
- 'ip route 192.126.0.0 255.255.0.0 10.10.14.3 distance 40'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_static_route_remove(self):
- set_module_args(dict(prefix='172.16.10.0/24', next_hop='10.0.0.8', state='absent'))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'no ip route 172.16.10.0 255.255.255.0 10.0.0.8',
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'no ip route 172.16.10.0 255.255.255.0 10.0.0.8',
- ]
- self.assertEqual(result['commands'], expected_commands)
diff --git a/test/units/modules/network/icx/test_icx_system.py b/test/units/modules/network/icx/test_icx_system.py
deleted file mode 100644
index 3a42d48b46..0000000000
--- a/test/units/modules/network/icx/test_icx_system.py
+++ /dev/null
@@ -1,164 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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 json
-
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_system
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXSystemModule(TestICXModule):
-
- module = icx_system
-
- def setUp(self):
- super(TestICXSystemModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.icx.icx_system.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.icx.icx_system.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_exec_command = patch('ansible.modules.network.icx.icx_system.exec_command')
- self.exec_command = self.mock_exec_command.start()
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXSystemModule, self).tearDown()
-
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- compares = None
-
- def load_file(*args, **kwargs):
- module = args
- for arg in args:
- if arg.params['check_running_config'] is True:
- return load_fixture('icx_system.txt').strip()
- else:
- return ''
-
- self.get_config.side_effect = load_file
- self.load_config.return_value = None
-
- def test_icx_system_set_config(self):
- set_module_args(dict(hostname='ruckus', name_servers=['172.16.10.2', '11.22.22.4'], domain_search=['ansible.com', 'redhat.com']))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'hostname ruckus',
- 'ip dns domain-list ansible.com',
- 'ip dns domain-list redhat.com',
- 'ip dns server-address 11.22.22.4',
- 'ip dns server-address 172.16.10.2'
- ]
- self.execute_module(changed=True, commands=commands)
-
- else:
- commands = [
- 'hostname ruckus',
- 'ip dns domain-list ansible.com',
- 'ip dns domain-list redhat.com',
- 'ip dns server-address 11.22.22.4',
- 'ip dns server-address 172.16.10.2',
- 'no ip dns domain-list ansib.eg.com',
- 'no ip dns domain-list red.com',
- 'no ip dns domain-list test1.com',
- 'no ip dns server-address 10.22.22.64',
- 'no ip dns server-address 172.22.22.64'
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_system_remove_config(self):
- set_module_args(dict(name_servers=['10.22.22.64', '11.22.22.4'], domain_search=['ansib.eg.com', 'redhat.com'], state='absent'))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'no ip dns domain-list ansib.eg.com',
- 'no ip dns domain-list redhat.com',
- 'no ip dns server-address 10.22.22.64',
- 'no ip dns server-address 11.22.22.4'
- ]
- self.execute_module(changed=True, commands=commands)
-
- else:
- commands = [
- 'no ip dns domain-list ansib.eg.com',
- 'no ip dns server-address 10.22.22.64',
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_system_remove_config_compare(self):
- set_module_args(
- dict(
- name_servers=[
- '10.22.22.64',
- '11.22.22.4'],
- domain_search=[
- 'ansib.eg.com',
- 'redhat.com'],
- state='absent',
- check_running_config=True))
- if self.get_running_config(compare=True):
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'no ip dns domain-list ansib.eg.com',
- 'no ip dns server-address 10.22.22.64',
- ]
- self.execute_module(changed=True, commands=commands)
- else:
- commands = [
- 'no ip dns domain-list ansib.eg.com',
- 'no ip dns server-address 10.22.22.64',
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_icx_aaa_servers_radius_set(self):
- radius = [
- dict(
- type='radius',
- hostname='2001:db8::1',
- auth_port_type='auth-port',
- auth_port_num='1821',
- acct_port_num='1321',
- acct_type='accounting-only',
- auth_key='radius',
- auth_key_type=[
- 'mac-auth']),
- dict(
- type='radius',
- hostname='172.16.10.24',
- auth_port_type='auth-port',
- auth_port_num='2001',
- acct_port_num='5000',
- acct_type='authentication-only',
- auth_key='radius-server'),
- dict(
- type='tacacs',
- hostname='ansible.com')]
- set_module_args(dict(hostname='ruckus', aaa_servers=radius))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'hostname ruckus',
- 'radius-server host 172.16.10.24 auth-port 2001 acct-port 5000 authentication-only key radius-server',
- 'radius-server host ipv6 2001:db8::1 auth-port 1821 acct-port 1321 accounting-only key radius mac-auth',
- 'tacacs-server host ansible.com'
- ]
- self.execute_module(changed=True, commands=commands)
-
- else:
- commands = [
- 'hostname ruckus',
- 'no radius-server host 172.16.20.14',
- 'no tacacs-server host 182.16.10.20',
- 'radius-server host 172.16.10.24 auth-port 2001 acct-port 5000 authentication-only key radius-server',
- 'radius-server host ipv6 2001:db8::1 auth-port 1821 acct-port 1321 accounting-only key radius mac-auth',
- 'tacacs-server host ansible.com'
- ]
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/icx/test_icx_user.py b/test/units/modules/network/icx/test_icx_user.py
deleted file mode 100644
index ff8f291cb6..0000000000
--- a/test/units/modules/network/icx/test_icx_user.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_user
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXSCPModule(TestICXModule):
-
- module = icx_user
-
- def setUp(self):
- super(TestICXSCPModule, self).setUp()
- self.mock_get_config = patch('ansible.modules.network.icx.icx_user.get_config')
- self.get_config = self.mock_get_config.start()
- self.mock_load_config = patch('ansible.modules.network.icx.icx_user.load_config')
- self.load_config = self.mock_load_config.start()
- self.mock_exec_command = patch('ansible.modules.network.icx.icx_user.exec_command')
- self.exec_command = self.mock_exec_command.start()
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXSCPModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- compares = None
-
- def load_file(*args, **kwargs):
- module = args
- for arg in args:
- if arg.params['check_running_config'] is True:
- return load_fixture('show_running-config_include_username.txt').strip()
- else:
- return ''
- self.get_config.side_effect = load_file
- self.load_config.return_value = None
-
- def test_icx_user_create_new_with_password(self):
- set_module_args(dict(name='ale6', configured_password='alethea123'))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['username ale6 password alethea123']
- self.execute_module(commands=commands, changed=True)
- else:
- commands = ['username ale6 password alethea123']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_user_create_new_with_password_and_privilege(self):
- set_module_args(dict(name='ale6', privilege="5", configured_password='alethea123'))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['username ale6 privilege 5 password alethea123']
- self.execute_module(commands=commands, changed=True)
- else:
- commands = ['username ale6 privilege 5 password alethea123']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_user_update_privilege(self):
- set_module_args(dict(name='ale1', privilege="0", configured_password='alethea123'))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['username ale1 privilege 0 password alethea123']
- self.execute_module(commands=commands, changed=True)
- else:
- commands = ['username ale1 privilege 0 password alethea123']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_user_update_password(self):
- set_module_args(dict(name='ale1', configured_password='alethea123'))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['username ale1 password alethea123'] # previous privilage will be added
- self.execute_module(commands=commands, changed=True)
- else:
- commands = ['username ale1 privilege 5 password alethea123'] # previous privilage will be added
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_user_update_password_compare(self):
- set_module_args(dict(name='ale1', configured_password='alethea123', check_running_config=True))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['username ale1 privilege 5 password alethea123'] # previous privilage will be added
- self.execute_module(commands=commands, changed=True)
- else:
- commands = ['username ale1 privilege 5 password alethea123'] # previous privilage will be added
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_user_delete_user(self):
- set_module_args(dict(name='ale1', state="absent"))
- if not self.ENV_ICX_USE_DIFF:
- commands = ['no username ale1']
- self.execute_module(commands=commands, changed=True)
- else:
- commands = ['no username ale1']
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_user_agregate(self):
- set_module_args(dict(aggregate=[
- {
- "name": 'ale6',
- "configured_password": 'alethea123'
- },
- {
- "name": 'ale7',
- "configured_password": 'alethea123'
- }
- ]))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'username ale6 password alethea123',
- 'username ale7 password alethea123'
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- 'username ale6 password alethea123',
- 'username ale7 password alethea123'
- ]
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_user_not_update_old_user_password(self):
- set_module_args(dict(aggregate=[
- {
- "name": 'ale6',
- "configured_password": 'alethea123'
- },
- {
- "name": 'ale1',
- "configured_password": 'alethea123',
- },
- ],
- update_password='on_create'
- ))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'username ale1 password alethea123',
- 'username ale6 password alethea123',
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- 'username ale6 password alethea123',
- ]
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_user_only_update_changed_settings(self):
- set_module_args(dict(aggregate=[
- {
- "name": 'ale1'
- },
- {
- "name": 'ale2',
- "privilege": 5,
- "configured_password": "ale123"
- },
- {
- "name": 'ale3',
- "privilege": 4,
- "configured_password": "ale123"
- }
- ],
- update_password="on_create"
- ))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
- 'username ale2 privilege 5 password ale123',
- 'username ale3 privilege 4 password ale123'
- ]
- self.execute_module(commands=commands, changed=True)
- else:
- commands = [
- 'username ale3 privilege 4 password ale123'
- ]
- self.execute_module(commands=commands, changed=True)
-
- def test_icx_user_purge(self):
- set_module_args(dict(aggregate=[
- {
- "name": 'ale1'
- }
- ],
- purge=True
- ))
- if not self.ENV_ICX_USE_DIFF:
- commands = [
-
- ]
- self.execute_module(commands=commands, changed=False)
- else:
- commands = [
- 'no username ale2',
- 'no username ale3',
- 'no username ale4'
- ]
- self.execute_module(commands=commands, changed=True)
diff --git a/test/units/modules/network/icx/test_icx_vlan.py b/test/units/modules/network/icx/test_icx_vlan.py
deleted file mode 100644
index 42fff68eec..0000000000
--- a/test/units/modules/network/icx/test_icx_vlan.py
+++ /dev/null
@@ -1,279 +0,0 @@
-# Copyright: (c) 2019, Ansible Project
-# 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
-from units.compat.mock import patch
-from ansible.modules.network.icx import icx_vlan
-from units.modules.utils import set_module_args
-from .icx_module import TestICXModule, load_fixture
-
-
-class TestICXVlanModule(TestICXModule):
-
- module = icx_vlan
-
- def setUp(self):
- super(TestICXVlanModule, self).setUp()
- self.mock_exec_command = patch('ansible.modules.network.icx.icx_vlan.exec_command')
- self.exec_command = self.mock_exec_command.start()
-
- self.mock_load_config = patch('ansible.modules.network.icx.icx_vlan.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_config = patch('ansible.modules.network.icx.icx_vlan.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.set_running_config()
-
- def tearDown(self):
- super(TestICXVlanModule, self).tearDown()
- self.mock_exec_command.stop()
- self.mock_load_config.stop()
- self.mock_get_config.stop()
-
- def load_fixtures(self, commands=None):
- compares = None
-
- def load_file(*args, **kwargs):
- module = args
- for arg in args:
- if arg.params['check_running_config'] is True:
- self.exec_command.return_value = (0, load_fixture('icx_vlan_config').strip(), None)
- return load_fixture('icx_banner_show_banner.txt').strip()
- else:
- self.exec_command.return_value = (0, ''.strip(), None)
- return ''
-
- self.get_config.side_effect = load_file
- self.load_config.return_value = None
-
- def test_icx_vlan_set_tagged_port(self):
- set_module_args(dict(name='test_vlan', vlan_id=5, tagged=dict(name=['ethernet 1/1/40 to 1/1/43', 'lag 44'])))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 5',
- 'vlan 5 name test_vlan',
- 'tagged ethernet 1/1/40 to 1/1/43',
- 'tagged lag 44'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 5',
- 'vlan 5 name test_vlan',
- 'tagged ethernet 1/1/40 to 1/1/43',
- 'tagged lag 44'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_vlan_add_untagged_port(self):
- set_module_args(dict(name='test_vlan', vlan_id=3, interfaces=dict(name=['ethernet 1/1/10', 'lag 5'])))
-
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'vlan 3 name test_vlan',
- 'untagged lag 5',
- 'untagged ethernet 1/1/10'
- ]
- self.assertEqual(set(result['commands']), set(expected_commands))
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'vlan 3 name test_vlan',
- 'untagged lag 5',
- 'untagged ethernet 1/1/10'
- ]
- self.assertEqual(set(result['commands']), set(expected_commands))
-
- def test_icx_vlan_purge_tagged_port(self):
- set_module_args(dict(vlan_id=3, tagged=dict(name=['ethernet 1/1/40 to 1/1/42', 'lag 44'], purge=True)))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'tagged ethernet 1/1/40 to 1/1/43',
- 'tagged lag 44'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'no tagged ethernet 1/1/31',
- 'no tagged ethernet 1/1/9',
- 'no tagged ethernet 1/1/11',
- 'no tagged lag 13',
- 'no tagged ethernet 1/1/10',
- 'tagged ethernet 1/1/40',
- 'tagged ethernet 1/1/41',
- 'tagged ethernet 1/1/42',
- 'tagged lag 44'
- ]
- self.assertEqual(set(result['commands']), set(expected_commands))
-
- def test_icx_vlan_enable_ip_arp_inspection(self):
- set_module_args(dict(vlan_id=5, ip_arp_inspection=True))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 5',
- 'ip arp inspection vlan 5'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 5',
- 'ip arp inspection vlan 5'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_vlan_enable_ip_dhcp_snooping(self):
- set_module_args(dict(vlan_id=5, ip_dhcp_snooping=True))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 5',
- 'ip dhcp snooping vlan 5'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 5',
- 'ip dhcp snooping vlan 5'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_vlan_aggregate(self):
- aggregate = [
- dict(vlan_id=9, name='vlan_9', interfaces=dict(name=['ethernet 1/1/40 to 1/1/43', 'ethernet 1/1/44']), ip_arp_inspection=True),
- dict(vlan_id=7, name='vlan_7', interfaces=dict(name=['ethernet 1/1/20 to 1/1/23', 'ethernet 1/1/24']), ip_dhcp_snooping=True),
- ]
- set_module_args(dict(aggregate=aggregate))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 9',
- 'vlan 9 name vlan_9',
- 'untagged ethernet 1/1/40 to 1/1/43',
- 'untagged ethernet 1/1/44',
- 'ip arp inspection vlan 9',
- 'vlan 7',
- 'vlan 7 name vlan_7',
- 'untagged ethernet 1/1/20 to 1/1/23',
- 'untagged ethernet 1/1/24',
- 'ip dhcp snooping vlan 7',
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 9',
- 'vlan 9 name vlan_9',
- 'untagged ethernet 1/1/40 to 1/1/43',
- 'untagged ethernet 1/1/44',
- 'ip arp inspection vlan 9',
- 'vlan 7',
- 'vlan 7 name vlan_7',
- 'untagged ethernet 1/1/20 to 1/1/23',
- 'untagged ethernet 1/1/24',
- 'ip dhcp snooping vlan 7',
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_vlan_interfaces_cndt(self):
- set_module_args(dict(vlan_id=3, associated_interfaces=['ethernet 1/1/20 to 1/1/22', 'ethernet 1/1/27', 'lag 11 to 12']))
- if not self.ENV_ICX_USE_DIFF:
- self.execute_module(failed=True)
- else:
- self.execute_module(changed=False)
-
- def test_icx_vlan_tagged_cndt(self):
- set_module_args(dict(vlan_id=3, associated_tagged=['ethernet 1/1/9 to 1/1/11', 'ethernet 1/1/31', 'lag 13']))
- if not self.ENV_ICX_USE_DIFF:
- self.execute_module(failed=True)
- else:
- self.execute_module(changed=False)
-
- def test_icx_vlan_purge(self):
- set_module_args(dict(vlan_id=3, purge=True))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=False)
- expected_commands = []
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'no vlan 6',
- 'no vlan 10',
- 'no vlan 21'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_vlan_stp_802_1w(self):
- stp_spec = dict(dict(type='802-1w', priority='20', enabled=True))
- set_module_args(dict(vlan_id=3, interfaces=dict(name=['ethernet 1/1/40']), stp=stp_spec))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'untagged ethernet 1/1/40',
- 'spanning-tree 802-1w',
- 'spanning-tree 802-1w priority 20'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'untagged ethernet 1/1/40',
- 'spanning-tree 802-1w',
- 'spanning-tree 802-1w priority 20'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_vlan_stp_rstp_absent(self):
- stp_spec = dict(dict(type='rstp', enabled=False))
- set_module_args(dict(vlan_id=3, interfaces=dict(name=['ethernet 1/1/40']), stp=stp_spec))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'untagged ethernet 1/1/40',
- 'no spanning-tree'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'untagged ethernet 1/1/40',
- 'no spanning-tree'
- ]
- self.assertEqual(result['commands'], expected_commands)
-
- def test_icx_vlan_stp_802_1w_absent(self):
- stp_spec = dict(dict(type='802-1w', enabled=False))
- set_module_args(dict(vlan_id=3, stp=stp_spec))
- if not self.ENV_ICX_USE_DIFF:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'no spanning-tree 802-1w',
- 'no spanning-tree'
- ]
- self.assertEqual(result['commands'], expected_commands)
- else:
- result = self.execute_module(changed=True)
- expected_commands = [
- 'vlan 3',
- 'no spanning-tree 802-1w',
- 'no spanning-tree'
- ]
- self.assertEqual(result['commands'], expected_commands)
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_add.json b/test/units/modules/network/ingate/fixtures/test_ig_config_add.json
deleted file mode 100644
index 84ad945bb4..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_config_add.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- {
- "href": "http://192.168.1.1/api/v1/misc/dns_servers/1",
- "data": {
- "number": "1",
- "server": "192.168.1.20"
- },
- "id": 1
- }
-]
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_delete.json b/test/units/modules/network/ingate/fixtures/test_ig_config_delete.json
deleted file mode 100644
index 75bd4bcf19..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_config_delete.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "table": "misc.dns_servers",
- "data": {
- "number": "1",
- "server": "192.168.1.20"
- },
- "id": 1
- },
- {
- "table": "misc.dns_servers",
- "data": {
- "number": "2",
- "server": "192.168.1.30"
- },
- "id": 2
- }
-]
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_download.json b/test/units/modules/network/ingate/fixtures/test_ig_config_download.json
deleted file mode 100644
index 5e2c2d9ec4..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_config_download.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- {
- "download-config": {
- "mimetype": "application/x-config-database",
- "config": "-----BEGIN CONFIGURATION-DATABASE-----\r\nContent-transfer-encoding: base64\r\nUnitname: \r\nProduct: Software SIParator/Firewall\r\nVersion: 6.2.90\r\nProduct-type: F\r\nProduct-subtype: \r\nSerial: IG-200-840-5001-0\r\nInterfaces: eth0 eth1 eth2 eth3 eth4 eth5\r\nModules: failover vpn sip qturn ems qos rsc voipsm idsips siptrunk sipswitch\r\nTimestamp: 2018-10-25 11:53:09\r\n\r\nZGJ2ZXJzaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAwMDA2ADEzMzYxNDAx\r\nNDQ3ADAxMTQ3MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2LjIuMAoAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMDAwMAAxMzM2MTQwMjExNAAwMTA0MjIAIDUAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIuZmVudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDAxNjM3ADEzMzYxNDAx\r\nNDQ3ADAxMTcwNAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLmZlbnQuYWx3YXlzX2ZlbnQK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJs\r\nZWQ6IG9mZgoqU0VDVElPTiBkYi5mZW50LmFsd2F5c19mZW50X2V4Y2VwdGlvbnMK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLmZlbnQuYWx3\r\nYXlzX2ZlbnRfaW50ZXJmYWNlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gZGIuZmVudC5mZW50CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDog\r\nMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuZmVudC5m\r\nZW50X2tlZXBhbGl2ZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKdGNwX3RpbWVvdXQ6IDE1MAp0eXBlOiBvcHRpb25zCnVkcF90aW1l\r\nb3V0OiAyMAoqU0VDVElPTiBkYi5mZW50Lm1hcF9zaWduYWxfYWRkcmVzcwpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbGlzdGVuX2lw\r\nOiAtCmxpc3Rlbl9wb3J0OiAKc2VuZF9pcDogLQoqU0VDVElPTiBkYi5mZW50Lm1l\r\nZGlhX3JlbGVhc2UKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJv\r\nd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5mZW50LnJlc2V0X2ZyaWVu\r\nZApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5h\r\nYmxlZDogb2ZmCipTRUNUSU9OIGRiLmZlbnQuc3R1bgpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCnBvcnQxOiAz\r\nNDc4CnBvcnQyOiAKc2VydmVyMTogLQpzZXJ2ZXIyOiAtCipTRUNUSU9OIEVPRgoA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIuaXBzZWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDExMjEzADEzMzYxNDAx\r\nNDQ3ADAxMjA0MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLmlwc2VjLmJsYWNrbGlzdGVk\r\nX3BhY2tldHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmFjdGlvbjogZGlzY2FyZApsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIu\r\naXBzZWMuYmxhY2tsaXN0aW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQpkdXJhdGlvbjogMzAKbG9nY2xhc3M6IExvY2FsCipTRUNU\r\nSU9OIGRiLmlwc2VjLmNyeXB0b19kZWYKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAxNgoqKlJPVwpyb3dpZDogMQphdXRoOiBtZDUKZW5jcnlwdGlvbjogM2Rlcwpu\r\nYW1lOiAzREVTLU1ENQoqKlJPVwpyb3dpZDogMgphdXRoOiBzaGExCmVuY3J5cHRp\r\nb246IDNkZXMKbmFtZTogM0RFUy1TSEExCioqUk9XCnJvd2lkOiAzCmF1dGg6IHNo\r\nYTJfMjU2CmVuY3J5cHRpb246IDNkZXMKbmFtZTogM0RFUy1TSEEyNTYKKipST1cK\r\ncm93aWQ6IDQKYXV0aDogc2hhMl81MTIKZW5jcnlwdGlvbjogM2RlcwpuYW1lOiAz\r\nREVTLVNIQTUxMgoqKlJPVwpyb3dpZDogNQphdXRoOiBtZDUKZW5jcnlwdGlvbjog\r\nYWVzMTI4Cm5hbWU6IEFFUzEyOC1NRDUKKipST1cKcm93aWQ6IDYKYXV0aDogc2hh\r\nMQplbmNyeXB0aW9uOiBhZXMxMjgKbmFtZTogQUVTMTI4LVNIQTEKKipST1cKcm93\r\naWQ6IDcKYXV0aDogc2hhMl8yNTYKZW5jcnlwdGlvbjogYWVzMTI4Cm5hbWU6IEFF\r\nUzEyOC1TSEEyNTYKKipST1cKcm93aWQ6IDgKYXV0aDogc2hhMl81MTIKZW5jcnlw\r\ndGlvbjogYWVzMTI4Cm5hbWU6IEFFUzEyOC1TSEE1MTIKKipST1cKcm93aWQ6IDkK\r\nYXV0aDogbWQ1CmVuY3J5cHRpb246IGFlczE5MgpuYW1lOiBBRVMxOTItTUQ1Cioq\r\nUk9XCnJvd2lkOiAxMAphdXRoOiBzaGExCmVuY3J5cHRpb246IGFlczE5MgpuYW1l\r\nOiBBRVMxOTItU0hBMQoqKlJPVwpyb3dpZDogMTEKYXV0aDogc2hhMl8yNTYKZW5j\r\ncnlwdGlvbjogYWVzMTkyCm5hbWU6IEFFUzE5Mi1TSEEyNTYKKipST1cKcm93aWQ6\r\nIDEyCmF1dGg6IHNoYTJfNTEyCmVuY3J5cHRpb246IGFlczE5MgpuYW1lOiBBRVMx\r\nOTItU0hBNTEyCioqUk9XCnJvd2lkOiAxMwphdXRoOiBtZDUKZW5jcnlwdGlvbjog\r\nYWVzMjU2Cm5hbWU6IEFFUzI1Ni1NRDUKKipST1cKcm93aWQ6IDE0CmF1dGg6IHNo\r\nYTEKZW5jcnlwdGlvbjogYWVzMjU2Cm5hbWU6IEFFUzI1Ni1TSEExCioqUk9XCnJv\r\nd2lkOiAxNQphdXRoOiBzaGEyXzI1NgplbmNyeXB0aW9uOiBhZXMyNTYKbmFtZTog\r\nQUVTMjU2LVNIQTI1NgoqKlJPVwpyb3dpZDogMTYKYXV0aDogc2hhMl81MTIKZW5j\r\ncnlwdGlvbjogYWVzMjU2Cm5hbWU6IEFFUzI1Ni1TSEE1MTIKKlNFQ1RJT04gZGIu\r\naXBzZWMuZXNwX3Byb3Bvc2FscwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEw\r\nCioqUk9XCnJvd2lkOiAxCmNyeXB0bzogQUVTMTI4LVNIQTI1NgpuYW1lOiBBRVMK\r\nbnVtYmVyOiAxCioqUk9XCnJvd2lkOiAyCmNyeXB0bzogQUVTMTI4LVNIQTUxMgpu\r\nYW1lOiBBRVMKbnVtYmVyOiAyCioqUk9XCnJvd2lkOiAzCmNyeXB0bzogQUVTMjU2\r\nLVNIQTI1NgpuYW1lOiBBRVMKbnVtYmVyOiAzCioqUk9XCnJvd2lkOiA0CmNyeXB0\r\nbzogQUVTMjU2LVNIQTUxMgpuYW1lOiBBRVMKbnVtYmVyOiA0CioqUk9XCnJvd2lk\r\nOiA1CmNyeXB0bzogQUVTMTI4LVNIQTI1NgpuYW1lOiBBRVMvM0RFUwpudW1iZXI6\r\nIDUKKipST1cKcm93aWQ6IDYKY3J5cHRvOiBBRVMxMjgtU0hBMQpuYW1lOiBBRVMv\r\nM0RFUwpudW1iZXI6IDYKKipST1cKcm93aWQ6IDcKY3J5cHRvOiBBRVMxMjgtTUQ1\r\nCm5hbWU6IEFFUy8zREVTCm51bWJlcjogNwoqKlJPVwpyb3dpZDogOApjcnlwdG86\r\nIDNERVMtU0hBMjU2Cm5hbWU6IEFFUy8zREVTCm51bWJlcjogOAoqKlJPVwpyb3dp\r\nZDogOQpjcnlwdG86IDNERVMtU0hBMQpuYW1lOiBBRVMvM0RFUwpudW1iZXI6IDkK\r\nKipST1cKcm93aWQ6IDEwCmNyeXB0bzogM0RFUy1NRDUKbmFtZTogQUVTLzNERVMK\r\nbnVtYmVyOiAxMAoqU0VDVElPTiBkYi5pcHNlYy5lc3BhaF9sb2djbGFzcwpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6\r\nIC0KKlNFQ1RJT04gZGIuaXBzZWMuaWtlX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNF\r\nQ1RJT04gZGIuaXBzZWMuaWtlX3Byb3Bvc2FscwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDE4CioqUk9XCnJvd2lkOiAxCmNyeXB0bzogQUVTMjU2LVNIQTI1Ngpn\r\ncm91cDogbW9kcDIwNDgKbmFtZTogQUVTCm51bWJlcjogMQoqKlJPVwpyb3dpZDog\r\nMgpjcnlwdG86IEFFUzI1Ni1TSEE1MTIKZ3JvdXA6IG1vZHAyMDQ4Cm5hbWU6IEFF\r\nUwpudW1iZXI6IDIKKipST1cKcm93aWQ6IDMKY3J5cHRvOiBBRVMxMjgtU0hBMjU2\r\nCmdyb3VwOiBtb2RwMjA0OApuYW1lOiBBRVMKbnVtYmVyOiAzCioqUk9XCnJvd2lk\r\nOiA0CmNyeXB0bzogQUVTMTI4LVNIQTUxMgpncm91cDogbW9kcDIwNDgKbmFtZTog\r\nQUVTCm51bWJlcjogNAoqKlJPVwpyb3dpZDogNQpjcnlwdG86IEFFUzEyOC1TSEEy\r\nNTYKZ3JvdXA6IG1vZHAyMDQ4Cm5hbWU6IEFFUy8zREVTCm51bWJlcjogNQoqKlJP\r\nVwpyb3dpZDogNgpjcnlwdG86IEFFUzEyOC1TSEEyNTYKZ3JvdXA6IG1vZHAxNTM2\r\nCm5hbWU6IEFFUy8zREVTCm51bWJlcjogNgoqKlJPVwpyb3dpZDogNwpjcnlwdG86\r\nIEFFUzEyOC1TSEEyNTYKZ3JvdXA6IG1vZHAxMDI0Cm5hbWU6IEFFUy8zREVTCm51\r\nbWJlcjogNwoqKlJPVwpyb3dpZDogOApjcnlwdG86IEFFUzEyOC1TSEExCmdyb3Vw\r\nOiBtb2RwMTUzNgpuYW1lOiBBRVMvM0RFUwpudW1iZXI6IDgKKipST1cKcm93aWQ6\r\nIDkKY3J5cHRvOiBBRVMxMjgtU0hBMQpncm91cDogbW9kcDEwMjQKbmFtZTogQUVT\r\nLzNERVMKbnVtYmVyOiA5CioqUk9XCnJvd2lkOiAxMApjcnlwdG86IEFFUzEyOC1N\r\nRDUKZ3JvdXA6IG1vZHAxNTM2Cm5hbWU6IEFFUy8zREVTCm51bWJlcjogMTAKKipS\r\nT1cKcm93aWQ6IDExCmNyeXB0bzogQUVTMTI4LU1ENQpncm91cDogbW9kcDEwMjQK\r\nbmFtZTogQUVTLzNERVMKbnVtYmVyOiAxMQoqKlJPVwpyb3dpZDogMTIKY3J5cHRv\r\nOiAzREVTLVNIQTI1Ngpncm91cDogbW9kcDIwNDgKbmFtZTogQUVTLzNERVMKbnVt\r\nYmVyOiAxMgoqKlJPVwpyb3dpZDogMTMKY3J5cHRvOiAzREVTLVNIQTI1Ngpncm91\r\ncDogbW9kcDE1MzYKbmFtZTogQUVTLzNERVMKbnVtYmVyOiAxMwoqKlJPVwpyb3dp\r\nZDogMTQKY3J5cHRvOiAzREVTLVNIQTI1Ngpncm91cDogbW9kcDEwMjQKbmFtZTog\r\nQUVTLzNERVMKbnVtYmVyOiAxNAoqKlJPVwpyb3dpZDogMTUKY3J5cHRvOiAzREVT\r\nLVNIQTEKZ3JvdXA6IG1vZHAxNTM2Cm5hbWU6IEFFUy8zREVTCm51bWJlcjogMTUK\r\nKipST1cKcm93aWQ6IDE2CmNyeXB0bzogM0RFUy1TSEExCmdyb3VwOiBtb2RwMTAy\r\nNApuYW1lOiBBRVMvM0RFUwpudW1iZXI6IDE2CioqUk9XCnJvd2lkOiAxNwpjcnlw\r\ndG86IDNERVMtTUQ1Cmdyb3VwOiBtb2RwMTUzNgpuYW1lOiBBRVMvM0RFUwpudW1i\r\nZXI6IDE3CioqUk9XCnJvd2lkOiAxOApjcnlwdG86IDNERVMtTUQ1Cmdyb3VwOiBt\r\nb2RwMTAyNApuYW1lOiBBRVMvM0RFUwpudW1iZXI6IDE4CipTRUNUSU9OIGRiLmlw\r\nc2VjLmludGVyb3AKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJv\r\nd2lkOiAxCmVuYWJsZV9wc2tfcnc6IG9mZgplbmFibGVfbm9uX3VuaXF1ZV9wZWVy\r\nOiBvZmYKKlNFQ1RJT04gZGIuaXBzZWMuaXBzZWNfbmV0cwpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuaXBzZWMubmF0X3Rfa2VlcGFsaXZl\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQppbnRl\r\ncnZhbDogNjAKKlNFQ1RJT04gZGIuaXBzZWMucGVlcnMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLmlwc2VjLnBsdXRvX2xvZ2NsYXNzCmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFz\r\nczogTG9jYWwKKlNFQ1RJT04gZGIuaXBzZWMucGx1dG92ZXJib3NlX2xvZ2NsYXNz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2dj\r\nbGFzczogLQoqU0VDVElPTiBkYi5pcHNlYy5yYWRpdXNhdXRoX3NlcnZlcgpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKY2VydDogLQpp\r\ncDogLQpwb3J0OiA0NDMKdGxzOiBUTFN2MS54CipTRUNUSU9OIGRiLmlwc2VjLnR1\r\nbm5lbGVkX25ldHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9O\r\nIGRiLmlwc2VjLnBlZXJzX2FkdmFuY2VkCmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMAoqU0VDVElPTiBkYi5pcHNlYy54YXV0aF91c2VycwpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuaXBzZWMubW9kZWNmZwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuaXBzZWMudXNlcmF1dGhf\r\nbG9nY2xhc3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmxvZ2NsYXNzOiBMb2NhbAoqU0VDVElPTiBkYi5pcHNlYy54NTA5X2NhY2Vy\r\ndHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLmlwc2Vj\r\nLng1MDlfY2VydApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93\r\naWQ6IDEKY2VydDogLQoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLnNpcHN3aXRjaAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAxMDE3NAAxMzM2MTQwMjQ2NwAwMTI3NjQAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5z\r\naXBzd2l0Y2guYWNjb3VudHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipT\r\nRUNUSU9OIGRiLnNpcHN3aXRjaC5iMmJ1YV90cmFuc2Zlcl9lbmFibGUKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmFsd2F5czogb2Zm\r\nCmNsaWVudHNfbGFja19yZWZlcjogb2ZmCmNsaWVudHNfbGFja19yZXBsYWNlOiBv\r\nZmYKdXNlX2Zyb21fdXJpOiBvZmYKdXNlX3VzZXJfYWdlbnQ6IG9mZgoqU0VDVElP\r\nTiBkYi5zaXBzd2l0Y2guYjJidWFfdHJhbnNmZXJfZm9yX2NsaWVudApnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwc3dpdGNoLmIyYnVh\r\nX3RyYW5zZmVyX2Zyb21fdXNlcgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gZGIuc2lwc3dpdGNoLmRpYWxfcGxhbgpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwc3dpdGNoLmRpYWxfcGxhbl9lbmFi\r\nbGUKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVu\r\nYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXBzd2l0Y2guZGlhbF9wbGFuX21ldGhv\r\nZHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiA2CioqUk9XCnJvd2lkOiAxCm1l\r\ndGhvZDogSU5WSVRFCioqUk9XCnJvd2lkOiAyCm1ldGhvZDogT1BUSU9OUwoqKlJP\r\nVwpyb3dpZDogMwptZXRob2Q6IFNVQlNDUklCRQoqKlJPVwpyb3dpZDogNAptZXRo\r\nb2Q6IE1FU1NBR0UKKipST1cKcm93aWQ6IDUKbWV0aG9kOiBSRUZFUgoqKlJPVwpy\r\nb3dpZDogNgptZXRob2Q6IE5PVElGWQoqU0VDVElPTiBkYi5zaXBzd2l0Y2guZW51\r\nbV9yb290CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQpuYW1lOiBlMTY0LmFycGEuCm51bWJlcjogMQpyb290OiBlMTY0LmFycGEuCipT\r\nRUNUSU9OIGRiLnNpcHN3aXRjaC5mb3J3YXJkX3RvCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0Y2guaW5jb21pbmdfdW5hdXRo\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0\r\nY2gucmVxdWVzdF9mcm9tCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VD\r\nVElPTiBkYi5zaXBzd2l0Y2gucmVxdWVzdF90bwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwc3dpdGNoLnRydW5rX21haW5fbGluZXMK\r\nZ2VuZXJhdGlvbjogMQpsYXN0X3Jvd2lkOiAyCioqUk9XCnJvd2lkOiAxCmFsaWFz\r\nZXM6IAphdXRoX25hbWU6IApmcm9tX2RuOiAKZnJvbV91c2VyOiAKZndkOiAKaXNf\r\ncmVnOiBvZmYKbnVtYmVyOiAxCnBfYXNzZXJ0ZWRfaWRlbnRpdHk6IApwYXNzd29y\r\nZDogCnRydW5rOiAxCnVzZXI6IAoqKlJPVwpyb3dpZDogMgphbGlhc2VzOiAKYXV0\r\naF9uYW1lOiAKZnJvbV9kbjogCmZyb21fdXNlcjogCmZ3ZDogCmlzX3JlZzogb2Zm\r\nCm51bWJlcjogMQpwX2Fzc2VydGVkX2lkZW50aXR5OiAKcGFzc3dvcmQ6IAp0cnVu\r\nazogMgp1c2VyOiAKKlNFQ1RJT04gZGIuc2lwc3dpdGNoLnRydW5rX3BhcmFtcwpn\r\nZW5lcmF0aW9uOiAxCmxhc3Rfcm93aWQ6IDIKKipST1cKcm93aWQ6IDEKYWxpYXNf\r\naXA6IC0KZG9tYWluOiAKZG9tYWluX2lkOiAKZW5hYmxlZDogb24KZnJvbV9kb21h\r\naW46IHBkb21haW4KZnJvbV9kb21haW5fc3RyOiAKZndkX3JlZmVyOiBvZmYKZ2lu\r\nX3JlZzogb2ZmCmhpZGVfcnI6IG9mZgpoaWRlX3RvX3RhZ3M6IG9mZgppdHNwX2hv\r\nc3RfYWRkcnM6IC0KbHRydW5rX2dyb3VwX3BhcmFtOiAKbHRydW5rX2dyb3VwX3Vz\r\nYWdlOiAtCm1heF9jYWxsc19wZXJfbGluZTogCm1heF9jYWxsc190b3RhbDogCm5h\r\nbWU6IApvdXRib3VuZF9ndzogLQpvdXRib3VuZF9wcm94eTogCnBvcnQ6IApwcmVz\r\nZXJ2ZV9tYXhfZm9yd2FyZHM6IG9mZgpyZWRpcmVjdF9jYWxsZXJfZG9tYWluOiBv\r\nZmYKcmVkaXJlY3RfaG9tZV9kb21haW46IG9mZgpyZWZlcnRvX2RvbWFpbjogCnJl\r\nbGF5X21lZGlhOiBvZmYKcmVtb3ZlX3ZpYTogb2ZmCnJlbW92ZV92aWRlbzogb2Zm\r\nCnJvdXRlX2luY29taW5nOiBydXJpCnNlbmRfZHRtZl92aWFfc2lwX2luZm86IG9m\r\nZgp0cmFuc3BvcnQ6IC0KdHJ1bms6IDEKdHJ1bmtfZ3JvdXBfcGFyYW06IAp0cnVu\r\na19ncm91cF91c2FnZTogLQp0cnVzdGVkX25ldHdvcmtzX2VuYWJsZTogb2ZmCnVz\r\nZV9wcmVmZXJyZWRfaWRlbnRpdHk6IG9mZgoqKlJPVwpyb3dpZDogMgphbGlhc19p\r\ncDogLQpkb21haW46IApkb21haW5faWQ6IAplbmFibGVkOiBvbgpmcm9tX2RvbWFp\r\nbjogcGRvbWFpbgpmcm9tX2RvbWFpbl9zdHI6IApmd2RfcmVmZXI6IG9mZgpnaW5f\r\ncmVnOiBvZmYKaGlkZV9ycjogb2ZmCmhpZGVfdG9fdGFnczogb2ZmCml0c3BfaG9z\r\ndF9hZGRyczogLQpsdHJ1bmtfZ3JvdXBfcGFyYW06IApsdHJ1bmtfZ3JvdXBfdXNh\r\nZ2U6IC0KbWF4X2NhbGxzX3Blcl9saW5lOiAKbWF4X2NhbGxzX3RvdGFsOiAKbmFt\r\nZTogCm91dGJvdW5kX2d3OiAtCm91dGJvdW5kX3Byb3h5OiAKcG9ydDogCnByZXNl\r\ncnZlX21heF9mb3J3YXJkczogb2ZmCnJlZGlyZWN0X2NhbGxlcl9kb21haW46IG9m\r\nZgpyZWRpcmVjdF9ob21lX2RvbWFpbjogb2ZmCnJlZmVydG9fZG9tYWluOiAKcmVs\r\nYXlfbWVkaWE6IG9mZgpyZW1vdmVfdmlhOiBvZmYKcmVtb3ZlX3ZpZGVvOiBvZmYK\r\ncm91dGVfaW5jb21pbmc6IHJ1cmkKc2VuZF9kdG1mX3ZpYV9zaXBfaW5mbzogb2Zm\r\nCnRyYW5zcG9ydDogLQp0cnVuazogMgp0cnVua19ncm91cF9wYXJhbTogCnRydW5r\r\nX2dyb3VwX3VzYWdlOiAtCnRydXN0ZWRfbmV0d29ya3NfZW5hYmxlOiBvZmYKdXNl\r\nX3ByZWZlcnJlZF9pZGVudGl0eTogb2ZmCipTRUNUSU9OIGRiLnNpcHN3aXRjaC50\r\ncnVua19wYngKZ2VuZXJhdGlvbjogMQpsYXN0X3Jvd2lkOiAyCioqUk9XCnJvd2lk\r\nOiAxCmFsaWFzX2lwOiAtCmF1dGhfbmFtZTogCmNvbW1vbl91c2VyX3N1ZmZpeDog\r\nCmRvbWFpbjogCmVuYWJsZWQ6IG9uCmZyb21fbWF0Y2hpbmc6IGZyb21fdXJpCmZy\r\nb21fbWF0Y2hpbmdfc3RyOiAKZndkX3JlZmVyOiBvZmYKaW5jb21pbmdfZndkX3Bv\r\ncnQ6IAppbmNvbWluZ19md2RfdHJhbnNwb3J0OiAtCmlwYWRkcl9kbnM6IAppcGFk\r\nZHJfZXJyOiAKaXBhZGRyX2lwOiAKbHRydW5rX2dyb3VwX3VzYWdlOiAtCm5hbWU6\r\nIApwYXNzd29yZDogCnBieF9ob3N0X2FkZHJzOiAtCnJlZmVydG9fZG9tYWluOiAK\r\nc2VuZF9kdG1mX3ZpYV9zaXBfaW5mbzogb2ZmCnRvX3N0cjogCnRvX3R5cGU6IHJ1\r\ncmkKdHJ1bms6IDEKdHJ1bmtfZ3JvdXBfdXNhZ2U6IC0KdXJpOiAKKipST1cKcm93\r\naWQ6IDIKYWxpYXNfaXA6IC0KYXV0aF9uYW1lOiAKY29tbW9uX3VzZXJfc3VmZml4\r\nOiAKZG9tYWluOiAKZW5hYmxlZDogb24KZnJvbV9tYXRjaGluZzogZnJvbV91cmkK\r\nZnJvbV9tYXRjaGluZ19zdHI6IApmd2RfcmVmZXI6IG9mZgppbmNvbWluZ19md2Rf\r\ncG9ydDogCmluY29taW5nX2Z3ZF90cmFuc3BvcnQ6IC0KaXBhZGRyX2RuczogCmlw\r\nYWRkcl9lcnI6IAppcGFkZHJfaXA6IApsdHJ1bmtfZ3JvdXBfdXNhZ2U6IC0KbmFt\r\nZTogCnBhc3N3b3JkOiAKcGJ4X2hvc3RfYWRkcnM6IC0KcmVmZXJ0b19kb21haW46\r\nIApzZW5kX2R0bWZfdmlhX3NpcF9pbmZvOiBvZmYKdG9fc3RyOiAKdG9fdHlwZTog\r\ncnVyaQp0cnVuazogMgp0cnVua19ncm91cF91c2FnZTogLQp1cmk6IAoqU0VDVElP\r\nTiBkYi5zaXBzd2l0Y2gudHJ1bmtfcGJ4X2xpbmVzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0Y2gudHJ1bmtfc2lwX2xpbmVz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0\r\nY2gudHJ1bmtzCmdlbmVyYXRpb246IDEKbGFzdF9yb3dpZDogMgoqKlJPVwpyb3dp\r\nZDogMQplbmFibGVkOiBvZmYKaWQ6IDEKcGFyYW1zOiAtCnBieDogLQoqKlJPVwpy\r\nb3dpZDogMgplbmFibGVkOiBvZmYKaWQ6IDIKcGFyYW1zOiAtCnBieDogLQoqU0VD\r\nVElPTiBkYi5zaXBzd2l0Y2gudXNlcl9yb3V0aW5nCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXBzd2l0Y2gudXNlcnMKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcHN3aXRjaC52b2ljZW1h\r\naWwKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIEVPRgoAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIucHB0cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDAxNTEyADEzMzYxNDAx\r\nNDQ3ADAxMTcyMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnBwdHAuZ3JlX2xvZ2NsYXNz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2dj\r\nbGFzczogLQoqU0VDVElPTiBkYi5wcHRwLnBwdHBfZW5hYmxlCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNF\r\nQ1RJT04gZGIucHB0cC5wcHRwX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04g\r\nZGIucHB0cC5wcHRwX25ldHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmNsaWVudF9uZXRncm91cDogLQpkbnMxX2RuczogCmRuczFf\r\nZXJyOiAKZG5zMV9pcDogCmRuczJfZG5zOiAKZG5zMl9lcnI6IApkbnMyX2lwOiAK\r\nbGNwX2VjaG9faW50ZXJ2YWw6IApsb2NhbF9hZGRyOiAtCndpbnMxX2RuczogCndp\r\nbnMxX2VycjogCndpbnMxX2lwOiAKd2luczJfZG5zOiAKd2luczJfZXJyOiAKd2lu\r\nczJfaXA6IAoqU0VDVElPTiBkYi5wcHRwLnBwdHBfc2VydmVyaXAKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmlwOiAtCipTRUNUSU9O\r\nIGRiLnBwdHAucHB0cF91c2VycwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gZGIucHB0cC5wcHRwbmVnX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNF\r\nQ1RJT04gRU9GCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIudGxzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDEwNTA3ADEzMzYxNDAx\r\nNDQ3ADAxMTU0NgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnRscy5jaXBoZXJzCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpjaXBoZXJzOiBI\r\nSUdIOiFhTlVMTDohTUQ1Cm5hbWU6IEhJR0gKKlNFQ1RJT04gZGIudGxzLmRocGFy\r\nYW1zCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogNAoqKlJPVwpyb3dpZDogMQpk\r\naHBhcmFtOiAtLS0tLUJFR0lOIERIIFBBUkFNRVRFUlMtLS0tLVxuTUlHSEFvR0JB\r\nUC8vLy8vLy8vLy95US9hb2lGb3dqVEV4bUtMZ053YzBTa0NUZ2lLWjh4MEFndStw\r\nanNUbXlKUlxuU2doNWpqUUUzZStWR2JQTk9rTWJNQ3NLYmZKZkZEZFA0VFZ0YlZI\r\nQ1JlU0Z0WFppWG43RzlFeEM2YVkzN1dzTFxuLzF5MjlBYTM3ZTQ0YS90YWlaK2xy\r\ncDhrRVh4TEgrWkpLR1pSN09aVGdmLy8vLy8vLy8vL0FnRUNcbi0tLS0tRU5EIERI\r\nIFBBUkFNRVRFUlMtLS0tLVxuCm5hbWU6IE1PRFAxMDI0IChHcm91cCAyKQoqKlJP\r\nVwpyb3dpZDogMgpkaHBhcmFtOiAtLS0tLUJFR0lOIERIIFBBUkFNRVRFUlMtLS0t\r\nLVxuTUlJQkNBS0NBUUVBLy8vLy8vLy8vLy9KRDlxaUlXakNOTVRHWW91QTNCelJL\r\nUUpPQ0lwbnpIUUNDNzZtT3hPYlxuSWxGS0NIbU9OQVRkNzVVWnM4MDZReHN3S3dw\r\ndDhsOFVOMC9oTlcxdFVjSkY1SVcxZG1KZWZzYjBURUxwcGpmdFxuYXd2L1hMYjBC\r\ncmZ0N2pocisxcUpuNld1bnlRUmZFc2Y1a2tvWmxIczVGczl3Z0I4dUtGanZ3V1ky\r\na2cySEZYVFxubW1rV1A2ajlKTTlmZzJWZEk5eWpyWlljWXZOV0lJVlN1NTdWS1Fk\r\nd2xwWnRad3cxVGtxOG1BVHhkR3dJeWhnaFxuZkRLUVhrWXVOczQ3NDU1M0xCZ09o\r\nZ09iSjRPaTdBZWlqN1hGWGZCdlRGTEozaXZMOXBWWUZ4ZzVsVWw4NnBWcVxuNVJY\r\nU0poaVkrZ1VRRlhLT1dvcXNxbWovLy8vLy8vLy8vd0lCQWc9PVxuLS0tLS1FTkQg\r\nREggUEFSQU1FVEVSUy0tLS0tXG4KbmFtZTogTU9EUDIwNDggKEdyb3VwIDE0KQoq\r\nKlJPVwpyb3dpZDogMwpkaHBhcmFtOiAtLS0tLUJFR0lOIERIIFBBUkFNRVRFUlMt\r\nLS0tLVxuTUlJQ0NBS0NBZ0VBLy8vLy8vLy8vLy9KRDlxaUlXakNOTVRHWW91QTNC\r\nelJLUUpPQ0lwbnpIUUNDNzZtT3hPYlxuSWxGS0NIbU9OQVRkNzVVWnM4MDZReHN3\r\nS3dwdDhsOFVOMC9oTlcxdFVjSkY1SVcxZG1KZWZzYjBURUxwcGpmdFxuYXd2L1hM\r\nYjBCcmZ0N2pocisxcUpuNld1bnlRUmZFc2Y1a2tvWmxIczVGczl3Z0I4dUtGanZ3\r\nV1kya2cySEZYVFxubW1rV1A2ajlKTTlmZzJWZEk5eWpyWlljWXZOV0lJVlN1NTdW\r\nS1Fkd2xwWnRad3cxVGtxOG1BVHhkR3dJeWhnaFxuZkRLUVhrWXVOczQ3NDU1M0xC\r\nZ09oZ09iSjRPaTdBZWlqN1hGWGZCdlRGTEozaXZMOXBWWUZ4ZzVsVWw4NnBWcVxu\r\nNVJYU0poaVkrZ1VRRlhLT1dvcXF4QzJ0TXhjTkJGQjZNNmhWSWF2ZkhMcGs3UHVG\r\nQkZqYjd3cUs2bkZYWFFZTVxuZmJPWEQ0V200ZVRIcS9XdWpOc0pNOWNlakpUZ1Np\r\nVmhuYzdqMGlZYTB1NXI4Uy82QnRtS0NHVFlkZ0p6UHNocVxuWkZJZkt4Z1hleUFN\r\ndStFWFYzcGhYV3gzQ1lqQXV0bEc0Z2ppVDZCMDVhc3hROXRiL09EOUVJNUxndEVn\r\ncVNFSVxuQVJweVBCS25oK2JYaUhHYUVMMjZXeWFad3ljWWF2VGlQQnFVYURTMkZR\r\ndmFKWVBweWlyVVRPamJ1OExiQk42T1xuK1M2Ty9CUWZ2c3FtS0h4WlIwNXJ3RjJa\r\nc3BaUG9KRERvaU03b1laUlcrZnRIMkVwY003aTE2KzRHOTEySVhCSVxuSE5BR2tT\r\nZlZzRnFwazdUcW1JMlAzY0dHLzdmY2tLYkFqMDMwTmNrMEJqR1ovLy8vLy8vLy8v\r\nOENBUUk9XG4tLS0tLUVORCBESCBQQVJBTUVURVJTLS0tLS1cbgpuYW1lOiBNT0RQ\r\nNDA5NiAoR3JvdXAgMTYpCioqUk9XCnJvd2lkOiA0CmRocGFyYW06IC0tLS0tQkVH\r\nSU4gREggUEFSQU1FVEVSUy0tLS0tXG5NSUlFQ0FLQ0JBRUEvLy8vLy8vLy8vL0pE\r\nOXFpSVdqQ05NVEdZb3VBM0J6UktRSk9DSXBuekhRQ0M3Nm1PeE9iXG5JbEZLQ0ht\r\nT05BVGQ3NVVaczgwNlF4c3dLd3B0OGw4VU4wL2hOVzF0VWNKRjVJVzFkbUplZnNi\r\nMFRFTHBwamZ0XG5hd3YvWExiMEJyZnQ3amhyKzFxSm42V3VueVFSZkVzZjVra29a\r\nbEhzNUZzOXdnQjh1S0ZqdndXWTJrZzJIRlhUXG5tbWtXUDZqOUpNOWZnMlZkSTl5\r\nanJaWWNZdk5XSUlWU3U1N1ZLUWR3bHBadFp3dzFUa3E4bUFUeGRHd0l5aGdoXG5m\r\nREtRWGtZdU5zNDc0NTUzTEJnT2hnT2JKNE9pN0FlaWo3WEZYZkJ2VEZMSjNpdkw5\r\ncFZZRnhnNWxVbDg2cFZxXG41UlhTSmhpWStnVVFGWEtPV29xcXhDMnRNeGNOQkZC\r\nNk02aFZJYXZmSExwazdQdUZCRmpiN3dxSzZuRlhYUVlNXG5mYk9YRDRXbTRlVEhx\r\nL1d1ak5zSk05Y2VqSlRnU2lWaG5jN2owaVlhMHU1cjhTLzZCdG1LQ0dUWWRnSnpQ\r\nc2hxXG5aRklmS3hnWGV5QU11K0VYVjNwaFhXeDNDWWpBdXRsRzRnamlUNkIwNWFz\r\neFE5dGIvT0Q5RUk1TGd0RWdxU0VJXG5BUnB5UEJLbmgrYlhpSEdhRUwyNld5YVp3\r\neWNZYXZUaVBCcVVhRFMyRlF2YUpZUHB5aXJVVE9qYnU4TGJCTjZPXG4rUzZPL0JR\r\nZnZzcW1LSHhaUjA1cndGMlpzcFpQb0pERG9pTTdvWVpSVytmdEgyRXBjTTdpMTYr\r\nNEc5MTJJWEJJXG5ITkFHa1NmVnNGcXBrN1RxbUkyUDNjR0cvN2Zja0tiQWowMzBO\r\nY2swQW9TU05zUDZ0Tko4Y0NiQjFOeXlZQ1pHXG4zc2wxSG5ZOXVqZTkrUCtVQnEy\r\nZVV3N2wyemd2UVRBQnJyQnFVKzJRSjlneEY1Y25zSVphaVJqYVB0dnJ6NXNVXG43\r\nVVRPYkxyTzFMc2IyMzhVUitiTUpVc3pJRkZSSzlldlFtKzQ5QUUzak5LL1dZUEtB\r\nY1pMa3V6d011b1YwWElkXG5BL1NDMTg1dWRQNzIxVjV3TDBhWURJSzFxRUF4a0Fz\r\nY25sbm55WCsreCtqekk2bDZmamJNaUw0UEhVVzMvMWhhXG54VXZVQjdJclFWU3F6\r\nSTl0ZnI5STRkZ1V6RjdTRDRBMzRLZVhGZTd5bStNb0JxSFZpN2ZGMm5iMVVLbzlp\r\naCsvXG44T3NaekxHakU5VmMybGJKN0M3eWxqSTRmK2pYYmp3RWFBUStqMlkvU0dE\r\ndUVyOHRXd3QwZE5ibWxQa2ViYjRSXG5XWFNqa204Uy91WGtPSGQ4dHFreTM0ell2\r\nc1RRYzdreHVqdklNcmFObmRNQWRCK252NHI4UiswbGR2YVRhNlFrXG5aanFyWTV4\r\nYTVQVm9OQ08wZEN2eHlYZ2pqeGJMNDUxbExlUDl1TDc4aElyWklpSXVCS1FEZkFj\r\nVDYxZW9HaVB3XG54elJ6L0dSczZqQnJTOHZJaGkrRGhkMzZuVXQvb3NDSDZIbG9N\r\nd1B0VzkwNkJpczg5Yk9pZUtadEtoUDRQMFQ0XG5MZDh4RHVCMHEybzJSWmZvbWFB\r\nbFhjRms4eHpGQ0VhRkhmbXJTQmxkN1g2aHNkVVF2WDduVFhQNjgydkRIcytpXG5h\r\nRFdRUnZUcmg1K1NRQWxEaTBnY2JOZUltZ0F1MWU0NEs4a1pEYWI4QW01SGxWamtS\r\nMVozNmFxZU1GRGlkbGFVXG4zOGdmVnVpQXVXNXhZTW1BM1pqdDA5Ly8vLy8vLy8v\r\nLy93SUJBZz09XG4tLS0tLUVORCBESCBQQVJBTUVURVJTLS0tLS1cbgpuYW1lOiBN\r\nT0RQODE5MiAoR3JvdXAgMTgpCipTRUNUSU9OIGRiLnRscy5wcm90b2NvbHMKZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiA5CioqUk9XCnJvd2lkOiAxCm5hbWU6IERU\r\nTFN2MS54CnByb3RvY29sOiBEVExTdjEKKipST1cKcm93aWQ6IDIKbmFtZTogRFRM\r\nU3YxLngKcHJvdG9jb2w6IERUTFN2MV8yCioqUk9XCnJvd2lkOiAzCm5hbWU6IFNT\r\nTHYzLjAKcHJvdG9jb2w6IFNTTHYzCioqUk9XCnJvd2lkOiA0Cm5hbWU6IFRMU3Yx\r\nLnggJiBTU0x2My4wCnByb3RvY29sOiBTU0x2MwoqKlJPVwpyb3dpZDogNQpuYW1l\r\nOiBUTFN2MS54ICYgU1NMdjMuMApwcm90b2NvbDogVExTdjEKKipST1cKcm93aWQ6\r\nIDYKbmFtZTogVExTdjEueCAmIFNTTHYzLjAKcHJvdG9jb2w6IFRMU3YxXzEKKipS\r\nT1cKcm93aWQ6IDcKbmFtZTogVExTdjEueCAmIFNTTHYzLjAKcHJvdG9jb2w6IFRM\r\nU3YxXzIKKipST1cKcm93aWQ6IDgKbmFtZTogVExTdjEueApwcm90b2NvbDogVExT\r\ndjFfMQoqKlJPVwpyb3dpZDogOQpuYW1lOiBUTFN2MS54CnByb3RvY29sOiBUTFN2\r\nMV8yCipTRUNUSU9OIGRiLnRscy50bHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiA0CioqUk9XCnJvd2lkOiAxCmNpcGhlcnM6IEhJR0gKZGhwYXJhbTogTU9EUDIw\r\nNDggKEdyb3VwIDE0KQplY2RoOiBwcmltZTI1NnYxCm5hbWU6IERUTFN2MS54CnBy\r\nb3RvY29sczogRFRMU3YxLngKKipST1cKcm93aWQ6IDIKY2lwaGVyczogSElHSApk\r\naHBhcmFtOiBNT0RQMjA0OCAoR3JvdXAgMTQpCmVjZGg6IHByaW1lMjU2djEKbmFt\r\nZTogU1NMdjMuMApwcm90b2NvbHM6IFNTTHYzLjAKKipST1cKcm93aWQ6IDMKY2lw\r\naGVyczogSElHSApkaHBhcmFtOiBNT0RQMjA0OCAoR3JvdXAgMTQpCmVjZGg6IHBy\r\naW1lMjU2djEKbmFtZTogVExTdjEueCAmIFNTTHYzLjAKcHJvdG9jb2xzOiBUTFN2\r\nMS54ICYgU1NMdjMuMAoqKlJPVwpyb3dpZDogNApjaXBoZXJzOiBISUdICmRocGFy\r\nYW06IE1PRFAyMDQ4IChHcm91cCAxNCkKZWNkaDogcHJpbWUyNTZ2MQpuYW1lOiBU\r\nTFN2MS54CnByb3RvY29sczogVExTdjEueAoqU0VDVElPTiBFT0YKAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5taXNjAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDYyMzYAMTMzNjQzMjYxMzIAMDExNzAzACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIubWlzYy5jbG91ZHlfZGVidWdfbG9nY2xhc3MKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiAt\r\nCipTRUNUSU9OIGRiLm1pc2MuY2xvdWR5X2Vycm9yX2xvZ2NsYXNzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9j\r\nYWwKKlNFQ1RJT04gZGIubWlzYy5jbG91ZHlfaW5mb19sb2djbGFzcwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExv\r\nY2FsCipTRUNUSU9OIGRiLm1pc2MuY29ubnRyYWNrX3RpbWVvdXRzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQppY21wOiAzMAppY21w\r\nNjogMzAKdGNwX2VzdGFibGlzaGVkOiA0MzIwMDAKdWRwOiAxMAp1ZHBfc3RyZWFt\r\nOiAxODAKKlNFQ1RJT04gZGIubWlzYy5kZWZhdWx0X2RvbWFpbgpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZG9tYWluOiAuCipTRUNU\r\nSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAwCipTRUNUSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXJfZGF0YV90eXBlCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMTEKKipST1cKcm93aWQ6IDEKbmFtZTogQm9v\r\nbGVhbgpvcmRlcjogMQp0eXBlOiBCT09MRUFOCioqUk9XCnJvd2lkOiAyCm5hbWU6\r\nIFVuc2lnbmVkIEludGVnZXIgKDgpCm9yZGVyOiAxCnR5cGU6IFVJTlQ4CioqUk9X\r\nCnJvd2lkOiAzCm5hbWU6IFVuc2lnbmVkIEludGVnZXIgKDE2KQpvcmRlcjogMQp0\r\neXBlOiBVSU5UMTYKKipST1cKcm93aWQ6IDQKbmFtZTogVW5zaWduZWQgSW50ZWdl\r\nciAoMzIpCm9yZGVyOiAxCnR5cGU6IFVJTlQzMgoqKlJPVwpyb3dpZDogNQpuYW1l\r\nOiBJbnRlZ2VyICg4KQpvcmRlcjogMQp0eXBlOiBJTlQ4CioqUk9XCnJvd2lkOiA2\r\nCm5hbWU6IEludGVnZXIgKDE2KQpvcmRlcjogMQp0eXBlOiBJTlQxNgoqKlJPVwpy\r\nb3dpZDogNwpuYW1lOiBJbnRlZ2VyICgzMikKb3JkZXI6IDEKdHlwZTogSU5UMzIK\r\nKipST1cKcm93aWQ6IDgKbmFtZTogSVB2NCBhZGRyZXNzCm9yZGVyOiAxCnR5cGU6\r\nIElQdjQKKipST1cKcm93aWQ6IDkKbmFtZTogSVB2NiBhZGRyZXNzCm9yZGVyOiAx\r\nCnR5cGU6IElQdjYKKipST1cKcm93aWQ6IDEwCm5hbWU6IFRleHQKb3JkZXI6IDEK\r\ndHlwZTogVEVYVAoqKlJPVwpyb3dpZDogMTEKbmFtZTogU3RyaW5nCm9yZGVyOiAx\r\nCnR5cGU6IFNUUklORwoqU0VDVElPTiBkYi5taXNjLmRoY3Bfc2VydmVyX2Ruc19z\r\nZXJ2ZXJzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5t\r\naXNjLmRoY3Bfc2VydmVyX2RvbWFpbgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKZG9tYWluOgoqU0VDVElPTiBkYi5taXNjLmRoY3Bf\r\nc2VydmVyX2dpdmVfbnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5taXNjLmRoY3Bfc2Vy\r\ndmVyX2xlYXNldGltZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKZGVmYXVsdDogNDMyMDAKbWF4OiA4NjQwMAptaW46IDYwCipTRUNU\r\nSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXJfbmV0Ymlvc19lbmFibGVkCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiAtCipT\r\nRUNUSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXJfbmV0Ymlvc19ub2RldHlwZQpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKdHlwZTogLQoq\r\nU0VDVElPTiBkYi5taXNjLmRoY3Bfc2VydmVyX29wdGlvbnMKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLm1pc2MuZGhjcF9zZXJ2ZXJfc3Rh\r\ndHVzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpl\r\nbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIubWlzYy5kaGNwX3NlcnZlcl93aW5zX3Nl\r\ncnZlcnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLm1p\r\nc2MuZG5zX3ByZWZlcmVuY2UKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCnByZWZlcmVuY2U6IGF1dG8KKlNFQ1RJT04gZGIubWlzYy5k\r\nbnNfc2VydmVycwpnZW5lcmF0aW9uOiA0Cmxhc3Rfcm93aWQ6IDIKKlNFQ1RJT04g\r\nZGIubWlzYy5keW5kbnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmJhY2t1cDogb2ZmCmNhOiAtCmVuYWJsZWQ6IG9mZgppcDogLQpt\r\neDoKb2ZmbGluZTogb2ZmCnBhc3N3b3JkOgpzZXJ2aWNlOiAtCnVzZXI6CndpbGRj\r\nYXJkOiBvZmYKKlNFQ1RJT04gZGIubWlzYy5keW5kbnNfbmFtZQpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIubWlzYy5mb3JjZV9ubGNrCmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVk\r\nOiBvZmYKKlNFQ1RJT04gZGIubWlzYy5mdmVyc2lvbgpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIGRiLm1pc2MubnRwX3NlcnZlcnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAw\r\nCipTRUNUSU9OIGRiLm1pc2Mub3B0aW9ucwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93\r\naWQ6IDAKKlNFQ1RJT04gZGIubWlzYy5yYWR2ZF9pbnRlcmZhY2Vfc2V0dGluZ3MK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLm1pc2MucmFk\r\ndmRfcHJlZml4X3NldHRpbmdzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoq\r\nU0VDVElPTiBkYi5taXNjLnJhZHZkX3ByZWZpeGVzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5taXNjLnJhZHZkX3N0YXR1cwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2Zm\r\nCipTRUNUSU9OIGRiLm1pc2MudW5pdG5hbWUKZ2VuZXJhdGlvbjogMApsYXN0X3Jv\r\nd2lkOiAxCioqUk9XCnJvd2lkOiAxCnVuaXRuYW1lOgoqU0VDVElPTiBkYi5taXNj\r\nLnVzZV9udHAKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIucW9zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDA1NjcwADEzMzYxNDAy\r\nNDY3ADAxMTU1NgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnFvcy5iYW5kd2lkdGhzCmdl\r\nbmVyYXRpb246IDEKbGFzdF9yb3dpZDogNgoqKlJPVwpyb3dpZDogMQplZ3Jlc3Nf\r\nYmFuZHdpZHRoOiAKZWdyZXNzX2VuYWJsZWQ6IG9mZgplZ3Jlc3NfcmVzZXJ2ZV9z\r\naXBfbWVkaWE6IAplZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVkaWFfZW1lcmdlbmN5OiAK\r\naW5ncmVzc19iYW5kd2lkdGg6IAppbmdyZXNzX2VuYWJsZWQ6IG9mZgppbmdyZXNz\r\nX3Jlc2VydmVfc2lwX21lZGlhOiAKaW5ncmVzc19yZXNlcnZlX3NpcF9tZWRpYV9l\r\nbWVyZ2VuY3k6IAppbnRlcmZhY2U6IGV0aDAKKipST1cKcm93aWQ6IDIKZWdyZXNz\r\nX2JhbmR3aWR0aDogCmVncmVzc19lbmFibGVkOiBvZmYKZWdyZXNzX3Jlc2VydmVf\r\nc2lwX21lZGlhOiAKZWdyZXNzX3Jlc2VydmVfc2lwX21lZGlhX2VtZXJnZW5jeTog\r\nCmluZ3Jlc3NfYmFuZHdpZHRoOiAKaW5ncmVzc19lbmFibGVkOiBvZmYKaW5ncmVz\r\nc19yZXNlcnZlX3NpcF9tZWRpYTogCmluZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVkaWFf\r\nZW1lcmdlbmN5OiAKaW50ZXJmYWNlOiBldGgxCioqUk9XCnJvd2lkOiAzCmVncmVz\r\nc19iYW5kd2lkdGg6IAplZ3Jlc3NfZW5hYmxlZDogb2ZmCmVncmVzc19yZXNlcnZl\r\nX3NpcF9tZWRpYTogCmVncmVzc19yZXNlcnZlX3NpcF9tZWRpYV9lbWVyZ2VuY3k6\r\nIAppbmdyZXNzX2JhbmR3aWR0aDogCmluZ3Jlc3NfZW5hYmxlZDogb2ZmCmluZ3Jl\r\nc3NfcmVzZXJ2ZV9zaXBfbWVkaWE6IAppbmdyZXNzX3Jlc2VydmVfc2lwX21lZGlh\r\nX2VtZXJnZW5jeTogCmludGVyZmFjZTogZXRoMgoqKlJPVwpyb3dpZDogNAplZ3Jl\r\nc3NfYmFuZHdpZHRoOiAKZWdyZXNzX2VuYWJsZWQ6IG9mZgplZ3Jlc3NfcmVzZXJ2\r\nZV9zaXBfbWVkaWE6IAplZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVkaWFfZW1lcmdlbmN5\r\nOiAKaW5ncmVzc19iYW5kd2lkdGg6IAppbmdyZXNzX2VuYWJsZWQ6IG9mZgppbmdy\r\nZXNzX3Jlc2VydmVfc2lwX21lZGlhOiAKaW5ncmVzc19yZXNlcnZlX3NpcF9tZWRp\r\nYV9lbWVyZ2VuY3k6IAppbnRlcmZhY2U6IGV0aDMKKipST1cKcm93aWQ6IDUKZWdy\r\nZXNzX2JhbmR3aWR0aDogCmVncmVzc19lbmFibGVkOiBvZmYKZWdyZXNzX3Jlc2Vy\r\ndmVfc2lwX21lZGlhOiAKZWdyZXNzX3Jlc2VydmVfc2lwX21lZGlhX2VtZXJnZW5j\r\neTogCmluZ3Jlc3NfYmFuZHdpZHRoOiAKaW5ncmVzc19lbmFibGVkOiBvZmYKaW5n\r\ncmVzc19yZXNlcnZlX3NpcF9tZWRpYTogCmluZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVk\r\naWFfZW1lcmdlbmN5OiAKaW50ZXJmYWNlOiBldGg0CioqUk9XCnJvd2lkOiA2CmVn\r\ncmVzc19iYW5kd2lkdGg6IAplZ3Jlc3NfZW5hYmxlZDogb2ZmCmVncmVzc19yZXNl\r\ncnZlX3NpcF9tZWRpYTogCmVncmVzc19yZXNlcnZlX3NpcF9tZWRpYV9lbWVyZ2Vu\r\nY3k6IAppbmdyZXNzX2JhbmR3aWR0aDogCmluZ3Jlc3NfZW5hYmxlZDogb2ZmCmlu\r\nZ3Jlc3NfcmVzZXJ2ZV9zaXBfbWVkaWE6IAppbmdyZXNzX3Jlc2VydmVfc2lwX21l\r\nZGlhX2VtZXJnZW5jeTogCmludGVyZmFjZTogZXRoNQoqU0VDVElPTiBkYi5xb3Mu\r\nY2xhc3NlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6\r\nIDEKY2xpZW50X25ldGdyb3VwOiAtCmRzY3A6IAptYXhfcGFja2V0X3NpemU6IApt\r\naW5fcGFja2V0X3NpemU6IApuYW1lOiBTSVAgU2lnbmFsaW5nCm51bWJlcjogMQpz\r\nZXJ2ZXJfbmV0Z3JvdXA6IC0Kc2VydmljZTogLQpzaXA6IHNpZ25hbGluZwp0b3M6\r\nIC0KKlNFQ1RJT04gZGIucW9zLmVncmVzc19kZWZhdWx0X3F1ZXVlaW5nCmdlbmVy\r\nYXRpb246IDEKbGFzdF9yb3dpZDogNgoqKlJPVwpyb3dpZDogMQppbnRlcmZhY2U6\r\nIGV0aDAKbGltaXQ6IApxdWV1ZTogcHJpbzgKcmF0ZTogCioqUk9XCnJvd2lkOiAy\r\nCmludGVyZmFjZTogZXRoMQpsaW1pdDogCnF1ZXVlOiBwcmlvOApyYXRlOiAKKipS\r\nT1cKcm93aWQ6IDMKaW50ZXJmYWNlOiBldGgyCmxpbWl0OiAKcXVldWU6IHByaW84\r\nCnJhdGU6IAoqKlJPVwpyb3dpZDogNAppbnRlcmZhY2U6IGV0aDMKbGltaXQ6IApx\r\ndWV1ZTogcHJpbzgKcmF0ZTogCioqUk9XCnJvd2lkOiA1CmludGVyZmFjZTogZXRo\r\nNApsaW1pdDogCnF1ZXVlOiBwcmlvOApyYXRlOiAKKipST1cKcm93aWQ6IDYKaW50\r\nZXJmYWNlOiBldGg1CmxpbWl0OiAKcXVldWU6IHByaW84CnJhdGU6IAoqU0VDVElP\r\nTiBkYi5xb3MuZWdyZXNzX3F1ZXVlaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMAoqU0VDVElPTiBkYi5xb3MuaW5ncmVzc19kZWZhdWx0X3F1ZXVlaW5nCmdl\r\nbmVyYXRpb246IDEKbGFzdF9yb3dpZDogNgoqKlJPVwpyb3dpZDogMQppbnRlcmZh\r\nY2U6IGV0aDAKbGltaXQ6IApxdWV1ZTogcHJpbzgKcmF0ZTogCioqUk9XCnJvd2lk\r\nOiAyCmludGVyZmFjZTogZXRoMQpsaW1pdDogCnF1ZXVlOiBwcmlvOApyYXRlOiAK\r\nKipST1cKcm93aWQ6IDMKaW50ZXJmYWNlOiBldGgyCmxpbWl0OiAKcXVldWU6IHBy\r\naW84CnJhdGU6IAoqKlJPVwpyb3dpZDogNAppbnRlcmZhY2U6IGV0aDMKbGltaXQ6\r\nIApxdWV1ZTogcHJpbzgKcmF0ZTogCioqUk9XCnJvd2lkOiA1CmludGVyZmFjZTog\r\nZXRoNApsaW1pdDogCnF1ZXVlOiBwcmlvOApyYXRlOiAKKipST1cKcm93aWQ6IDYK\r\naW50ZXJmYWNlOiBldGg1CmxpbWl0OiAKcXVldWU6IHByaW84CnJhdGU6IAoqU0VD\r\nVElPTiBkYi5xb3MuaW5ncmVzc19xdWV1ZWluZwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDAKKlNFQ1RJT04gZGIucW9zLnNpcF9jYWMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElP\r\nTiBkYi5xb3Muc3RhdHVzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJP\r\nVwpyb3dpZDogMQpwcmlvX3NhdmU6IDAKdHlwZTogcHJpb3JpdHkKKlNFQ1RJT04g\r\nZGIucW9zLnRhZ2dpbmcKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNU\r\nSU9OIEVPRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5jZXJ0AAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDAzMTAAMTMzNjE0MDE0NDcAMDExNjcwACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIuY2VydC5jYXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAwCipTRUNUSU9OIGRiLmNlcnQub3duX2NlcnRzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIucnVudGltZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDAwNDIwADEzMzYxNDAx\r\nNDQ3ADAxMjQyMAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnJ1bnRpbWUuYWN0aXZlX3Jv\r\ndXRlcnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmRlZnJvdXRlcnM6IAoqU0VDVElPTiBkYi5ydW50aW1lLmR5bmlwX2xlYXNlcwpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbGVhc2Vz\r\nOiAKKlNFQ1RJT04gRU9GCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLnF0dXJuAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMjM0NgAxMzM2MTQwMTQ0NwAwMTIxMTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5x\r\ndHVybi5hY2NvdW50aW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJP\r\nVwpyb3dpZDogMQpsZXZlbDogb2ZmCipTRUNUSU9OIGRiLnF0dXJuLmFjdGl2ZQpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxl\r\nZDogb2ZmCipTRUNUSU9OIGRiLnF0dXJuLmFsbG93X3VuYXV0aGVudGljYXRlZApn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKY2xpZW50\r\nX25ldGdyb3VwOiAtCipTRUNUSU9OIGRiLnF0dXJuLmNlcnQKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmNlcnQ6IC0KKlNFQ1RJT04g\r\nZGIucXR1cm4uZGVidWdfbGV2ZWwKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCmxldmVsOiAwCipTRUNUSU9OIGRiLnF0dXJuLmRlZmF1\r\nbHRfcGFzc3dvcmQKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJv\r\nd2lkOiAxCnBhc3N3b3JkOgoqU0VDVElPTiBkYi5xdHVybi5saXN0ZW4KZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiA0CioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9u\r\nCnBvcnQ6IDM0NzgKdHJhbnNwb3J0OiB1ZHAKY29tbWVudDoKKipST1cKcm93aWQ6\r\nIDIKZW5hYmxlZDogb24KcG9ydDogMzQ3OAp0cmFuc3BvcnQ6IHRjcApjb21tZW50\r\nOgoqKlJPVwpyb3dpZDogMwplbmFibGVkOiBvZmYKcG9ydDogNTM0OQp0cmFuc3Bv\r\ncnQ6IHRscwpjb21tZW50OgoqKlJPVwpyb3dpZDogNAplbmFibGVkOiBvZmYKcG9y\r\ndDogNTM0OQp0cmFuc3BvcnQ6IGR0bHMKY29tbWVudDoKKlNFQ1RJT04gZGIucXR1\r\ncm4ubWVkaWFfcG9ydHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCnBvcnRzX2xvd2VyOiA0OTE1Mgpwb3J0c191cHBlcjogNTY5OTkK\r\nKlNFQ1RJT04gZGIucXR1cm4ucmVsYXlfZGV2aWNlCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQppbnRlcmZhY2U6IC0KKlNFQ1RJT04g\r\nZGIucXR1cm4uc2lnbmFsaW5nX2FjbApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKY2xpZW50X25ldGdyb3VwOiAtCipTRUNUSU9OIGRi\r\nLnF0dXJuLnVzZXJzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElP\r\nTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIuZmlyZXdhbGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDI2NzIzADEzMzYxNDAx\r\nNDQ3ADAxMjU2MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLmZpcmV3YWxsLmJsaW5kX3Jv\r\ndXRlX3BvbGljeQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93\r\naWQ6IDEKYWN0aW9uOiBkaXNjYXJkCipTRUNUSU9OIGRiLmZpcmV3YWxsLmJyb2Fk\r\nY2FzdF9sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKbG9nY2xhc3M6IC0KKlNFQ1RJT04gZGIuZmlyZXdhbGwuZGVmYXVs\r\ndF9wb2xpY3kKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmFjdGlvbjogZGlzY2FyZAoqU0VDVElPTiBkYi5maXJld2FsbC5kaGNwX2xv\r\nZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIuZmlyZXdhbGwudHVubmVsX2xv\r\nZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQpsb2djbGFzczogLQoqU0VDVElPTiBkYi5maXJld2FsbC5uZF9sb2djbGFzcwpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xh\r\nc3M6IC0KKlNFQ1RJT04gZGIuZmlyZXdhbGwuY2xvdWRfbG9nY2xhc3MKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiAt\r\nCipTRUNUSU9OIGRiLmZpcmV3YWxsLmRoY3BfcmVsYXkKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgppbnRlcmZh\r\nY2U6IC0KcG9ydDogNjcKc2VydmVyX2RuczoKc2VydmVyX2VycjoKc2VydmVyX2lw\r\nOgoqU0VDVElPTiBkYi5maXJld2FsbC5mb3J3YXJkaW5nX3J1bGVzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5maXJld2FsbC5tYXN0ZXJf\r\nbG9nY2xhc3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmxvZ2NsYXNzOiBMb2NhbApvdmVycmlkZTogbWFya2VkCipTRUNUSU9OIGRi\r\nLmZpcmV3YWxsLm5ldHdvcmtfZ3JvdXBzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMAoqU0VDVElPTiBkYi5maXJld2FsbC5vd25fbG9nY2xhc3MKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiBMb2Nh\r\nbAoqU0VDVElPTiBkYi5maXJld2FsbC5waW5nX3BvbGljeQpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKcG9saWN5OiBuZXZlcgoqU0VD\r\nVElPTiBkYi5maXJld2FsbC5wb2xpY3lfbG9nY2xhc3MKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiBMb2NhbAoqU0VD\r\nVElPTiBkYi5maXJld2FsbC5wcm90b2NvbHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jv\r\nd2lkOiA4CioqUk9XCnJvd2lkOiAxCm5hbWU6IEFICnByb3RvY29sOiA1MQoqKlJP\r\nVwpyb3dpZDogMgpuYW1lOiBFU1AKcHJvdG9jb2w6IDUwCioqUk9XCnJvd2lkOiAz\r\nCm5hbWU6IEdSRQpwcm90b2NvbDogNDcKKipST1cKcm93aWQ6IDQKbmFtZTogSUNN\r\nUApwcm90b2NvbDogMQoqKlJPVwpyb3dpZDogNQpuYW1lOiBJR01QCnByb3RvY29s\r\nOiAyCioqUk9XCnJvd2lkOiA2Cm5hbWU6IElQdjYKcHJvdG9jb2w6IDQxCioqUk9X\r\nCnJvd2lkOiA3Cm5hbWU6IFRDUApwcm90b2NvbDogNgoqKlJPVwpyb3dpZDogOApu\r\nYW1lOiBVRFAKcHJvdG9jb2w6IDE3CioqUk9XCnJvd2lkOiA5Cm5hbWU6IElDTVB2\r\nNgpwcm90b2NvbDogNTgKKlNFQ1RJT04gZGIuZmlyZXdhbGwucmVsYXlzCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5maXJld2FsbC5zZXJ2\r\naWNlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDcyCioqUk9XCnJvd2lkOiAx\r\nCmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiBzdGF0aWMKaXhtcHR5\r\ncGU6Cm5hbWU6IGFoCnByb3RvY29sOiBBSApzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3Vw\r\nOiAtCioqUk9XCnJvd2lkOiAyCmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRh\r\nX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGRheXRpbWUK\r\ncHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDEzCnN1Ymdyb3VwOiAtCioqUk9X\r\nCnJvd2lkOiAzCmNsaWVudF9wb3J0czogNjgKZGF0YV9wb3J0czoKZnd0eXBlOiBz\r\ndGF0aWMKaXhtcHR5cGU6Cm5hbWU6IGRoY3AKcHJvdG9jb2w6IFVEUApzZXJ2ZXJf\r\ncG9ydHM6IDY3CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA0CmNsaWVudF9wb3J0\r\nczogNTMsMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0YXRpYwppeG1w\r\ndHlwZToKbmFtZTogZG5zCnByb3RvY29sOiBVRFAKc2VydmVyX3BvcnRzOiA1Mwpz\r\ndWJncm91cDogLQoqKlJPVwpyb3dpZDogNQpjbGllbnRfcG9ydHM6IDUzCmRhdGFf\r\ncG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBlOgpuYW1lOiBkbnMtcmVwbHkK\r\ncHJvdG9jb2w6IFVEUApzZXJ2ZXJfcG9ydHM6IDUzLDEwMjQtNjU1MzUKc3ViZ3Jv\r\ndXA6IC0KKipST1cKcm93aWQ6IDYKY2xpZW50X3BvcnRzOiA1MywxMDI0LTY1NTM1\r\nCmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogZG5z\r\nLXRjcApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogNTMKc3ViZ3JvdXA6IC0K\r\nKipST1cKcm93aWQ6IDcKY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6\r\nIHN0YXRpYwppeG1wdHlwZTogMApuYW1lOiBlY2hvLXJlcGx5CnByb3RvY29sOiBJ\r\nQ01QCnNlcnZlcl9wb3J0czoKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDgKY2xp\r\nZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZTog\r\nOApuYW1lOiBlY2hvLXJlcXVlc3QKcHJvdG9jb2w6IElDTVAKc2VydmVyX3BvcnRz\r\nOgpzdWJncm91cDogLQoqKlJPVwpyb3dpZDogOQpjbGllbnRfcG9ydHM6CmRhdGFf\r\ncG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBlOgpuYW1lOiBlc3AKcHJvdG9j\r\nb2w6IEVTUApzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiAx\r\nMApjbGllbnRfcG9ydHM6IDEwMjQtNjU1MzUKZGF0YV9wb3J0czoKZnd0eXBlOiBk\r\neW5hbWljCml4bXB0eXBlOgpuYW1lOiBmaW5nZXIKcHJvdG9jb2w6IFRDUApzZXJ2\r\nZXJfcG9ydHM6IDc5CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiAxMQpjbGllbnRf\r\ncG9ydHM6IDEwMjQtNjU1MzUKZGF0YV9wb3J0czoKZnd0eXBlOiBmdHAKaXhtcHR5\r\ncGU6Cm5hbWU6IGZ0cApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMjEKc3Vi\r\nZ3JvdXA6IC0KKipST1cKcm93aWQ6IDEyCmNsaWVudF9wb3J0czogMTAyNC02NTUz\r\nNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGhp\r\nZ2gtaGlnaApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMTAyNC02NTUzNQpz\r\ndWJncm91cDogLQoqKlJPVwpyb3dpZDogMTMKY2xpZW50X3BvcnRzOiAxMDI0LTY1\r\nNTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTog\r\naHR0cApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogODAKc3ViZ3JvdXA6IC0K\r\nKipST1cKcm93aWQ6IDE0CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3Bv\r\ncnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGh0dHBzCnByb3Rv\r\nY29sOiBUQ1AKc2VydmVyX3BvcnRzOiA0NDMKc3ViZ3JvdXA6IC0KKipST1cKcm93\r\naWQ6IDE1CmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiBzdGF0aWMK\r\naXhtcHR5cGU6IDAtMTIwCm5hbWU6IGljbXAKcHJvdG9jb2w6IElDTVAKc2VydmVy\r\nX3BvcnRzOgpzdWJncm91cDogLQoqKlJPVwpyb3dpZDogMTYKY2xpZW50X3BvcnRz\r\nOiAxMDI0LTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlw\r\nZToKbmFtZTogaWRlbnQKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDExMwpz\r\ndWJncm91cDogLQoqKlJPVwpyb3dpZDogMTcKY2xpZW50X3BvcnRzOiAxMDI0LTY1\r\nNTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTog\r\naW1hcApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMTQzCnN1Ymdyb3VwOiAt\r\nCioqUk9XCnJvd2lkOiAxOApjbGllbnRfcG9ydHM6IDEwMjQtNjU1MzUKZGF0YV9w\r\nb3J0czoKZnd0eXBlOiBkeW5hbWljCml4bXB0eXBlOgpuYW1lOiBpbWFwcwpwcm90\r\nb2NvbDogVENQCnNlcnZlcl9wb3J0czogOTkzCnN1Ymdyb3VwOiAtCioqUk9XCnJv\r\nd2lkOiAxOQpjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogc3RhdGlj\r\nCml4bXB0eXBlOgpuYW1lOiBpcHY2dG80CnByb3RvY29sOiBJUHY2CnNlcnZlcl9w\r\nb3J0czoKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDIwCmNsaWVudF9wb3J0czog\r\nMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6\r\nCm5hbWU6IG5mcy10Y3AKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDIwNDkK\r\nc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDIxCmNsaWVudF9wb3J0czogMTAyNC02\r\nNTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZToKbmFtZTog\r\nbmZzLXVkcApwcm90b2NvbDogVURQCnNlcnZlcl9wb3J0czogMjA0OQpzdWJncm91\r\ncDogLQoqKlJPVwpyb3dpZDogMjIKY2xpZW50X3BvcnRzOiAxMDI0LTY1NTM1CmRh\r\ndGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogbm50cApw\r\ncm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMTE5CnN1Ymdyb3VwOiAtCioqUk9X\r\nCnJvd2lkOiAyMwpjbGllbnRfcG9ydHM6IDEyMwpkYXRhX3BvcnRzOgpmd3R5cGU6\r\nIHN0YXRpYwppeG1wdHlwZToKbmFtZTogbnRwCnByb3RvY29sOiBVRFAKc2VydmVy\r\nX3BvcnRzOiAxMjMKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDI0CmNsaWVudF9w\r\nb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXht\r\ncHR5cGU6Cm5hbWU6IHBvcDMKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDEx\r\nMApzdWJncm91cDogLQoqKlJPVwpyb3dpZDogMjUKY2xpZW50X3BvcnRzOiAxMDI0\r\nLTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFt\r\nZTogcG9wM3MKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDk5NQpzdWJncm91\r\ncDogLQoqKlJPVwpyb3dpZDogMjYKY2xpZW50X3BvcnRzOiAxMDI0LTY1NTM1CmRh\r\ndGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogc210cApw\r\ncm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMjUKc3ViZ3JvdXA6IC0KKipST1cK\r\ncm93aWQ6IDI3CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpm\r\nd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IHNzaApwcm90b2NvbDogVENQ\r\nCnNlcnZlcl9wb3J0czogMjIKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDI4CmNs\r\naWVudF9wb3J0czogMC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMK\r\naXhtcHR5cGU6Cm5hbWU6IHRjcApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czog\r\nMC02NTUzNQpzdWJncm91cDogLQoqKlJPVwpyb3dpZDogMjkKY2xpZW50X3BvcnRz\r\nOiAxMDI0LTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlw\r\nZToKbmFtZTogdGVsbmV0CnByb3RvY29sOiBUQ1AKc2VydmVyX3BvcnRzOiAyMwpz\r\ndWJncm91cDogLQoqKlJPVwpyb3dpZDogMzAKY2xpZW50X3BvcnRzOgpkYXRhX3Bv\r\ncnRzOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZTogMTEKbmFtZTogdGltZS1leGNl\r\nZWRlZApwcm90b2NvbDogSUNNUApzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiAtCioq\r\nUk9XCnJvd2lkOiAzMQpjbGllbnRfcG9ydHM6IDEwMjQtNjU1MzUKZGF0YV9wb3J0\r\nczoKZnd0eXBlOiBzdGF0aWMKaXhtcHR5cGU6Cm5hbWU6IHRyYWNlcm91dGUKcHJv\r\ndG9jb2w6IFVEUApzZXJ2ZXJfcG9ydHM6IDMzNDM0LTMzNjkwCnN1Ymdyb3VwOiAt\r\nCioqUk9XCnJvd2lkOiAzMgpjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlw\r\nZTogc3RhdGljCml4bXB0eXBlOiAzLDExCm5hbWU6IHRyYWNlcm91dGUtcmVwbHkK\r\ncHJvdG9jb2w6IElDTVAKc2VydmVyX3BvcnRzOgpzdWJncm91cDogLQoqKlJPVwpy\r\nb3dpZDogMzMKY2xpZW50X3BvcnRzOiAwLTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlw\r\nZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogdWRwCnByb3RvY29sOiBVRFAKc2Vy\r\ndmVyX3BvcnRzOiAwLTY1NTM1CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiAzNApj\r\nbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQppeG1wdHlwZToKbmFt\r\nZTogd3d3CnByb3RvY29sOiAtCnNlcnZlcl9wb3J0czoKc3ViZ3JvdXA6IGh0dHAK\r\nKipST1cKcm93aWQ6IDM1CmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBl\r\nOiAtCml4bXB0eXBlOgpuYW1lOiB3d3cKcHJvdG9jb2w6IC0Kc2VydmVyX3BvcnRz\r\nOgpzdWJncm91cDogaHR0cHMKKipST1cKcm93aWQ6IDM2CmNsaWVudF9wb3J0czog\r\nMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6\r\nCm5hbWU6IHgxMS1kaXNwbGF5MApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czog\r\nNjAwMApzdWJncm91cDogLQoqKlJPVwpyb3dpZDogMzcKY2xpZW50X3BvcnRzOgpk\r\nYXRhX3BvcnRzOgpmd3R5cGU6IC0KaXhtcHR5cGU6Cm5hbWU6IGljbXAvdWRwL3Rj\r\ncApwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiBpY21wCioqUk9X\r\nCnJvd2lkOiAzOApjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQpp\r\neG1wdHlwZToKbmFtZTogaWNtcC91ZHAvdGNwCnByb3RvY29sOiAtCnNlcnZlcl9w\r\nb3J0czoKc3ViZ3JvdXA6IHVkcAoqKlJPVwpyb3dpZDogMzkKY2xpZW50X3BvcnRz\r\nOgpkYXRhX3BvcnRzOgpmd3R5cGU6IC0KaXhtcHR5cGU6Cm5hbWU6IGljbXAvdWRw\r\nL3RjcApwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiB0Y3AKKipS\r\nT1cKcm93aWQ6IDQwCmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRz\r\nOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGtlcmJlcm9zLXVkcApw\r\ncm90b2NvbDogVURQCnNlcnZlcl9wb3J0czogODgKc3ViZ3JvdXA6IC0KKipST1cK\r\ncm93aWQ6IDQxCmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpm\r\nd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGtlcmJlcm9zLXRjcApwcm90\r\nb2NvbDogVENQCnNlcnZlcl9wb3J0czogODgKc3ViZ3JvdXA6IC0KKipST1cKcm93\r\naWQ6IDQyCmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0\r\neXBlOgpuYW1lOiBrZXJiZXJvcwpwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1\r\nYmdyb3VwOiBrZXJiZXJvcy11ZHAKKipST1cKcm93aWQ6IDQzCmNsaWVudF9wb3J0\r\nczoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0eXBlOgpuYW1lOiBrZXJiZXJv\r\ncwpwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiBrZXJiZXJvcy10\r\nY3AKKipST1cKcm93aWQ6IDQ0CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRh\r\nX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGxkYXAtdWRw\r\nCnByb3RvY29sOiBVRFAKc2VydmVyX3BvcnRzOiAzODkKc3ViZ3JvdXA6IC0KKipS\r\nT1cKcm93aWQ6IDQ1CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRz\r\nOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5hbWU6IGxkYXAtdGNwCnByb3Rv\r\nY29sOiBUQ1AKc2VydmVyX3BvcnRzOiAzODkKc3ViZ3JvdXA6IC0KKipST1cKcm93\r\naWQ6IDQ2CmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0\r\neXBlOgpuYW1lOiBsZGFwCnByb3RvY29sOiAtCnNlcnZlcl9wb3J0czoKc3ViZ3Jv\r\ndXA6IGxkYXAtdWRwCioqUk9XCnJvd2lkOiA0NwpjbGllbnRfcG9ydHM6CmRhdGFf\r\ncG9ydHM6CmZ3dHlwZTogLQppeG1wdHlwZToKbmFtZTogbGRhcApwcm90b2NvbDog\r\nLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiBsZGFwLXRjcAoqKlJPVwpyb3dpZDog\r\nNDgKY2xpZW50X3BvcnRzOiAxMDI0LTY1NTM1CmRhdGFfcG9ydHM6CmZ3dHlwZTog\r\nZHluYW1pYwppeG1wdHlwZToKbmFtZTogbXMtcnBjCnByb3RvY29sOiBUQ1AKc2Vy\r\ndmVyX3BvcnRzOiAxMzUKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDQ5CmNsaWVu\r\ndF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IHBwdHAKaXht\r\ncHR5cGU6Cm5hbWU6IHBwdHAKcHJvdG9jb2w6IFRDUApzZXJ2ZXJfcG9ydHM6IDE3\r\nMjMKc3ViZ3JvdXA6IC0KKipST1cKcm93aWQ6IDUwCmNsaWVudF9wb3J0czogMTAy\r\nNC02NTUzNQpkYXRhX3BvcnRzOgpmd3R5cGU6IGR5bmFtaWMKaXhtcHR5cGU6Cm5h\r\nbWU6IHJkcApwcm90b2NvbDogVENQCnNlcnZlcl9wb3J0czogMzM4OQpzdWJncm91\r\ncDogLQoqKlJPVwpyb3dpZDogNTEKY2xpZW50X3BvcnRzOiAxMDI0LTY1NTM1CmRh\r\ndGFfcG9ydHM6CmZ3dHlwZTogZHluYW1pYwppeG1wdHlwZToKbmFtZTogc21iCnBy\r\nb3RvY29sOiBUQ1AKc2VydmVyX3BvcnRzOiA0NDUKc3ViZ3JvdXA6IC0KKipST1cK\r\ncm93aWQ6IDUyCmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4\r\nbXB0eXBlOgpuYW1lOiB3d3cvZG5zCnByb3RvY29sOiAtCnNlcnZlcl9wb3J0czoK\r\nc3ViZ3JvdXA6IHd3dwoqKlJPVwpyb3dpZDogNTMKY2xpZW50X3BvcnRzOgpkYXRh\r\nX3BvcnRzOgpmd3R5cGU6IC0KaXhtcHR5cGU6Cm5hbWU6IHd3dy9kbnMKcHJvdG9j\r\nb2w6IC0Kc2VydmVyX3BvcnRzOgpzdWJncm91cDogZG5zCioqUk9XCnJvd2lkOiA1\r\nNApjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQppeG1wdHlwZToK\r\nbmFtZTogd3d3L2Rucwpwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3Vw\r\nOiBkbnMtdGNwCioqUk9XCnJvd2lkOiA1NQpjbGllbnRfcG9ydHM6IDEwMjQtNjU1\r\nMzUKZGF0YV9wb3J0czoKZnd0eXBlOiBydHNwCml4bXB0eXBlOgpuYW1lOiBydHNw\r\nCnByb3RvY29sOiBUQ1AKc2VydmVyX3BvcnRzOiA1NTQKc3ViZ3JvdXA6IC0KKipS\r\nT1cKcm93aWQ6IDU2CmNsaWVudF9wb3J0czogMTAyNC02NTUzNQpkYXRhX3BvcnRz\r\nOgpmd3R5cGU6IHRmdHAKaXhtcHR5cGU6Cm5hbWU6IHRmdHAKcHJvdG9jb2w6IFVE\r\nUApzZXJ2ZXJfcG9ydHM6IDY5CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA1Nwpj\r\nbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBl\r\nOiAwLTE5OQpuYW1lOiBpY21wdjYKcHJvdG9jb2w6IElDTVB2NgpzZXJ2ZXJfcG9y\r\ndHM6CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA1OApjbGllbnRfcG9ydHM6CmRh\r\ndGFfcG9ydHM6CmZ3dHlwZTogLQppeG1wdHlwZToKbmFtZTogaWNtcC91ZHAvdGNw\r\nCnByb3RvY29sOiAtCnNlcnZlcl9wb3J0czoKc3ViZ3JvdXA6IGljbXB2NgoqKlJP\r\nVwpyb3dpZDogNTkKY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0\r\nYXRpYwppeG1wdHlwZTogMTI5Cm5hbWU6IGVjaG8tcmVwbHkKcHJvdG9jb2w6IElD\r\nTVB2NgpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA2MApj\r\nbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBl\r\nOiAxMjgKbmFtZTogZWNoby1yZXF1ZXN0CnByb3RvY29sOiBJQ01QdjYKc2VydmVy\r\nX3BvcnRzOgpzdWJncm91cDogLQoqKlJPVwpyb3dpZDogNjEKY2xpZW50X3BvcnRz\r\nOgpkYXRhX3BvcnRzOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZTogMQpuYW1lOiBk\r\nZXN0aW5hdGlvbi11bnJlYWNoYWJsZTYKcHJvdG9jb2w6IElDTVB2NgpzZXJ2ZXJf\r\ncG9ydHM6CnN1Ymdyb3VwOiAtCioqUk9XCnJvd2lkOiA2MgpjbGllbnRfcG9ydHM6\r\nCmRhdGFfcG9ydHM6CmZ3dHlwZTogc3RhdGljCml4bXB0eXBlOiAyCm5hbWU6IHBh\r\nY2tldC10b28tYmlnNgpwcm90b2NvbDogSUNNUHY2CnNlcnZlcl9wb3J0czoKc3Vi\r\nZ3JvdXA6IC0KKipST1cKcm93aWQ6IDYzCmNsaWVudF9wb3J0czoKZGF0YV9wb3J0\r\nczoKZnd0eXBlOiBzdGF0aWMKaXhtcHR5cGU6IDMKbmFtZTogdGltZS1leGNlZWRl\r\nZDYKcHJvdG9jb2w6IElDTVB2NgpzZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiAtCioq\r\nUk9XCnJvd2lkOiA2NApjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTog\r\nc3RhdGljCml4bXB0eXBlOiA0Cm5hbWU6IHBhcmFtZXRlci1wcm9ibGVtNgpwcm90\r\nb2NvbDogSUNNUHY2CnNlcnZlcl9wb3J0czoKc3ViZ3JvdXA6IC0KKipST1cKcm93\r\naWQ6IDY1CmNsaWVudF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0\r\neXBlOgpuYW1lOiBpY21wdjZfcmZjXzQ4OTAKcHJvdG9jb2w6IC0Kc2VydmVyX3Bv\r\ncnRzOgpzdWJncm91cDogZGVzdGluYXRpb24tdW5yZWFjaGFibGU2CioqUk9XCnJv\r\nd2lkOiA2NgpjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQppeG1w\r\ndHlwZToKbmFtZTogaWNtcHY2X3JmY180ODkwCnByb3RvY29sOiAtCnNlcnZlcl9w\r\nb3J0czoKc3ViZ3JvdXA6IHBhY2tldC10b28tYmlnNgoqKlJPVwpyb3dpZDogNjcK\r\nY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6IC0KaXhtcHR5cGU6Cm5h\r\nbWU6IGljbXB2Nl9yZmNfNDg5MApwcm90b2NvbDogLQpzZXJ2ZXJfcG9ydHM6CnN1\r\nYmdyb3VwOiBwYXJhbWV0ZXItcHJvYmxlbTYKKipST1cKcm93aWQ6IDY4CmNsaWVu\r\ndF9wb3J0czoKZGF0YV9wb3J0czoKZnd0eXBlOiAtCml4bXB0eXBlOgpuYW1lOiBp\r\nY21wdjZfcmZjXzQ4OTAKcHJvdG9jb2w6IC0Kc2VydmVyX3BvcnRzOgpzdWJncm91\r\ncDogdGltZS1leGNlZWRlZDYKKipST1cKcm93aWQ6IDY5CmNsaWVudF9wb3J0czoK\r\nZGF0YV9wb3J0czoKZnd0eXBlOiBzdGF0aWMKaXhtcHR5cGU6IDEyOApuYW1lOiBl\r\nY2hvLXJlcXVlc3Q2CnByb3RvY29sOiBJQ01QdjYKc2VydmVyX3BvcnRzOgpzdWJn\r\ncm91cDogLQoqKlJPVwpyb3dpZDogNzAKY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRz\r\nOgpmd3R5cGU6IHN0YXRpYwppeG1wdHlwZTogMTI5Cm5hbWU6IGVjaG8tcmVzcG9u\r\nc2U2CnByb3RvY29sOiBJQ01QdjYKc2VydmVyX3BvcnRzOgpzdWJncm91cDogLQoq\r\nKlJPVwpyb3dpZDogNzEKY2xpZW50X3BvcnRzOgpkYXRhX3BvcnRzOgpmd3R5cGU6\r\nIC0KaXhtcHR5cGU6Cm5hbWU6IGljbXB2Nl9yZmNfNDg5MApwcm90b2NvbDogLQpz\r\nZXJ2ZXJfcG9ydHM6CnN1Ymdyb3VwOiBlY2hvLXJlcXVlc3Q2CioqUk9XCnJvd2lk\r\nOiA3MgpjbGllbnRfcG9ydHM6CmRhdGFfcG9ydHM6CmZ3dHlwZTogLQppeG1wdHlw\r\nZToKbmFtZTogaWNtcHY2X3JmY180ODkwCnByb3RvY29sOiAtCnNlcnZlcl9wb3J0\r\nczoKc3ViZ3JvdXA6IGVjaG8tcmVzcG9uc2U2CipTRUNUSU9OIGRiLmZpcmV3YWxs\r\nLnNwb29maW5nX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIuZmlyZXdh\r\nbGwudGltZWNsYXNzZXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmZyb21fZGF5OiBtb25kYXkKZnJvbV90aW1lOiAwMDowMApuYW1l\r\nOiAyNC83CnRvX2RheTogc3VuZGF5CnRvX3RpbWU6IDI0OjAwCipTRUNUSU9OIGRi\r\nLmZpcmV3YWxsLmFsbG93X2ljbXB2Nl9yZmM0ODkwCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvbgoqU0VDVElPTiBF\r\nT0YKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIudm9pcHNtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDAwNTcyADEzMzYxNDAx\r\nNDQ3ADAxMjI2MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnZvaXBzbS52b2lwc20KZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmFyZWFjb2Rl\r\nOiAKY2FjaGV0dGw6IDE0CmVuYWJsZWQ6IG9mZgptYXhucmxlbjogCnJlZ2lzdHJh\r\ndGlvbl90aW1lOiA2MAp0aW1lb3V0OiAxODAKKlNFQ1RJT04gZGIudm9pcHNtLnZv\r\naXBzbV9kb21haW5zCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElP\r\nTiBkYi52b2lwc20udm9pcHNtX3BzdG5fZ2F0ZXdheXMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAwCipTRUNUSU9OIEVPRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLmZhaWxvdmVyAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMDMzMgAxMzM2MTQwMTQ0NwAwMTI1NDYAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5m\r\nYWlsb3Zlci5pZmFjZV9yZWZfaG9zdHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAwCipTRUNUSU9OIGRiLmZhaWxvdmVyLnNlcnZlcnMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAwCipTRUNUSU9OIEVPRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5lbXMAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDI0NjIAMTMzNjE0MDE0NDcAMDExNTMxACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIuZW1zLmVtc19hY3RpdmUKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBk\r\nYi5lbXMuY3dtcF9hY3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmFjc191c2VybmFtZToKYWNzX3Bhc3N3b3JkOgpwYXRoOgpwb3J0\r\nOiA3NTQ3CnVyaXNjaGVtZTogLQpzZXJ2ZXJfZG5zOgpzZXJ2ZXJfZXJyOgpzZXJ2\r\nZXJfaXA6CnNzbHZlcjogLQpjYWNlcnQ6IC0KKlNFQ1RJT04gZGIuZW1zLmN3bXBf\r\nYWNzX21pc2MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCnBfZW5hYmxlOiBvZmYKcF9pbnRlcnZhbDogMzYwMApwX3RpbWU6CipTRUNU\r\nSU9OIGRiLmVtcy5jd21wX2Fjc19oaWRkZW4KZ2VuZXJhdGlvbjogMApsYXN0X3Jv\r\nd2lkOiAxCioqUk9XCnJvd2lkOiAxCnBhcmFtZXRlcmtleToKKlNFQ1RJT04gZGIu\r\nZW1zLmN3bXBfY3BlCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpy\r\nb3dpZDogMQpsb2NhbF9pcDogLQpsb2NhbF9wb3J0OiA3NTQ3CmNyX3VzZXJuYW1l\r\nOgpjcl9wYXNzd29yZDoKcHJpdmNlcnQ6IC0KKlNFQ1RJT04gZGIuZW1zLmN3bXBf\r\nY3BlX21pc2MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmJrbF9tYXg6IDEwCmJrbF9pbnRlcnZhbDogMzAKYmtsX2R1cmF0aW9uOiAz\r\nMDAKKlNFQ1RJT04gZGIuZW1zLmN3bXBfY3BlX2d1aV9hY2Nlc3NfYWN0aXZlCmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVk\r\nOiBvZmYKKlNFQ1RJT04gZGIuZW1zLmN3bXBfY3BlX2d1aV9hY2Nlc3MKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnVyaXNjaGVtZTog\r\nLQpsb2NhbF9pcDogLQpsb2NhbF9wb3J0OiA4MAphY2Nlc3NfdHlwZTogcm8KKlNF\r\nQ1RJT04gZGIuZW1zLmN3bXBfZGVidWdfbG9nY2xhc3MKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNzOiAtCipTRUNUSU9O\r\nIGRiLmVtcy5jd21wX2Vycm9yX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04g\r\nZGIuZW1zLmN3bXBfaW5mb19sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93\r\naWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExvY2FsCipTRUNUSU9OIEVP\r\nRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLm5ldHdvcmsAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwNDE1MwAxMzM2MTQwMjU0MgAwMTI0MzIAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5u\r\nZXR3b3JrLmFsaWFzX2FkZHJlc3NlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDAKKlNFQ1RJT04gZGIubmV0d29yay5kaXNjYXJkX3dlaXJkX2ZyYWdtZW50cwpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxl\r\nZDogb24KKlNFQ1RJT04gZGIubmV0d29yay5leHRyYV9kZWZhdWx0X2dhdGV3YXlz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5uZXR3b3Jr\r\nLmludGVyZmFjZXMKZ2VuZXJhdGlvbjogMgpsYXN0X3Jvd2lkOiA2CioqUk9XCnJv\r\nd2lkOiAxCmF1dG9uZWc6IGF1dG8KZW5hYmxlZDogb24KaW50ZXJmYWNlOiBldGgw\r\nCm5hbWU6IEV0aGVybmV0MAoqKlJPVwpyb3dpZDogMgphdXRvbmVnOiBhdXRvCmVu\r\nYWJsZWQ6IG9mZgppbnRlcmZhY2U6IGV0aDEKbmFtZTogRXRoZXJuZXQxCioqUk9X\r\nCnJvd2lkOiAzCmF1dG9uZWc6IGF1dG8KZW5hYmxlZDogb2ZmCmludGVyZmFjZTog\r\nZXRoMgpuYW1lOiBFdGhlcm5ldDIKKipST1cKcm93aWQ6IDQKYXV0b25lZzogYXV0\r\nbwplbmFibGVkOiBvZmYKaW50ZXJmYWNlOiBldGgzCm5hbWU6IEV0aGVybmV0Mwoq\r\nKlJPVwpyb3dpZDogNQphdXRvbmVnOiBhdXRvCmVuYWJsZWQ6IG9mZgppbnRlcmZh\r\nY2U6IGV0aDQKbmFtZTogRXRoZXJuZXQ0CioqUk9XCnJvd2lkOiA2CmF1dG9uZWc6\r\nIGF1dG8KZW5hYmxlZDogb2ZmCmludGVyZmFjZTogZXRoNQpuYW1lOiBFdGhlcm5l\r\ndDUKKlNFQ1RJT04gZGIubmV0d29yay5sb2NhbF9uZXRzCmdlbmVyYXRpb246IDIK\r\nbGFzdF9yb3dpZDogMgoqKlJPVwpyb3dpZDogMgphZGRyZXNzX2RuczogMTAuNDgu\r\nMjguNzgKYWRkcmVzc19lcnI6IAphZGRyZXNzX2lwOiAxMC40OC4yOC43OAphZGRy\r\nZXNzX21hc2s6IDI1NS4yNTUuMC4wCmFkZHJlc3NfdHlwZTogc3RhdGljCmludGVy\r\nZmFjZTogZXRoMApuYW1lOiBldGgwCnZsYW5pZDogCipTRUNUSU9OIGRiLm5ldHdv\r\ncmsubWFzcXVlcmFkaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VD\r\nVElPTiBkYi5uZXR3b3JrLnBvcnRfYWxsb2NhdGlvbnMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmF1dG9fbG93ZXI6IDEwMjQKYXV0\r\nb191cHBlcjogMzI3NjcKZnRwX2xvd2VyOiA1NzAwMApmdHBfdXBwZXI6IDU4MDIz\r\nCm5hdF9sb3dlcjogNjEwMDAKbmF0X3VwcGVyOiA2NTA5Ngpsb2NhbF9sb3dlcjog\r\nNjUwOTcKbG9jYWxfdXBwZXI6IDY1MjAwCipTRUNUSU9OIGRiLm5ldHdvcmsucHBw\r\nb2UKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxj\r\ncF9lY2hvX2ludGVydmFsOiAxMApsb2djbGFzczogTG9jYWwKcGFzc3dvcmQ6CnNl\r\ncnZpY2U6CnVzZXI6CipTRUNUSU9OIGRiLm5ldHdvcmsucHJveHlfYXJwCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5uZXR3b3JrLnJvdXRl\r\nX3Rlc3Rfc2VydmVycwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJ\r\nT04gZGIubmV0d29yay5yb3V0ZXMKZ2VuZXJhdGlvbjogMQpsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCmRlc3RpbmF0aW9uX2RuczogMC4wLjAuMApkZXN0aW5h\r\ndGlvbl9lcnI6IApkZXN0aW5hdGlvbl9pcDogMC4wLjAuMApkZXN0aW5hdGlvbl9t\r\nYXNrOiAwLjAuMC4wCmdhdGV3YXlfZG5zOiAxMC40OC4yNTUuMQpnYXRld2F5X2R5\r\nbjogLQpnYXRld2F5X2VycjogCmdhdGV3YXlfaXA6IDEwLjQ4LjI1NS4xCmludGVy\r\nZmFjZTogZXRoMApwcmlvcml0eTogCipTRUNUSU9OIGRiLm5ldHdvcmsudHVubmVs\r\nc182aW40CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5u\r\nZXR3b3JrLnR1bm5lbHNfNnJkCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoq\r\nU0VDVElPTiBkYi5uZXR3b3JrLnR1bm5lbHNfNnRvNApnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIubmV0d29yay51bnJlYWNoYWJsZQpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIubmV0d29yay52bGFu\r\ncwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gRU9GCgAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL19fZ2VuZXJhdGlvbl9fAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMDAwMgAxMzM2NDMyNjEzMgAwMTMyNzQAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nNwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5jb25maWcAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDIxMjMAMTMzNjE0MDI1NzQAMDEyMjA2ACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIuY29uZmlnLmFsbG93X2NvbmZpZwpnZW5lcmF0aW9uOiAz\r\nCmxhc3Rfcm93aWQ6IDIKKipST1cKcm93aWQ6IDIKY2xpZW50X25ldHdvcmtfZG5z\r\nOiAwLjAuMC4wCmNsaWVudF9uZXR3b3JrX2VycjogCmNsaWVudF9uZXR3b3JrX2lw\r\nOiAwLjAuMC4wCmNsaWVudF9uZXR3b3JrX21hc2s6IDAuMC4wLjAKZnJvbV90dW5u\r\nZWw6IC0KaHR0cDogb24KaHR0cHM6IG9mZgpsb2djbGFzczogLQpudW1iZXI6IDEK\r\ncmVzdGFwaTogb24Kc3NoOiBvZmYKKlNFQ1RJT04gZGIuY29uZmlnLmFsbG93X3Zp\r\nYV9pbnRlcmZhY2UKZ2VuZXJhdGlvbjogMgpsYXN0X3Jvd2lkOiAyCioqUk9XCnJv\r\nd2lkOiAyCmNvbmZpZ19vbjogb24KaW50ZXJmYWNlOiBldGgwCipTRUNUSU9OIGRi\r\nLmNvbmZpZy5hdXRoX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDog\r\nMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIuY29u\r\nZmlnLmF1dGhlbnRpY2F0aW9uCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQphdXRoX3R5cGU6IGxvY2FsCipTRUNUSU9OIGRiLmNvbmZp\r\nZy5hdXRoZW50aWNhdGlvbl9zZXNzaW9uCmdlbmVyYXRpb246IDEKbGFzdF9yb3dp\r\nZDogMQoqKlJPVwpyb3dpZDogMQpwd2RfdGltZW91dDogMjg4MDAKdG9rZW5fdGlt\r\nZW91dDogMzYwMAoqU0VDVElPTiBkYi5jb25maWcubWdtdF9sb2djbGFzcwpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6\r\nIExvY2FsCipTRUNUSU9OIGRiLmNvbmZpZy5zZXJ2ZXJzCmdlbmVyYXRpb246IDEK\r\nbGFzdF9yb3dpZDogNgoqKlJPVwpyb3dpZDogNApjZXJ0OiAtCmlwOiBldGgwCnBv\r\ncnQ6IDgwCnByb3RvY29sOiBodHRwCnRsczogLQoqKlJPVwpyb3dpZDogNQpjZXJ0\r\nOiAtCmlwOiAtCnBvcnQ6IDQ0Mwpwcm90b2NvbDogaHR0cHMKdGxzOiAtCioqUk9X\r\nCnJvd2lkOiA2CmNlcnQ6IC0KaXA6IC0KcG9ydDogMjIKcHJvdG9jb2w6IHNzaAp0\r\nbHM6IC0KKlNFQ1RJT04gRU9GCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLm1vbml0b3IAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwNTE2NAAxMzM2MTQwMjQ2NwAwMTI0NDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi5t\r\nb25pdG9yLmNwdWxvYWRfbGV2ZWxfYWxhcm0KZ2VuZXJhdGlvbjogMApsYXN0X3Jv\r\nd2lkOiAxCioqUk9XCnJvd2lkOiAxCm1heF9jcHVsb2FkOgpva19jcHVsb2FkOgoq\r\nU0VDVElPTiBkYi5tb25pdG9yLmVtYWlsX2FsZXJ0X2xvZ2NsYXNzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9j\r\nYWwKKlNFQ1RJT04gZGIubW9uaXRvci5lbWFpbF9zZXJ2ZXIKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnNlcnZlcl9kbnM6CnNlcnZl\r\ncl9lcnI6CnNlcnZlcl9pcDoKKlNFQ1RJT04gZGIubW9uaXRvci5mYW5fbGV2ZWxf\r\nYWxhcm1zCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMwoqKlJPVwpyb3dpZDog\r\nMQphbGFybWJ5OiA3MApyZXN1bWVieTogODAKKipST1cKcm93aWQ6IDIKYWxhcm1i\r\neTogNTAKcmVzdW1lYnk6IDYwCioqUk9XCnJvd2lkOiAzCmFsYXJtYnk6IDAKcmVz\r\ndW1lYnk6IDEwCipTRUNUSU9OIGRiLm1vbml0b3IuaGFyZHdhcmVfbG9nY2xhc3MK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2Ns\r\nYXNzOiBMb2NhbAoqU0VDVElPTiBkYi5tb25pdG9yLmxvZ2NsYXNzZXMKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAzCioqUk9XCnJvd2lkOiAxCmVtYWlsOgpmYWNp\r\nbGl0eTogLQpsZXZlbDogLQpsb2NhbDogb24KbmFtZTogTG9jYWwKKipST1cKcm93\r\naWQ6IDIKZW1haWw6CmZhY2lsaXR5OiBBdXRoCmxldmVsOiBOb3RpY2UKbG9jYWw6\r\nIG9uCm5hbWU6IExvY2FsK1N5c2xvZwoqKlJPVwpyb3dpZDogMwplbWFpbDoKZmFj\r\naWxpdHk6IEF1dGgKbGV2ZWw6IE5vdGljZQpsb2NhbDogb2ZmCm5hbWU6IFN5c2xv\r\nZwoqU0VDVElPTiBkYi5tb25pdG9yLm1lbW9yeV9sZXZlbF9hbGFybQpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbWF4X21lbW9yeToK\r\nb2tfbWVtb3J5OgoqU0VDVElPTiBkYi5tb25pdG9yLnJhZGl1c19lcnJvcnNfbG9n\r\nY2xhc3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmxvZ2NsYXNzOiBMb2NhbAoqU0VDVElPTiBkYi5tb25pdG9yLnNpcF9sZXZlbF9h\r\nbGFybXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCm1heF9yZWdpc3RlcmVkX3VzZXJzOgptYXhfc2Vzc2lvbnM6Cm9rX3JlZ2lzdGVy\r\nZWRfdXNlcnM6Cm9rX3Nlc3Npb25zOgoqU0VDVElPTiBkYi5tb25pdG9yLnNubXBf\r\nYWdlbnRfYWRkcmVzcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKc25tcGFnZW50aXA6IC0KKlNFQ1RJT04gZGIubW9uaXRvci5zbm1w\r\nX2FnZW50X2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJP\r\nVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJT04gZGIubW9uaXRvci5z\r\nbm1wX2NvbnRhY3RfcGVyc29uCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQpzbm1wX2NvbnRhY3RfcGVyc29uOgoqU0VDVElPTiBkYi5t\r\nb25pdG9yLnNubXBfbWFuYWdlbWVudF9zdGF0aW9ucwpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKY2xpZW50X25ldGdyb3VwOiAtCipT\r\nRUNUSU9OIGRiLm1vbml0b3Iuc25tcF9ub2RlX2xvY2F0aW9uCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpzbm1wX25vZGVfbG9jYXRp\r\nb246CipTRUNUSU9OIGRiLm1vbml0b3Iuc25tcF9wYWNrZXRfbG9nY2xhc3MKZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmxvZ2NsYXNz\r\nOiBMb2NhbAoqU0VDVElPTiBkYi5tb25pdG9yLnNubXBfdHJhcF9jd21wX3NlbmRp\r\nbmcKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVu\r\nYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5tb25pdG9yLnNubXBfdHJhcF9yZWNlaXZl\r\ncnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLm1vbml0\r\nb3Iuc25tcF90cmFwX3NlbmRpbmcKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5tb25pdG9y\r\nLnNubXBfdjF2MmNfYWNjZXNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIubW9uaXRvci5z\r\nbm1wX3YxdjJjX2F1dGgKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNU\r\nSU9OIGRiLm1vbml0b3Iuc25tcF92M19hY2Nlc3MKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBk\r\nYi5tb25pdG9yLnNubXBfdjNfYXV0aApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDAKKlNFQ1RJT04gZGIubW9uaXRvci5zeXNsb2dfc2VydmVycwpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIubW9uaXRvci53YXRjaGRvZ3MK\r\nZ2VuZXJhdGlvbjogMQpsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJs\r\nZWQ6IG9mZgpzZXJ2aWNlOiBzaXBmdwoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nZGIvZGIuc2lwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAADAwMDA2NDQAMDAwMDA2MwAwMDAwMDYzADAwMDAwMDQ0NDA1ADEzMzYxNDAx\r\nNDQ3ADAxMTU0MwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIFRoaXMgZmlsZSBpcyBh\r\nIHN0cmljdCBmb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLgojIEVkaXQgY2FyZWZ1\r\nbGx5IG9yIG5vdCBhdCBhbGwuCipTRUNUSU9OIGRiLnNpcC5hY2NlbGVyYXRlZF90\r\nbHMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVu\r\nYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAuYWN0aXZlCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJ\r\nT04gZGIuc2lwLmFkZF9kdG1mX2FkZHJzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMAoqU0VDVElPTiBkYi5zaXAuYWRkX2R0bWZfcHQKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnB0OgoqU0VDVElPTiBkYi5zaXAu\r\nYWRkX2V4cGlyZV9oZWFkZXIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmFjdGlvbjogbmV2ZXIKKlNFQ1RJT04gZGIuc2lwLmFsbG93\r\nZWRfY29kZWNzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMTQKKipST1cKcm93\r\naWQ6IDEKYWxsb3c6IG9uCmJhbmR3aWR0aDogODAKbmFtZTogcGNtdQp0eXBlOiBh\r\ndWRpbwoqKlJPVwpyb3dpZDogMgphbGxvdzogb24KYmFuZHdpZHRoOiA4MApuYW1l\r\nOiBwY21hCnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiAzCmFsbG93OiBvbgpiYW5k\r\nd2lkdGg6IDI0Cm5hbWU6IGc3MjkKdHlwZTogYXVkaW8KKipST1cKcm93aWQ6IDQK\r\nYWxsb3c6IG9uCmJhbmR3aWR0aDogMjQKbmFtZTogZzcyOWEKdHlwZTogYXVkaW8K\r\nKipST1cKcm93aWQ6IDUKYWxsb3c6IG9uCmJhbmR3aWR0aDogMjkKbmFtZTogZ3Nt\r\nCnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiA2CmFsbG93OiBvbgpiYW5kd2lkdGg6\r\nIDE4Cm5hbWU6IGc3MjMKdHlwZTogYXVkaW8KKipST1cKcm93aWQ6IDcKYWxsb3c6\r\nIG9uCmJhbmR3aWR0aDogMzIKbmFtZTogZzcyNi0xNgp0eXBlOiBhdWRpbwoqKlJP\r\nVwpyb3dpZDogOAphbGxvdzogb24KYmFuZHdpZHRoOiA0MApuYW1lOiBnNzI2LTI0\r\nCnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiA5CmFsbG93OiBvbgpiYW5kd2lkdGg6\r\nIDQ4Cm5hbWU6IGc3MjYtMzIKdHlwZTogYXVkaW8KKipST1cKcm93aWQ6IDEwCmFs\r\nbG93OiBvbgpiYW5kd2lkdGg6IDU2Cm5hbWU6IGc3MjYtNDAKdHlwZTogYXVkaW8K\r\nKipST1cKcm93aWQ6IDExCmFsbG93OiBvbgpiYW5kd2lkdGg6IDYwCm5hbWU6IHNw\r\nZWV4CnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiAxMgphbGxvdzogb24KYmFuZHdp\r\nZHRoOiAzMgpuYW1lOiBpbGJjCnR5cGU6IGF1ZGlvCioqUk9XCnJvd2lkOiAxMwph\r\nbGxvdzogb2ZmCmJhbmR3aWR0aDoKbmFtZTogKgp0eXBlOiBhdWRpbwoqKlJPVwpy\r\nb3dpZDogMTQKYWxsb3c6IG9mZgpiYW5kd2lkdGg6Cm5hbWU6ICoKdHlwZTogdmlk\r\nZW8KKlNFQ1RJT04gZGIuc2lwLmFsbG93ZWRfbWVkaWEKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAyCioqUk9XCnJvd2lkOiAxCnRyYW5zcG9ydDogdWRwCnBvcnRz\r\nX2xvd2VyOiAxMDI0CnBvcnRzX3VwcGVyOiA2NTUzNQoqKlJPVwpyb3dpZDogMgp0\r\ncmFuc3BvcnQ6IHRjcApwb3J0c19sb3dlcjogMTAyNApwb3J0c191cHBlcjogNjU1\r\nMzUKKlNFQ1RJT04gZGIuc2lwLmFsbG93ZWRfb3JpZ2lucwpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLmFsd2F5c19yZWxheV9tZWRp\r\nYQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5h\r\nYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5hc3NlcnRlZF9pZGVudGl0eQpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDog\r\nb2ZmCipTRUNUSU9OIGRiLnNpcC5hc3NpZ25faXBfYWxpYXNfYnlfdXNlcgpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDog\r\nb2ZmCipTRUNUSU9OIGRiLnNpcC5hdXRoX21ldGhvZHMKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxNAoqKlJPVwpyb3dpZDogMQphbGxvdzogb24KYXV0aDogb2Zm\r\nCm1ldGhvZDogQllFCnRyYWZmaWNfdG86IGJvdGgKKipST1cKcm93aWQ6IDIKYWxs\r\nb3c6IG9uCmF1dGg6IG9mZgptZXRob2Q6IEZFQVRVUkUKdHJhZmZpY190bzogYm90\r\naAoqKlJPVwpyb3dpZDogMwphbGxvdzogb24KYXV0aDogb2ZmCm1ldGhvZDogSU5G\r\nTwp0cmFmZmljX3RvOiBib3RoCioqUk9XCnJvd2lkOiA0CmFsbG93OiBvbgphdXRo\r\nOiBvZmYKbWV0aG9kOiBJTlZJVEUKdHJhZmZpY190bzogYm90aAoqKlJPVwpyb3dp\r\nZDogNQphbGxvdzogb24KYXV0aDogb2ZmCm1ldGhvZDogTUVTU0FHRQp0cmFmZmlj\r\nX3RvOiBib3RoCioqUk9XCnJvd2lkOiA2CmFsbG93OiBvbgphdXRoOiBvZmYKbWV0\r\naG9kOiBOT1RJRlkKdHJhZmZpY190bzogYm90aAoqKlJPVwpyb3dpZDogNwphbGxv\r\ndzogb24KYXV0aDogb2ZmCm1ldGhvZDogT1BUSU9OUwp0cmFmZmljX3RvOiBib3Ro\r\nCioqUk9XCnJvd2lkOiA4CmFsbG93OiBvbgphdXRoOiBvZmYKbWV0aG9kOiBQUkFD\r\nSwp0cmFmZmljX3RvOiBib3RoCioqUk9XCnJvd2lkOiA5CmFsbG93OiBvbgphdXRo\r\nOiBvZmYKbWV0aG9kOiBQVUJMSVNICnRyYWZmaWNfdG86IGJvdGgKKipST1cKcm93\r\naWQ6IDEwCmFsbG93OiBvbgphdXRoOiBvZmYKbWV0aG9kOiBSRUZFUgp0cmFmZmlj\r\nX3RvOiBib3RoCioqUk9XCnJvd2lkOiAxMQphbGxvdzogb24KYXV0aDogb2ZmCm1l\r\ndGhvZDogUkVHSVNURVIKdHJhZmZpY190bzogYm90aAoqKlJPVwpyb3dpZDogMTIK\r\nYWxsb3c6IG9uCmF1dGg6IG9mZgptZXRob2Q6IFNFUlZJQ0UKdHJhZmZpY190bzog\r\nYm90aAoqKlJPVwpyb3dpZDogMTMKYWxsb3c6IG9uCmF1dGg6IG9mZgptZXRob2Q6\r\nIFNVQlNDUklCRQp0cmFmZmljX3RvOiBib3RoCioqUk9XCnJvd2lkOiAxNAphbGxv\r\ndzogb24KYXV0aDogb2ZmCm1ldGhvZDogVVBEQVRFCnRyYWZmaWNfdG86IGJvdGgK\r\nKlNFQ1RJT04gZGIuc2lwLmIyYnVhX2Fuc3dlcl9wdF9jaGFuZ2VzCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpjb25kOiBmaXJzdAoq\r\nU0VDVElPTiBkYi5zaXAuYjJidWFfZGV0ZWN0X25vb3Bfc2RwCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNF\r\nQ1RJT04gZGIuc2lwLmIyYnVhX2Z3ZF8zeHhfaGRycwpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLmIyYnVhX29mZmVyX2Zyb21fdGVt\r\ncGxhdGUKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAuYjJidWFfb2ZmZXJfaW5faW52\r\naXRlCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpl\r\nbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmIyYnVhX3BlbmRpbmdfdGltZW91\r\ndApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKdGlt\r\nZW91dDogMAoqU0VDVElPTiBkYi5zaXAuYjJidWFfcmVpbnZpdGVzX2VuZF90b19l\r\nbmQKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVu\r\nYWJsZWQ6IG9uCipTRUNUSU9OIGRiLnNpcC5icmVha19mcmllbmRzaGlwcwpnZW5l\r\ncmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDog\r\nb2ZmCipTRUNUSU9OIGRiLnNpcC5jYWxsX2NvbnRyb2wKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnZlcmJvc2U6IG9mZgoqU0VDVElP\r\nTiBkYi5zaXAuY2FsbF9jb250cm9sX2NhcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93\r\naWQ6IDAKKlNFQ1RJT04gZGIuc2lwLmNhbGxfY29udHJvbF9zZXJ2ZXJzCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAuY29kZWNfZmls\r\ndGVyaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmRhdGFfaW50ZXJmYWNlcwpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLmRlZmF1\r\nbHRfZ2F0ZXdheQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93\r\naWQ6IDEKZ2F0ZXdheTogLQoqU0VDVElPTiBkYi5zaXAuZGlhbGluZ19kb21haW5z\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAuZG5z\r\nX292ZXJyaWRlX29uX3JlY3Vyc2lvbgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb24KKlNFQ1RJT04gZGIuc2lwLmVt\r\nZXJnZW5jeQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6\r\nIDEKZW1lcmdlbmN5OiA5MTEKKlNFQ1RJT04gZGIuc2lwLmV4dGVybl9yYWRpdXNf\r\nZGIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmNs\r\naWVudF9uZXRncm91cDogLQpkYl90eXBlOiBsb2NhbAoqU0VDVElPTiBkYi5zaXAu\r\nZXh0ZXJuYWxfcmVsYXkKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNU\r\nSU9OIGRiLnNpcC5mYWtlX3Byb3h5X3N1cHBvcnRlZF9wcml2YWN5CmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYK\r\nKlNFQ1RJT04gZGIuc2lwLmZpeF9maWxlX3RyYW5zZmVyX3BvcnQKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoq\r\nU0VDVElPTiBkYi5zaXAuZm9yY2VfMzI2NF9ob2xkCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04g\r\nZGIuc2lwLmZvcmNlX21vZGlmeQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gZGIuc2lwLmZvcndhcmRfY2FuY2VsX2JvZHkKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VD\r\nVElPTiBkYi5zaXAuZm9yd2FyZF90b19oZWFkZXIKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBk\r\nYi5zaXAuZm9yd2FyZF91c2VyX2FnZW50CmdlbmVyYXRpb246IDAKbGFzdF9yb3dp\r\nZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lw\r\nLmdsb2JhbF9wb2xpY2llcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipS\r\nT1cKcm93aWQ6IDEKc2lwX3BvbGljeTogcHJvY2VzcwpzaXBhdXRoX2FsbG93X3Jm\r\nYzIwNjk6IG9mZgpzaXBhdXRoX2VuYWJsZWQ6IG9mZgpzaXBhdXRoX3JlYWxtOgoq\r\nU0VDVElPTiBkYi5zaXAuaGVhZGVyX2ZpbHRlcl9kZWZhdWx0CmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQphY3Rpb246IHByb2Nlc3MK\r\nKlNFQ1RJT04gZGIuc2lwLmhlYWRlcl9maWx0ZXJfcnVsZXMKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5pZ25vcmVfdXJpX3BvcnRf\r\nd2hlbl9tYWRkcgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93\r\naWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5pbmhpYml0X2hvbGQK\r\nZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmFjdGlv\r\nbjogbm8KKlNFQ1RJT04gZGIuc2lwLmxhcmdlX3VkcApnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIGRiLnNpcC5saXN0ZW4KZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAyCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9uCnBvcnQ6IDUwNjAKdHJhbnNwb3J0OiB1ZHAs\r\ndGNwCnRyYW5zcGFyZW50OiBvbgpjb21tZW50OiBTdGFuZGFyZCBTSVAgcG9ydAoq\r\nKlJPVwpyb3dpZDogMgplbmFibGVkOiBvZmYKcG9ydDogNTA2MQp0cmFuc3BvcnQ6\r\nIHRscwp0cmFuc3BhcmVudDogb24KY29tbWVudDogU3RhbmRhcmQgVExTIHBvcnQK\r\nKlNFQ1RJT04gZGIuc2lwLmxvY2FsX2RvbWFpbnMKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5sb29zZV9yZWZlcl90bwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2Zm\r\nCipTRUNUSU9OIGRiLnNpcC5sb29zZV91c2VyX25hbWVfY2hlY2sKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoq\r\nU0VDVElPTiBkYi5zaXAubHJfdHJ1ZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5t\r\nZWRpYV9lbmNyeXB0aW9uX3BvbGljeQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKYWxsb3dfdHJhbnNjb2Rpbmc6IG9mZgphbGxvd2Vk\r\nX3N1aXRlczogLQoqU0VDVElPTiBkYi5zaXAubWVkaWFfZW5jcnlwdGlvbl9ydWxl\r\ncwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLm1l\r\nZGlhX2VuY3J5cHRpb25fc2V0dGluZ3MKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lk\r\nOiAxCioqUk9XCnJvd2lkOiAxCmIyYnVhOiBvbgplbmFibGVkOiBvZmYKbXVsdGlf\r\ncHJvZmlsZTogb2ZmCnJlcXVpcmVfdGxzOiBvZmYKdXNlX2xhc3RfY29tcHV0ZWQ6\r\nIG9mZgpwcmVmZXJfcnRwX3NhdnA6IGF2cAoqU0VDVElPTiBkYi5zaXAubWVkaWFf\r\nZW5jcnlwdGlvbl9kdGxzX3NydHAKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCmNlcnQ6IC0KZHRsczogRFRMU3YxLngKaWduX2NlcnRf\r\nZGF0ZXM6IG9mZgphZGRfY2xpZW50X2lwOiBvbgoqU0VDVElPTiBkYi5zaXAubWVk\r\naWFfZW5jcnlwdGlvbl9zdWl0ZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDkK\r\nKipST1cKcm93aWQ6IDEKbmFtZTogQ2xlYXJ0ZXh0CnN1aXRlOiBjbGVhcnRleHQK\r\nKipST1cKcm93aWQ6IDIKbmFtZTogRW5jcnlwdGVkICh0cmFuc2NvZGFibGUpCnN1\r\naXRlOiBzZGVzY3JpcHRpb25zLUFFU19DTV8xMjhfSE1BQ19TSEExXzMyCioqUk9X\r\nCnJvd2lkOiAzCm5hbWU6IEVuY3J5cHRlZCAodHJhbnNjb2RhYmxlKQpzdWl0ZTog\r\nc2Rlc2NyaXB0aW9ucy1BRVNfQ01fMTI4X0hNQUNfU0hBMV84MAoqKlJPVwpyb3dp\r\nZDogNApuYW1lOiBTUlRQCnN1aXRlOiBzZGVzY3JpcHRpb25zLUFFU19DTV8xMjhf\r\nSE1BQ19TSEExXzMyCioqUk9XCnJvd2lkOiA1Cm5hbWU6IFNSVFAKc3VpdGU6IHNk\r\nZXNjcmlwdGlvbnMtQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAKKipST1cKcm93aWQ6\r\nIDYKbmFtZTogU1JUUApzdWl0ZTogc2Rlc2NyaXB0aW9ucy1GOF8xMjhfSE1BQ19T\r\nSEExXzgwCioqUk9XCnJvd2lkOiA3Cm5hbWU6IEFueSAodHJhbnNjb2RhYmxlKQpz\r\ndWl0ZTogY2xlYXJ0ZXh0CioqUk9XCnJvd2lkOiA4Cm5hbWU6IEFueSAodHJhbnNj\r\nb2RhYmxlKQpzdWl0ZTogc2Rlc2NyaXB0aW9ucy1BRVNfQ01fMTI4X0hNQUNfU0hB\r\nMV8zMgoqKlJPVwpyb3dpZDogOQpuYW1lOiBBbnkgKHRyYW5zY29kYWJsZSkKc3Vp\r\ndGU6IHNkZXNjcmlwdGlvbnMtQUVTX0NNXzEyOF9ITUFDX1NIQTFfODAKKlNFQ1RJ\r\nT04gZGIuc2lwLm1lZGlhX3BvcnRzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDog\r\nMQoqKlJPVwpyb3dpZDogMQpwb3J0c19sb3dlcjogNTgwMjQKcG9ydHNfdXBwZXI6\r\nIDYwOTk5CipTRUNUSU9OIGRiLnNpcC5tZWRpYV9wcm94eQpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCmZvcmNl\r\nOiBvZmYKKlNFQ1RJT04gZGIuc2lwLm1lZGlhX3Jlc3RyaWN0aW9uCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQptYXhfc2VuZGVyczog\r\nMTAKbWVkaWFsb2NrOiBsb2NrCipTRUNUSU9OIGRiLnNpcC5tZWRpYV9zdHJlYW1f\r\nbGluZ2VyCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQp0aW1lOiAwCipTRUNUSU9OIGRiLnNpcC5tZWRpYV90aW1lb3V0cwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKb25ld2F5OgpydGNw\r\nOgpydHA6CnRlYXJfZG93bjogb2ZmCipTRUNUSU9OIGRiLnNpcC5tZWRpYV90cmFu\r\nc2NvZGluZwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6\r\nIDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5tZWRpYV90cmFuc2NvZGlu\r\nZ19ydWxlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIu\r\nc2lwLm1lZGlhX3RyYW5zY29kaW5nX2NvZGVjcwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLm1lZGlhX3RyYW5zY29kaW5nX29wdGlv\r\nbnMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5t\r\nZXNzYWdlCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQptYXhfbWVzc2FnZV9zaXplOiAxMzEwNzIKbGltaXRfbWF4X2ZvcndhcmRzOiA3\r\nMApzZXJ2ZXJuYW1lOiAlcHJvZHVjdC8ldmVyc2lvbgoqU0VDVElPTiBkYi5zaXAu\r\nbWZ1bGwKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmVuYWJsZWQ6IG9uCipTRUNUSU9OIGRiLnNpcC5taW1ldHlwZXMKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxNgoqKlJPVwpyb3dpZDogMQphbGxvd2VkOiBvZmYK\r\nbWltZXR5cGU6IGFwcGxpY2F0aW9uL1NPQVAreG1sCioqUk9XCnJvd2lkOiAyCmFs\r\nbG93ZWQ6IG9mZgptaW1ldHlwZTogYXBwbGljYXRpb24vcGlkZit4bWwKKipST1cK\r\ncm93aWQ6IDMKYWxsb3dlZDogb2ZmCm1pbWV0eXBlOiBhcHBsaWNhdGlvbi92bmQt\r\nbWljcm9zb2Z0LXJvYW1pbmctYWNscyt4bWwKKipST1cKcm93aWQ6IDQKYWxsb3dl\r\nZDogb2ZmCm1pbWV0eXBlOiBhcHBsaWNhdGlvbi92bmQtbWljcm9zb2Z0LXJvYW1p\r\nbmctY29udGFjdHMreG1sCioqUk9XCnJvd2lkOiA1CmFsbG93ZWQ6IG9mZgptaW1l\r\ndHlwZTogYXBwbGljYXRpb24vdm5kLW1pY3Jvc29mdC1yb2FtaW5nLXByb3Zpc2lv\r\nbmluZyt4bWwKKipST1cKcm93aWQ6IDYKYWxsb3dlZDogb2ZmCm1pbWV0eXBlOiBh\r\ncHBsaWNhdGlvbi94bWwKKipST1cKcm93aWQ6IDcKYWxsb3dlZDogb2ZmCm1pbWV0\r\neXBlOiBpbWFnZS9qcGVnCioqUk9XCnJvd2lkOiA4CmFsbG93ZWQ6IG9mZgptaW1l\r\ndHlwZTogdGV4dC9odG1sCioqUk9XCnJvd2lkOiA5CmFsbG93ZWQ6IG9mZgptaW1l\r\ndHlwZTogdGV4dC9scGlkZgoqKlJPVwpyb3dpZDogMTAKYWxsb3dlZDogb2ZmCm1p\r\nbWV0eXBlOiB0ZXh0L3BsYWluCioqUk9XCnJvd2lkOiAxMQphbGxvd2VkOiBvZmYK\r\nbWltZXR5cGU6IHRleHQveG1sCioqUk9XCnJvd2lkOiAxMgphbGxvd2VkOiBvZmYK\r\nbWltZXR5cGU6IHRleHQveG1sK21zcnRjLnBpZGYKKipST1cKcm93aWQ6IDEzCmFs\r\nbG93ZWQ6IG9mZgptaW1ldHlwZTogdGV4dC94bWwrbXNydGMud3BlbmRpbmcKKipS\r\nT1cKcm93aWQ6IDE0CmFsbG93ZWQ6IG9mZgptaW1ldHlwZTogYXBwbGljYXRpb24v\r\nYWRybCt4bWwKKipST1cKcm93aWQ6IDE1CmFsbG93ZWQ6IG9mZgptaW1ldHlwZTog\r\nbWVzc2FnZS9zaXBmcmFnCioqUk9XCnJvd2lkOiAxNgphbGxvd2VkOiBvbgptaW1l\r\ndHlwZTogKi8qCipTRUNUSU9OIGRiLnNpcC5tb2RpZnlfcmVmZXJ0bwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb24K\r\nKlNFQ1RJT04gZGIuc2lwLm1vbml0b3Jfc2VydmVyCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAubXVzaWNfb25faG9sZApnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2Zm\r\nCipTRUNUSU9OIGRiLnNpcC5tdXNpY19vbl9ob2xkX3NlcnZlcnMKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCnBvcnQ6CnRyYW5zcG9y\r\ndDogLQp1c2VyZG9tYWluOgoqU0VDVElPTiBkYi5zaXAubm9fc2lwX3RvX25hdApn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxl\r\nZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5vcHRpb25fdGltZW91dApnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKdGltZW91dDogNDEKKlNF\r\nQ1RJT04gZGIuc2lwLm91dGJvdW5kX3Byb3h5CmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMAoqU0VDVElPTiBkYi5zaXAucGFpX3VzZV9mcm9tCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNF\r\nQ1RJT04gZGIuc2lwLnBlcmNlbnQyMF90b193aGl0ZXNwYWNlCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNF\r\nQ1RJT04gZGIuc2lwLnByZXNlcnZlXzI1NDNfaG9sZApnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIGRiLnNpcC5wcmVsb2FkZWRfcm91dGVfcnVsZXMKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5wcmVsb2FkZWRfcm91dGVfZGVmYXVs\r\ndApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKYWN0\r\naW9uOiByZWplY3QKKlNFQ1RJT04gZGIuc2lwLnB1YmxpY19pcApnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKaXBfZG5zOgppcF9lcnI6\r\nCmlwX2lwOgoqU0VDVElPTiBkYi5zaXAucmFkaXVzX2FjY3QKZ2VuZXJhdGlvbjog\r\nMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmRpdmVyc2lvbjogb2ZmCmVu\r\nYWJsZWQ6IG9mZgptZWRpYTogb2ZmCnBfYXNzZXJ0ZWRfaWRlbnRpdHk6IG9mZgpy\r\nZW1vdGVfcGFydHlfaWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucmFkaXVzX2FjY3Rf\r\naW50ZXJmYWNlcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04g\r\nZGIuc2lwLnJlY3Vyc2Vfb25fM3h4X2luX2IyYnVhCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04g\r\nZGIuc2lwLnJlZGlyZWN0X3NlcnZlcgpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKc2VydmVyX2RuczoKc2VydmVyX2VycjoKc2VydmVy\r\nX2lwOgoqU0VDVElPTiBkYi5zaXAucmVmZXJ0b19yZXBsYWNlbWVudApnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZG9tYWluOgp0eXBl\r\nOiBuZXZlcgoqU0VDVElPTiBkYi5zaXAucmVmZXJ0b193aXRoX2IyYnVhX2NhbGxp\r\nZApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5h\r\nYmxlZDogb24KKlNFQ1RJT04gZGIuc2lwLnJlZ19jdF91cmlfcGFyYW1zCmdlbmVy\r\nYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAucmVnaXN0ZXJf\r\nZm9yY2VfYW9yX3VzZXIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucmVnaXN0cmFy\r\nX2xpbWl0cwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6\r\nIDEKbWF4X3JlZ2lzdHJhdGlvbnM6IDUKbWF4X3VzZXJzOgpyZWdpc3RyYXRpb25f\r\ndGltZW91dDogMzYwMAoqU0VDVElPTiBkYi5zaXAucmVsYXlfcnVsZXMKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5yZW1vdmVfdmlh\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAucmVt\r\nb3ZlX3ZpYV9hbGwKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJv\r\nd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucmVwbHlfY29uZmln\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpjbGFz\r\nczM6IGFsbAoqU0VDVElPTiBkYi5zaXAucmV3cml0ZV90b19mb3JfcmVnaXN0ZXJf\r\naW5fZHAKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAx\r\nCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucmV3cml0ZV9mcm9tX2Zvcl9y\r\nZWdpc3Rlcl9pbl9kcApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5yaW5nYmFjawpn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKYWN0aW9u\r\nOiBuZXZlcgp0b25lX3R5cGU6IHVzCipTRUNUSU9OIGRiLnNpcC5yb3V0ZTE4MApn\r\nZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxl\r\nZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5yb3V0ZV91c2Vfc3BvcnQKZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5yb3V0aW5nX29yZGVy\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMwoqKlJPVwpyb3dpZDogMQpmdW5j\r\ndGlvbjogZG5zX292ZXJyaWRlCm51bWJlcjogMQoqKlJPVwpyb3dpZDogMgpmdW5j\r\ndGlvbjogcmVnaXN0cmFyCm51bWJlcjogMgoqKlJPVwpyb3dpZDogMwpmdW5jdGlv\r\nbjogZGlhbHBsYW4KbnVtYmVyOiAzCipTRUNUSU9OIGRiLnNpcC5yZXVzZV9tZWRp\r\nYV9wb3J0CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDog\r\nMQppZ25vcmVfbWVkaWE6IG9mZgppbl9zZXNzaW9uOiBvZmYKKlNFQ1RJT04gZGIu\r\nc2lwLnJyb3V0ZV9hbHdheXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAucnJvdXRl\r\nX291dGJvdW5kCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dp\r\nZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLnNlc3Npb25fbGltaXRz\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQptYXhf\r\nc2lwc2Vzc2lvbnM6Cm1heF9zdHJlYW1zX3Blcl9yZXE6IDYKc2Vzc2lvbl90aW1l\r\nb3V0OiAxNDQwMAoqU0VDVElPTiBkYi5zaXAuc2lnbmFsX2FkZHJlc3NfZm9yX2Rl\r\nc3RpbmF0aW9uCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBk\r\nYi5zaXAuc2lwX2FsaWFzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VD\r\nVElPTiBkYi5zaXAuc2lwX2Vycm9yc19sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExvY2FsCipTRUNU\r\nSU9OIGRiLnNpcC5zaXBfaWRzaXBzX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJ\r\nT04gZGIuc2lwLnNpcF9saWNlbnNlX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJ\r\nT04gZGIuc2lwLnNpcF9tZWRpYV9sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExvY2FsCipTRUNUSU9O\r\nIGRiLnNpcC5zaXBfbWVzc2FnZV9sb2djbGFzcwpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDEKKipST1cKcm93aWQ6IDEKbG9nY2xhc3M6IExvY2FsCipTRUNUSU9O\r\nIGRiLnNpcC5zaXBfc2lnbmFsaW5nX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogTG9jYWwKKlNFQ1RJ\r\nT04gZGIuc2lwLnNpcF92ZXJib3NlX2xvZ2NsYXNzCmdlbmVyYXRpb246IDAKbGFz\r\ndF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpsb2djbGFzczogLQoqU0VDVElPTiBk\r\nYi5zaXAuc3RfdHlwZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKc3RfdHlwZTogc3RhbmRhbG9uZQoqU0VDVElPTiBkYi5zaXAuc3Ry\r\naXBfaWNlX2F0dHJpYnV0ZXMKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAuYWRkX2lj\r\nZV9jYW5kaWRhdGVzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpy\r\nb3dpZDogMQplbmFibGVkOiBvbgoqU0VDVElPTiBkYi5zaXAuc3RyaXBfc2RwX2xp\r\nbmVzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAu\r\nc3Vycm91bmRpbmdzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElP\r\nTiBkYi5zaXAudGNwX3RpbWVvdXQKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAx\r\nCioqUk9XCnJvd2lkOiAxCnRjcF90aW1lb3V0OiA5MAoqU0VDVElPTiBkYi5zaXAu\r\ndGVsX3RvX291dGJvdW5kX3Byb3h5CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDog\r\nMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLnRl\r\nc3R1YQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEK\r\nZGlzcGxheV9uYW1lOgp1cmk6IHNpcDp0ZXN0YWdlbnRAYW5vbnltb3VzLmludmFs\r\naWQKKlNFQ1RJT04gZGIuc2lwLnRlc3R1YV9hY2wKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC50ZXN0dWFfYWN0aXZlCmdlbmVyYXRp\r\nb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYK\r\nKlNFQ1RJT04gZGIuc2lwLnRlc3R1YV9jbGllbnQKZ2VuZXJhdGlvbjogMApsYXN0\r\nX3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmNhbGxfZHVyYXRpb246IDMwCmNhbGxf\r\naW50ZXJ2YWw6IDM2MDAKY2FsbF9wcmVmZXJyZWRfcHQ6IHBjbXUKY2FsbF9wdGlt\r\nZTogMjAKY2FsbF90bzoKKlNFQ1RJT04gZGIuc2lwLnRlc3R1YV9jbGllbnRfYWN0\r\naXZlCmdlbmVyYXRpb246IDAKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipT\r\nRUNUSU9OIGRiLnNpcC50ZXN0dWFfc2VydmVyX2FjdGl2ZQpnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNU\r\nSU9OIGRiLnNpcC50bHNfY2FjZXJ0cwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDAKKlNFQ1RJT04gZGIuc2lwLnRsc19jbGllbnRfY2ZnCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpkZWZhdWx0X2NlcnQ6IC0KdGxz\r\nOiBUTFN2MS54CipTRUNUSU9OIGRiLnNpcC50bHNfc2VydmVyX2NmZwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDAKKlNFQ1RJT04gZGIuc2lwLnRsc19zZXR0aW5n\r\ncwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKY2hl\r\nY2tfeDUwOV9zZXJ2ZXJfc3ViamVjdDogb24KY2hlY2tfeDUwOV9zZXJ2ZXJfd2ls\r\nZGNhcmQ6IG9mZgplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLnRoaXJkcGNj\r\nX2NvZGVjcwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDMKKipST1cKcm93aWQ6\r\nIDEKbnVtYmVyOiAxCm5hbWU6IFBDTVUKcHQ6CnJhdGU6CnBhcmFtczoKZm10cDoK\r\nKipST1cKcm93aWQ6IDIKbnVtYmVyOiAyCm5hbWU6IEc3MjkKcHQ6CnJhdGU6CnBh\r\ncmFtczoKZm10cDogYW5uZXhiPXllcwoqKlJPVwpyb3dpZDogMwpudW1iZXI6IDMK\r\nbmFtZTogdGVsZXBob25lLWV2ZW50CnB0OiA5NgpyYXRlOiA4MDAwCnBhcmFtczoK\r\nZm10cDogMC0xNQoqU0VDVElPTiBkYi5zaXAudHJhbnNhY3Rpb25fY29uZmlnCmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpkZWZhdWx0\r\nX3RpbWVvdXQ6IDE4MAppbnZfcnQ6IDYKbWF4X3RpbWVvdXQ6IDMwMApuaW52X3J0\r\nOiAxMAp0aW1lcl9hOiAwLjUKKlNFQ1RJT04gZGIuc2lwLnRydXN0ZWRfZG9tYWlu\r\nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMAoqU0VDVElPTiBkYi5zaXAudWFf\r\ncmVnaXN0ZXIKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lk\r\nOiAxCmV4cGlyZXM6IDM2MDAKcmV0cnlfdGltZTogMzAwCnJlZ19yZXRyaWVzOiBv\r\nZmYKKlNFQ1RJT04gZGIuc2lwLnVyaV9lbmNvZGluZwpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKdHlwZTogZW5jcnlwdAoqU0VDVElP\r\nTiBkYi5zaXAudXJpX2VuY29kZV91cGRhdGVfb25fcmVmZXJfdG8KZ2VuZXJhdGlv\r\nbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoq\r\nU0VDVElPTiBkYi5zaXAudXNlX2NhbmNlbF9ib2R5X2luX2FjawpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipT\r\nRUNUSU9OIGRiLnNpcC51c2VfcnRjcF9hdHRyaWJ1dGUKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElP\r\nTiBkYi5zaXAudXNlcm5hbWVfaXNfY29uc2VjdXRpdmVfbnVtYmVycwpnZW5lcmF0\r\naW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2Zm\r\nCipTRUNUSU9OIGRiLnNpcC5maXhfYnllX3JvdXRlX3NldApnZW5lcmF0aW9uOiAw\r\nCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNU\r\nSU9OIGRiLnNpcC5maXhfYmFkX3JvdXRlX3NldApnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRi\r\nLnNpcC5maW5kX2dydXVfbG9jYWxseQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6\r\nIDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5h\r\nbHdheXNfYWRkX3BhdGgKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAudGVybWluYXRl\r\nX3RyYW5zZmVyb3Jfb25fMTgzCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoq\r\nKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmZvcmNl\r\nX2luYWN0aXZlX2hvbGQKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9X\r\nCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElPTiBkYi5zaXAuaXNfbXVsdGlw\r\nbGVfMnh4X21lZGlhCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpy\r\nb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmhpZGVfcnIKZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAwCipTRUNUSU9OIGRiLnNpcC5oaWRlX3Jy\r\nX2FsbApnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEK\r\nZW5hYmxlZDogb2ZmCipTRUNUSU9OIGRiLnNpcC5md19zaXBhcmF0b3JfbmF0Cmdl\r\nbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVk\r\nOiBvZmYKKlNFQ1RJT04gZGIuc2lwLmIyYnVhX3JlY2VpdmVfcHJhY2sKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9u\r\nCipTRUNUSU9OIGRiLnNpcC5iMmJ1YV9zZW5kX3ByYWNrCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvbgoqU0VDVElP\r\nTiBkYi5zaXAuYnBjX2F1dGgKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioq\r\nUk9XCnJvd2lkOiAxCmludGVydmFsOgptYXhfYXR0ZW1wdHM6Cm5vcmVzcDoKc2l6\r\nZTogMTI4CipTRUNUSU9OIGRiLnNpcC5zaWduYWxpbmdfYWNsCmdlbmVyYXRpb246\r\nIDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpjbGllbnRfbmV0Z3JvdXA6\r\nIC0KKlNFQ1RJT04gZGIuc2lwLnJlcV9zYW1lX3NpZ25hbF9tZWRpYV9ncnAKZ2Vu\r\nZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6\r\nIG9uCipTRUNUSU9OIGRiLnNpcC5yZWludml0ZXNfZGlzYWJsZQpnZW5lcmF0aW9u\r\nOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipT\r\nRUNUSU9OIGRiLnNpcC5zdXBwb3J0ZWRfZGlzYWJsZQpnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIGRiLnNpcC5mb3JjZV9wdGltZQpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEK\r\nKipST1cKcm93aWQ6IDEKcHRpbWU6CipTRUNUSU9OIGRiLnNpcC5yZWdpc3Rlcl93\r\nYWl0CmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQpk\r\nZWxheToKKlNFQ1RJT04gZGIuc2lwLnJlbW92ZV9zZHBfZnJvbV8xeHgKZ2VuZXJh\r\ndGlvbjogMApsYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9m\r\nZgoqU0VDVElPTiBkYi5zaXAuaGlkZV9zZW5zaXRpdmUKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9uCipTRUNUSU9O\r\nIGRiLnNpcC5hZGRfaW5jb21pbmdfcG9ydF90b19ydXJpCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJ\r\nT04gZGIuc2lwLnVzZV9lbmRwb2ludF9zZXNzaW9uX2lkCmdlbmVyYXRpb246IDAK\r\nbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJ\r\nT04gZGIuc2lwLnJlc29sdmVfZG9tYWluc19pbl9zZHAKZ2VuZXJhdGlvbjogMAps\r\nYXN0X3Jvd2lkOiAxCioqUk9XCnJvd2lkOiAxCmVuYWJsZWQ6IG9mZgoqU0VDVElP\r\nTiBkYi5zaXAuY29udmVydF81eHhfdG9fNTAzCmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMQoqKlJPVwpyb3dpZDogMQplbmFibGVkOiBvZmYKKlNFQ1RJT04gZGIu\r\nc2lwLmFsbG93X3J0cF9iZWZvcmVfYW5zd2VyX3NkcApnZW5lcmF0aW9uOiAwCmxh\r\nc3Rfcm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb2ZmCipTRUNUSU9O\r\nIEVPRgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAGRiL2RiLnVzZXJkYgAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwNjMAMDAwMDA2MwAwMDAw\r\nMDAwMDQ1NQAxMzM2MTQwMTQ0NwAwMTIyMzEAIDAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ1ZWdvAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nIyBUaGlzIGZpbGUgaXMgYSBzdHJpY3QgZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmls\r\nZS4KIyBFZGl0IGNhcmVmdWxseSBvciBub3QgYXQgYWxsLgoqU0VDVElPTiBkYi51\r\nc2VyZGIucmFkaXVzX2xvY2FsX2VuZHBvaW50CmdlbmVyYXRpb246IDAKbGFzdF9y\r\nb3dpZDogMQoqKlJPVwpyb3dpZDogMQpuYXNfaWRlbnRpZmllcjogCnJhZGl1c19s\r\nb2NhbF9pcDogLQp1c2VfbmFzX2lwX2FkZHJlc3M6IG9uCipTRUNUSU9OIGRiLnVz\r\nZXJkYi5yYWRpdXNfc2VydmVycwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDAK\r\nKlNFQ1RJT04gRU9GCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYi9kYi5pZHNpcHMAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAw\r\nMDYzADAwMDAwNjMAMDAwMDAwMDE2MzYAMTMzNjE0MDE0NDcAMDEyMjQyACAwAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAHVzdGFyICAAZnVlZ28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmdWVnbwAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAACMgVGhpcyBmaWxlIGlzIGEgc3RyaWN0IGZvcm1hdCBj\r\nb25maWd1cmF0aW9uIGZpbGUuCiMgRWRpdCBjYXJlZnVsbHkgb3Igbm90IGF0IGFs\r\nbC4KKlNFQ1RJT04gZGIuaWRzaXBzLmFjdGl2ZQpnZW5lcmF0aW9uOiAwCmxhc3Rf\r\ncm93aWQ6IDEKKipST1cKcm93aWQ6IDEKZW5hYmxlZDogb24KKlNFQ1RJT04gZGIu\r\naWRzaXBzLmxpbWl0cwpnZW5lcmF0aW9uOiAwCmxhc3Rfcm93aWQ6IDEKKipST1cK\r\ncm93aWQ6IDEKbWF4X2xvYWQ6IDgwCipTRUNUSU9OIGRiLmlkc2lwcy5wYWNrZXRf\r\nZmlsdGVyaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpyb3dp\r\nZDogMQphY3Rpb246IGRpc2NhcmQKZW5hYmxlZDogb24KbWF0Y2g6IFNjYW5uZXJz\r\nCm5hbWU6IFNjYW5uZXJzCm51bWJlcjogMQoqU0VDVElPTiBkYi5pZHNpcHMucGFj\r\na2V0X21hdGNoaW5nCmdlbmVyYXRpb246IDAKbGFzdF9yb3dpZDogMQoqKlJPVwpy\r\nb3dpZDogMQpjYXNlOiBvZmYKbWVzc2FnZTogcmVxdWVzdApuYW1lOiBTY2FubmVy\r\ncwpuZWc6IG9mZgpwYXJ0OiBoZWFkZXIKcmVnZXhwOiBVc2VyLUFnZW50Oi4qKGZy\r\naWVuZGx5LXNjYW5uZXJ8c3VuZGF5ZGRyfHNpcHZpY2lvdXN8c2lwY2xpKS4qCnNv\r\ndXJjZTogLQp0cmFuc3BvcnQ6IC0KKlNFQ1RJT04gZGIuaWRzaXBzLnJhdGVfbGlt\r\naXRpbmcKZ2VuZXJhdGlvbjogMApsYXN0X3Jvd2lkOiAyCioqUk9XCnJvd2lkOiAx\r\nCmF1dG86IG9uCmJsYWNrbGlzdDogMzAwCmNjOiBvZmYKZW5hYmxlZDogb2ZmCmhp\r\ndHM6IDUwMAptYXRjaDogLQpuYW1lOiBEZWZhdWx0IGF1dG8Kd2luZG93OiAxMAoq\r\nKlJPVwpyb3dpZDogMgphdXRvOiBvZmYKYmxhY2tsaXN0OiAzMDAKY2M6IG9mZgpl\r\nbmFibGVkOiBvZmYKaGl0czogNTAwCm1hdGNoOiAtCm5hbWU6IERlZmF1bHQgbm90\r\nIGF1dG8Kd2luZG93OiAxMAoqU0VDVElPTiBFT0YKAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\r\n-----END CONFIGURATION-DATABASE-----\r\n",
- "filename": "config_2018-10-25T115310.cfg"
- }
- }
-]
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_factory.json b/test/units/modules/network/ingate/fixtures/test_ig_config_factory.json
deleted file mode 100644
index a632b46b9f..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_config_factory.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
- {
- "load-factory": {
- "msg": "reverted the configuration to the factory configuration."
- }
- }
-]
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_get.json b/test/units/modules/network/ingate/fixtures/test_ig_config_get.json
deleted file mode 100644
index 4ae518d9f9..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_config_get.json
+++ /dev/null
@@ -1,20 +0,0 @@
-[
- {
- "table": "misc.dns_servers",
- "href": "http://10.48.28.78/api/v1/misc/dns_servers/1",
- "data": {
- "number": "1",
- "server": "192.168.1.20"
- },
- "id": 1
- },
- {
- "table": "misc.dns_servers",
- "href": "http://10.48.28.78/api/v1/misc/dns_servers/2",
- "data": {
- "number": "2",
- "server": "192.168.1.30"
- },
- "id": 2
- }
-]
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_modify.json b/test/units/modules/network/ingate/fixtures/test_ig_config_modify.json
deleted file mode 100644
index 99bd4ef7b8..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_config_modify.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- {
- "table": "misc.unitname",
- "href": "http://10.48.28.78/api/v1/misc/unitname/1",
- "data": {
- "unitname": "\"Testapi - 1541699806\""
- },
- "id": 1
- }
-]
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_return_rowid.json b/test/units/modules/network/ingate/fixtures/test_ig_config_return_rowid.json
deleted file mode 100644
index 7660873d10..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_config_return_rowid.json
+++ /dev/null
@@ -1 +0,0 @@
-[1]
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_revert.json b/test/units/modules/network/ingate/fixtures/test_ig_config_revert.json
deleted file mode 100644
index c8314ab394..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_config_revert.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
- {
- "revert-edits": {
- "msg": "reverted the configuration to the last applied configuration."
- }
- }
-]
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_config_store.json b/test/units/modules/network/ingate/fixtures/test_ig_config_store.json
deleted file mode 100644
index 3915eaba41..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_config_store.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
- {
- "store-edit": {
- "msg": "Successfully applied and saved the configuration."
- }
- }
-]
diff --git a/test/units/modules/network/ingate/fixtures/test_ig_unit_information.json b/test/units/modules/network/ingate/fixtures/test_ig_unit_information.json
deleted file mode 100644
index dc5e451c17..0000000000
--- a/test/units/modules/network/ingate/fixtures/test_ig_unit_information.json
+++ /dev/null
@@ -1,21 +0,0 @@
-[
- {
- "unit-information": {
- "lic_email": "dev@ingate.com",
- "lang": "en",
- "product": "Software SIParator/Firewall",
- "installid": "any",
- "patches": [],
- "lic_mac": "any",
- "unitname": "testname",
- "interfaces": "eth0 eth1 eth2 eth3 eth4 eth5",
- "modules": "failover vpn sip qturn ems qos rsc voipsm idsips siptrunk sipswitch",
- "lic_name": "Ingate",
- "macaddr": "52:54:00:4c:e2:07",
- "version": "6.2.0-erik",
- "systemid": "IG-200-840-5001-0",
- "mode": "Firewall",
- "serial": "IG-200-840-5001-0"
- }
- }
-]
diff --git a/test/units/modules/network/ingate/ingate_module.py b/test/units/modules/network/ingate/ingate_module.py
deleted file mode 100644
index 64d24ebd37..0000000000
--- a/test/units/modules/network/ingate/ingate_module.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2018, Ingate Systems AB
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 file_desc:
- data = file_desc.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestIngateModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, fixture=None,
- command=None):
-
- self.load_fixtures(fixture, command, changed)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, fixture=None, command=None, changed=False):
- pass
diff --git a/test/units/modules/network/ingate/test_ig_config.py b/test/units/modules/network/ingate/test_ig_config.py
deleted file mode 100644
index 7dcb8637d7..0000000000
--- a/test/units/modules/network/ingate/test_ig_config.py
+++ /dev/null
@@ -1,241 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2018, Ingate Systems AB
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-
-from units.compat.mock import patch
-from ansible.modules.network.ingate import ig_config
-from units.modules.utils import set_module_args
-from .ingate_module import TestIngateModule, load_fixture
-
-
-class TestConfigModule(TestIngateModule):
-
- module = ig_config
-
- def setUp(self):
- super(TestConfigModule, self).setUp()
-
- self.mock_make_request = patch('ansible.modules.network.ingate.'
- 'ig_config.make_request')
- self.make_request = self.mock_make_request.start()
- # ATM the Ingate Python SDK is not needed in this unit test.
- self.module.HAS_INGATESDK = True
-
- def tearDown(self):
- super(TestConfigModule, self).tearDown()
- self.mock_make_request.stop()
-
- def load_fixtures(self, fixture=None, command=None, changed=False):
- self.make_request.side_effect = [(changed, command,
- load_fixture(fixture))]
-
- def test_ig_config_add(self):
- """Test adding a row to a table.
- """
- command = 'add'
- set_module_args(dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- ),
- add=True,
- table='misc.dns_servers',
- columns=dict(
- server='192.168.1.23'
- )))
- fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0],
- command, 'json')
- result = self.execute_module(changed=True, fixture=fixture,
- command=command)
- self.assertTrue(command in result)
-
- def test_ig_config_delete(self):
- """Test deleting all rows in a table.
- """
- command = 'delete'
- set_module_args(dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- ),
- delete=True,
- table='misc.dns_servers',
- ))
- fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0],
- command, 'json')
- result = self.execute_module(changed=True, fixture=fixture,
- command=command)
- self.assertTrue(command in result)
-
- def test_ig_config_get(self):
- """Test returning all rows in a table.
- """
- command = 'get'
- set_module_args(dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- ),
- get=True,
- table='misc.dns_servers',
- ))
- fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0],
- command, 'json')
- result = self.execute_module(changed=True, fixture=fixture,
- command=command)
- self.assertTrue(command in result)
-
- def test_ig_config_modify(self):
- """Test modifying a row.
- """
- command = 'modify'
- set_module_args(dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- ),
- modify=True,
- table='misc.unitname',
- columns=dict(
- unitname='"Testapi - 1541699806"'
- )))
- fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0],
- command, 'json')
- result = self.execute_module(changed=True, fixture=fixture,
- command=command)
- self.assertTrue(command in result)
-
- def test_ig_config_revert(self):
- """Test reverting the preliminary configuration.
- """
- command = 'revert'
- set_module_args(dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- ),
- revert=True
- ))
- fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0],
- command, 'json')
- result = self.execute_module(changed=True, fixture=fixture,
- command=command)
- self.assertTrue(command in result)
-
- def test_ig_config_factory(self):
- """Test loading factory defaults.
- """
- command = 'factory'
- set_module_args(dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- ),
- factory=True
- ))
- fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0],
- command, 'json')
- result = self.execute_module(changed=True, fixture=fixture,
- command=command)
- self.assertTrue(command in result)
-
- def test_ig_config_store(self):
- """Test storing the preliminary configuration.
- """
- command = 'store'
- set_module_args(dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- ),
- store=True
- ))
- fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0],
- command, 'json')
- result = self.execute_module(changed=True, fixture=fixture,
- command=command)
- self.assertTrue(command in result)
-
- def test_ig_config_download(self):
- """Test doing backup of configuration database.
- """
- command = 'store'
- set_module_args(dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- ),
- download=True
- ))
- fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0],
- command, 'json')
- result = self.execute_module(changed=True, fixture=fixture,
- command=command)
- self.assertTrue(command in result)
-
- def test_ig_config_return_rowid(self):
- """Test retrieving a row id.
- """
- command = 'return_rowid'
- set_module_args(dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- ),
- return_rowid=True,
- table='network.local_nets',
- columns=dict(
- interface='eth0'
- )))
- fixture = '%s_%s.%s' % (os.path.basename(__file__).split('.')[0],
- command, 'json')
- result = self.execute_module(changed=True, fixture=fixture,
- command=command)
- self.assertTrue(command in result)
diff --git a/test/units/modules/network/ingate/test_ig_unit_information.py b/test/units/modules/network/ingate/test_ig_unit_information.py
deleted file mode 100644
index 21d6268d4b..0000000000
--- a/test/units/modules/network/ingate/test_ig_unit_information.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2018, Ingate Systems AB
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.ingate import ig_unit_information
-from units.modules.utils import set_module_args
-from .ingate_module import TestIngateModule, load_fixture
-
-
-class TestUnitInformationModule(TestIngateModule):
-
- module = ig_unit_information
-
- def setUp(self):
- super(TestUnitInformationModule, self).setUp()
-
- self.mock_make_request = patch('ansible.modules.network.ingate.'
- 'ig_unit_information.make_request')
- self.make_request = self.mock_make_request.start()
-
- self.mock_is_ingatesdk_installed = patch('ansible.modules.network.ingate.'
- 'ig_unit_information.is_ingatesdk_installed')
- self.is_ingatesdk_installed = self.mock_is_ingatesdk_installed.start()
-
- def tearDown(self):
- super(TestUnitInformationModule, self).tearDown()
- self.mock_make_request.stop()
- self.mock_is_ingatesdk_installed.stop()
-
- def load_fixtures(self, fixture=None, command=None, changed=False):
- self.make_request.side_effect = [load_fixture(fixture)]
- self.is_ingatesdk_installed.return_value = True
-
- def test_ig_unit_information(self):
- set_module_args(
- dict(
- client=dict(
- version='v1',
- address='127.0.0.1',
- scheme='http',
- username='alice',
- password='foobar'
- )
- )
- )
-
- fixture = '%s.%s' % (os.path.basename(__file__).split('.')[0], 'json')
- result = self.execute_module(fixture=fixture)
- self.assertTrue('unit-information' in result)
diff --git a/test/units/modules/network/ironware/fixtures/dir b/test/units/modules/network/ironware/fixtures/dir
deleted file mode 100644
index 8d328d45cc..0000000000
--- a/test/units/modules/network/ironware/fixtures/dir
+++ /dev/null
@@ -1 +0,0 @@
-Directory of /flash/
diff --git a/test/units/modules/network/ironware/fixtures/ironware_config_config.cfg b/test/units/modules/network/ironware/fixtures/ironware_config_config.cfg
deleted file mode 100644
index 6a509a3e0b..0000000000
--- a/test/units/modules/network/ironware/fixtures/ironware_config_config.cfg
+++ /dev/null
@@ -1,12 +0,0 @@
-!
-hostname router
-!
-interface ethernet 1/1
- ip address 1.2.3.4 255.255.255.0
- port-name test string
- enable
-!
-interface ethernet 1/2
- ip address 6.7.8.9 255.255.255.0
- port-name test string
-!
diff --git a/test/units/modules/network/ironware/fixtures/ironware_config_defaults.cfg b/test/units/modules/network/ironware/fixtures/ironware_config_defaults.cfg
deleted file mode 100644
index b60e1c9413..0000000000
--- a/test/units/modules/network/ironware/fixtures/ironware_config_defaults.cfg
+++ /dev/null
@@ -1,13 +0,0 @@
-!
-hostname router
-!
-interface ethernet 1/1
- ip address 1.2.3.4 255.255.255.0
- port-name test string
- enable
-!
-interface ethernet 1/2
- ip address 6.7.8.9 255.255.255.0
- port-name test string
- disable
-!
diff --git a/test/units/modules/network/ironware/fixtures/ironware_config_src.cfg b/test/units/modules/network/ironware/fixtures/ironware_config_src.cfg
deleted file mode 100644
index 1ca1d600ad..0000000000
--- a/test/units/modules/network/ironware/fixtures/ironware_config_src.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-!
-hostname foo
-!
-interface ethernet 1/1
- no ip address
-!
-interface ethernet 1/2
- ip address 6.7.8.9 255.255.255.0
- port-name test string
-!
diff --git a/test/units/modules/network/ironware/fixtures/show_chassis b/test/units/modules/network/ironware/fixtures/show_chassis
deleted file mode 100644
index 05ee95111a..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_chassis
+++ /dev/null
@@ -1,45 +0,0 @@
-*** MLXe 4-slot Chassis ***
-
----POWERS ---
-Power 1: (23-0000129-02 BMG2J50F014 - AC 1800W): Installed (OK)
-Power 2: ( 32006000 113186101409 - AC 1200W): Installed (OK)
-Power 3: not present
-Power 4: not present
-Total power budget for chassis = 3000 W
-Total power used by system core = 450 W
-Total power used by LPs = 406 W
-Total power available = 2144 W
-Slot Power-On Priority and Power Usage:
-Slot1 pri=1 module type=NI-MLX-10Gx8-M 8-port 10GbE (M) Module power usage=246W
-Slot2 pri=1 module type=BR-MLX-1GFx24-X 24-port 1GbE SFP Module power usage=160W
-
---- FANS ---
-Back fan A-1: Status = OK, Speed = LOW (50%)
-Back fan A-2: Status = OK, Speed = LOW (50%)
-Back fan B-1: Status = OK, Speed = LOW (50%)
-Back fan B-2: Status = OK, Speed = LOW (50%)
-Back fan C-1: Status = OK, Speed = LOW (50%)
-Back fan C-2: Status = OK, Speed = LOW (50%)
-Back fan D-1: Status = OK, Speed = LOW (50%)
-Back fan D-2: Status = OK, Speed = LOW (50%)
-
---- TEMPERATURE READINGS ---
-Active Mgmt Module: 33.500C 44.375C
-Standby Mgmt Module: 35.500C 47.250C
-SFM1: FE1:34.625C
-SFM2: FE1:37.0C
-SFM3: not present
-LP1 Sensor1: 37.500C
-LP1 Sensor2: 38.375C
-LP1 Sensor3: 34.750C
-LP1 Sensor4: 33.0C
-LP1 Sensor5: 39.125C
-LP1 Sensor6: 39.0C
-LP1 Sensor7: 43.0C
-LP2 Sensor1: 47.500C
-LP2 Sensor2: 43.500C
-LP2 Sensor3: 38.625C
-Fans are in auto mode (current speed is LOW (50%)). Temperature monitoring poll period is 60 seconds.
-
---- MISC INFO ---
-Backplane EEPROM MAC Address: 0024.38ae.ff00
diff --git a/test/units/modules/network/ironware/fixtures/show_interfaces b/test/units/modules/network/ironware/fixtures/show_interfaces
deleted file mode 100644
index f54e3a10bc..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_interfaces
+++ /dev/null
@@ -1,1053 +0,0 @@
-10GigabitEthernet1/1 is down, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is 10GigabitEthernet, address is 0024.38ae.ff00 (bia 0024.38ae.ff00)
- Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 4040 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Member of active trunk ports 1/1, primary port
- Member of configured trunk ports 1/1, primary port
- No port name
- Port is not enabled to receive all vlan packets for pbr
- Internet address is 10.69.1.6/30, MTU 9216 bytes, encapsulation ethernet
- Configured BW is 10000000 kbps
- Openflow: Disabled, Openflow Index 1
- Cluster L2 protocol forwarding enabled
- 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 305252868 packets input, 43293167239 bytes, 0 no buffer
- Received 75 broadcasts, 23206249 multicasts, 282046544 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 305252868 packets, Sent to TM 305252569 packets
- NP Ingress dropped 299 packets
- 294473220 packets output, 27084980920 bytes, 0 underruns
- Transmitted 93593 broadcasts, 3157540 multicasts, 291222087 unicasts
- 0 output errors, 0 collisions
- NP transmitted 294473223 packets, Received from TM 294473223 packets
-10GigabitEthernet1/2 is up, line protocol is up
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is 10GigabitEthernet, address is 0024.38ae.ff01 (bia 0024.38ae.ff01)
- Configured speed 10Gbit, actual 10Gbit, configured duplex fdx, actual fdx
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- Port name is To ces01.lab e2/1
- Port is not enabled to receive all vlan packets for pbr
- Internet address is 10.69.1.77/30, MTU 9216 bytes, encapsulation ethernet
- Configured BW is 10000000 kbps
- Openflow: Disabled, Openflow Index 2
- Cluster L2 protocol forwarding enabled
- 30 second input rate: 1316 bits/sec, 1 packets/sec, 0.00% utilization
- 30 second output rate: 529 bits/sec, 0 packets/sec, 0.00% utilization
- 28253040 packets input, 3837442974 bytes, 0 no buffer
- Received 36030 broadcasts, 1176576 multicasts, 27040434 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 28253040 packets, Sent to TM 28252946 packets
- NP Ingress dropped 94 packets
- 38399732 packets output, 4357868636 bytes, 0 underruns
- Transmitted 36067 broadcasts, 1676300 multicasts, 36687365 unicasts
- 0 output errors, 0 collisions
- NP transmitted 38399732 packets, Received from TM 38399732 packets
-10GigabitEthernet1/3 is down, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is 10GigabitEthernet, address is 0024.38ae.ff02 (bia 0024.38ae.ff02)
- Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- Port name is To ces02.lab e2/1
- Port is not enabled to receive all vlan packets for pbr
- Internet address is 10.69.1.73/30, MTU 9216 bytes, encapsulation ethernet
- Configured BW is 10000000 kbps
- Openflow: Disabled, Openflow Index 3
- Cluster L2 protocol forwarding enabled
- 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 4586556 packets input, 412859576 bytes, 0 no buffer
- Received 10388 broadcasts, 326374 multicasts, 4249794 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 4586556 packets, Sent to TM 4586556 packets
- NP Ingress dropped 0 packets
- 4913588 packets output, 475340051 bytes, 0 underruns
- Transmitted 10390 broadcasts, 326389 multicasts, 4576809 unicasts
- 0 output errors, 0 collisions
- NP transmitted 4913590 packets, Received from TM 4913590 packets
-10GigabitEthernet1/4 is down, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is 10GigabitEthernet, address is 0024.38ae.ff03 (bia 0024.38ae.ff03)
- Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Enabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 10000000 kbps
- Openflow: Disabled, Openflow Index 4
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 895100 packets input, 98673879 bytes, 0 no buffer
- Received 141 broadcasts, 522145 multicasts, 372814 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 895100 packets, Sent to TM 895074 packets
- NP Ingress dropped 26 packets
- 279669 packets output, 27849215 bytes, 0 underruns
- Transmitted 7104 broadcasts, 17011 multicasts, 255554 unicasts
- 0 output errors, 0 collisions
- NP transmitted 279669 packets, Received from TM 779636 packets
-10GigabitEthernet1/5 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is 10GigabitEthernet, address is 0024.38ae.ff04 (bia 0024.38ae.ff04)
- Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 10000000 kbps
- Openflow: Disabled, Openflow Index 5
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-10GigabitEthernet1/6 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is 10GigabitEthernet, address is 0024.38ae.ff05 (bia 0024.38ae.ff05)
- Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 10000000 kbps
- Openflow: Disabled, Openflow Index 6
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-10GigabitEthernet1/7 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is 10GigabitEthernet, address is 0024.38ae.ff06 (bia 0024.38ae.ff06)
- Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 10000000 kbps
- Openflow: Disabled, Openflow Index 7
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-10GigabitEthernet1/8 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is 10GigabitEthernet, address is 0024.38ae.ff07 (bia 0024.38ae.ff07)
- Configured speed 10Gbit, actual unknown, configured duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 10000000 kbps
- Openflow: Disabled, Openflow Index 8
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/1 is up, line protocol is up
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff30 (bia 0024.38ae.ff30)
- Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx
- Member of Control VLAN 4095, 5 L2 VLAN(S) (tagged), port is in tagged mode, port state is Forwarding
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor enabled (input and output)
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 49
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 195 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 34 bits/sec, 0 packets/sec, 0.00% utilization
- 132989 packets input, 46356032 bytes, 0 no buffer
- Received 6505 broadcasts, 126484 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 132988 packets, Sent to TM 54470 packets
- NP Ingress dropped 78518 packets
- 54203 packets output, 7100593 bytes, 0 underruns
- Transmitted 0 broadcasts, 54203 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 54203 packets, Received from TM 54203 packets
-GigabitEthernet2/2 is up, line protocol is up
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff31 (bia 0024.38ae.ff31)
- Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding
- STP configured to OFF, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- Port name is To MikroTik-04 - ether1 - 10.69.5.44
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 50
- Cluster L2 protocol forwarding enabled
- 30 second input rate: 65 bits/sec, 0 packets/sec, 0.00% utilization
- 30 second output rate: 844 bits/sec, 0 packets/sec, 0.00% utilization
- 486528 packets input, 60646920 bytes, 0 no buffer
- Received 94393 broadcasts, 377560 multicasts, 14575 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 486504 packets, Sent to TM 475558 packets
- NP Ingress dropped 10946 packets
- 1451686 packets output, 152474031 bytes, 0 underruns
- Transmitted 92204 broadcasts, 1344911 multicasts, 14571 unicasts
- 0 output errors, 0 collisions
- NP transmitted 1451686 packets, Received from TM 1451686 packets
-GigabitEthernet2/3 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff32 (bia 0024.38ae.ff32)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to OFF, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 51
- Cluster L2 protocol forwarding enabled
- 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/4 is down, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff33 (bia 0024.38ae.ff33)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 5 (untagged), 1 L2 VLANS (tagged),
- port is in dual mode, port state is Disabled
- STP configured to OFF, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- Port name is CANCELLATION TEST
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 52
- Cluster L2 protocol forwarding enabled
- 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/5 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff34 (bia 0024.38ae.ff34)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, 1 L2 VLAN(S) (tagged), port is in tagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 53
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/6 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff35 (bia 0024.38ae.ff35)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, 1 L2 VLAN(S) (tagged), port is in tagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 54
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/7 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff36 (bia 0024.38ae.ff36)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 6 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 55
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/8 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff37 (bia 0024.38ae.ff37)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 56
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/9 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff38 (bia 0024.38ae.ff38)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, 1 L2 VLAN(S) (tagged), port is in tagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 57
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/10 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff39 (bia 0024.38ae.ff39)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 58
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/11 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff3a (bia 0024.38ae.ff3a)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 59
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/12 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff3b (bia 0024.38ae.ff3b)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 60
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/13 is down, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff3c (bia 0024.38ae.ff3c)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 61
- Cluster L2 protocol forwarding enabled
- 30 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 30 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/14 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff3d (bia 0024.38ae.ff3d)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 62
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/15 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff3e (bia 0024.38ae.ff3e)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 63
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/16 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff3f (bia 0024.38ae.ff3f)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 64
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/17 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff40 (bia 0024.38ae.ff40)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 65
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/18 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff41 (bia 0024.38ae.ff41)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 66
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/19 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff42 (bia 0024.38ae.ff42)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 67
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/20 is up, line protocol is up
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff43 (bia 0024.38ae.ff43)
- Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror enabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 68
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 35 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 168 bits/sec, 0 packets/sec, 0.00% utilization
- 54203 packets input, 7154796 bytes, 0 no buffer
- Received 0 broadcasts, 54203 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 54203 packets, Sent to TM 54203 packets
- NP Ingress dropped 0 packets
- 162876 packets output, 34244811 bytes, 0 underruns
- Transmitted 0 broadcasts, 162876 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 162876 packets, Received from TM 162876 packets
-GigabitEthernet2/21 is up, line protocol is up
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff44 (bia 0024.38ae.ff44)
- Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 69
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 168 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 35 bits/sec, 0 packets/sec, 0.00% utilization
- 162876 packets input, 34244811 bytes, 0 no buffer
- Received 0 broadcasts, 162876 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 162876 packets, Sent to TM 162876 packets
- NP Ingress dropped 0 packets
- 54203 packets output, 7154796 bytes, 0 underruns
- Transmitted 0 broadcasts, 54203 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 54203 packets, Received from TM 54203 packets
-GigabitEthernet2/22 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff45 (bia 0024.38ae.ff45)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 70
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/23 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff46 (bia 0024.38ae.ff46)
- Configured fiber speed auto, configured copper speed auto, actual unknown, configured fiber duplex fdx, configured copper duplex fdx, actual unknown
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Disabled
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 71
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 0 packets input, 0 bytes, 0 no buffer
- Received 0 broadcasts, 0 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 0 packets, Sent to TM 0 packets
- NP Ingress dropped 0 packets
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 0 packets, Received from TM 0 packets
-GigabitEthernet2/24 is up, line protocol is up
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is GigabitEthernet, address is 0024.38ae.ff47 (bia 0024.38ae.ff47)
- Configured fiber speed auto, configured copper speed auto, actual 1Gbit, configured fiber duplex fdx, configured copper duplex fdx, actual fdx
- Member of Control VLAN 4095, VLAN 1 (untagged), port is in untagged mode, port state is Forwarding
- STP configured to ON, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- mirror disabled, monitor disabled
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 9216 bytes, encapsulation ethernet
- Configured BW is 1000000 kbps
- Openflow: Disabled, Openflow Index 72
- Cluster L2 protocol forwarding enabled
- 300 second input rate: 194 bits/sec, 0 packets/sec, 0.00% utilization
- 300 second output rate: 35 bits/sec, 0 packets/sec, 0.00% utilization
- 586851 packets input, 45550574 bytes, 0 no buffer
- Received 523921 broadcasts, 62930 multicasts, 0 unicasts
- 0 input errors, 0 CRC, 0 frame, 0 ignored
- 0 runts, 0 giants
- NP received 586839 packets, Sent to TM 586839 packets
- NP Ingress dropped 0 packets
- 54203 packets output, 7154796 bytes, 0 underruns
- Transmitted 0 broadcasts, 54203 multicasts, 0 unicasts
- 0 output errors, 0 collisions
- NP transmitted 54203 packets, Received from TM 54203 packets
-Ethernetmgmt1 is disabled, line protocol is down
- Loopback: None
- STP Root Guard is disabled, STP BPDU Guard is disabled
- Hardware is Ethernet, address is 0024.38ae.ff00 (bia 0024.38ae.ff00)
- Configured speed 1Gbit, actual unknown, configured duplex fdx, actual unknown
- Member of VLAN 0 (untagged), port is in untagged mode, port state is Disabled
- STP configured to OFF, Priority is level0, flow control enabled
- Priority force disabled, Drop precedence level 0, Drop precedence force disabled
- dhcp-snooping-trust configured to OFF
- LACP BPDU Forwarding:Disabled
- LLDP BPDU Forwarding:Disabled
- Not member of any active trunks
- Not member of any configured trunks
- No port name
- Port is not enabled to receive all vlan packets for pbr
- MTU 1548 bytes, encapsulation ethernet
- Openflow: Disabled, Openflow Index 1537
- Cluster L2 protocol forwarding disabled
- 300 second input rate: 1136 bits/sec, 1 packets/sec, 0.00% utilization
- 300 second output rate: 0 bits/sec, 0 packets/sec, 0.00% utilization
- 33204752 packets input, 2448695549 bytes, 0 no buffer
- Received 1788642 broadcasts, 29469988 multicasts, 1946122 unicasts
- 0 packets output, 0 bytes, 0 underruns
- Transmitted 0 broadcasts, 0 multicasts, 0 unicasts
-Loopback1 is up, line protocol is up
- Hardware is Loopback
- No port name
- Internet address is 10.69.0.6/32, IP MTU 1500 bytes, encapsulation LOOPBACK
diff --git a/test/units/modules/network/ironware/fixtures/show_ipv6_interface b/test/units/modules/network/ironware/fixtures/show_ipv6_interface
deleted file mode 100644
index 51e293b755..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_ipv6_interface
+++ /dev/null
@@ -1,5 +0,0 @@
-Type Codes - I:ISIS O:OSPF R:RIP
-Interface Status/Protocol IGPs IPv6 Address VRF
-eth 1/1 up/up fe80::224:38ff:feae:ff00 default-vrf
- 2001:db8::1/64
- 2001:db8::/64[Anycast]
diff --git a/test/units/modules/network/ironware/fixtures/show_lldp_neighbors b/test/units/modules/network/ironware/fixtures/show_lldp_neighbors
deleted file mode 100644
index 3958a555ab..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_lldp_neighbors
+++ /dev/null
@@ -1,3 +0,0 @@
-Total number of LLDP neighbors on all ports: 6
-Lcl Port Chassis ID Port ID Port Description System Name
-1/2 748e.f863.3600 748e.f863.3631 10GigabitEthernet2/1 ces01.lab
diff --git a/test/units/modules/network/ironware/fixtures/show_memory b/test/units/modules/network/ironware/fixtures/show_memory
deleted file mode 100644
index 5a7a84af49..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_memory
+++ /dev/null
@@ -1,30 +0,0 @@
-====================================================================
-NetIron MLX active MP slot 5:
-Total SDRAM : 4294967295 bytes
-Available Memory : 3806097408 bytes
-Available Memory (%): 88 percent
-Free Physical Pages : 925008 pages
-
-Malloc statistics: total 633606628
-OS malloc count: 2437418082
-OS malloc fail: 0
-OS free count: 2437404486
-OS free fail: 0
-diff: 13596
-====================================================================
-NetIron MLX standby MP slot 6:
-Total SDRAM : 4294967295 bytes
-Available Memory : 3784171520 bytes
-Available Memory (%): 88 percent
-Free Physical Pages : 917843 pages
-
-====================================================================
-NetIron MLX LP SL 1:
-Total SDRAM : 1073741824 bytes
-Available Memory : 485294080 bytes
-Available Memory (%): 45 percent
-====================================================================
-NetIron MLX LP SL 2:
-Total SDRAM : 1073741824 bytes
-Available Memory : 561364992 bytes
-Available Memory (%): 52 percent
diff --git a/test/units/modules/network/ironware/fixtures/show_mpls_lsp_detail b/test/units/modules/network/ironware/fixtures/show_mpls_lsp_detail
deleted file mode 100644
index 7f2e7de947..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_mpls_lsp_detail
+++ /dev/null
@@ -1,32 +0,0 @@
-LSP LSP1, to 192.0.2.1
- From: (n/a), admin: DOWN, status: DOWN
- revert timer: 300 seconds
- Times primary LSP goes up since enabled: 1
- Metric: 0, Adaptive
- Maximum retries: NONE, no. of retries: 0
- Pri. path: NONE, up: no, active: no
- Setup priority: 7, hold priority: 0, cos 1
- Max rate: 0 kbps, mean rate: 0 kbps, max burst: 0 bytes
- CSPF-computation-mode configured: use te-metric(global)
- ReoptimizeTimer configured 1800
- Tie breaking: random, hop limit: 0
- LDP tunneling enabled: yes
- Soft preemption enabled: no
- Active Path attributes:
- Fast Reroute: facility backup desired, node protection desired
- Backup LSP: DOWN
- Global revertiveness enabled with hold time 5 secs
- FRR Forwarding State: Pri(down), Backup(down)
-LSP LSP3, to 192.0.2.3
- From: (n/a), admin: DOWN, status: DOWN
- Times primary LSP goes up since enabled: 0
- Metric: 0
- Maximum retries: NONE, no. of retries: 0
- Pri. path: NONE, up: no, active: no
- Setup priority: 7, hold priority: 0
- Max rate: 0 kbps, mean rate: 0 kbps, max burst: 0 bytes
- CSPF-computation-mode configured: use te-metric(global)
- Tie breaking: random, hop limit: 0
- LDP tunneling enabled: no
- Soft preemption enabled: no
- Active Path attributes:
diff --git a/test/units/modules/network/ironware/fixtures/show_mpls_vll-local_detail b/test/units/modules/network/ironware/fixtures/show_mpls_vll-local_detail
deleted file mode 100644
index d4a3b918eb..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_mpls_vll-local_detail
+++ /dev/null
@@ -1,7 +0,0 @@
-VLL TEST-LOCAL VLL-ID 1 IFL-ID --
- State: DOWN - endpoint port is down
- End-point 1: untagged e 2/8
- COS: --
- End-point 2: tagged vlan 5 e 2/9
- COS: --
- Extended Counters: Enabled
diff --git a/test/units/modules/network/ironware/fixtures/show_mpls_vll_detail b/test/units/modules/network/ironware/fixtures/show_mpls_vll_detail
deleted file mode 100644
index e010042e91..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_mpls_vll_detail
+++ /dev/null
@@ -1,19 +0,0 @@
-VLL TEST-VLL, VC-ID 111, VLL-INDEX 4
-
- End-point : tagged vlan 2005 e 2/1
- End-Point state : Up
- MCT state : None
- IFL-ID : --
- Local VC type : untag
- Local VC MTU : 9190
- COS : 1
- Extended Counters: Enabled
-
- Vll-Peer : 192.0.2.1
- State : DOWN - PW is Down (Reason:Wait for peer label)
- Remote VC type : -- Remote VC MTU : --
- Local label : -- Remote label : --
- Local group-id : 0 Remote group-id: --
- Tunnel LSP : lsp1 (tnl1)
- MCT Status TLV : --
- LSPs assigned : No LSPs assigned
diff --git a/test/units/modules/network/ironware/fixtures/show_mpls_vpls_detail b/test/units/modules/network/ironware/fixtures/show_mpls_vpls_detail
deleted file mode 100644
index 33fa9414b8..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_mpls_vpls_detail
+++ /dev/null
@@ -1,21 +0,0 @@
-VPLS TEST-VPLS, Id 333, Max mac entries: 2048
- Total vlans: 2, Tagged ports: 2 (0 Up), Untagged ports 2 (0 Up)
- IFL-ID: n/a
- Vlan 5
- L2 Protocol: NONE
- Untagged: ethe 2/4
- Vlan 6
- L2 Protocol: NONE
- Tagged: ethe 2/5 to 2/6
- Untagged: ethe 2/7
- VC-Mode: Raw
- Total VPLS peers: 1 (0 Operational)
- Peer address: 192.0.2.3, State: Wait for functional local ports
- Tnnl in use: tnl1(3)[RSVP] Peer Index:0
- Local VC lbl: N/A, Remote VC lbl: N/A
- Local VC MTU: 9190, Remote VC MTU: 0
- Local VC-Type: Ethernet(0x05), Remote VC-Type: UNKNOWN
- CPU-Protection: OFF
- Local Switching: Enabled
- Extended Counter: ON
- Multicast Snooping: Disabled
diff --git a/test/units/modules/network/ironware/fixtures/show_running-config b/test/units/modules/network/ironware/fixtures/show_running-config
deleted file mode 100644
index de2d82609c..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_running-config
+++ /dev/null
@@ -1,291 +0,0 @@
-!Current configuration:
-!
-ver V5.8.0fT163
-module 1 ni-mlx-8-port-10g-m
-module 2 br-mlx-24-port-1gf-x
-!
-!
-mirror ethernet 2/20
-!
-lag "LAG" dynamic id 3
- ports ethernet 1/1
- primary-port 1/1
- lacp-timeout short
- deploy
-!
-!
-!
-
-!
-no spanning-tree
-!
-!
-vlan 1 name DEFAULT-VLAN
- no untagged ethe 2/1 to 2/2 ethe 2/4 to 2/9
-!
-vlan 150
-!
-vlan 666 name LACP_ISOLATION_CUSTOMER
-!
-vlan 1000
-!
-vlan 2007
- tagged ethe 2/1
-!
-vlan 4040
- untagged ethe 1/1
-!
-
-!
-!
-qos-mapping
-!
-default-max-frame-size 9216
-cpu-usage on
-aaa authentication login default tacacs+ local enable
-tacacs-server host 192.0.2.5
-tacacs-server key 2 $X3FSZjgzKGzPIXVd
-!
-!
-enable password-display
-enable super-user-password 8 $1$WV1..Pi2$B6acbjDxeHsof2BKrpyqQ0
-enable aaa console
-logging host 192.0.2.5
-logging facility local7
-logging buffered 5000
-logging console
-username admin password 8 $1$MF/..XD4$MYUy7kcm/1eAuqXnVyvVO1
-username admin history $1$MF/..XD4$MYUy7kcm/1eAuqXnVyvVO1 $1$KE/..Cs2$WlfErdta9.sG9v5QmbaTd/
-!
-tag-type 9100 ethe 1/4
-tag-type 9100 ethe 2/2
-tag-type 9100 ethe 2/24
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-!
-snmp-server
-snmp-server community 2 $YkAtaSs/fFE6Sz97 ro
-snmp-server max-ifindex-per-module 64
-snmp-server cache size 128
-hostname mlx01.lab
-no transceiver-type-check
-!
-netconf server
-!
-router isis
- net 49.0001.0100.6900.0006.00
- fast-flood 4
- no hello padding
- is-type level-2
- log adjacency
- address-family ipv4 unicast
- metric-style wide
- redistribute connected
- exit-address-family
-
- address-family ipv6 unicast
- no adjacency-check
- exit-address-family
-
-!
-!
-!
-!
-!
-qos-policy
-!
-policy-map CUST-100Mb
- cir 99992032 cbs 3125000
-!
-policy-map core-to-core-interface
-!
-!
-hqos scheduler-policy core-to-core-interface-4.2G level level-0
- shaper-rate 4193280
- shaper-burst-size 256
- scheduler-type strict
-!
-!
-!
-hqos scheduler-policy P5 level level-1
- shaper-rate 10000000
- shaper-burst-size 10
- scheduler-type strict
-!
-!
-!
-!
-interface loopback 1
- ip address 10.69.0.6/32
- no ip redirect
-!
-!
-interface ethernet 1/1
- enable
- load-interval 30
- bfd interval 100 min-rx 100 multiplier 5
- ip router isis
- ip address 10.69.1.6/30
- ip mtu 9198
- ipv6 address 2001:db8::1/64
- isis bfd
- isis circuit-type level-2
- isis metric 500
- isis point-to-point
-!
-interface ethernet 1/2
- port-name foo
- enable
- load-interval 30
- bfd interval 100 min-rx 100 multiplier 5
- ip router isis
- ip address 10.69.1.77/30
- ip mtu 9198
- isis circuit-type level-2
- isis ipv6 metric 250
- isis point-to-point
-!
-interface ethernet 1/3
-enable
-forward-lacp
-!
-interface ethernet 1/4
- enable
- forward-lacp
-!
-interface ethernet 2/1
- enable
- mon ethernet 2/20 both
-!
-interface ethernet 2/2
- enable
- load-interval 30
- rate-limit input broadcast unknown-unicast multicast 521216 64000
- no spanning-tree
-!
-interface ethernet 2/3
- load-interval 30
- rate-limit input broadcast unknown-unicast multicast 521216 64000
- no fdp enable
- no cdp enable
- no spanning-tree
-!
-interface ethernet 2/4
- enable
- load-interval 30
- rate-limit input broadcast unknown-unicast multicast 521216 64000
- no fdp enable
- no cdp enable
- no spanning-tree
-!
-interface ethernet 2/13
- enable
- load-interval 30
-!
-interface ethernet 2/20
- enable
-!
-interface ethernet 2/21
- enable
-!
-interface ethernet 2/24
- enable
-!
-ip tacacs source-interface loopback 1
-!
-!
-router mpls
- bfd
-
- dynamic-bypass
- enable
- reoptimize-timer 1800
-
-
- policy
- traffic-eng isis level-2
- handle-isis-neighbor-down
- cspf-computation-mode use-te-metric
-
- rsvp
- rsvp-reliable-messaging
-
- ldp
- tunnel-metric 10
-
- mpls-interface e1/1
- rsvp-reliable-messaging
- dynamic-bypass
- enable
- name-prefix dyn
- adaptive
- cos 1
-
- mpls-interface e1/2
- rsvp-reliable-messaging
- dynamic-bypass
- enable
- name-prefix dyn
- adaptive
- cos 1
-
- lsp LSP1
- to 192.0.2.1
- no cspf
- adaptive
- enable
-
- lsp LSP3
- to 192.0.2.3
- shortcuts isis level2
- adaptive
- reoptimize-timer 1800
- frr
- facility-backup
- revert-timer 300
- enable
-
- vll TEST-VLL 111 raw-mode cos 1
- vll-peer 192.0.2.1
- vlan 2005
- tagged e 2/1
-
- vll-local TEST-LOCAL
- extended-counters on
- untag e 2/8
- vlan 5
- tag e 2/9
-
- vpls TEST-VPLS 333
- vpls-peer 192.0.2.3
- vlan 5
- untagged ethe 2/4
- vlan 6
- tagged ethe 2/5 to 2/6
- untagged ethe 2/7
-
-!
-!
-!
-lldp enable ports ethe 1/1 to 1/8 ethe 2/1 to 2/24
-lldp run
-!
-!
-!
-!
-!
-end
diff --git a/test/units/modules/network/ironware/fixtures/show_version b/test/units/modules/network/ironware/fixtures/show_version
deleted file mode 100644
index 2b578a8b88..0000000000
--- a/test/units/modules/network/ironware/fixtures/show_version
+++ /dev/null
@@ -1,92 +0,0 @@
-System Mode: MLX
-Chassis: MLXe 4-slot (Serial #: BGD2503J01F, Part #: 40-1000363-04)
-NI-X-HSF Switch Fabric Module 1 (Serial #: BEW0444H01V, Part #: 60-1001512-10)
-FE 1: Type fe600, Version 1
-Switch Fabric Module 1 Up Time is 203 days 4 hours 44 minutes 54 seconds
-NI-X-HSF Switch Fabric Module 2 (Serial #: BEW0432H06S, Part #: 60-1001512-10)
-FE 1: Type fe600, Version 1
-Switch Fabric Module 2 Up Time is 203 days 4 hours 44 minutes 54 seconds
-==========================================================================
-SL M1: BR-MLX-MR2-M Management Module Active (Serial #: BVP0425L02W, Part #: 60-1002374-07):
-Boot : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on May 18 2015 at 13:02:10 labeled as xmprm05800
- (521590 bytes) from boot flash
-Monitor : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on May 18 2015 at 13:01:40 labeled as xmb05800
- (539721 bytes) from code flash
-IronWare : Version 5.8.0fT163 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on Feb 24 2017 at 02:54:38 labeled as xmr05800fb
- (9983317 bytes) from Primary
-Board ID : 00 MBRIDGE Revision : 37
-1666 MHz Power PC processor 7448 (version 8004/0202) 166 MHz bus
-512 KB Boot Flash (MX29LV040C), 128 MB Code Flash (MT28F256J3)
-4096 MB DRAM INSTALLED
-4096 MB DRAM ADDRESSABLE
-Active Management uptime is 203 days 4 hours 44 minutes 54 seconds
-==========================================================================
-SL M2: BR-MLX-MR2-M Management Module Standby (Serial #: BVP0407L00D, Part #: 60-1002374-07):
-Boot : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on May 18 2015 at 13:02:10 labeled as xmprm05800
- (521590 bytes) from boot flash
-Monitor : Version 5.8.0T165 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on May 18 2015 at 13:01:40 labeled as xmb05800
- (539721 bytes) from code flash
-IronWare : Version 5.8.0fT163 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on Feb 24 2017 at 02:54:38 labeled as xmr05800fb
- (9983317 bytes) from Primary
-Board ID : 00 MBRIDGE Revision : 37
-1666 MHz Power PC processor 7448 (version 8004/0202) 166 MHz bus
-512 KB Boot Flash (MX29LV040C), 128 MB Code Flash (MT28F256J3)
-4096 MB DRAM INSTALLED
-4096 MB DRAM ADDRESSABLE
-Standby Management uptime is 203 days 4 hours 44 minutes 15 seconds
-==========================================================================
-SL 1: NI-MLX-10Gx8-M 8-port 10GbE (M) Module (Serial #: BEQ0403G05E, Part #: 60-1001587-13)
-(LID: dgsFJFIiFKg)
-Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
- (449481 bytes) from boot flash
-Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
- (568745 bytes) from code flash
-IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
- (9304807 bytes) from Primary
-FPGA versions:
-Valid PBIF Version = 2.24, Build Time = 4/7/2016 14:16:00
-
-Valid XPP Version = 0.08, Build Time = 6/27/2016 10:36:00
-
-MACXPP40G 0
-MACXPP40G 1
-1333 MHz MPC MPC8548 (version 8021/0022) 533 MHz bus
-512 KB Boot Flash (MX29LV040C), 64 MB Code Flash (MT28F256J3)
-1024 MB DRAM, 8 KB SRAM
-LP Slot 1 uptime is 203 days 4 hours 44 minutes 12 seconds
-==========================================================================
-SL 2: BR-MLX-1GFx24-X 24-port 1GbE SFP Module (Serial #: BND0415H003, Part #: 60-1001892-11)
-License: (LID: dpfFJGKjFFI)
-Boot : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on May 18 2015 at 13:02:24 labeled as xmlprm05800
- (449481 bytes) from boot flash
-Monitor : Version 5.8.0T175 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on May 18 2015 at 13:02:40 labeled as xmlb05800
- (568745 bytes) from code flash
-IronWare : Version 5.8.0fT177 Copyright (c) 1996-2014 Brocade Communications Systems, Inc.
-Compiled on Feb 24 2017 at 03:02:10 labeled as xmlp05800fb
- (9304807 bytes) from Primary
-FPGA versions:
-Valid PBIF Version = 4.04, Build Time = 11/10/2014 22:10:00
-
-Valid XPP Version = 1.03, Build Time = 6/30/2016 10:37:00
-
-Valid STATS Version = 0.09, Build Time = 11/21/2010 14:52:00
-
-BCM56512GMAC 0
-BCM56512GMAC 1
-666 MHz MPC MPC8541E (version 8020/0020) 333 MHz bus
-512 KB Boot Flash (MX29LV040C), 16 MB Code Flash (MT28F128J3)
-1024 MB DRAM, 8 KB SRAM
-LP Slot 2 uptime is 21 days 20 hours 23 minutes 19 seconds
-==========================================================================
-All show version done
diff --git a/test/units/modules/network/ironware/ironware_module.py b/test/units/modules/network/ironware/ironware_module.py
deleted file mode 100644
index 06ff63f989..0000000000
--- a/test/units/modules/network/ironware/ironware_module.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestIronwareModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/ironware/test_ironware_command.py b/test/units/modules/network/ironware/test_ironware_command.py
deleted file mode 100644
index e86f59b045..0000000000
--- a/test/units/modules/network/ironware/test_ironware_command.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.ironware import ironware_command
-from .ironware_module import TestIronwareModule, load_fixture
-
-
-class TestIronwareCommandModule(TestIronwareModule):
-
- module = ironware_command
-
- def setUp(self):
- super(TestIronwareCommandModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.ironware.ironware_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestIronwareCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for command in commands:
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_ironware_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('System Mode: MLX'))
-
- def test_ironware_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('System Mode: MLX'))
-
- def test_ironware_command_wait_for(self):
- wait_for = 'result[0] contains "IronWare"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_ironware_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_ironware_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_ironware_command_match_any(self):
- wait_for = ['result[0] contains "IronWare"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_ironware_command_match_all(self):
- wait_for = ['result[0] contains "IronWare"',
- 'result[0] contains "uptime is"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_ironware_command_match_all_failure(self):
- wait_for = ['result[0] contains "IronWare"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show version']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/ironware/test_ironware_config.py b/test/units/modules/network/ironware/test_ironware_config.py
deleted file mode 100644
index 2b7b6abb6c..0000000000
--- a/test/units/modules/network/ironware/test_ironware_config.py
+++ /dev/null
@@ -1,165 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.ironware import ironware_config
-from .ironware_module import TestIronwareModule, load_fixture
-
-
-class TestIronwareConfigModule(TestIronwareModule):
-
- module = ironware_config
-
- def setUp(self):
- super(TestIronwareConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.ironware.ironware_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.ironware.ironware_config.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.ironware.ironware_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestIronwareConfigModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'ironware_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def execute_module(self, failed=False, changed=False, updates=None, sort=True, defaults=False):
-
- self.load_fixtures(updates)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if updates is not None:
- if sort:
- self.assertEqual(sorted(updates), sorted(result['updates']), result['updates'])
- else:
- self.assertEqual(updates, result['updates'], result['updates'])
-
- return result
-
- def test_ironware_config_unchanged(self):
- src = load_fixture('ironware_config_config.cfg')
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_ironware_config_src(self):
- src = load_fixture('ironware_config_src.cfg')
- set_module_args(dict(src=src))
- updates = ['hostname foo', 'interface ethernet 1/1',
- 'no ip address']
- self.execute_module(changed=True, updates=updates)
-
- def test_ironware_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_ironware_config_save_always(self):
- self.run_commands.return_value = "hostname foobar"
- set_module_args(dict(save_when='always'))
- self.execute_module(changed=True)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.load_config.call_count, 0)
-
- def test_ironware_config_lines_wo_parents(self):
- set_module_args(dict(lines=['hostname foobar']))
- updates = ['hostname foobar']
- self.execute_module(changed=True, updates=updates)
-
- def test_ironware_config_lines_w_parents(self):
- set_module_args(dict(lines=['disable'], parents=['interface ethernet 1/1']))
- updates = ['interface ethernet 1/1', 'disable']
- self.execute_module(changed=True, updates=updates)
-
- def test_ironware_config_before(self):
- set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2']))
- updates = ['test1', 'test2', 'hostname foo']
- self.execute_module(changed=True, updates=updates, sort=False)
-
- def test_ironware_config_after(self):
- set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2']))
- updates = ['hostname foo', 'test1', 'test2']
- self.execute_module(changed=True, updates=updates, sort=False)
-
- def test_ironware_config_before_after_no_change(self):
- set_module_args(dict(lines=['hostname router'],
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- self.execute_module()
-
- def test_ironware_config_config(self):
- config = 'hostname localhost'
- set_module_args(dict(lines=['hostname router'], config=config))
- updates = ['hostname router']
- self.execute_module(changed=True, updates=updates)
-
- def test_ironware_config_replace_block(self):
- lines = ['port-name test string', 'test string']
- parents = ['interface ethernet 1/1']
- set_module_args(dict(lines=lines, replace='block', parents=parents))
- updates = parents + lines
- self.execute_module(changed=True, updates=updates)
-
- def test_ironware_config_match_none(self):
- lines = ['hostname router']
- set_module_args(dict(lines=lines, match='none'))
- self.execute_module(changed=True, updates=lines)
-
- def test_ironware_config_match_none_parents(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'port-name test string']
- parents = ['interface ethernet 1/1']
- set_module_args(dict(lines=lines, parents=parents, match='none'))
- updates = parents + lines
- self.execute_module(changed=True, updates=updates, sort=False)
-
- def test_ironware_config_match_strict(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'port-name test string',
- 'disable']
- parents = ['interface ethernet 1/1']
- set_module_args(dict(lines=lines, parents=parents, match='strict'))
- updates = parents + ['disable']
- self.execute_module(changed=True, updates=updates, sort=False)
-
- def test_ironware_config_match_exact(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'port-name test string',
- 'disable']
- parents = ['interface ethernet 1/1']
- set_module_args(dict(lines=lines, parents=parents, match='exact'))
- updates = parents + lines
- self.execute_module(changed=True, updates=updates, sort=False)
diff --git a/test/units/modules/network/ironware/test_ironware_facts.py b/test/units/modules/network/ironware/test_ironware_facts.py
deleted file mode 100644
index ab0f16b555..0000000000
--- a/test/units/modules/network/ironware/test_ironware_facts.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.ironware import ironware_facts
-from .ironware_module import TestIronwareModule, load_fixture
-
-
-class TestIronwareFacts(TestIronwareModule):
-
- module = ironware_facts
-
- def setUp(self):
- super(TestIronwareFacts, self).setUp()
- self.mock_run_commands = patch(
- 'ansible.modules.network.ironware.ironware_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestIronwareFacts, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item)
- command = obj['command']
- except ValueError:
- command = item
- filename = str(command).split(' | ')[0].replace(' ', '_').replace('/', '7')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_ironware_facts_gather_subset_default(self):
- set_module_args(dict())
- result = self.execute_module()
- ansible_facts = result['ansible_facts']
- self.assertIn('hardware', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('interfaces', ansible_facts['ansible_net_gather_subset'])
- self.assertEqual(['/flash/'], ansible_facts['ansible_net_filesystems'])
- self.assertIn('1/1', ansible_facts['ansible_net_interfaces'].keys())
- self.assertIn('10.69.1.6', ansible_facts['ansible_net_all_ipv4_addresses'])
- self.assertIn('2001:db8::1', ansible_facts['ansible_net_all_ipv6_addresses'])
- self.assertIn('ansible_net_neighbors', ansible_facts)
- self.assertIn('1/2', ansible_facts['ansible_net_neighbors'].keys())
- self.assertEqual(4096, ansible_facts['ansible_net_memtotal_mb'])
- self.assertEqual(3630, ansible_facts['ansible_net_memfree_mb'])
- self.assertEqual('5.8.0fT163', ansible_facts['ansible_net_version'])
- self.assertEqual('MLXe 4-slot Chassis', ansible_facts['ansible_net_model'])
- self.assertEqual('BGD2503J01F', ansible_facts['ansible_net_serialnum'])
-
- def test_ironware_facts_gather_subset_config(self):
- set_module_args({'gather_subset': 'config'})
- result = self.execute_module()
- ansible_facts = result['ansible_facts']
- self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('config', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('ansible_net_config', ansible_facts)
-
- def test_ironware_facts_gather_subset_mpls(self):
- set_module_args({'gather_subset': 'mpls'})
- result = self.execute_module()
- ansible_facts = result['ansible_facts']
- self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('mpls', ansible_facts['ansible_net_gather_subset'])
- self.assertIn('ansible_net_mpls_lsps', ansible_facts)
- self.assertIn('ansible_net_mpls_vll', ansible_facts)
- self.assertIn('ansible_net_mpls_vll_local', ansible_facts)
- self.assertIn('ansible_net_mpls_vpls', ansible_facts)
- self.assertIn('LSP1', ansible_facts['ansible_net_mpls_lsps'].keys())
- self.assertIn('TEST-VLL', ansible_facts['ansible_net_mpls_vll'].keys())
- self.assertIn('TEST-LOCAL', ansible_facts['ansible_net_mpls_vll_local'].keys())
- self.assertIn('TEST-VPLS', ansible_facts['ansible_net_mpls_vpls'].keys())
diff --git a/test/units/modules/network/itential/test_iap_start_workflow.py b/test/units/modules/network/itential/test_iap_start_workflow.py
deleted file mode 100644
index 050fddd1d0..0000000000
--- a/test/units/modules/network/itential/test_iap_start_workflow.py
+++ /dev/null
@@ -1,914 +0,0 @@
-"""
-iap_token unit tests
-"""
-# -*- coding: utf-8 -*-
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# pylint: disable=invalid-name,protected-access,function-redefined,unused-argument
-# pylint: disable=unused-import,redundant-unittest-assert
-
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-import mock
-import unittest
-from ansible.modules.network.itential import iap_start_workflow
-
-
-class TestWorkflowModule(unittest.TestCase):
-
- @mock.patch('ansible.modules.network.itential.iap_start_workflow.start_workflow')
- def test_iap_workflow(self, iap_workflow):
- params = {"description": "NewTestAnsible",
- "https": "false",
- "iap_fqdn": "localhost",
- "iap_port": "3000",
- "token_key": "NDM2OGJlMzg5MjRlMTQyNzc0YmZmNmQ5ZWRkYzcyYTE=",
- "validate_certs": "false",
- "variables": {
- "value": "3333"
- },
- "workflow_name": "DummyWF"}
-
- module = {"params": params}
- return_response = {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "created": "2018-09-15T21:57:50.388Z",
- "created_by": "5b8fe4fcb3f8b800134ea5fd",
- "description": "NewTestAnsible",
- "font_size": 12,
- "groups": [],
- "last_updated": "2019-02-22T15:55:40.197Z",
- "last_updated_by": "5b8fe4fcb3f8b800134ea5fd",
- "locked": 'false',
- "metrics": {
- "progress": 0,
- "start_time": 1551043499742,
- "user": "5b8fe4fcb3f8b800134ea5fd"
- },
- "name": "DummyWF",
- "status": "running",
- "tasks": {
- "10d1": {
- "_id": "1ca495e4-dc86-41df-b3ca-8c215920ec91",
- "app": "WorkFlowEngine",
- "deprecated": 'false',
- "description": "Create a new Job variable by Job ID and assign it a value.",
- "displayName": "WorkFlowEngine",
- "groups": [],
- "iterations": [
- "1ca495e4-dc86-41df-b3ca-8c215920ec91"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "10d1"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>new</span>Variable",
- "key": "name"
- },
- {
- "highlightString": "Create a <span class='highlight-string'>new</span> "
- "Job variable by Job ID and assign it a value.",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "newVariable",
- "status": "incomplete",
- "summary": "Create a Job Variable",
- "type": "operation",
- "variables": {
- "incoming": {
- "name": "anyVar",
- "value": {
- "hello": "hello_from_the_other"
- }
- },
- "outgoing": {
- "value": 'null'
- }
- },
- "x": 0.24,
- "y": 0.3904899135446686
- },
- "50c1": {
- "_id": "33a32349-c151-4b67-b1cb-d5df2147772f",
- "actor": "Pronghorn",
- "app": "StringMethods",
- "deprecated": 'false',
- "description": "Concatenates a string with a second string(s). The second parameter can be a "
- "string or array.",
- "displayName": "String",
- "groups": [],
- "iterations": [
- "33a32349-c151-4b67-b1cb-d5df2147772f"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "50c1"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>Strin</span>gMethods",
- "key": "app"
- },
- {
- "highlightString": "Concatenates <span class='highlight-string'>"
- "strin</span>gs together.",
- "key": "summary"
- },
- {
- "highlightString": "Concatenates a <span class='highlight-string'>strin</span>g "
- "with a second string(s). The second parameter "
- "can be a string or array.",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "concat",
- "scheduled": 'false',
- "status": "incomplete",
- "summary": "Concatenates strings together.",
- "type": "automatic",
- "variables": {
- "error": "",
- "incoming": {
- "str": "$var.5023.return_data",
- "stringN": [
- "_side"
- ]
- },
- "outgoing": {
- "combinedStrings": 'null'
- }
- },
- "x": 0.37,
- "y": 0.17002881844380405
- },
- "5023": {
- "_id": "56396de1-c7b5-495e-aff8-342fe168a2b1",
- "app": "WorkFlowEngine",
- "deprecated": 'false',
- "description": "Query data using a dot/bracket notation string and a matching key/value pair.",
- "displayName": "WorkFlowEngine",
- "groups": [],
- "iterations": [
- "56396de1-c7b5-495e-aff8-342fe168a2b1"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "5023"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>query</span>",
- "key": "name"
- },
- {
- "highlightString": "<span class='highlight-string'>Query</span> Data Using "
- "'json-query' Format",
- "key": "summary"
- },
- {
- "highlightString": "<span class='highlight-string'>Query</span> data using a "
- "dot/bracket notation string and a matching key/value pair.",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "query",
- "scheduled": 'false',
- "status": "incomplete",
- "summary": "Query Data Using 'json-query' Format",
- "type": "operation",
- "variables": {
- "error": "",
- "incoming": {
- "obj": "$var.10d1.value",
- "pass_on_'null'": 'false',
- "query": "hello"
- },
- "outgoing": {
- "return_data": 'null'
- }
- },
- "x": 0.2630769230769231,
- "y": 0.2420749279538905
- },
- "7cd4": {
- "_id": "dc132a1a-4ac8-4bfe-b75d-ea95eac84d09",
- "actor": "job",
- "app": "WorkFlowEngine",
- "deprecated": 'false',
- "description": "Run a child Job inside a Workflow",
- "displayName": "WorkFlowEngine",
- "groups": [],
- "iterations": [
- "dc132a1a-4ac8-4bfe-b75d-ea95eac84d09"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "7cd4"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>child</span>Job",
- "key": "name"
- },
- {
- "highlightString": "Run <span class='highlight-string'>Child</span> Job",
- "key": "summary"
- },
- {
- "highlightString": "Run a <span class='highlight-string'>child</span>"
- " Job inside a Workflow",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "childJob",
- "status": "incomplete",
- "summary": "Run Child Job",
- "type": "operation",
- "variables": {
- "incoming": {
- "task": "",
- "variables": {
- "child1_body": {
- "task": "50c1",
- "value": "combinedStrings",
- "variable": ""
- }
- },
- "workflow": "child1"
- },
- "outgoing": {
- "job_details": 'null'
- }
- },
- "x": 0.6146153846153846,
- "y": 0.40634005763688763
- },
- "87f4": {
- "_id": "1f5da682-b377-4739-a60d-31d897c59863",
- "app": "MOP",
- "deprecated": 'false',
- "description": "MOP confirm Task",
- "displayName": "MOP",
- "groups": [
- "5b8fe4fcb3f8b800134ea5fc"
- ],
- "iterations": [
- "1f5da682-b377-4739-a60d-31d897c59863"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "87f4"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>confirm</span>Task",
- "key": "name"
- },
- {
- "highlightString": "MOP <span class='highlight-string'>confirm</span> Task",
- "key": "summary"
- },
- {
- "highlightString": "MOP <span class='highlight-string'>confirm</span> Task",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "confirmTask",
- "scheduled": 'false',
- "status": "incomplete",
- "summary": "MOP confirm Task",
- "type": "manual",
- "variables": {
- "error": "",
- "incoming": {
- "body": "<!value_output!>",
- "title": "Run Time Var",
- "variables": "$var.f97e.value"
- },
- "outgoing": {}
- },
- "view": "/mop/task/confirmTask",
- "x": 0.6961538461538461,
- "y": 0.06772334293948126
- },
- "f97e": {
- "_id": "38017b10-5e26-4161-bccb-c2f983dcf1ca",
- "app": "WorkFlowEngine",
- "deprecated": 'false',
- "description": "Create a new Job variable by Job ID and assign it a value.",
- "displayName": "WorkFlowEngine",
- "groups": [],
- "iterations": [
- "38017b10-5e26-4161-bccb-c2f983dcf1ca"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "f97e"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>new</span>Variable",
- "key": "name"
- },
- {
- "highlightString": "Create a <span class='highlight-string'>new</span>"
- " Job variable by Job ID and assign it a value.",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "newVariable",
- "status": "incomplete",
- "summary": "Create a Job Variable",
- "type": "operation",
- "variables": {
- "incoming": {
- "name": "run_time",
- "value": {
- "value_output": "I am RunTime Variable"
- }
- },
- "outgoing": {
- "value": 'null'
- }
- },
- "x": 0.45615384615384613,
- "y": -0.04755043227665706
- },
- "workflow_end": {
- "groups": [],
- "name": "workflow_end",
- "status": "incomplete",
- "x": 0.9,
- "y": 0.5979827089337176
- },
- "workflow_start": {
- "groups": [],
- "metrics": {
- "finish_state": "success",
- "start_time": 1551043499742,
- "user": "5b8fe4fcb3f8b800134ea5fd"
- },
- "name": "workflow_start",
- "status": "complete",
- "x": 0.04692307692307692,
- "y": 0.6023054755043228
- }
- },
- "transitions": {
- "10d1": {
- "5023": {
- "state": "success",
- "type": "standard"
- }
- },
- "5023": {
- "50c1": {
- "state": "success",
- "type": "standard"
- }
- },
- "50c1": {
- "f97e": {
- "state": "success",
- "type": "standard"
- }
- },
- "7cd4": {
- "workflow_end": {
- "state": "success",
- "type": "standard"
- }
- },
- "87f4": {
- "7cd4": {
- "state": "success",
- "type": "standard"
- }
- },
- "f97e": {
- "87f4": {
- "state": "success",
- "type": "standard"
- }
- },
- "workflow_end": {},
- "workflow_start": {
- "10d1": {
- "state": "success",
- "type": "standard"
- }
- }
- },
- "type": "automation",
- "variables": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "initiator": "admin@pronghorn",
- "value": "3333"
- },
- "watchers": [
- "5b8fe4fcb3f8b800134ea5fd"
- ]
- }
- iap_workflow.return_value = {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "created": "2018-09-15T21:57:50.388Z",
- "created_by": "5b8fe4fcb3f8b800134ea5fd",
- "description": "NewTestAnsible",
- "font_size": 12,
- "groups": [],
- "last_updated": "2019-02-22T15:55:40.197Z",
- "last_updated_by": "5b8fe4fcb3f8b800134ea5fd",
- "locked": 'false',
- "metrics": {
- "progress": 0,
- "start_time": 1551043499742,
- "user": "5b8fe4fcb3f8b800134ea5fd"
- },
- "name": "DummyWF",
- "status": "running",
- "tasks": {
- "10d1": {
- "_id": "1ca495e4-dc86-41df-b3ca-8c215920ec91",
- "app": "WorkFlowEngine",
- "deprecated": 'false',
- "description": "Create a new Job variable by Job ID and assign it a value.",
- "displayName": "WorkFlowEngine",
- "groups": [],
- "iterations": [
- "1ca495e4-dc86-41df-b3ca-8c215920ec91"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "10d1"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>new</span>Variable",
- "key": "name"
- },
- {
- "highlightString": "Create a <span class='highlight-string'>new</span> "
- "Job variable by Job ID and assign it a value.",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "newVariable",
- "status": "incomplete",
- "summary": "Create a Job Variable",
- "type": "operation",
- "variables": {
- "incoming": {
- "name": "anyVar",
- "value": {
- "hello": "hello_from_the_other"
- }
- },
- "outgoing": {
- "value": 'null'
- }
- },
- "x": 0.24,
- "y": 0.3904899135446686
- },
- "5023": {
- "_id": "56396de1-c7b5-495e-aff8-342fe168a2b1",
- "app": "WorkFlowEngine",
- "deprecated": 'false',
- "description": "Query data using a dot/bracket notation string and a matching key/value pair.",
- "displayName": "WorkFlowEngine",
- "groups": [],
- "iterations": [
- "56396de1-c7b5-495e-aff8-342fe168a2b1"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "5023"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>query</span>",
- "key": "name"
- },
- {
- "highlightString": "<span class='highlight-string'>Query</span> "
- "Data Using 'json-query' Format",
- "key": "summary"
- },
- {
- "highlightString": "<span class='highlight-string'>Query</span> "
- "data using a dot/bracket notation string and a "
- "matching key/value pair.",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "query",
- "scheduled": 'false',
- "status": "incomplete",
- "summary": "Query Data Using 'json-query' Format",
- "type": "operation",
- "variables": {
- "error": "",
- "incoming": {
- "obj": "$var.10d1.value",
- "pass_on_'null'": 'false',
- "query": "hello"
- },
- "outgoing": {
- "return_data": 'null'
- }
- },
- "x": 0.2630769230769231,
- "y": 0.2420749279538905
- },
- "50c1": {
- "_id": "33a32349-c151-4b67-b1cb-d5df2147772f",
- "actor": "Pronghorn",
- "app": "StringMethods",
- "deprecated": 'false',
- "description": "Concatenates a string with a second string(s). "
- "The second parameter can be a string or array.",
- "displayName": "String",
- "groups": [],
- "iterations": [
- "33a32349-c151-4b67-b1cb-d5df2147772f"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "50c1"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>Strin</span>gMethods",
- "key": "app"
- },
- {
- "highlightString": "Concatenates <span class='highlight-string'>strin</span>gs together.",
- "key": "summary"
- },
- {
- "highlightString": "Concatenates a <span class='highlight-string'>strin</span>g "
- "with a second string(s). The second parameter "
- "can be a string or array.",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "concat",
- "scheduled": 'false',
- "status": "incomplete",
- "summary": "Concatenates strings together.",
- "type": "automatic",
- "variables": {
- "error": "",
- "incoming": {
- "str": "$var.5023.return_data",
- "stringN": [
- "_side"
- ]
- },
- "outgoing": {
- "combinedStrings": 'null'
- }
- },
- "x": 0.37,
- "y": 0.17002881844380405
- },
- "7cd4": {
- "_id": "dc132a1a-4ac8-4bfe-b75d-ea95eac84d09",
- "actor": "job",
- "app": "WorkFlowEngine",
- "deprecated": 'false',
- "description": "Run a child Job inside a Workflow",
- "displayName": "WorkFlowEngine",
- "groups": [],
- "iterations": [
- "dc132a1a-4ac8-4bfe-b75d-ea95eac84d09"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "7cd4"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>child</span>Job",
- "key": "name"
- },
- {
- "highlightString": "Run <span class='highlight-string'>Child</span> Job",
- "key": "summary"
- },
- {
- "highlightString": "Run a <span class='highlight-string'>child</span> "
- "Job inside a Workflow",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "childJob",
- "status": "incomplete",
- "summary": "Run Child Job",
- "type": "operation",
- "variables": {
- "incoming": {
- "task": "",
- "variables": {
- "child1_body": {
- "task": "50c1",
- "value": "combinedStrings",
- "variable": ""
- }
- },
- "workflow": "child1"
- },
- "outgoing": {
- "job_details": 'null'
- }
- },
- "x": 0.6146153846153846,
- "y": 0.40634005763688763
- },
- "87f4": {
- "_id": "1f5da682-b377-4739-a60d-31d897c59863",
- "app": "MOP",
- "deprecated": 'false',
- "description": "MOP confirm Task",
- "displayName": "MOP",
- "groups": [
- "5b8fe4fcb3f8b800134ea5fc"
- ],
- "iterations": [
- "1f5da682-b377-4739-a60d-31d897c59863"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "87f4"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>confirm</span>Task",
- "key": "name"
- },
- {
- "highlightString": "MOP <span class='highlight-string'>confirm</span> Task",
- "key": "summary"
- },
- {
- "highlightString": "MOP <span class='highlight-string'>confirm</span> Task",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "confirmTask",
- "scheduled": 'false',
- "status": "incomplete",
- "summary": "MOP confirm Task",
- "type": "manual",
- "variables": {
- "error": "",
- "incoming": {
- "body": "<!value_output!>",
- "title": "Run Time Var",
- "variables": "$var.f97e.value"
- },
- "outgoing": {}
- },
- "view": "/mop/task/confirmTask",
- "x": 0.6961538461538461,
- "y": 0.06772334293948126
- },
- "f97e": {
- "_id": "38017b10-5e26-4161-bccb-c2f983dcf1ca",
- "app": "WorkFlowEngine",
- "deprecated": 'false',
- "description": "Create a new Job variable by Job ID and assign it a value.",
- "displayName": "WorkFlowEngine",
- "groups": [],
- "iterations": [
- "38017b10-5e26-4161-bccb-c2f983dcf1ca"
- ],
- "job": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "description": "NewTestAnsible",
- "index": 0,
- "name": "DummyWF",
- "task": "f97e"
- },
- "location": "Application",
- "locked": 'false',
- "matched": [
- {
- "highlightString": "<span class='highlight-string'>new</span>Variable",
- "key": "name"
- },
- {
- "highlightString": "Create a <span class='highlight-string'>new</span> "
- "Job variable by Job ID and assign it a value.",
- "key": "description"
- }
- ],
- "metrics": {
- "owner": ""
- },
- "name": "newVariable",
- "status": "incomplete",
- "summary": "Create a Job Variable",
- "type": "operation",
- "variables": {
- "incoming": {
- "name": "run_time",
- "value": {
- "value_output": "I am RunTime Variable"
- }
- },
- "outgoing": {
- "value": 'null'
- }
- },
- "x": 0.45615384615384613,
- "y": -0.04755043227665706
- },
- "workflow_end": {
- "groups": [],
- "name": "workflow_end",
- "status": "incomplete",
- "x": 0.9,
- "y": 0.5979827089337176
- },
- "workflow_start": {
- "groups": [],
- "metrics": {
- "finish_state": "success",
- "start_time": 1551043499742,
- "user": "5b8fe4fcb3f8b800134ea5fd"
- },
- "name": "workflow_start",
- "status": "complete",
- "x": 0.04692307692307692,
- "y": 0.6023054755043228
- }
- },
- "transitions": {
- "10d1": {
- "5023": {
- "state": "success",
- "type": "standard"
- }
- },
- "5023": {
- "50c1": {
- "state": "success",
- "type": "standard"
- }
- },
- "50c1": {
- "f97e": {
- "state": "success",
- "type": "standard"
- }
- },
- "7cd4": {
- "workflow_end": {
- "state": "success",
- "type": "standard"
- }
- },
- "87f4": {
- "7cd4": {
- "state": "success",
- "type": "standard"
- }
- },
- "f97e": {
- "87f4": {
- "state": "success",
- "type": "standard"
- }
- },
- "workflow_end": {},
- "workflow_start": {
- "10d1": {
- "state": "success",
- "type": "standard"
- }
- }
- },
- "type": "automation",
- "variables": {
- "_id": "e17646fc7a8f4a6a9e691fe4",
- "initiator": "admin@pronghorn",
- "value": "3333"
- },
- "watchers": [
- "5b8fe4fcb3f8b800134ea5fd"
- ]
- }
- result = iap_start_workflow.start_workflow(module)
- self.assertEqual(result, return_response)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/network/itential/test_iap_token.py b/test/units/modules/network/itential/test_iap_token.py
deleted file mode 100644
index 490097907e..0000000000
--- a/test/units/modules/network/itential/test_iap_token.py
+++ /dev/null
@@ -1,51 +0,0 @@
-"""
-iap_token unit tests
-"""
-# -*- coding: utf-8 -*-
-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# pylint: disable=invalid-name,protected-access,function-redefined,unused-argument
-# pylint: disable=unused-import,redundant-unittest-assert
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-import unittest
-
-
-class TestClass(unittest.TestCase):
- """
- Test cases
- """
- def _assert_incident_api(self, module, url, method, headers):
- """
- Setup Test
- """
- self.assertTrue('http://localhost:4007/login' in url, 'token')
- return Response(), {'status': 200}
-
- def test_incident_url(self):
- self.assertTrue(True, True)
-
-
-class Response(object):
- """
- Setup Response
- """
- def read(self):
- return '{"token": "ljhklj%3D"}'
diff --git a/test/units/modules/network/netact/test_netact_cm_command.py b/test/units/modules/network/netact/test_netact_cm_command.py
deleted file mode 100644
index 727b710923..0000000000
--- a/test/units/modules/network/netact/test_netact_cm_command.py
+++ /dev/null
@@ -1,172 +0,0 @@
-"""
-netact_cm_command unit tests
-"""
-
-# -*- coding: utf-8 -*-
-
-# (c) 2017, Nokia
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# pylint: disable=invalid-name,protected-access,function-redefined,unused-argument
-# pylint: disable=unused-import,redundant-unittest-assert
-
-from __future__ import (absolute_import, division, print_function)
-
-__metaclass__ = type
-
-from units.compat import unittest
-from ansible.module_utils import basic
-from ansible.modules.network.netact import netact_cm_command
-from units.compat.mock import patch
-
-from units.modules.utils import set_module_args, AnsibleExitJson, AnsibleFailJson
-
-
-class AnsibleExitJson(Exception):
- """Exception class to be raised by module.exit_json and caught by the test case"""
- pass
-
-
-class AnsibleFailJson(Exception):
- """Exception class to be raised by module.fail_json and caught by the test case"""
- pass
-
-
-def exit_json(*args, **kwargs):
- """function to patch over exit_json; package return data into an exception"""
- if 'changed' not in kwargs:
- kwargs['changed'] = False
- raise AnsibleExitJson(kwargs)
-
-
-def fail_json(*args, **kwargs):
- """function to patch over fail_json; package return data into an exception"""
- kwargs['failed'] = True
- raise AnsibleFailJson(kwargs)
-
-
-def get_bin_path(self, arg, required=False):
- """Mock AnsibleModule.get_bin_path"""
- if arg.endswith('netact_cm_command'):
- return '/usr/bin/my_command'
- else:
- if required:
- fail_json(msg='%r not found !' % arg)
-
-
-class TestClass(unittest.TestCase):
- """
- Test cases
- """
-
- def setUp(self):
- self.mock_module_helper = patch.multiple(basic.AnsibleModule,
- exit_json=exit_json,
- fail_json=fail_json,
- get_bin_path=get_bin_path)
- self.mock_module_helper.start()
- self.addCleanup(self.mock_module_helper.stop)
-
- def test_module_fail_when_required_args_missing(self):
- """
- Testing that command is failing if args are missing
- :return:
- """
- with self.assertRaises(AnsibleFailJson):
- set_module_args({})
- netact_cm_command.main()
- self.assertTrue(False)
-
- def test_ensure_command_called(self):
- """
- Testing that command is executed with correct args
- :return:
- """
- set_module_args({
- 'operation': "Upload",
- 'opsName': 'Uploading_testi',
- 'DN': "PLMN-PLMN/MRBTS-746",
- })
-
- with patch.object(basic.AnsibleModule, 'run_command') as mock_run_command:
- stdout = 'configuration updated'
- stderr = ''
- return_code = 0
- mock_run_command.return_value = return_code, stdout, stderr # successful execution
-
- with self.assertRaises(AnsibleExitJson) as result:
- netact_cm_command.main()
- print(result.exception.args)
- self.assertTrue(result.exception.args[0]['changed']) # ensure result is changed
-
- mock_run_command.assert_called_once_with(
- ['/opt/oss/bin/racclimx.sh', '-op', 'Upload', '-opsName', 'Uploading_testi',
- '-DN', 'PLMN-PLMN/MRBTS-746'],
- check_rc=True)
-
- def test_ensure_backupPlanName_outputs_correctly(self):
- """
- Testing that command is executed with correct args
- :return:
- """
- set_module_args({
- 'operation': "Provision",
- 'opsName': 'Provision_test',
- 'WS': "PLMN-PLMN/MRBTS-746",
- 'createBackupPlan': "Yes",
- 'backupPlanName': "backupPlanName"
- })
-
- with patch.object(basic.AnsibleModule, 'run_command') as mock_run_command:
- stdout = 'configuration updated'
- stderr = ''
- return_code = 0
- mock_run_command.return_value = return_code, stdout, stderr # successful execution
-
- with self.assertRaises(AnsibleExitJson) as result:
- netact_cm_command.main()
- print(result.exception.args)
- self.assertTrue(result.exception.args[0]['changed']) # ensure result is changed
-
- mock_run_command.assert_called_once_with(
- ['/opt/oss/bin/racclimx.sh', '-op', 'Provision', '-opsName', 'Provision_test',
- '-WS', 'PLMN-PLMN/MRBTS-746', '-createBackupPlan', 'true', '-backupPlanName', 'backupPlanName'],
- check_rc=True)
-
- def test_withwrongargs(self):
- """
- Testing that wrong attribute causing error
- :return:
- """
- set_module_args({
- 'operation': "Upload",
- 'opsName': 'Uploading_testi',
- 'MR': "PLMN-PLMN/MRBTS-746",
- 'abc': 'abc'
- })
-
- with self.assertRaises(AnsibleFailJson):
- with patch.object(basic.AnsibleModule, 'run_command') as mock_run_command:
- stdout = 'configuration updated'
- stderr = ''
- return_code = 0
- mock_run_command.return_value = return_code, stdout, stderr # successful execution
-
- with self.assertRaises(AnsibleExitJson) as result:
- netact_cm_command.main()
- self.assertTrue(result.exception.args[0]['changed']) # ensure result is changed
-
- self.assertFalse(True) # ensure result is changed
diff --git a/test/units/modules/network/netscaler/netscaler_module.py b/test/units/modules/network/netscaler/netscaler_module.py
deleted file mode 100644
index d9650502df..0000000000
--- a/test/units/modules/network/netscaler/netscaler_module.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import sys
-
-from units.compat.mock import patch, Mock
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-base_modules_mock = Mock()
-nitro_service_mock = Mock()
-nitro_exception_mock = Mock()
-
-
-base_modules_to_mock = {
- 'nssrc': base_modules_mock,
- 'nssrc.com': base_modules_mock,
- 'nssrc.com.citrix': base_modules_mock,
- 'nssrc.com.citrix.netscaler': base_modules_mock,
- 'nssrc.com.citrix.netscaler.nitro': base_modules_mock,
- 'nssrc.com.citrix.netscaler.nitro.resource': base_modules_mock,
- 'nssrc.com.citrix.netscaler.nitro.resource.config': base_modules_mock,
- 'nssrc.com.citrix.netscaler.nitro.exception': base_modules_mock,
- 'nssrc.com.citrix.netscaler.nitro.exception.nitro_exception': base_modules_mock,
- 'nssrc.com.citrix.netscaler.nitro.exception.nitro_exception.nitro_exception': nitro_exception_mock,
- 'nssrc.com.citrix.netscaler.nitro.service': base_modules_mock,
- 'nssrc.com.citrix.netscaler.nitro.service.nitro_service': base_modules_mock,
- 'nssrc.com.citrix.netscaler.nitro.service.nitro_service.nitro_service': nitro_service_mock,
-}
-
-nitro_base_patcher = patch.dict(sys.modules, base_modules_to_mock)
-
-
-class TestModule(ModuleTestCase):
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def exited(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- return result
diff --git a/test/units/modules/network/netscaler/test_netscaler_cs_action.py b/test/units/modules/network/netscaler/test_netscaler_cs_action.py
deleted file mode 100644
index aa1c772c8b..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_cs_action.py
+++ /dev/null
@@ -1,636 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerCSActionModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- m = MagicMock()
- cls.cs_action_mock = MagicMock()
- cls.cs_action_mock.__class__ = MagicMock(add=Mock())
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csaction': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csaction.csaction': cls.cs_action_mock,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerCSActionModule, self).setUp()
-
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerCSActionModule, self).tearDown()
-
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_cs_action
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_cs_action.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_cs_action.nitro_exception', MockException):
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_save_config_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- cs_action_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- action_exists=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- diff_list=Mock(return_value={}),
- ConfigProxy=Mock(return_value=cs_action_proxy_mock),
- ):
- self.module = netscaler_cs_action
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- cs_action_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- action_exists=Mock(side_effect=[True, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=Mock(return_value=cs_action_proxy_mock),
- ):
- self.module = netscaler_cs_action
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- cs_action_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- action_exists=Mock(side_effect=[False, True]),
- diff_list=Mock(return_value={}),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=Mock(return_value=cs_action_proxy_mock),
- ):
- self.module = netscaler_cs_action
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- cs_action_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- action_exists=Mock(side_effect=[True, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=Mock(return_value=cs_action_proxy_mock),
- ):
- self.module = netscaler_cs_action
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_new_cs_action_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_action_proxy_mock = Mock()
- cs_action_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_action_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- action_exists=Mock(side_effect=[False, True]),
- action_identical=Mock(side_effect=[True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_action
- self.exited()
- cs_action_proxy_mock.assert_has_calls([call.add()])
-
- def test_modified_cs_action_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_action_proxy_mock = Mock()
- cs_action_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_action_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- action_exists=Mock(side_effect=[True, True]),
- action_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_action
- self.exited()
- cs_action_proxy_mock.assert_has_calls([call.update()])
-
- def test_absent_cs_action_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_action_proxy_mock = Mock()
- cs_action_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_action_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- action_exists=Mock(side_effect=[True, False]),
- action_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_action
- self.exited()
- cs_action_proxy_mock.assert_has_calls([call.delete()])
-
- def test_present_cs_action_identical_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_action_proxy_mock = Mock()
- cs_action_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_action_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- action_exists=Mock(side_effect=[True, True]),
- action_identical=Mock(side_effect=[True, True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_action
- self.exited()
- cs_action_proxy_mock.assert_not_called()
-
- def test_absent_cs_action_noop_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_action_proxy_mock = Mock()
- cs_action_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_action_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- action_exists=Mock(side_effect=[False, False]),
- action_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_action
- self.exited()
- cs_action_proxy_mock.assert_not_called()
-
- def test_present_cs_action_failed_update(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_action_proxy_mock = Mock()
- cs_action_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_action_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- action_exists=Mock(side_effect=[True, True]),
- action_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertEqual(result['msg'], 'Content switching action differs from configured')
- self.assertTrue(result['failed'])
-
- def test_present_cs_action_failed_create(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_action_proxy_mock = Mock()
- cs_action_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_action_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- action_exists=Mock(side_effect=[False, False]),
- action_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertEqual(result['msg'], 'Content switching action does not exist')
- self.assertTrue(result['failed'])
-
- def test_present_cs_action_update_immutable_attribute(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_action_proxy_mock = Mock()
- cs_action_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_action_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=['domain']),
- action_exists=Mock(side_effect=[True, True]),
- action_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']')
- self.assertTrue(result['failed'])
-
- def test_absent_cs_action_failed_delete(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_action_proxy_mock = Mock()
- cs_action_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_action_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- action_exists=Mock(side_effect=[True, True]),
- action_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertEqual(result['msg'], 'Content switching action still exists')
- self.assertTrue(result['failed'])
-
- def test_graceful_nitro_exception_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- action_exists=m,
- ensure_feature_is_enabled=Mock(return_value=True),
- nitro_exception=MockException
- ):
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
-
- def test_graceful_nitro_exception_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_action
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_action',
- action_exists=m,
- ensure_feature_is_enabled=Mock(return_value=True),
- nitro_exception=MockException
- ):
- self.module = netscaler_cs_action
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
diff --git a/test/units/modules/network/netscaler/test_netscaler_cs_policy.py b/test/units/modules/network/netscaler/test_netscaler_cs_policy.py
deleted file mode 100644
index 0cb0ab65e8..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_cs_policy.py
+++ /dev/null
@@ -1,329 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-
-class TestNetscalerCSPolicyModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
- cls.MockException = MockException
- m = MagicMock()
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.cspolicy': m,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def set_module_state(self, state):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state=state,
- ))
-
- def setUp(self):
- super(TestNetscalerCSPolicyModule, self).setUp()
-
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- def tearDown(self):
- super(TestNetscalerCSPolicyModule, self).tearDown()
-
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- self.set_module_state('present')
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_cs_policy
- self.module = netscaler_cs_policy
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_cs_policy
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_cs_policy.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_cs_policy.nitro_exception', MockException):
- self.module = netscaler_cs_policy
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_cs_policy
-
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- get_nitro_client=m,
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_cs_policy
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_cs_policy
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_cs_policy
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_create_non_existing_cs_policy(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_cs_policy
- cs_policy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- cs_policy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=cs_policy_mock)
- policy_exists_mock = Mock(side_effect=[False, True])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- ConfigProxy=m,
- policy_exists=policy_exists_mock,
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ):
- self.module = netscaler_cs_policy
- result = self.exited()
- cs_policy_mock.assert_has_calls([call.add()])
- self.assertTrue(result['changed'], msg='Change not recorded')
-
- def test_update_cs_policy_when_cs_policy_differs(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_cs_policy
- cs_policy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- cs_policy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=cs_policy_mock)
- policy_exists_mock = Mock(side_effect=[True, True])
- policy_identical_mock = Mock(side_effect=[False, True])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- ConfigProxy=m,
- policy_exists=policy_exists_mock,
- policy_identical=policy_identical_mock,
- ensure_feature_is_enabled=Mock(),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_cs_policy
- result = self.exited()
- cs_policy_mock.assert_has_calls([call.update()])
- self.assertTrue(result['changed'], msg='Change not recorded')
-
- def test_no_change_to_module_when_all_identical(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_cs_policy
- cs_policy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- cs_policy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=cs_policy_mock)
- policy_exists_mock = Mock(side_effect=[True, True])
- policy_identical_mock = Mock(side_effect=[True, True])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- ConfigProxy=m,
- policy_exists=policy_exists_mock,
- policy_identical=policy_identical_mock,
- ensure_feature_is_enabled=Mock(),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_cs_policy
- result = self.exited()
- self.assertFalse(result['changed'], msg='Erroneous changed status update')
-
- def test_absent_operation(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_cs_policy
- cs_policy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- cs_policy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=cs_policy_mock)
- policy_exists_mock = Mock(side_effect=[True, False])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- ConfigProxy=m,
- policy_exists=policy_exists_mock,
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
-
- ):
- self.module = netscaler_cs_policy
- result = self.exited()
- cs_policy_mock.assert_has_calls([call.delete()])
- self.assertTrue(result['changed'], msg='Changed status not set correctly')
-
- def test_absent_operation_no_change(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_cs_policy
- cs_policy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- cs_policy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=cs_policy_mock)
- policy_exists_mock = Mock(side_effect=[False, False])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- ConfigProxy=m,
- policy_exists=policy_exists_mock,
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
-
- ):
- self.module = netscaler_cs_policy
- result = self.exited()
- cs_policy_mock.assert_not_called()
- self.assertFalse(result['changed'], msg='Changed status not set correctly')
-
- def test_graceful_nitro_exception_operation_present(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_cs_policy
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- policy_exists=m,
- ensure_feature_is_enabled=Mock(),
- nitro_exception=MockException
- ):
- self.module = netscaler_cs_policy
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation present'
- )
-
- def test_graceful_nitro_exception_operation_absent(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_cs_policy
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- policy_exists=m,
- nitro_exception=MockException,
- ensure_feature_is_enabled=Mock(),
- ):
- self.module = netscaler_cs_policy
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
-
- def test_ensure_feature_is_enabled_called(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_cs_policy
-
- client_mock = Mock()
- ensure_feature_is_enabled_mock = Mock()
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_policy',
- get_nitro_client=Mock(return_value=client_mock),
- policy_exists=Mock(side_effect=[True, True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=ensure_feature_is_enabled_mock,
- ):
- self.module = netscaler_cs_policy
- result = self.exited()
- ensure_feature_is_enabled_mock.assert_has_calls([call(client_mock, 'CS')])
diff --git a/test/units/modules/network/netscaler/test_netscaler_cs_vserver.py b/test/units/modules/network/netscaler/test_netscaler_cs_vserver.py
deleted file mode 100644
index b264661b65..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_cs_vserver.py
+++ /dev/null
@@ -1,765 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerCSVserverModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- m = MagicMock()
- cls.cs_vserver_mock = MagicMock()
- cls.cs_vserver_mock.__class__ = MagicMock(add=Mock())
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver.csvserver': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_cspolicy_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_cspolicy_binding.csvserver_cspolicy_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_lbvserver_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_lbvserver_binding.csvserver_lbvserver_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding.sslvserver_sslcertkey_binding': m,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerCSVserverModule, self).setUp()
-
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerCSVserverModule, self).tearDown()
-
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_cs_vserver
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_cs_vserver.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_cs_vserver.nitro_exception', MockException):
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_save_config_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- cs_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- cs_vserver_exists=Mock(side_effect=[False, True]),
- cs_vserver_identical=Mock(side_effect=[True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- diff_list=Mock(return_value={}),
- nitro_exception=self.MockException,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ConfigProxy=Mock(return_value=cs_vserver_proxy_mock),
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- cs_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- cs_vserver_exists=Mock(side_effect=[True, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=Mock(return_value=cs_vserver_proxy_mock),
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- cs_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- cs_vserver_exists=Mock(side_effect=[False, True]),
- cs_vserver_identical=Mock(side_effect=[True]),
- diff_list=Mock(return_value={}),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- nitro_exception=self.MockException,
- ConfigProxy=Mock(return_value=cs_vserver_proxy_mock),
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- cs_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- cs_vserver_exists=Mock(side_effect=[True, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=Mock(return_value=cs_vserver_proxy_mock),
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_new_cs_vserver_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- cs_vserver_exists=Mock(side_effect=[False, True]),
- cs_vserver_identical=Mock(side_effect=[True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- nitro_exception=self.MockException,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- cs_vserver_proxy_mock.assert_has_calls([call.add()])
-
- def test_modified_cs_vserver_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- cs_vserver_exists=Mock(side_effect=[True, True]),
- cs_vserver_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- nitro_exception=self.MockException,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- cs_vserver_proxy_mock.assert_has_calls([call.update()])
-
- def test_absent_cs_vserver_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- cs_vserver_exists=Mock(side_effect=[True, False]),
- cs_vserver_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- cs_vserver_proxy_mock.assert_has_calls([call.delete()])
-
- def test_present_cs_vserver_identical_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- cs_vserver_exists=Mock(side_effect=[True, True]),
- cs_vserver_identical=Mock(side_effect=[True, True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- cs_vserver_proxy_mock.assert_not_called()
-
- def test_absent_cs_vserver_noop_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- cs_vserver_exists=Mock(side_effect=[False, False]),
- cs_vserver_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- cs_vserver_proxy_mock.assert_not_called()
-
- def test_present_cs_vserver_failed_update(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- cs_vserver_exists=Mock(side_effect=[True, True]),
- cs_vserver_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'CS vserver differs from configured')
- self.assertTrue(result['failed'])
-
- def test_present_cs_vserver_failed_create(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- cs_vserver_exists=Mock(side_effect=[False, False]),
- cs_vserver_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'CS vserver does not exist')
- self.assertTrue(result['failed'])
-
- def test_present_cs_vserver_update_immutable_attribute(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=['domain']),
- cs_vserver_exists=Mock(side_effect=[True, True]),
- cs_vserver_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']')
- self.assertTrue(result['failed'])
-
- def test_absent_cs_vserver_failed_delete(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- cs_vserver_exists=Mock(side_effect=[True, True]),
- cs_vserver_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'CS vserver still exists')
- self.assertTrue(result['failed'])
-
- def test_graceful_nitro_exception_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- cs_vserver_exists=m,
- ensure_feature_is_enabled=Mock(return_value=True),
- nitro_exception=MockException
- ):
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
-
- def test_graceful_nitro_exception_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- cs_vserver_exists=m,
- ensure_feature_is_enabled=Mock(return_value=True),
- nitro_exception=MockException
- ):
- self.module = netscaler_cs_vserver
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
-
- def test_disabled_state_change_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
-
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- cs_vserver_proxy_mock = Mock()
-
- do_state_change_mock = Mock(return_value=Mock(errorcode=0))
- client_mock = Mock()
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- ConfigProxy=Mock(return_value=cs_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- cs_vserver_exists=Mock(side_effect=[True, True]),
- cs_vserver_identical=Mock(side_effect=[True, True]),
- nitro_exception=self.MockException,
- do_state_change=do_state_change_mock,
- ):
- self.module = netscaler_cs_vserver
- self.exited()
- self.assertTrue(len(do_state_change_mock.mock_calls) > 0, msg='Did not call state change')
-
- def test_cs_vserver_ssl_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- servicetype='SSL',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
- ssl_certkey_bindings_sync_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- cs_vserver_exists=Mock(side_effect=[True, True]),
- cs_vserver_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ssl_certkey_bindings_identical=Mock(side_effect=[False, True]),
- ssl_certkey_bindings_sync=ssl_certkey_bindings_sync_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- result = self.exited()
- self.assertTrue(result['changed'])
- self.assertTrue(ssl_certkey_bindings_sync_mock.called)
-
- def test_cs_vserver_ssl_not_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_cs_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- cs_vserver_proxy_mock = Mock()
- cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock)
- ssl_certkey_bindings_sync_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_cs_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- cs_vserver_exists=Mock(side_effect=[True, True]),
- cs_vserver_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(return_value=True),
- ssl_certkey_bindings_identical=Mock(side_effect=[False, True]),
- ssl_certkey_bindings_sync=ssl_certkey_bindings_sync_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_cs_vserver
- result = self.exited()
- self.assertTrue(result['changed'])
- self.assertFalse(ssl_certkey_bindings_sync_mock.called)
diff --git a/test/units/modules/network/netscaler/test_netscaler_gslb_service.py b/test/units/modules/network/netscaler/test_netscaler_gslb_service.py
deleted file mode 100644
index 44bf299ba1..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_gslb_service.py
+++ /dev/null
@@ -1,735 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerGSLBSiteModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- m = MagicMock()
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice.gslbservice': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice_lbmonitor_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice_lbmonitor_binding.gslbservice_lbmonitor_binding': m,
-
- # The following are needed because of monkey_patch_nitro_api()
- 'nssrc.com.citrix.netscaler.nitro.resource.base': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.base.Json': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.base.Json.Json': m,
- 'nssrc.com.citrix.netscaler.nitro.util': m,
- 'nssrc.com.citrix.netscaler.nitro.util.nitro_util': m,
- 'nssrc.com.citrix.netscaler.nitro.util.nitro_util.nitro_util': m,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerGSLBSiteModule, self).setUp()
-
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerGSLBSiteModule, self).tearDown()
-
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_gslb_service
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_gslb_service.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_gslb_service.nitro_exception', MockException):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- monkey_patch_nitro_api=Mock(),
- nitro_exception=MockException,
- ):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_ensure_feature_is_enabled_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- gslb_service_proxy_mock = Mock()
- ensure_feature_is_enabled_mock = Mock()
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=Mock(return_value=client_mock),
- gslb_service_exists=Mock(side_effect=[False, True]),
- gslb_service_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=ensure_feature_is_enabled_mock,
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_service
- self.exited()
- ensure_feature_is_enabled_mock.assert_called_with(client_mock, 'GSLB')
-
- def test_save_config_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_service_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- gslb_service_exists=Mock(side_effect=[False, True]),
- gslb_service_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_service
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_service_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- gslb_service_exists=Mock(side_effect=[True, False]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_service
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_service_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- gslb_service_exists=Mock(side_effect=[False, True]),
- gslb_service_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_service
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_service_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- gslb_service_exists=Mock(side_effect=[True, False]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_service
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_new_gslb_site_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- gslb_service_exists=Mock(side_effect=[False, True]),
- gslb_service_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- self.exited()
- gslb_service_proxy_mock.assert_has_calls([call.add()])
-
- def test_modified_gslb_site_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_service_exists=Mock(side_effect=[True, True]),
- gslb_service_identical=Mock(side_effect=[False, False, True]),
- monitor_bindings_identical=Mock(side_effect=[True, True, True]),
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- nitro_exception=self.MockException,
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- self.exited()
- gslb_service_proxy_mock.assert_has_calls([call.update()])
-
- def test_absent_gslb_site_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_service_exists=Mock(side_effect=[True, False]),
- gslb_service_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- self.exited()
- gslb_service_proxy_mock.assert_has_calls([call.delete()])
-
- def test_present_gslb_service_identical_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_service_exists=Mock(side_effect=[True, True]),
- gslb_service_identical=Mock(side_effect=[True, True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- self.exited()
- gslb_service_proxy_mock.assert_not_called()
-
- def test_absent_gslb_site_noop_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_service_exists=Mock(side_effect=[False, False]),
- gslb_service_identical=Mock(side_effect=[False, False]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- self.exited()
- gslb_service_proxy_mock.assert_not_called()
-
- def test_present_gslb_site_failed_update(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_service_exists=Mock(side_effect=[True, True]),
- gslb_service_identical=Mock(side_effect=[False, False, False]),
- monitor_bindings_identical=Mock(side_effect=[True, True, True]),
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertEqual(result['msg'], 'GSLB service differs from configured')
- self.assertTrue(result['failed'])
-
- def test_present_gslb_site_failed_monitor_bindings_update(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_service_exists=Mock(side_effect=[True, True]),
- gslb_service_identical=Mock(side_effect=[False, False, True]),
- monitor_bindings_identical=Mock(side_effect=[False, False, False]),
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertEqual(result['msg'], 'Monitor bindings differ from configured')
- self.assertTrue(result['failed'])
-
- def test_present_gslb_site_failed_create(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_service_exists=Mock(side_effect=[False, False]),
- gslb_service_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertEqual(result['msg'], 'GSLB service does not exist')
- self.assertTrue(result['failed'])
-
- def test_present_gslb_site_update_immutable_attribute(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=['domain']),
- gslb_service_exists=Mock(side_effect=[True, True]),
- gslb_service_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']')
- self.assertTrue(result['failed'])
-
- def test_absent_gslb_site_failed_delete(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_service_exists=Mock(side_effect=[True, True]),
- gslb_service_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertEqual(result['msg'], 'GSLB service still exists')
- self.assertTrue(result['failed'])
-
- def test_graceful_nitro_exception_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- gslb_service_exists=m,
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- nitro_exception=MockException
- ):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
-
- def test_graceful_nitro_exception_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_service
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_service',
- gslb_service_exists=m,
- ensure_feature_is_enabled=Mock(),
- monkey_patch_nitro_api=Mock(),
- nitro_exception=MockException
- ):
- self.module = netscaler_gslb_service
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
diff --git a/test/units/modules/network/netscaler/test_netscaler_gslb_site.py b/test/units/modules/network/netscaler/test_netscaler_gslb_site.py
deleted file mode 100644
index a9ed138b92..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_gslb_site.py
+++ /dev/null
@@ -1,668 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerGSLBSiteModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- m = MagicMock()
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbsite': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbsite.gslbsite': m,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerGSLBSiteModule, self).setUp()
-
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerGSLBSiteModule, self).tearDown()
-
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_gslb_site
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_gslb_site.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_gslb_site.nitro_exception', MockException):
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_ensure_feature_is_enabled_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- gslb_site_proxy_mock = Mock()
- ensure_feature_is_enabled_mock = Mock()
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=Mock(return_value=client_mock),
- gslb_site_exists=Mock(side_effect=[False, True]),
- gslb_site_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=ensure_feature_is_enabled_mock,
- ConfigProxy=Mock(return_value=gslb_site_proxy_mock),
- ):
- self.module = netscaler_gslb_site
- self.exited()
- ensure_feature_is_enabled_mock.assert_called_with(client_mock, 'GSLB')
-
- def test_save_config_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_site_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- gslb_site_exists=Mock(side_effect=[False, True]),
- gslb_site_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=Mock(return_value=gslb_site_proxy_mock),
- ):
- self.module = netscaler_gslb_site
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_site_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- gslb_site_exists=Mock(side_effect=[True, False]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=Mock(return_value=gslb_site_proxy_mock),
- ):
- self.module = netscaler_gslb_site
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_site_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- gslb_site_exists=Mock(side_effect=[False, True]),
- gslb_site_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=Mock(return_value=gslb_site_proxy_mock),
- ):
- self.module = netscaler_gslb_site
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_site_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- gslb_site_exists=Mock(side_effect=[True, False]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=Mock(return_value=gslb_site_proxy_mock),
- ):
- self.module = netscaler_gslb_site
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_new_gslb_site_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_site_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_site_proxy_mock = Mock()
- gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- gslb_site_exists=Mock(side_effect=[False, True]),
- gslb_site_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_site
- self.exited()
- gslb_site_proxy_mock.assert_has_calls([call.add()])
-
- def test_modified_gslb_site_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_site_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_site_proxy_mock = Mock()
- gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_site_exists=Mock(side_effect=[True, True]),
- gslb_site_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(),
- nitro_exception=self.MockException,
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_site
- self.exited()
- gslb_site_proxy_mock.assert_has_calls([call.update()])
-
- def test_absent_gslb_site_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_site_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_site_proxy_mock = Mock()
- gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_site_exists=Mock(side_effect=[True, False]),
- gslb_site_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_site
- self.exited()
- gslb_site_proxy_mock.assert_has_calls([call.delete()])
-
- def test_present_gslb_site_identical_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_site_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_site_proxy_mock = Mock()
- gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_site_exists=Mock(side_effect=[True, True]),
- gslb_site_identical=Mock(side_effect=[True, True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_site
- self.exited()
- gslb_site_proxy_mock.assert_not_called()
-
- def test_absent_gslb_site_noop_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_site_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_site_proxy_mock = Mock()
- gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_site_exists=Mock(side_effect=[False, False]),
- gslb_site_identical=Mock(side_effect=[False, False]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_site
- self.exited()
- gslb_site_proxy_mock.assert_not_called()
-
- def test_present_gslb_site_failed_update(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_site_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_site_proxy_mock = Mock()
- gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_site_exists=Mock(side_effect=[True, True]),
- gslb_site_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertEqual(result['msg'], 'GSLB site differs from configured')
- self.assertTrue(result['failed'])
-
- def test_present_gslb_site_failed_create(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_site_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_site_proxy_mock = Mock()
- gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_site_exists=Mock(side_effect=[False, False]),
- gslb_site_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertEqual(result['msg'], 'GSLB site does not exist')
- self.assertTrue(result['failed'])
-
- def test_present_gslb_site_update_immutable_attribute(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_site_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_site_proxy_mock = Mock()
- gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=['domain']),
- gslb_site_exists=Mock(side_effect=[True, True]),
- gslb_site_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']')
- self.assertTrue(result['failed'])
-
- def test_absent_gslb_site_failed_delete(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_site_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_site_proxy_mock = Mock()
- gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_site_exists=Mock(side_effect=[True, True]),
- gslb_site_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertEqual(result['msg'], 'GSLB site still exists')
- self.assertTrue(result['failed'])
-
- def test_graceful_nitro_exception_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- gslb_site_exists=m,
- ensure_feature_is_enabled=Mock(),
- nitro_exception=MockException
- ):
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
-
- def test_graceful_nitro_exception_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_site
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_site',
- gslb_site_exists=m,
- ensure_feature_is_enabled=Mock(),
- nitro_exception=MockException
- ):
- self.module = netscaler_gslb_site
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
diff --git a/test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py b/test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py
deleted file mode 100644
index acf9782eec..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py
+++ /dev/null
@@ -1,758 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerGSLBVserverModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- m = MagicMock()
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver.gslbvserver': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_gslbservice_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_gslbservice_binding.gslbvserver_gslbservice_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_domain_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_domain_binding.gslbvserver_domain_binding': m,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerGSLBVserverModule, self).setUp()
-
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerGSLBVserverModule, self).tearDown()
-
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_gslb_vserver.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_gslb_vserver.nitro_exception', MockException):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_ensure_feature_is_enabled_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- gslb_service_proxy_mock = Mock()
- ensure_feature_is_enabled_mock = Mock()
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- gslb_vserver_exists=Mock(side_effect=[False, True]),
- gslb_vserver_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=ensure_feature_is_enabled_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- ensure_feature_is_enabled_mock.assert_called_with(client_mock, 'GSLB')
-
- def test_save_config_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_service_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- gslb_vserver_exists=Mock(side_effect=[False, True]),
- gslb_vserver_identical=Mock(side_effect=[True]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_service_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- gslb_vserver_exists=Mock(side_effect=[True, False]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_service_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- gslb_vserver_exists=Mock(side_effect=[False, True]),
- gslb_vserver_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- gslb_service_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- gslb_vserver_exists=Mock(side_effect=[True, False]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_new_gslb_vserver_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- gslb_vserver_exists=Mock(side_effect=[False, True]),
- gslb_vserver_identical=Mock(side_effect=[True]),
- nitro_exception=self.MockException,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- gslb_service_proxy_mock.assert_has_calls([call.add()])
-
- def test_modified_gslb_vserver_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_vserver_exists=Mock(side_effect=[True, True]),
- gslb_vserver_identical=Mock(side_effect=[False, False, True]),
- ensure_feature_is_enabled=Mock(),
- domain_bindings_identical=Mock(side_effect=[True, True, True]),
- service_bindings_identical=Mock(side_effect=[True, True, True]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- nitro_exception=self.MockException,
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- gslb_service_proxy_mock.assert_has_calls([call.update()])
-
- def test_absent_gslb_vserver_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_vserver_exists=Mock(side_effect=[True, False]),
- gslb_vserver_identical=Mock(side_effect=[False, True]),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- gslb_service_proxy_mock.assert_has_calls([call.delete()])
-
- def test_present_gslb_vserver_identical_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_vserver_exists=Mock(side_effect=[True, True]),
- gslb_vserver_identical=Mock(side_effect=[True, True]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- gslb_service_proxy_mock.assert_not_called()
-
- def test_present_gslb_vserver_domain_bindings_error_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_vserver_exists=Mock(side_effect=[True, True]),
- gslb_vserver_identical=Mock(side_effect=[True, True, True]),
- domain_bindings_identical=Mock(side_effect=[False, False, False]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'Domain bindings differ from configured')
- self.assertTrue(result['failed'])
-
- def test_present_gslb_vserver_service_bindings_error_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_vserver_exists=Mock(side_effect=[True, True]),
- gslb_vserver_identical=Mock(side_effect=[True, True, True]),
- service_bindings_identical=Mock(side_effect=[False, False, False]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'Service bindings differ from configured')
- self.assertTrue(result['failed'])
-
- def test_absent_gslb_vserver_noop_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_vserver_exists=Mock(side_effect=[False, False]),
- gslb_vserver_identical=Mock(side_effect=[False, False]),
- nitro_exception=self.MockException,
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- self.exited()
- gslb_service_proxy_mock.assert_not_called()
-
- def test_present_gslb_vserver_failed_update(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_vserver_exists=Mock(side_effect=[True, True]),
- gslb_vserver_identical=Mock(side_effect=[False, False, False]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'GSLB Vserver differs from configured')
- self.assertTrue(result['failed'])
-
- def test_present_gslb_vserver_failed_create(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- gslb_vserver_exists=Mock(side_effect=[False, False]),
- gslb_vserver_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'GSLB Vserver does not exist')
- self.assertTrue(result['failed'])
-
- def test_present_gslb_vserver_update_immutable_attribute(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=['domain']),
- gslb_vserver_exists=Mock(side_effect=[True, True]),
- gslb_vserver_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']')
- self.assertTrue(result['failed'])
-
- def test_absent_gslb_vserver_failed_delete(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- glsb_service_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- gslb_service_proxy_mock = Mock()
- gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
- config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- gslb_vserver_exists=Mock(side_effect=[True, True]),
- gslb_vserver_identical=Mock(side_effect=[False, False]),
- ensure_feature_is_enabled=Mock(),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'GSLB Vserver still exists')
- self.assertTrue(result['failed'])
-
- def test_graceful_nitro_exception_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- gslb_vserver_exists=m,
- ensure_feature_is_enabled=Mock(),
- nitro_exception=MockException
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
-
- def test_graceful_nitro_exception_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_gslb_vserver
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_gslb_vserver',
- gslb_vserver_exists=m,
- ensure_feature_is_enabled=Mock(),
- nitro_exception=MockException
- ):
- self.module = netscaler_gslb_vserver
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
diff --git a/test/units/modules/network/netscaler/test_netscaler_lb_monitor.py b/test/units/modules/network/netscaler/test_netscaler_lb_monitor.py
deleted file mode 100644
index e405e77645..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_lb_monitor.py
+++ /dev/null
@@ -1,518 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerLBVServerModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- m = MagicMock()
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor.lbvmonitor': m,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerLBVServerModule, self).setUp()
-
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerLBVServerModule, self).tearDown()
-
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_lb_monitor
- self.module = netscaler_lb_monitor
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_lb_monitor
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=m,
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_monitor
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=m,
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_monitor
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_save_config_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=m,
- lbmonitor_exists=Mock(side_effect=[False, True]),
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- ):
- self.module = netscaler_lb_monitor
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=m,
- lbmonitor_exists=Mock(side_effect=[True, False]),
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- ):
- self.module = netscaler_lb_monitor
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=m,
- lbmonitor_exists=Mock(side_effect=[False, True]),
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- ):
- self.module = netscaler_lb_monitor
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=m,
- lbmonitor_exists=Mock(side_effect=[True, False]),
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- ):
- self.module = netscaler_lb_monitor
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_ensure_feature_is_enabled_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- client_mock = Mock()
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
- feature_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=Mock(return_value=client_mock),
- lbmonitor_exists=Mock(side_effect=[True, True]),
- lbmonitor_identical=Mock(side_effect=[True, True]),
-
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=feature_mock,
- ):
- self.module = netscaler_lb_monitor
- self.exited()
- feature_mock.assert_called_with(client_mock, 'LB')
-
- def test_ensure_feature_is_enabled_nitro_exception_caught(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- client_mock = Mock()
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
- errorcode = 10
- message = 'mock error'
-
- class MockException(Exception):
- def __init__(self):
- self.errorcode = errorcode
- self.message = message
-
- feature_mock = Mock(side_effect=MockException)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=Mock(return_value=client_mock),
- lbmonitor_exists=Mock(side_effect=[True, True]),
- lbmonitor_identical=Mock(side_effect=[True, True]),
-
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=feature_mock,
- nitro_exception=MockException,
- ):
- self.module = netscaler_lb_monitor
- result = self.failed()
- expected_msg = 'nitro exception errorcode=%s, message=%s' % (errorcode, message)
- self.assertEqual(result['msg'], expected_msg, 'Failed to handle nitro exception')
-
- def test_create_new_lb_monitor_workflow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=Mock(return_value=Mock()),
- lbmonitor_exists=Mock(side_effect=[False, True]),
- lbmonitor_identical=Mock(side_effect=[True]),
-
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- ):
- self.module = netscaler_lb_monitor
- result = self.exited()
- lb_monitor_proxy_mock.assert_has_calls([call.add()])
- self.assertTrue(result['changed'])
-
- def test_update_lb_monitor_workflow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=Mock(return_value=Mock()),
- lbmonitor_exists=Mock(side_effect=[True, True]),
- lbmonitor_identical=Mock(side_effect=[False, True]),
-
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- get_immutables_intersection=Mock(return_value=[]),
- diff_list=Mock(return_value={}),
- ):
- self.module = netscaler_lb_monitor
- result = self.exited()
- lb_monitor_proxy_mock.assert_has_calls([call.update()])
- self.assertTrue(result['changed'])
-
- def test_lb_monitor_exists_sanity_check(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=Mock(return_value=client_mock),
- lbmonitor_exists=Mock(side_effect=[False, False]),
- lbmonitor_identical=Mock(side_effect=[False, True]),
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_monitor
- result = self.failed()
- self.assertEqual(result['msg'], 'lb monitor does not exist')
-
- def test_lb_monitor_identical_sanity_check(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=Mock(return_value=client_mock),
- lbmonitor_exists=Mock(side_effect=[True, True]),
- lbmonitor_identical=Mock(side_effect=[False, False]),
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- get_immutables_intersection=(Mock(return_value=[])),
- nitro_exception=self.MockException,
- diff_list=Mock(return_value={}),
- ):
- self.module = netscaler_lb_monitor
- result = self.failed()
- self.assertEqual(result['msg'], 'lb monitor is not configured correctly')
-
- def test_absent_state_workflow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- client_mock = Mock()
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=Mock(return_value=client_mock),
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- lbmonitor_exists=Mock(side_effect=[True, False]),
- ):
- self.module = netscaler_lb_monitor
- result = self.exited()
- lb_monitor_proxy_mock.assert_has_calls([call.delete()])
- self.assertTrue(result['changed'])
-
- def test_absent_state_sanity_check(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- client_mock = Mock()
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=Mock(return_value=client_mock),
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- lbmonitor_exists=Mock(side_effect=[True, True]),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_monitor
- result = self.failed()
- lb_monitor_proxy_mock.assert_has_calls([call.delete()])
- self.assertEqual(result['msg'], 'lb monitor still exists')
-
- def test_get_immutables_failure(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
-
- from ansible.modules.network.netscaler import netscaler_lb_monitor
-
- lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))
-
- client_mock = Mock()
- m = Mock(return_value=['some'])
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_monitor',
- get_nitro_client=Mock(return_value=client_mock),
- ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
- ensure_feature_is_enabled=Mock(),
- lbmonitor_exists=Mock(side_effect=[True, True]),
- lbmonitor_identical=Mock(side_effect=[False, True]),
- get_immutables_intersection=m,
- diff_list=Mock(return_value={}),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_monitor
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('Cannot update immutable attributes'),
- msg='Did not handle immutables error correctly',
- )
diff --git a/test/units/modules/network/netscaler/test_netscaler_lb_vserver.py b/test/units/modules/network/netscaler/test_netscaler_lb_vserver.py
deleted file mode 100644
index 1f95f861bf..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_lb_vserver.py
+++ /dev/null
@@ -1,840 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerLBVServerModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- m = MagicMock()
- cls.server_mock = MagicMock()
- cls.server_mock.__class__ = MagicMock(add=Mock())
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver.lbvserver': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_service_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_service_binding.lbvserver_service_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_servicegroup_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_servicegroup_binding.lbvserver_servicegroup_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding.sslvserver_sslcertkey_binding': m,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerLBVServerModule, self).setUp()
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerLBVServerModule, self).tearDown()
-
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_lb_vserver
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_lb_vserver.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_lb_vserver.nitro_exception', MockException):
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=m,
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=m,
- nitro_exception=self.MockException,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_save_config_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- lb_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=m,
- lb_vserver_exists=Mock(side_effect=[False, True]),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_lb_vserver
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- lb_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=m,
- lb_vserver_exists=Mock(side_effect=[True, False]),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_lb_vserver
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- lb_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=m,
- lb_vserver_exists=Mock(side_effect=[False, True]),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_lb_vserver
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- lb_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=m,
- lb_vserver_exists=Mock(side_effect=[True, False]),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_lb_vserver
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_ensure_feature_is_enabled_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- client_mock = Mock()
-
- lb_vserver_proxy_mock = Mock()
- feature_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[True, True]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[True, True]),
-
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=feature_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_lb_vserver
- self.exited()
- feature_mock.assert_called_with(client_mock, 'LB')
-
- def test_ensure_feature_is_enabled_nitro_exception_caught(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- client_mock = Mock()
-
- lb_vserver_proxy_mock = Mock()
- errorcode = 10
- message = 'mock error'
-
- class MockException(Exception):
- def __init__(self):
- self.errorcode = errorcode
- self.message = message
-
- feature_mock = Mock(side_effect=MockException)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[True, True]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[True, True]),
-
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=feature_mock,
- nitro_exception=MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- expected_msg = 'nitro exception errorcode=%s, message=%s' % (errorcode, message)
- self.assertEqual(result['msg'], expected_msg, 'Failed to handle nitro exception')
-
- def test_create_new_lb_vserver_workflow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=Mock()),
- lb_vserver_exists=Mock(side_effect=[False, True]),
- lb_vserver_identical=Mock(side_effect=[True]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[True, True]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
-
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- ):
- self.module = netscaler_lb_vserver
- result = self.exited()
- lb_vserver_proxy_mock.assert_has_calls([call.add()])
- self.assertTrue(result['changed'])
-
- def test_update_lb_vserver_workflow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=Mock()),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False, True]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[True, True]),
-
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=Mock(return_value=[]),
- ):
- self.module = netscaler_lb_vserver
- result = self.exited()
- lb_vserver_proxy_mock.assert_has_calls([call.update()])
- self.assertTrue(result['changed'])
-
- def test_service_bindings_handling(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
- configured_dict = {
- 'first': Mock(),
- 'second': Mock(has_equal_attributes=Mock(return_value=False)),
- }
-
- actual_dict = {
- 'second': Mock(),
- 'third': Mock(),
- }
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False, True]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[False, True]),
- get_configured_service_bindings=Mock(return_value=configured_dict),
- get_actual_service_bindings=Mock(return_value=actual_dict),
-
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=(Mock(return_value=[])),
- ):
- self.module = netscaler_lb_vserver
- result = self.exited()
- configured_dict['first'].assert_has_calls([call.add()])
-
- configured_dict['second'].assert_has_calls([call.has_equal_attributes(actual_dict['second']), call.add()])
-
- actual_dict['second'].assert_has_calls([call.delete(client_mock, actual_dict['second'])])
-
- actual_dict['third'].assert_has_calls([call.delete(client_mock, actual_dict['third'])])
-
- self.assertTrue(result['changed'])
-
- def test_servicegroup_bindings_handling(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
- configured_dict = {
- 'first': Mock(),
- 'second': Mock(has_equal_attributes=Mock(return_value=False)),
- }
-
- actual_dict = {
- 'second': Mock(),
- 'third': Mock(),
- }
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False, True]),
- servicegroup_bindings_identical=Mock(side_effect=[False, True]),
- service_bindings_identical=Mock(side_effect=[True, True]),
- get_configured_servicegroup_bindings=Mock(return_value=configured_dict),
- get_actual_servicegroup_bindings=Mock(return_value=actual_dict),
-
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=(Mock(return_value=[])),
- ):
- self.module = netscaler_lb_vserver
- result = self.exited()
- configured_dict['first'].assert_has_calls([call.add()])
-
- configured_dict['second'].assert_has_calls([call.has_equal_attributes(actual_dict['second']), call.add()])
-
- actual_dict['second'].assert_has_calls([call.delete(client_mock, actual_dict['second'])])
-
- actual_dict['third'].assert_has_calls([call.delete(client_mock, actual_dict['third'])])
-
- self.assertTrue(result['changed'])
-
- def test_ssl_bindings_handling(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- servicetype='SSL',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
- ssl_sync_mock = Mock()
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False, True]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[True, True]),
- ssl_certkey_bindings_identical=Mock(side_effect=[False, True]),
- ssl_certkey_bindings_sync=ssl_sync_mock,
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=(Mock(return_value=[])),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.exited()
- self.assertTrue(len(ssl_sync_mock.mock_calls) > 0, msg='ssl cert_key bindings not called')
- self.assertTrue(result['changed'])
-
- def test_ssl_bindings_not_called_for_non_ssl_service(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- servicetype='HTTP',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
- ssl_sync_mock = Mock()
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False, True]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[True, True]),
- ssl_certkey_bindings_identical=Mock(side_effect=[False, True]),
- ssl_certkey_bindings_sync=ssl_sync_mock,
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=(Mock(return_value=[])),
- ):
- self.module = netscaler_lb_vserver
- result = self.exited()
- ssl_sync_mock.assert_not_called()
- self.assertTrue(result['changed'])
-
- def test_server_exists_sanity_check(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
- ssl_sync_mock = Mock()
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[False, False]),
- lb_vserver_identical=Mock(side_effect=[False, True]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[True, True]),
- ssl_certkey_bindings_identical=Mock(side_effect=[False, True]),
- ssl_certkey_bindings_sync=ssl_sync_mock,
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'Did not create lb vserver')
-
- def test_server_identical_sanity_check(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
- ssl_sync_mock = Mock()
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False, False]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[True, True]),
- ssl_certkey_bindings_identical=Mock(side_effect=[False, True]),
- ssl_certkey_bindings_sync=ssl_sync_mock,
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=(Mock(return_value=[])),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'lb vserver is not configured correctly')
-
- def test_service_bindings_sanity_check(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False, True]),
- servicegroup_bindings_identical=Mock(side_effect=[True, True]),
- service_bindings_identical=Mock(side_effect=[False, False]),
- ssl_certkey_bindings_identical=Mock(side_effect=[False, False]),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=(Mock(return_value=[])),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'service bindings are not identical')
-
- def test_servicegroup_bindings_sanity_check(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False, True]),
- servicegroup_bindings_identical=Mock(side_effect=[False, False]),
- service_bindings_identical=Mock(side_effect=[True, True]),
- ssl_certkey_bindings_identical=Mock(side_effect=[False, False]),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=(Mock(return_value=[])),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'servicegroup bindings are not identical')
-
- def test_server_servicegroup_bindings_sanity_check(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
-
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False, True]),
- servicegroup_bindings_identical=Mock(side_effect=[False, False]),
- service_bindings_identical=Mock(side_effect=[True, True]),
- ssl_certkey_bindings_identical=Mock(side_effect=[False, False]),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=(Mock(return_value=[])),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertEqual(result['msg'], 'servicegroup bindings are not identical')
-
- def test_absent_state_workflow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
-
- client_mock = Mock()
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- lb_vserver_exists=Mock(side_effect=[True, False]),
- ):
- self.module = netscaler_lb_vserver
- result = self.exited()
- lb_vserver_proxy_mock.assert_has_calls([call.delete()])
- self.assertTrue(result['changed'])
-
- def test_absent_state_sanity_check(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
-
- client_mock = Mock()
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- lb_vserver_proxy_mock.assert_has_calls([call.delete()])
- self.assertEqual(result['msg'], 'lb vserver still exists')
-
- def test_disabled_state_change_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
-
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
-
- do_state_change_mock = Mock(return_value=Mock(errorcode=0))
- client_mock = Mock()
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(return_value=True),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- nitro_exception=self.MockException,
- do_state_change=do_state_change_mock,
- ):
- self.module = netscaler_lb_vserver
- self.exited()
- self.assertTrue(len(do_state_change_mock.mock_calls) > 0, msg='Did not call state change')
-
- def test_get_immutables_failure(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
-
- from ansible.modules.network.netscaler import netscaler_lb_vserver
-
- lb_vserver_proxy_mock = Mock()
-
- client_mock = Mock()
- m = Mock(return_value=['some'])
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_lb_vserver',
- get_nitro_client=Mock(return_value=client_mock),
- ConfigProxy=Mock(return_value=lb_vserver_proxy_mock),
- ensure_feature_is_enabled=Mock(),
- lb_vserver_exists=Mock(side_effect=[True, True]),
- lb_vserver_identical=Mock(side_effect=[False]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- get_immutables_intersection=m,
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_lb_vserver
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('Cannot update immutable attributes'),
- msg='Did not handle immutables error correctly',
- )
diff --git a/test/units/modules/network/netscaler/test_netscaler_nitro_request.py b/test/units/modules/network/netscaler/test_netscaler_nitro_request.py
deleted file mode 100644
index cf0bf548b1..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_nitro_request.py
+++ /dev/null
@@ -1,340 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, call
-from .netscaler_module import TestModule
-import copy
-import tempfile
-import json
-import codecs
-
-from ansible.modules.network.netscaler import netscaler_nitro_request
-
-module_arguments = dict(
- nsip=None,
- nitro_user=None,
- nitro_pass=None,
- nitro_protocol=None,
- validate_certs=None,
- nitro_auth_token=None,
- resource=None,
- name=None,
- attributes=None,
- args=None,
- filter=None,
- operation=None,
- expected_nitro_errorcode=None,
- action=None,
- instance_ip=None,
- instance_name=None,
- instance_id=None,
-)
-
-
-class TestNetscalerNitroRequestModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- # This has code in a parent class
- def setUp(self):
- pass
-
- def test_fail_on_conflicting_authentication_methods(self):
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_user='nsroot',
- nitro_pass='nsroot',
- nitro_auth_token='##DDASKLFDJ',
- ))
- mock_module_instance = Mock(params=args)
- expected_calls = [
- call.fail_json(
- changed=False,
- failed=True,
- msg='Cannot define both authentication token and username/password'
- )
- ]
- module_mock = Mock(return_value=mock_module_instance)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock):
- netscaler_nitro_request.NitroAPICaller()
- mock_module_instance.assert_has_calls(expected_calls)
-
- def test_nitro_user_pass_credentials(self):
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_user='nsroot',
- nitro_pass='nsroot',
- ))
- mock_module_instance = Mock(params=args)
- expected_headers = {
- 'Content-Type': 'application/json',
- 'X-NITRO-USER': 'nsroot',
- 'X-NITRO-PASS': 'nsroot',
- }
- module_mock = Mock(return_value=mock_module_instance)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock):
- instance = netscaler_nitro_request.NitroAPICaller()
- self.assertDictEqual(instance._headers, expected_headers)
-
- def test_mas_login_headers(self):
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_user='nsroot',
- nitro_pass='nsroot',
- operation='mas_login',
- ))
- mock_module_instance = Mock(params=args)
- expected_headers = {
- 'Content-Type': 'application/json',
- }
- module_mock = Mock(return_value=mock_module_instance)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock):
- instance = netscaler_nitro_request.NitroAPICaller()
- self.assertDictEqual(instance._headers, expected_headers)
-
- def test_mas_proxy_call_headers_instance_ip(self):
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_auth_token='##ABDB',
- operation='add',
- instance_ip='192.168.1.1',
- ))
- mock_module_instance = Mock(params=args)
- expected_headers = {
- 'Content-Type': 'application/json',
- '_MPS_API_PROXY_MANAGED_INSTANCE_IP': args['instance_ip'],
- 'Cookie': 'NITRO_AUTH_TOKEN=%s' % args['nitro_auth_token'],
- }
- module_mock = Mock(return_value=mock_module_instance)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock):
- instance = netscaler_nitro_request.NitroAPICaller()
- self.assertDictEqual(instance._headers, expected_headers)
-
- def test_mas_proxy_call_headers_instance_id(self):
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_auth_token='##ABDB',
- operation='add',
- instance_id='myid',
- ))
- mock_module_instance = Mock(params=args)
- expected_headers = {
- 'Content-Type': 'application/json',
- '_MPS_API_PROXY_MANAGED_INSTANCE_ID': args['instance_id'],
- 'Cookie': 'NITRO_AUTH_TOKEN=%s' % args['nitro_auth_token'],
- }
- module_mock = Mock(return_value=mock_module_instance)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock):
- instance = netscaler_nitro_request.NitroAPICaller()
- self.assertDictEqual(instance._headers, expected_headers)
-
- def test_mas_proxy_call_headers_instance_name(self):
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_auth_token='##ABDB',
- operation='add',
- instance_name='myname',
- ))
- mock_module_instance = Mock(params=args)
- expected_headers = {
- 'Content-Type': 'application/json',
- '_MPS_API_PROXY_MANAGED_INSTANCE_NAME': args['instance_name'],
- 'Cookie': 'NITRO_AUTH_TOKEN=%s' % args['nitro_auth_token'],
- }
- module_mock = Mock(return_value=mock_module_instance)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', module_mock):
- instance = netscaler_nitro_request.NitroAPICaller()
- self.assertDictEqual(instance._headers, expected_headers)
-
- def test_edit_response_data_no_body_success_status(self):
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule'):
- instance = netscaler_nitro_request.NitroAPICaller()
- r = None
- info = {
- 'status': 200,
- }
- result = {}
- success_status = 200
-
- expected_result = {
- 'nitro_errorcode': 0,
- 'nitro_message': 'Success',
- 'nitro_severity': 'NONE',
- 'http_response_body': '',
- 'http_response_data': info,
- }
- instance.edit_response_data(r, info, result, success_status)
- self.assertDictEqual(result, expected_result)
-
- def test_edit_response_data_no_body_fail_status(self):
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule'):
- instance = netscaler_nitro_request.NitroAPICaller()
- r = None
- info = {
- 'status': 201,
- }
- result = {}
- success_status = 200
-
- expected_result = {
- 'nitro_errorcode': -1,
- 'nitro_message': 'HTTP status %s' % info['status'],
- 'nitro_severity': 'ERROR',
- 'http_response_body': '',
- 'http_response_data': info,
- }
- instance.edit_response_data(r, info, result, success_status)
- self.assertDictEqual(result, expected_result)
-
- def test_edit_response_data_actual_body_data(self):
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_user='nsroot',
- nitro_pass='nsroot',
- nitro_auth_token='##DDASKLFDJ',
- ))
- module_mock = Mock(params=args, from_json=json.loads)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', Mock(return_value=module_mock)):
- with tempfile.TemporaryFile() as r:
- actual_body = {
- 'errorcode': 258,
- 'message': 'Some error',
- 'severity': 'ERROR',
- }
- r.write(codecs.encode(json.dumps(actual_body), 'utf-8'))
- r.seek(0)
-
- instance = netscaler_nitro_request.NitroAPICaller()
- info = {
- 'status': 200,
- }
- result = {}
- success_status = 200
-
- expected_result = {
- 'http_response_body': json.dumps(actual_body),
- 'http_response_data': info,
- }
- nitro_data = {}
- for key, value in actual_body.items():
- nitro_data['nitro_%s' % key] = value
- expected_result.update(nitro_data)
-
- instance.edit_response_data(r, info, result, success_status)
- self.assertDictEqual(result, expected_result)
-
- def test_edit_response_data_actual_body_data_irrelevant(self):
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_user='nsroot',
- nitro_pass='nsroot',
- nitro_auth_token='##DDASKLFDJ',
- ))
- module_mock = Mock(params=args, from_json=json.loads)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', Mock(return_value=module_mock)):
- with tempfile.TemporaryFile() as r:
- actual_body = {}
- r.write(codecs.encode(json.dumps(actual_body), 'utf-8'))
- r.seek(0)
-
- instance = netscaler_nitro_request.NitroAPICaller()
- info = {
- 'status': 200,
- }
- result = {}
- success_status = 200
-
- expected_result = {
- 'http_response_body': json.dumps(actual_body),
- 'http_response_data': info,
- 'nitro_errorcode': 0,
- 'nitro_message': 'Success',
- 'nitro_severity': 'NONE',
- }
-
- instance.edit_response_data(r, info, result, success_status)
- self.assertDictEqual(result, expected_result)
-
- def test_edit_response_data_body_in_info(self):
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_user='nsroot',
- nitro_pass='nsroot',
- ))
- module_mock = Mock(params=args, from_json=json.loads)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', Mock(return_value=module_mock)):
- body = {
- 'errorcode': 258,
- 'message': 'Numerical error 258',
- 'severity': 'ERROR'
- }
- instance = netscaler_nitro_request.NitroAPICaller()
- r = None
- info = {
- 'status': 200,
- 'body': codecs.encode(json.dumps(body), 'utf-8'),
- }
- result = {}
- success_status = 200
-
- expected_result = {
- 'http_response_body': json.dumps(body),
- 'http_response_data': info,
- }
-
- nitro_data = {}
- for key, value in body.items():
- nitro_data['nitro_%s' % key] = value
-
- expected_result.update(nitro_data)
- instance.edit_response_data(r, info, result, success_status)
- self.assertDictEqual(result, expected_result)
-
- def test_handle_get_return_object(self):
- resource = 'lbvserver'
- args = copy.deepcopy(module_arguments)
- args.update(dict(
- nitro_user='nsroot',
- nitro_pass='nsroot',
- resource=resource,
- ))
- resource_data = {
- 'property1': 'value1',
- 'property2': 'value2',
- }
- module_mock = Mock(params=args, from_json=json.loads)
- with patch('ansible.modules.network.netscaler.netscaler_nitro_request.AnsibleModule', Mock(return_value=module_mock)):
- instance = netscaler_nitro_request.NitroAPICaller()
-
- data = {resource: resource_data}
- result = {
- 'nitro_errorcode': 0,
- 'http_response_body': json.dumps(data),
- }
- expected_result = {
- 'nitro_object': resource_data
- }
- expected_result.update(result)
- instance.handle_get_return_object(result)
- self.assertDictEqual(result, expected_result)
diff --git a/test/units/modules/network/netscaler/test_netscaler_save_config.py b/test/units/modules/network/netscaler/test_netscaler_save_config.py
deleted file mode 100644
index fa0067990a..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_save_config.py
+++ /dev/null
@@ -1,148 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerSaveConfigModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerSaveConfigModule, self).setUp()
- self.nitro_base_patcher.start()
-
- def tearDown(self):
- super(TestNetscalerSaveConfigModule, self).tearDown()
- self.nitro_base_patcher.stop()
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- ))
- from ansible.modules.network.netscaler import netscaler_save_config
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_save_config.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_save_config.nitro_exception', MockException):
- self.module = netscaler_save_config
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- ))
- from ansible.modules.network.netscaler import netscaler_save_config
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_save_config',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_save_config
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- ))
- from ansible.modules.network.netscaler import netscaler_save_config
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_save_config',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_save_config
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_save_config_called(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- ))
-
- class MockException(Exception):
- pass
-
- from ansible.modules.network.netscaler import netscaler_save_config
- client_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_save_config',
- get_nitro_client=Mock(return_value=client_mock),
- nitro_exception=MockException,
- ):
- self.module = netscaler_save_config
- self.exited()
- call_sequence = [call.login(), call.save_config(), call.logout()]
- client_mock.assert_has_calls(call_sequence)
diff --git a/test/units/modules/network/netscaler/test_netscaler_server.py b/test/units/modules/network/netscaler/test_netscaler_server.py
deleted file mode 100644
index 040ffce9be..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_server.py
+++ /dev/null
@@ -1,696 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerServerModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- m = MagicMock()
- cls.server_mock = MagicMock()
- cls.server_mock.__class__ = MagicMock(add=Mock())
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.server': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.server.server': cls.server_mock,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerServerModule, self).setUp()
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerServerModule, self).tearDown()
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_server
- self.module = netscaler_server
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_server.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_server.nitro_exception', MockException):
- self.module = netscaler_server
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_server
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_server
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_save_config_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- server_exists=Mock(side_effect=[False, True]),
- ConfigProxy=Mock(return_value=server_proxy_mock),
- diff_list=Mock(return_value={}),
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- server_exists=Mock(side_effect=[True, False]),
- ConfigProxy=Mock(return_value=server_proxy_mock),
- diff_list=Mock(return_value={}),
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- server_exists=Mock(side_effect=[False, True]),
- ConfigProxy=Mock(return_value=server_proxy_mock),
- diff_list=Mock(return_value={}),
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- server_exists=Mock(side_effect=[True, False]),
- ConfigProxy=Mock(return_value=server_proxy_mock),
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_do_state_change_fail(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- server_exists=Mock(side_effect=[True, False]),
- ConfigProxy=Mock(return_value=server_proxy_mock),
- diff_list=Mock(return_value={}),
- do_state_change=Mock(return_value=Mock(errorcode=1, message='Failed on purpose'))
- ):
- self.module = netscaler_server
- result = self.failed()
- self.assertEqual(result['msg'], 'Error when setting disabled state. errorcode: 1 message: Failed on purpose')
-
- def test_disable_server_graceful(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- disabled=True,
- graceful=True
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_mock = Mock()
-
- d = {
- 'graceful': True,
- 'delay': 20,
- }
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value=d),
- get_immutables_intersection=Mock(return_value=[]),
- server_exists=Mock(side_effect=[True, True]),
- ConfigProxy=Mock(return_value=server_proxy_mock),
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- result = self.exited()
- self.assertEqual(d, {}, 'Graceful disable options were not discarded from the diff_list with the actual object')
-
- def test_new_server_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- server_proxy_mock = Mock()
- server_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=server_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- server_exists=Mock(side_effect=[False, True]),
- server_identical=Mock(side_effect=[True]),
- ConfigProxy=config_proxy_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- self.exited()
- server_proxy_mock.assert_has_calls([call.add()])
-
- def test_modified_server_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- server_proxy_mock = Mock()
- server_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=server_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- server_exists=Mock(side_effect=[True, True]),
- server_identical=Mock(side_effect=[False, True]),
- ConfigProxy=config_proxy_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- self.exited()
- server_proxy_mock.assert_has_calls([call.update()])
-
- def test_absent_server_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- server_proxy_mock = Mock()
- server_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=server_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- server_exists=Mock(side_effect=[True, False]),
- server_identical=Mock(side_effect=[False, True]),
- ConfigProxy=config_proxy_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- self.exited()
- server_proxy_mock.assert_has_calls([call.delete()])
-
- def test_present_server_identical_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- server_proxy_mock = Mock()
- server_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=server_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- server_exists=Mock(side_effect=[True, True]),
- server_identical=Mock(side_effect=[True, True]),
- ConfigProxy=config_proxy_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- self.exited()
- server_proxy_mock.assert_not_called()
-
- def test_absent_server_noop_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- server_proxy_mock = Mock()
- server_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=server_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- server_exists=Mock(side_effect=[False, False]),
- server_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- self.exited()
- server_proxy_mock.assert_not_called()
-
- def test_present_server_failed_update(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- server_proxy_mock = Mock()
- server_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=server_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- server_exists=Mock(side_effect=[True, True]),
- server_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- result = self.failed()
- self.assertEqual(result['msg'], 'Server is not configured according to parameters given')
- self.assertTrue(result['failed'])
-
- def test_present_server_failed_create(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- server_proxy_mock = Mock()
- server_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=server_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- server_exists=Mock(side_effect=[False, False]),
- server_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- result = self.failed()
- self.assertEqual(result['msg'], 'Server does not seem to exist')
- self.assertTrue(result['failed'])
-
- def test_present_server_update_immutable_attribute(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- server_proxy_mock = Mock()
- server_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=server_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=['domain']),
- server_exists=Mock(side_effect=[True, True]),
- server_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- result = self.failed()
- self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']')
- self.assertTrue(result['failed'])
-
- def test_absent_server_failed_delete(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- server_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- server_proxy_mock = Mock()
- server_proxy_mock.configure_mock(**server_proxy_attrs)
- config_proxy_mock = Mock(return_value=server_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- server_exists=Mock(side_effect=[True, True]),
- server_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0))
- ):
- self.module = netscaler_server
- result = self.failed()
- self.assertEqual(result['msg'], 'Server seems to be present')
- self.assertTrue(result['failed'])
-
- def test_graceful_nitro_exception_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- server_exists=m,
- nitro_exception=MockException
- ):
- self.module = netscaler_server
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
-
- def test_graceful_nitro_exception_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_server
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_server',
- server_exists=m,
- nitro_exception=MockException
- ):
- self.module = netscaler_server
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
diff --git a/test/units/modules/network/netscaler/test_netscaler_service.py b/test/units/modules/network/netscaler/test_netscaler_service.py
deleted file mode 100644
index 6d7fa95335..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_service.py
+++ /dev/null
@@ -1,350 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-
-class TestNetscalerServiceModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- m = MagicMock()
- cls.service_mock = MagicMock()
- cls.service_mock.__class__ = MagicMock()
- cls.service_lbmonitor_binding_mock = MagicMock()
- cls.lbmonitor_service_binding_mock = MagicMock()
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service.service': cls.service_mock,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service_lbmonitor_binding': cls.service_lbmonitor_binding_mock,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service_lbmonitor_binding.service_lbmonitor_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_service_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_service_binding.lbmonitor_service_binding': cls.lbmonitor_service_binding_mock,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def set_module_state(self, state):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state=state,
- ))
-
- def setUp(self):
- super(TestNetscalerServiceModule, self).setUp()
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerServiceModule, self).tearDown()
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- self.set_module_state('present')
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_service
- self.module = netscaler_service
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_service
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_service.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_service.nitro_exception', MockException):
- self.module = netscaler_service
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_service
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_service
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_service
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_service
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_create_non_existing_service(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_service
- service_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- service_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=service_proxy_mock)
- service_exists_mock = Mock(side_effect=[False, True])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- ConfigProxy=m,
- service_exists=service_exists_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_service
- result = self.exited()
- service_proxy_mock.assert_has_calls([call.add()])
- self.assertTrue(result['changed'], msg='Change not recorded')
-
- def test_update_service_when_service_differs(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_service
- service_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- service_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=service_proxy_mock)
- service_exists_mock = Mock(side_effect=[True, True])
- service_identical_mock = Mock(side_effect=[False, True])
- monitor_bindings_identical_mock = Mock(side_effect=[True, True])
- all_identical_mock = Mock(side_effect=[False])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- ConfigProxy=m,
- service_exists=service_exists_mock,
- service_identical=service_identical_mock,
- monitor_bindings_identical=monitor_bindings_identical_mock,
- all_identical=all_identical_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_service
- result = self.exited()
- service_proxy_mock.assert_has_calls([call.update()])
- self.assertTrue(result['changed'], msg='Change not recorded')
-
- def test_update_service_when_monitor_bindings_differ(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_service
- service_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- service_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=service_proxy_mock)
- service_exists_mock = Mock(side_effect=[True, True])
- service_identical_mock = Mock(side_effect=[True, True])
- monitor_bindings_identical_mock = Mock(side_effect=[False, True])
- all_identical_mock = Mock(side_effect=[False])
- sync_monitor_bindings_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- ConfigProxy=m,
- service_exists=service_exists_mock,
- service_identical=service_identical_mock,
- monitor_bindings_identical=monitor_bindings_identical_mock,
- all_identical=all_identical_mock,
- sync_monitor_bindings=sync_monitor_bindings_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_service
- result = self.exited()
- # poor man's assert_called_once since python3.5 does not implement that mock method
- self.assertEqual(len(sync_monitor_bindings_mock.mock_calls), 1, msg='sync monitor bindings not called once')
- self.assertTrue(result['changed'], msg='Change not recorded')
-
- def test_no_change_to_module_when_all_identical(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_service
- service_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- service_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=service_proxy_mock)
- service_exists_mock = Mock(side_effect=[True, True])
- service_identical_mock = Mock(side_effect=[True, True])
- monitor_bindings_identical_mock = Mock(side_effect=[True, True])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- ConfigProxy=m,
- service_exists=service_exists_mock,
- service_identical=service_identical_mock,
- monitor_bindings_identical=monitor_bindings_identical_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_service
- result = self.exited()
- self.assertFalse(result['changed'], msg='Erroneous changed status update')
-
- def test_absent_operation(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_service
- service_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- service_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=service_proxy_mock)
- service_exists_mock = Mock(side_effect=[True, False])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- ConfigProxy=m,
- service_exists=service_exists_mock,
-
- ):
- self.module = netscaler_service
- result = self.exited()
- service_proxy_mock.assert_has_calls([call.delete()])
- self.assertTrue(result['changed'], msg='Changed status not set correctly')
-
- def test_absent_operation_no_change(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_service
- service_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- service_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=service_proxy_mock)
- service_exists_mock = Mock(side_effect=[False, False])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- ConfigProxy=m,
- service_exists=service_exists_mock,
-
- ):
- self.module = netscaler_service
- result = self.exited()
- service_proxy_mock.assert_not_called()
- self.assertFalse(result['changed'], msg='Changed status not set correctly')
-
- def test_graceful_nitro_exception_operation_present(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_service
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- service_exists=m,
- nitro_exception=MockException
- ):
- self.module = netscaler_service
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation present'
- )
-
- def test_graceful_nitro_exception_operation_absent(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_service
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_service',
- service_exists=m,
- nitro_exception=MockException
- ):
- self.module = netscaler_service
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
diff --git a/test/units/modules/network/netscaler/test_netscaler_servicegroup.py b/test/units/modules/network/netscaler/test_netscaler_servicegroup.py
deleted file mode 100644
index b9729c4546..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_servicegroup.py
+++ /dev/null
@@ -1,537 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-
-class TestNetscalerServicegroupModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
- cls.MockException = MockException
- m = MagicMock()
- cls.servicegroup_mock = MagicMock()
- cls.servicegroup_mock.__class__ = MagicMock()
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup.servicegroup': cls.servicegroup_mock,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_servicegroupmember_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_servicegroupmember_binding.servicegroup_servicegroupmember_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_lbmonitor_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_lbmonitor_binding.servicegroup_lbmonitor_binding': m,
-
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_servicegroup_binding': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_servicegroup_binding.lbmonitor_servicegroup_binding': m
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def set_module_state(self, state):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state=state,
- ))
-
- def setUp(self):
- super(TestNetscalerServicegroupModule, self).setUp()
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerServicegroupModule, self).tearDown()
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- self.set_module_state('present')
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_servicegroup
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_servicegroup.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_servicegroup.nitro_exception', MockException):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
-
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- get_nitro_client=m,
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- get_nitro_client=m,
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_create_non_existing_servicegroup(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- servicegroup_exists_mock = Mock(side_effect=[False, True])
-
- servicegroup_servicegroupmember_binding_mock = Mock(count=Mock(return_value=0))
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=servicegroup_exists_mock,
- servicemembers_identical=Mock(side_effect=[False, True]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- servicegroup_servicegroupmember_binding=servicegroup_servicegroupmember_binding_mock,
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_servicegroup
- result = self.exited()
- servicegroup_proxy_mock.assert_has_calls([call.add()])
- self.assertTrue(result['changed'], msg='Change not recorded')
-
- def test_update_servicegroup_when_servicegroup_differs(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- servicegroup_exists_mock = Mock(side_effect=[True, True])
- servicegroup_identical_mock = Mock(side_effect=[False, True])
- monitor_bindings_identical_mock = Mock(side_effect=[True, True])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=servicegroup_exists_mock,
- servicegroup_identical=servicegroup_identical_mock,
- monitor_bindings_identical=monitor_bindings_identical_mock,
- servicemembers_identical=Mock(side_effect=[True, True]),
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_servicegroup
- result = self.exited()
- servicegroup_proxy_mock.assert_has_calls([call.update()])
- self.assertTrue(result['changed'], msg='Change not recorded')
-
- def test_update_servicegroup_when_monitor_bindings_differ(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- servicegroup_exists_mock = Mock(side_effect=[True, True])
- servicegroup_identical_mock = Mock(side_effect=[True, True])
- monitor_bindings_identical_mock = Mock(side_effect=[False, True])
- sync_monitor_bindings_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=servicegroup_exists_mock,
- servicegroup_identical=servicegroup_identical_mock,
- monitor_bindings_identical=monitor_bindings_identical_mock,
- nitro_exception=self.MockException,
- servicemembers_identical=Mock(side_effect=[True, True]),
- sync_monitor_bindings=sync_monitor_bindings_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_servicegroup
- result = self.exited()
- # poor man's assert_called_once since python3.5 does not implement that mock method
- self.assertEqual(len(sync_monitor_bindings_mock.mock_calls), 1, msg='sync monitor bindings not called once')
- self.assertTrue(result['changed'], msg='Change not recorded')
-
- def test_update_servicegroup_when_service_members_differ(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- sync_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=Mock(side_effect=[True, True]),
- servicegroup_identical=Mock(side_effect=[True, True]),
- monitor_bindings_identical=Mock(side_effect=[True, True]),
- sync_monitor_bindings=Mock(),
- servicemembers_identical=Mock(side_effect=[False, True]),
- sync_service_members=sync_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_servicegroup
- result = self.exited()
- # poor man's assert_called_once since python3.5 does not implement that mock method
- self.assertEqual(len(sync_mock.mock_calls), 1, msg='sync monitor bindings not called once')
- self.assertTrue(result['changed'], msg='Change not recorded')
-
- def test_immutables_changed(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=Mock(side_effect=[True, True]),
- servicegroup_identical=Mock(side_effect=[False, True]),
- get_immutables_intersection=Mock(return_value=['some']),
- nitro_exception=self.MockException,
-
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Cannot update immutable attributes'))
-
- def test_servicegroup_exists_sanity(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- sync_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=Mock(side_effect=[False, False]),
- servicegroup_identical=Mock(side_effect=[False, False]),
- monitor_bindings_identical=Mock(side_effect=[True, True]),
- sync_monitor_bindings=Mock(),
- servicemembers_identical=Mock(side_effect=[False, True]),
- nitro_exception=self.MockException,
- sync_service_members=sync_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertEqual(result['msg'], 'Service group is not present')
-
- def test_servicegroup_differ_sanity(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- sync_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=Mock(side_effect=[True, True]),
- servicegroup_identical=Mock(side_effect=[False, False]),
- monitor_bindings_identical=Mock(side_effect=[True, True]),
- sync_monitor_bindings=Mock(),
- servicemembers_identical=Mock(side_effect=[False, True]),
- nitro_exception=self.MockException,
- sync_service_members=sync_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertEqual(result['msg'], 'Service group is not identical to configuration')
-
- def test_servicegroup_servicemembers_differ_sanity(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- sync_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=Mock(side_effect=[True, True]),
- servicegroup_identical=Mock(side_effect=[True, True]),
- monitor_bindings_identical=Mock(side_effect=[True, True]),
- sync_monitor_bindings=Mock(),
- servicemembers_identical=Mock(side_effect=[False, False]),
- nitro_exception=self.MockException,
- sync_service_members=sync_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertEqual(result['msg'], 'Service group members differ from configuration')
-
- def test_servicegroup_monitor_bindings_sanity(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- sync_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=Mock(side_effect=[True, True]),
- servicegroup_identical=Mock(side_effect=[True, True]),
- monitor_bindings_identical=Mock(side_effect=[False, False]),
- sync_monitor_bindings=Mock(),
- servicemembers_identical=Mock(side_effect=[True, True]),
- nitro_exception=self.MockException,
- sync_service_members=sync_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertEqual(result['msg'], 'Monitor bindings are not identical')
-
- def test_no_change_to_module_when_all_identical(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- servicegroup_exists_mock = Mock(side_effect=[True, True])
- servicegroup_identical_mock = Mock(side_effect=[True, True])
- monitor_bindings_identical_mock = Mock(side_effect=[True, True])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=servicegroup_exists_mock,
- servicegroup_identical=servicegroup_identical_mock,
- servicemembers_identical=Mock(side_effect=[True, True]),
- monitor_bindings_identical=monitor_bindings_identical_mock,
- do_state_change=Mock(return_value=Mock(errorcode=0)),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_servicegroup
- result = self.exited()
- self.assertFalse(result['changed'], msg='Erroneous changed status update')
-
- def test_absent_operation(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- servicegroup_exists_mock = Mock(side_effect=[True, False])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=servicegroup_exists_mock,
-
- ):
- self.module = netscaler_servicegroup
- result = self.exited()
- servicegroup_proxy_mock.assert_has_calls([call.delete()])
- self.assertTrue(result['changed'], msg='Changed status not set correctly')
-
- def test_absent_operation_no_change(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_servicegroup
- servicegroup_proxy_mock = MagicMock()
- attrs = {
- 'diff_object.return_value': {},
- }
- servicegroup_proxy_mock.configure_mock(**attrs)
-
- m = MagicMock(return_value=servicegroup_proxy_mock)
- servicegroup_exists_mock = Mock(side_effect=[False, False])
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=m,
- servicegroup_exists=servicegroup_exists_mock,
-
- ):
- self.module = netscaler_servicegroup
- result = self.exited()
- servicegroup_proxy_mock.assert_not_called()
- self.assertFalse(result['changed'], msg='Changed status not set correctly')
-
- def test_absent_operation_sanity(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_servicegroup
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- ConfigProxy=MagicMock(),
- servicegroup_exists=Mock(side_effect=[True, True]),
- nitro_exception=self.MockException,
-
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertEqual(result['msg'], 'Service group is present')
-
- def test_graceful_nitro_exception_operation_present(self):
- self.set_module_state('present')
- from ansible.modules.network.netscaler import netscaler_servicegroup
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- servicegroup_exists=m,
- nitro_exception=MockException
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation present'
- )
-
- def test_graceful_nitro_exception_operation_absent(self):
- self.set_module_state('absent')
- from ansible.modules.network.netscaler import netscaler_servicegroup
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_servicegroup',
- servicegroup_exists=m,
- nitro_exception=MockException
- ):
- self.module = netscaler_servicegroup
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
diff --git a/test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py b/test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py
deleted file mode 100644
index da751aac34..0000000000
--- a/test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py
+++ /dev/null
@@ -1,621 +0,0 @@
-
-# Copyright (c) 2017 Citrix Systems
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-from units.compat.mock import patch, Mock, MagicMock, call
-from units.modules.utils import set_module_args
-from .netscaler_module import TestModule, nitro_base_patcher
-
-import sys
-
-if sys.version_info[:2] != (2, 6):
- import requests
-
-
-class TestNetscalerSSLCertkeyModule(TestModule):
-
- @classmethod
- def setUpClass(cls):
- class MockException(Exception):
- pass
-
- cls.MockException = MockException
-
- m = MagicMock()
- cls.server_mock = MagicMock()
- cls.server_mock.__class__ = MagicMock(add=Mock())
- nssrc_modules_mock = {
- 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslcertkey': m,
- 'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslcertkey.sslcertkey': m,
- }
-
- cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
- cls.nitro_base_patcher = nitro_base_patcher
-
- @classmethod
- def tearDownClass(cls):
- cls.nitro_base_patcher.stop()
- cls.nitro_specific_patcher.stop()
-
- def setUp(self):
- super(TestNetscalerSSLCertkeyModule, self).setUp()
- self.nitro_base_patcher.start()
- self.nitro_specific_patcher.start()
-
- # Setup minimal required arguments to pass AnsibleModule argument parsing
-
- def tearDown(self):
- super(TestNetscalerSSLCertkeyModule, self).tearDown()
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
-
- def test_graceful_nitro_api_import_error(self):
- # Stop nitro api patching to cause ImportError
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- self.nitro_base_patcher.stop()
- self.nitro_specific_patcher.stop()
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertEqual(result['msg'], 'Could not load nitro python sdk')
-
- def test_graceful_nitro_error_on_login(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- client_mock = Mock()
- client_mock.login = Mock(side_effect=MockException)
- m = Mock(return_value=client_mock)
- with patch('ansible.modules.network.netscaler.netscaler_ssl_certkey.get_nitro_client', m):
- with patch('ansible.modules.network.netscaler.netscaler_ssl_certkey.nitro_exception', MockException):
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
-
- def test_graceful_no_connection_error(self):
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.ConnectionError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertTrue(result['msg'].startswith('Connection error'), msg='Connection error was not handled gracefully')
-
- def test_graceful_login_error(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- if sys.version_info[:2] == (2, 6):
- self.skipTest('requests library not available under python2.6')
-
- class MockException(Exception):
- pass
- client_mock = Mock()
- attrs = {'login.side_effect': requests.exceptions.SSLError}
- client_mock.configure_mock(**attrs)
- m = Mock(return_value=client_mock)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- nitro_exception=MockException,
- ):
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
-
- def test_save_config_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- key_exists=Mock(side_effect=[False, True]),
- key_identical=Mock(side_effect=[True]),
- ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_ssl_certkey
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- key_exists=Mock(side_effect=[True, False]),
- ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock),
- ):
- self.module = netscaler_ssl_certkey
- self.exited()
- self.assertIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- key_exists=Mock(side_effect=[False, True]),
- key_identical=Mock(side_effect=[True]),
- ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock),
- nitro_exception=self.MockException,
- ):
- self.module = netscaler_ssl_certkey
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_save_config_not_called_on_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- save_config=False,
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_mock = Mock()
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- key_exists=Mock(side_effect=[True, False]),
- ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock),
- ):
- self.module = netscaler_ssl_certkey
- self.exited()
- self.assertNotIn(call.save_config(), client_mock.mock_calls)
-
- def test_new_ssl_certkey_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- ssl_certkey_proxy_mock = Mock()
- ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
- config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- key_exists=Mock(side_effect=[False, True]),
- key_identical=Mock(side_effect=[True]),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_ssl_certkey
- self.exited()
- ssl_certkey_proxy_mock.assert_has_calls([call.add()])
-
- def test_modified_server_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- ssl_certkey_proxy_mock = Mock()
- ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
- config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- key_exists=Mock(side_effect=[True, True]),
- key_identical=Mock(side_effect=[False, True]),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_ssl_certkey
- self.exited()
- ssl_certkey_proxy_mock.assert_has_calls([call.update()])
-
- def test_absent_server_execution_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- ssl_certkey_proxy_mock = Mock()
- ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
- config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- key_exists=Mock(side_effect=[True, False]),
- key_identical=Mock(side_effect=[False, True]),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_ssl_certkey
- self.exited()
- ssl_certkey_proxy_mock.assert_has_calls([call.delete()])
-
- def test_present_key_identical_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- ssl_certkey_proxy_mock = Mock()
- ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
- config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- key_exists=Mock(side_effect=[True, True]),
- key_identical=Mock(side_effect=[True, True]),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_ssl_certkey
- self.exited()
- ssl_certkey_proxy_mock.assert_not_called()
-
- def test_absent_server_noop_flow(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- ssl_certkey_proxy_mock = Mock()
- ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
- config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- key_exists=Mock(side_effect=[False, False]),
- key_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_ssl_certkey
- self.exited()
- ssl_certkey_proxy_mock.assert_not_called()
-
- def test_present_server_failed_update(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- ssl_certkey_proxy_mock = Mock()
- ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
- config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- key_exists=Mock(side_effect=[True, True]),
- key_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertEqual(result['msg'], 'SSL certkey differs from configured')
- self.assertTrue(result['failed'])
-
- def test_present_server_failed_create(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- ssl_certkey_proxy_mock = Mock()
- ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
- config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- key_exists=Mock(side_effect=[False, False]),
- key_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertEqual(result['msg'], 'SSL certkey does not exist')
- self.assertTrue(result['failed'])
-
- def test_present_server_update_immutable_attribute(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- ssl_certkey_proxy_mock = Mock()
- ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
- config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=['domain']),
- key_exists=Mock(side_effect=[True, True]),
- key_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']')
- self.assertTrue(result['failed'])
-
- def test_absent_server_failed_delete(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- client_mock = Mock()
-
- m = Mock(return_value=client_mock)
-
- ssl_certkey_proxy_attrs = {
- 'diff_object.return_value': {},
- }
- ssl_certkey_proxy_mock = Mock()
- ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
- config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)
-
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- nitro_exception=self.MockException,
- get_nitro_client=m,
- diff_list=Mock(return_value={}),
- get_immutables_intersection=Mock(return_value=[]),
- key_exists=Mock(side_effect=[True, True]),
- key_identical=Mock(side_effect=[False, False]),
- ConfigProxy=config_proxy_mock,
- ):
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertEqual(result['msg'], 'SSL certkey still exists')
- self.assertTrue(result['failed'])
-
- def test_graceful_nitro_exception_state_present(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='present',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- key_exists=m,
- nitro_exception=MockException
- ):
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
-
- def test_graceful_nitro_exception_state_absent(self):
- set_module_args(dict(
- nitro_user='user',
- nitro_pass='pass',
- nsip='192.0.2.1',
- state='absent',
- ))
- from ansible.modules.network.netscaler import netscaler_ssl_certkey
-
- class MockException(Exception):
- def __init__(self, *args, **kwargs):
- self.errorcode = 0
- self.message = ''
-
- m = Mock(side_effect=MockException)
- with patch.multiple(
- 'ansible.modules.network.netscaler.netscaler_ssl_certkey',
- key_exists=m,
- nitro_exception=MockException
- ):
- self.module = netscaler_ssl_certkey
- result = self.failed()
- self.assertTrue(
- result['msg'].startswith('nitro exception'),
- msg='Nitro exception not caught on operation absent'
- )
diff --git a/test/units/modules/network/netvisor/nvos_module.py b/test/units/modules/network/netvisor/nvos_module.py
deleted file mode 100644
index 5c2d635fd9..0000000000
--- a/test/units/modules/network/netvisor/nvos_module.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import tempfile
-
-from units.compat import unittest
-from units.compat.mock import patch
-from ansible.module_utils import basic
-
-
-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 AnsibleExitJson(Exception):
- pass
-
-
-class AnsibleFailJson(Exception):
- pass
-
-
-class TestNvosModule(unittest.TestCase):
- def setUp(self):
- super(TestNvosModule, self).setUp()
-
- self.test_log = tempfile.mkstemp(prefix='ansible-test-nvos-module-', suffix='.log')[1]
-
- def tearDown(self):
- super(TestNvosModule, self).tearDown()
-
- os.remove(self.test_log)
-
- def execute_module(self, failed=False, changed=False, commands=None,
- sort=True, defaults=False, state=None):
-
- self.load_fixtures(commands, state)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']),
- result['commands'])
- else:
- self.assertEqual(commands, result['commands'],
- result['commands'])
-
- return result
-
- def failed(self):
- def fail_json(*args, **kwargs):
- kwargs['failed'] = True
- raise AnsibleFailJson(kwargs)
-
- with patch.object(basic.AnsibleModule, 'fail_json', fail_json):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- def exit_json(*args, **kwargs):
- if 'changed' not in kwargs:
- kwargs['changed'] = False
- raise AnsibleExitJson(kwargs)
-
- with patch.object(basic.AnsibleModule, 'exit_json', exit_json):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/netvisor/test_pn_access_list_ip.py b/test/units/modules/network/netvisor/test_pn_access_list_ip.py
deleted file mode 100644
index 244a6b2fa9..0000000000
--- a/test/units/modules/network/netvisor/test_pn_access_list_ip.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_access_list_ip
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestAccessListIpModule(TestNvosModule):
-
- module = pn_access_list_ip
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_access_list_ip.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_access_list_ip.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'access-list-ip-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'access-list-ip-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
-
- def test_access_list_ip_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_ip': '172.16.3.1', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 access-list-ip-add name foo ip 172.16.3.1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_access_list_ip_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_ip': '172.16.3.1', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 access-list-ip-remove name foo ip 172.16.3.1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_admin_service.py b/test/units/modules/network/netvisor/test_pn_admin_service.py
deleted file mode 100644
index 4032d8dc3a..0000000000
--- a/test/units/modules/network/netvisor/test_pn_admin_service.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_admin_service
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestAdminServiceModule(TestNvosModule):
-
- module = pn_admin_service
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_admin_service.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'admin-service-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_admin_service_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn__if': 'mgmt',
- 'pn_web': 'False', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 admin-service-modify if mgmt no-web '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_admin_service_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn__if': 'mgmt',
- 'pn_snmp': 'True', 'pn_net_api': 'True', 'pn_ssh': 'True', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 admin-service-modify if mgmt snmp ssh net-api '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_admin_service_modify_t3(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn__if': 'data',
- 'pn_web_port': '8080', 'pn_net_api': 'True', 'pn_web_log': 'True', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 admin-service-modify if data web-port 8080 net-api web-log '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_admin_session_timeout.py b/test/units/modules/network/netvisor/test_pn_admin_session_timeout.py
deleted file mode 100644
index c31c107600..0000000000
--- a/test/units/modules/network/netvisor/test_pn_admin_session_timeout.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_admin_session_timeout
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestAdminServiceModule(TestNvosModule):
-
- module = pn_admin_session_timeout
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_admin_session_timeout.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'admin-session-timeout-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_admin_session_timeout_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_timeout': '61s',
- 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 admin-session-timeout-modify timeout 61s'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_admin_session_timeout_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_timeout': '1d',
- 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 admin-session-timeout-modify timeout 1d'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_admin_session_timeout_modify_t3(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_timeout': '10d20m3h15s',
- 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 admin-session-timeout-modify timeout 10d20m3h15s'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_admin_syslog.py b/test/units/modules/network/netvisor/test_pn_admin_syslog.py
deleted file mode 100644
index 25ed5631cd..0000000000
--- a/test/units/modules/network/netvisor/test_pn_admin_syslog.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_admin_syslog
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestAdminSyslogModule(TestNvosModule):
-
- module = pn_admin_syslog
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_admin_syslog.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_admin_syslog.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'admin-syslog-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'admin-syslog-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['update'] == 'admin-syslog-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_admin_syslog_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_scope': 'local', 'pn_host': '166.68.224.46', 'pn_message_format': 'structured', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 admin-syslog-create name foo scope local host 166.68.224.46 '
- expected_cmd += 'transport udp message-format structured'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_admin_syslog_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 admin-syslog-delete name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_admin_syslog_update(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'state': 'update'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 admin-syslog-modify name foo transport udp'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_connection_stats_settings.py b/test/units/modules/network/netvisor/test_pn_connection_stats_settings.py
deleted file mode 100644
index 521da134b3..0000000000
--- a/test/units/modules/network/netvisor/test_pn_connection_stats_settings.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_connection_stats_settings
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestAdminServiceModule(TestNvosModule):
-
- module = pn_connection_stats_settings
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_connection_stats_settings.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'connection-stats-settings-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_connection_stats_settings_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_enable': False,
- 'pn_fabric_connection_max_memory': '1000', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 connection-stats-settings-modify disable fabric-connection-max-memory 1000'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_connection_stats_settings_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_enable': True,
- 'pn_connection_stats_log_enable': False, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 connection-stats-settings-modify enable connection-stats-log-disable '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_connection_stats_settings_modify_t3(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_client_server_stats_max_memory': '60M',
- 'pn_client_server_stats_log_disk_space': '40M', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 connection-stats-settings-modify client-server-stats-max-memory '
- expected_cmd += '60M client-server-stats-log-disk-space 40M'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_connection_stats_settings_modify_t4(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_connection_stats_max_memory': '45M',
- 'pn_fabric_connection_backup_enable': False, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 connection-stats-settings-modify '
- expected_cmd += ' fabric-connection-backup-disable connection-stats-max-memory 45M'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_cpu_class.py b/test/units/modules/network/netvisor/test_pn_cpu_class.py
deleted file mode 100644
index 63138db4d1..0000000000
--- a/test/units/modules/network/netvisor/test_pn_cpu_class.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_cpu_class
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestCpuClassModule(TestNvosModule):
-
- module = pn_cpu_class
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_cpu_class.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_cpu_class.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'cpu-class-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'cpu-class-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_cpu_class_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'icmp',
- 'pn_scope': 'local', 'pn_rate_limit': '1000', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 cpu-class-create name icmp scope local rate-limit 1000 '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_cpu_class_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'icmp',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 cpu-class-delete name icmp '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_cpu_class_update(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'icmp',
- 'pn_rate_limit': '2000', 'state': 'update'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 cpu-class-modify name icmp rate-limit 2000 '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_cpu_mgmt_class.py b/test/units/modules/network/netvisor/test_pn_cpu_mgmt_class.py
deleted file mode 100644
index be1dbd6ed4..0000000000
--- a/test/units/modules/network/netvisor/test_pn_cpu_mgmt_class.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_cpu_mgmt_class
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestCpuMgmtClassModule(TestNvosModule):
-
- module = pn_cpu_mgmt_class
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_cpu_mgmt_class.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'cpu-mgmt-class-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_cpu_mgmt_class_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'icmp',
- 'pn_rate_limit': '10000', 'pn_burst_size': '14000', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 cpu-mgmt-class-modify name icmp burst-size 14000 rate-limit 10000'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_cpu_mgmt_class_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'ssh',
- 'pn_rate_limit': '10000', 'pn_burst_size': '100000', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 cpu-mgmt-class-modify name ssh burst-size 100000 rate-limit 10000'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_dhcp_filter.py b/test/units/modules/network/netvisor/test_pn_dhcp_filter.py
deleted file mode 100644
index accb11182b..0000000000
--- a/test/units/modules/network/netvisor/test_pn_dhcp_filter.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_dhcp_filter
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestDhcpFilterModule(TestNvosModule):
-
- module = pn_dhcp_filter
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_dhcp_filter.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_dhcp_filter.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'dhcp-filter-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'dhcp-filter-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['update'] == 'dhcp-filter-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_dhcp_filter_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_trusted_ports': '1', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 dhcp-filter-create name foo trusted-ports 1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_dhcp_filter_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 dhcp-filter-delete name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_dhcp_filter_update(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_trusted_ports': '2', 'state': 'update'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 dhcp-filter-modify name foo trusted-ports 2'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_dscp_map.py b/test/units/modules/network/netvisor/test_pn_dscp_map.py
deleted file mode 100644
index 07ad9c33ce..0000000000
--- a/test/units/modules/network/netvisor/test_pn_dscp_map.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_dscp_map
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestDscpMapModule(TestNvosModule):
-
- module = pn_dscp_map
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_dscp_map.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_dscp_map.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'dscp-map-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'dscp-map-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
-
- def test_dscp_map_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_scope': 'local', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 dscp-map-create name foo scope local'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_dscp_map_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 dscp-map-delete name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_dscp_map_pri_map.py b/test/units/modules/network/netvisor/test_pn_dscp_map_pri_map.py
deleted file mode 100644
index 33dc90a48f..0000000000
--- a/test/units/modules/network/netvisor/test_pn_dscp_map_pri_map.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_dscp_map_pri_map
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestCpuClassModule(TestNvosModule):
-
- module = pn_dscp_map_pri_map
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_dscp_map_pri_map.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_dscp_map_pri_map.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'dscp-map-pri-map-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_dscp_map_pri_map_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_pri': '0', 'pn_dsmap': '40', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 dscp-map-pri-map-modify pri 0 name foo dsmap 40'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_dscp_map_pri_map_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_pri': '1', 'pn_dsmap': '8,10,12,14', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 dscp-map-pri-map-modify pri 1 name foo dsmap 8,10,12,14'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_dscp_map_pri_map_t3(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_pri': '2', 'pn_dsmap': '25', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 dscp-map-pri-map-modify pri 2 name foo dsmap 25'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_fabric_local.py b/test/units/modules/network/netvisor/test_pn_fabric_local.py
deleted file mode 100644
index 6dde01100f..0000000000
--- a/test/units/modules/network/netvisor/test_pn_fabric_local.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_fabric_local
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestFabricLocalModule(TestNvosModule):
-
- module = pn_fabric_local
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_fabric_local.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'fabric-local-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_fabric_local_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_fabric_advertisement_network': 'mgmt-only',
- 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 fabric-local-modify fabric-network mgmt fabric-advertisement-network mgmt-only'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_fabric_local_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_fabric_network': 'mgmt',
- 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 fabric-local-modify fabric-network mgmt'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_igmp_snooping.py b/test/units/modules/network/netvisor/test_pn_igmp_snooping.py
deleted file mode 100644
index 4cacbed7cd..0000000000
--- a/test/units/modules/network/netvisor/test_pn_igmp_snooping.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_igmp_snooping
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestAdminServiceModule(TestNvosModule):
-
- module = pn_igmp_snooping
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_igmp_snooping.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'igmp-snooping-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_igmp_snooping_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vxlan': True,
- 'pn_enable_vlans': '1-399,401-4092', 'pn_no_snoop_linklocal_vlans': 'none', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 igmp-snooping-modify vxlan enable-vlans '
- expected_cmd += '1-399,401-4092 no-snoop-linklocal-vlans none'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_igmp_snooping_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_scope': 'local',
- 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 igmp-snooping-modify scope local'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_igmp_snooping_modify_t3(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vxlan': False,
- 'pn_enable_vlans': '1-399', 'pn_igmpv3_vlans': '1-399', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 igmp-snooping-modify no-vxlan igmpv3-vlans 1-399 enable-vlans 1-399'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard.py b/test/units/modules/network/netvisor/test_pn_ipv6security_raguard.py
deleted file mode 100644
index fc0e7c4ae5..0000000000
--- a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_ipv6security_raguard
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestIPV6SecurityRaguardModule(TestNvosModule):
-
- module = pn_ipv6security_raguard
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'ipv6security-raguard-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'ipv6security-raguard-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['update'] == 'ipv6security-raguard-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_ipv6security_raguard_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_device': 'host'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 ipv6security-raguard-create name foo device host'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_ipv6security_raguard_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 ipv6security-raguard-delete name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_ipv6security_raguard_modify(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_device': 'router', 'pn_router_priority': 'medium', 'state': 'update'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 ipv6security-raguard-modify name foo device router router-priority medium'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_port.py b/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_port.py
deleted file mode 100644
index adc9b56db7..0000000000
--- a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_port.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_ipv6security_raguard_port
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestIPV6SecurityRaguardPortModule(TestNvosModule):
-
- module = pn_ipv6security_raguard_port
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard_port.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard_port.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'ipv6security-raguard-port-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'ipv6security-raguard-port-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = True
- if state == 'absent':
- self.run_check_cli.return_value = True
-
- def test_ipv6security_raguard_port_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_ports': '1'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 ipv6security-raguard-port-add name foo ports 1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_ipv6security_raguard_port_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_ports': '1', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 ipv6security-raguard-port-remove name foo ports 1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_vlan.py b/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_vlan.py
deleted file mode 100644
index 58b2dac688..0000000000
--- a/test/units/modules/network/netvisor/test_pn_ipv6security_raguard_vlan.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_ipv6security_raguard_vlan
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestIPV6SecurityReguardVlanModule(TestNvosModule):
-
- module = pn_ipv6security_raguard_vlan
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard_vlan.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_ipv6security_raguard_vlan.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'ipv6security-raguard-vlan-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'ipv6security-raguard-vlan-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = True
- if state == 'absent':
- self.run_check_cli.return_value = True
-
- def test_ipv6security_reguard_vlan_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_vlans': '100-105', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 ipv6security-raguard-vlan-add name foo vlans 100-105'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_ipv6security_reguard_vlan_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_vlans': '100-105', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 ipv6security-raguard-vlan-remove name foo vlans 100-105'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_log_audit_exception.py b/test/units/modules/network/netvisor/test_pn_log_audit_exception.py
deleted file mode 100644
index 635f253f7b..0000000000
--- a/test/units/modules/network/netvisor/test_pn_log_audit_exception.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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 json
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_log_audit_exception
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule, load_fixture
-
-
-class TestLogAuditExceptionModule(TestNvosModule):
-
- module = pn_log_audit_exception
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_log_audit_exception.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_log_audit_exception.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'log-audit-exception-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'log-audit-exception-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
-
- def test_log_audit_exception_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_audit_type': 'cli',
- 'pn_pattern': 'test', 'pn_scope': 'local', 'pn_access': 'any', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 log-audit-exception-create cli pattern test any scope local '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_log_audit_exception_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_audit_type': 'cli',
- 'pn_pattern': 'test', 'pn_access': 'any', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 log-audit-exception-delete cli pattern test any'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_port_config.py b/test/units/modules/network/netvisor/test_pn_port_config.py
deleted file mode 100644
index 514f831643..0000000000
--- a/test/units/modules/network/netvisor/test_pn_port_config.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_port_config
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestPortConfigModule(TestNvosModule):
-
- module = pn_port_config
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_port_config.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'port-config-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_pn_port_config_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '1,2',
- 'pn_speed': '10g', 'pn_jumbo': True, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 port-config-modify speed 10g port 1,2 jumbo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_pn_port_config_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': 'all',
- 'pn_host_enable': True, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 port-config-modify port all host-enable '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_pn_port_config_modify_t3(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '5',
- 'pn_crc_check_enable': True, 'pn_vxlan_termination': False, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 port-config-modify port 5 crc-check-enable no-vxlan-termination '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_pn_port_config_modify_t4(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '10,11,12',
- 'pn_pause': False, 'pn_enable': True, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 port-config-modify port 10,11,12 no-pause enable '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_port_cos_bw.py b/test/units/modules/network/netvisor/test_pn_port_cos_bw.py
deleted file mode 100644
index 65d9b1417e..0000000000
--- a/test/units/modules/network/netvisor/test_pn_port_cos_bw.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_port_cos_bw
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestAdminServiceModule(TestNvosModule):
-
- module = pn_port_cos_bw
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_port_cos_bw.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'port-cos-bw-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_pn_port_cos_bw_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '1',
- 'pn_cos': '0', 'pn_min_bw_guarantee': '60', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 port-cos-bw-modify cos 0 port 1 min-bw-guarantee 60'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_pn_port_cos_bw_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': 'all',
- 'pn_cos': '1', 'pn_weight': 'priority', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 port-cos-bw-modify cos 1 port all weight priority'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_port_cos_rate_setting.py b/test/units/modules/network/netvisor/test_pn_port_cos_rate_setting.py
deleted file mode 100644
index 450e7d9d0f..0000000000
--- a/test/units/modules/network/netvisor/test_pn_port_cos_rate_setting.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_port_cos_rate_setting
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestPortCosRateSettingModule(TestNvosModule):
-
- module = pn_port_cos_rate_setting
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_port_cos_rate_setting.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'port-cos-rate-setting-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_pn_port_cos_rate_setting_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': 'control-port',
- 'pn_cos1_rate': '4000', 'pn_cos2_rate': '4000', 'pn_cos3_rate': '4000', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 port-cos-rate-setting-modify cos1-rate 4000 cos2-rate 4000 '
- expected_cmd += 'cos3-rate 4000 port control-port'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_pn_port_cos_rate_setting_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': 'data-port',
- 'pn_cos1_rate': '2000', 'pn_cos5_rate': '3000', 'pn_cos2_rate': '4000', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 port-cos-rate-setting-modify cos1-rate 2000 cos5-rate 3000 '
- expected_cmd += 'cos2-rate 4000 port data-port'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_prefix_list.py b/test/units/modules/network/netvisor/test_pn_prefix_list.py
deleted file mode 100644
index 2c4d3e4388..0000000000
--- a/test/units/modules/network/netvisor/test_pn_prefix_list.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_prefix_list
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestPrefixListModule(TestNvosModule):
-
- module = pn_prefix_list
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_prefix_list.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_prefix_list.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'prefix-list-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'prefix-list-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
-
- def test_prefix_list_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_scope': 'local', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 prefix-list-create name foo scope local '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_prefix_list_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 prefix-list-delete name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_prefix_list_network.py b/test/units/modules/network/netvisor/test_pn_prefix_list_network.py
deleted file mode 100644
index 1eb9dbfe76..0000000000
--- a/test/units/modules/network/netvisor/test_pn_prefix_list_network.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_prefix_list_network
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestPrefixListNetworkModule(TestNvosModule):
-
- module = pn_prefix_list_network
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_prefix_list_network.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_prefix_list_network.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'prefix-list-network-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'prefix-list-network-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
-
- def test_prefix_list_network_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_network': '172.16.3.1', 'pn_netmask': '24', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 prefix-list-network-add name foo network 172.16.3.1 netmask 24'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_prefix_list_network_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_network': '172.16.3.1', 'pn_netmask': '24', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 prefix-list-network-remove name foo network 172.16.3.1 netmask 24'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_role.py b/test/units/modules/network/netvisor/test_pn_role.py
deleted file mode 100644
index 781418c2d0..0000000000
--- a/test/units/modules/network/netvisor/test_pn_role.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_role
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestRoleModule(TestNvosModule):
-
- module = pn_role
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_role.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_role.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'role-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'role-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['update'] == 'role-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_role_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_scope': 'local', 'pn_access': 'read-only', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 role-create name foo scope local access read-only'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_role_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 role-delete name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_role_update(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_access': 'read-write', 'pn_sudo': True, 'pn_shell': True, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 role-modify name foo access read-write shell sudo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_snmp_community.py b/test/units/modules/network/netvisor/test_pn_snmp_community.py
deleted file mode 100644
index fd4886a98d..0000000000
--- a/test/units/modules/network/netvisor/test_pn_snmp_community.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_snmp_community
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestSnmpCommunityModule(TestNvosModule):
-
- module = pn_snmp_community
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_snmp_community.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_snmp_community.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'snmp-community-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'snmp-community-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['update'] == 'snmp-community-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_snmp_community_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_community_string': 'foo',
- 'pn_community_type': 'read-write', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 snmp-community-create community-string foo community-type read-write'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_snmp_community_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_community_string': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 snmp-community-delete community-string foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_snmp_community_update(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_community_string': 'foo',
- 'pn_community_type': 'read-only', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 snmp-community-modify community-string foo community-type read-only'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_snmp_trap_sink.py b/test/units/modules/network/netvisor/test_pn_snmp_trap_sink.py
deleted file mode 100644
index 85a12f0255..0000000000
--- a/test/units/modules/network/netvisor/test_pn_snmp_trap_sink.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_snmp_trap_sink
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestSnmpTrapSinkModule(TestNvosModule):
-
- module = pn_snmp_trap_sink
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_snmp_trap_sink.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_snmp_trap_sink.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'snmp-trap-sink-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'snmp-trap-sink-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
-
- def test_snmp_trap_sink_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_community': 'foo',
- 'pn_dest_host': '192.168.67.8', 'pn_type': 'TRAP_TYPE_V2_INFORM', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 snmp-trap-sink-create type TRAP_TYPE_V2_INFORM dest-host 192.168.67.8 '
- expected_cmd += 'community foo dest-port 162'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_snmp_trap_sink_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_community': 'foo',
- 'pn_dest_host': '192.168.67.8', 'pn_type': 'TRAP_TYPE_V2_INFORM', 'state': 'absent'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 snmp-trap-sink-delete community foo dest-host 192.168.67.8 dest-port 162'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_snmp_vacm.py b/test/units/modules/network/netvisor/test_pn_snmp_vacm.py
deleted file mode 100644
index 593ce9a68b..0000000000
--- a/test/units/modules/network/netvisor/test_pn_snmp_vacm.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_snmp_vacm
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestSnmpVacmModule(TestNvosModule):
-
- module = pn_snmp_vacm
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_snmp_vacm.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_snmp_vacm.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'snmp-vacm-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'snmp-vacm-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['update'] == 'snmp-vacm-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_snmp_vacm_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_user_name': 'foo',
- 'pn_user_type': 'rouser', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 snmp-vacm-create user-name foo user-type rouser'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_snmp_vacm_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_user_name': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 snmp-vacm-delete user-name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_snmp_vacm_modify(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_user_name': 'foo',
- 'pn_user_type': 'rwuser', 'state': 'absent'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 snmp-vacm-delete user-name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_stp.py b/test/units/modules/network/netvisor/test_pn_stp.py
deleted file mode 100644
index ebbb0827b0..0000000000
--- a/test/units/modules/network/netvisor/test_pn_stp.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_stp
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestStpModule(TestNvosModule):
-
- module = pn_stp
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_stp.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'stp-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_stp_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_hello_time': '3',
- 'pn_stp_mode': 'rstp', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 stp-modify hello-time 3 root-guard-wait-time 20 mst-max-hops 20 max-age 20 '
- expected_cmd += 'stp-mode rstp forwarding-delay 15 bridge-priority 32768'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_stp_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_root_guard_wait_time': '50',
- 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 stp-modify hello-time 2 root-guard-wait-time 50 mst-max-hops 20 '
- expected_cmd += 'max-age 20 forwarding-delay 15 bridge-priority 32768'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_stp_port.py b/test/units/modules/network/netvisor/test_pn_stp_port.py
deleted file mode 100644
index ffe7c73444..0000000000
--- a/test/units/modules/network/netvisor/test_pn_stp_port.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_stp_port
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestStpPortModule(TestNvosModule):
-
- module = pn_stp_port
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_stp_port.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'stp-port-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_stp_port_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '1',
- 'pn_filter': True, 'pn_priority': '144', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 stp-port-modify priority 144 cost 2000 port 1 filter '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_stp_port_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_port': '1,2',
- 'pn_cost': '200', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 stp-port-modify priority 128 cost 200 port 1,2'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_switch_setup.py b/test/units/modules/network/netvisor/test_pn_switch_setup.py
deleted file mode 100644
index 34c8339cb2..0000000000
--- a/test/units/modules/network/netvisor/test_pn_switch_setup.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_switch_setup
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestSwitchSetupModule(TestNvosModule):
-
- module = pn_switch_setup
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_switch_setup.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'switch-setup-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_pn_switch_setup_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_timezone': 'America/New_York',
- 'pn_in_band_ip': '20.20.1.1', 'pn_in_band_netmask': '24', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 switch-setup-modify timezone America/New_York '
- expected_cmd += 'in-band-netmask 24 in-band-ip 20.20.1.1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_pn_switch_setup_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_in_band_ip6': '2001:0db8:85a3::8a2e:0370:7334',
- 'pn_in_band_netmask_ip6': '127', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 switch-setup-modify in-band-ip6 2001:0db8:85a3::8a2e:0370:7334 '
- expected_cmd += 'in-band-netmask-ip6 127'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_pn_switch_setup_modify_t3(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_date': '2019-01-11',
- 'pn_loopback_ip': '10.10.10.1', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 switch-setup-modify date 2019-01-11 loopback-ip 10.10.10.1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_pn_switch_setup_modify_t4(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_dns_ip': '172.16.5.5',
- 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 switch-setup-modify dns-ip 172.16.5.5'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_user.py b/test/units/modules/network/netvisor/test_pn_user.py
deleted file mode 100644
index 9a37fa9326..0000000000
--- a/test/units/modules/network/netvisor/test_pn_user.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_user
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestUserModule(TestNvosModule):
-
- module = pn_user
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_user.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_user.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'user-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'user-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['update'] == 'user-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_user_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_scope': 'local', 'pn_password': 'test123', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 user-create name foo scope local password test123'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_user_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 user-delete name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_user_modify(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_password': 'test1234', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 user-modify name foo password test1234'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vflow_table_profile.py b/test/units/modules/network/netvisor/test_pn_vflow_table_profile.py
deleted file mode 100644
index d31c0f8d48..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vflow_table_profile.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vflow_table_profile
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestVflowTableProfileModule(TestNvosModule):
-
- module = pn_vflow_table_profile
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vflow_table_profile.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'vflow-table-profile-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
-
- def test_vflow_table_profile_modify_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_profile': 'ipv6',
- 'pn_hw_tbl': 'switch-main', 'pn_enable': True, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 vflow-table-profile-modify profile ipv6 hw-tbl switch-main enable '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vflow_table_profile_modify_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_profile': 'qos',
- 'pn_hw_tbl': 'switch-main', 'pn_enable': False, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 vflow-table-profile-modify profile qos hw-tbl switch-main disable '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_bgp.py b/test/units/modules/network/netvisor/test_pn_vrouter_bgp.py
deleted file mode 100644
index ca20c9eb34..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vrouter_bgp.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vrouter_bgp
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestVrouterBGPModule(TestNvosModule):
-
- module = pn_vrouter_bgp
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_bgp.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_bgp.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'vrouter-bgp-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'vrouter-bgp-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['update'] == 'vrouter-bgp-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = True, False
- if state == 'absent':
- self.run_check_cli.return_value = True, True
- if state == 'update':
- self.run_check_cli.return_value = True, True
-
- def test_vrouter_bgp_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter',
- 'pn_neighbor': '105.104.104.1', 'pn_remote_as': '65000', 'pn_bfd': True, 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 vrouter-bgp-add vrouter-name sw01-vrouter neighbor 105.104.104.1 remote-as 65000 bfd '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vrouter_bgp_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter',
- 'pn_neighbor': '105.104.104.1', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 vrouter-bgp-remove vrouter-name sw01-vrouter neighbor 105.104.104.1 '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vrouter_bgp_modify(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter', 'pn_neighbor': '105.104.104.1',
- 'pn_remote_as': '65000', 'pn_bfd': False, 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 vrouter-bgp-modify vrouter-name sw01-vrouter neighbor 105.104.104.1 remote-as 65000 no-bfd '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_bgp_network.py b/test/units/modules/network/netvisor/test_pn_vrouter_bgp_network.py
deleted file mode 100644
index 4b7ee6a744..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vrouter_bgp_network.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vrouter_bgp_network
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestVrouterBGPNetworkModule(TestNvosModule):
-
- module = pn_vrouter_bgp_network
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_bgp_network.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_bgp_network.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'vrouter-bgp-network-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'vrouter-bgp-network-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False, ''
- if state == 'absent':
- self.run_check_cli.return_value = True, ''
-
- def test_vrouter_bgp_network_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_network': '10.10.10.10', 'pn_netmask': '31', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 vrouter-bgp-network-add vrouter-name foo-vrouter netmask 31 '
- expected_cmd += 'network 10.10.10.10'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vrouter_bgp_network_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_network': '10.10.10.10', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 vrouter-bgp-network-remove vrouter-name foo-vrouter network 10.10.10.10'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_interface_ip.py b/test/units/modules/network/netvisor/test_pn_vrouter_interface_ip.py
deleted file mode 100644
index 1e4e360b74..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vrouter_interface_ip.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vrouter_interface_ip
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestVrouterInterfaceIpModule(TestNvosModule):
-
- module = pn_vrouter_interface_ip
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_interface_ip.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_interface_ip.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'vrouter-interface-ip-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'vrouter-interface-ip-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = True, False, True
- if state == 'absent':
- self.run_check_cli.return_value = True, True, True
-
- def test_vrouter_interface_ip_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_ip': '2620:0:1651:1::30', 'pn_netmask': '127', 'pn_nic': 'eth0.4092', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 vrouter-interface-ip-add vrouter-name foo-vrouter nic eth0.4092 '
- expected_cmd += 'ip 2620:0:1651:1::30 netmask 127'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vrouter_interface_ip_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_ip': '2620:0:1651:1::30', 'pn_nic': 'eth0.4092', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 vrouter-interface-ip-remove vrouter-name foo-vrouter nic eth0.4092 '
- expected_cmd += 'ip 2620:0:1651:1::30 '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_loopback_interface.py b/test/units/modules/network/netvisor/test_pn_vrouter_loopback_interface.py
deleted file mode 100644
index 9bb2ba8dff..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vrouter_loopback_interface.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vrouter_loopback_interface
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestVrouterLoopbackInterfaceModule(TestNvosModule):
-
- module = pn_vrouter_loopback_interface
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_loopback_interface.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_loopback_interface.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'vrouter-loopback-interface-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'vrouter-loopback-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = True, False
- if state == 'absent':
- self.run_check_cli.return_value = True, True
-
- def test_vrouter_loopback_interface_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_ip': '192.168.10.1', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 vrouter-loopback-interface-add vrouter-name foo-vrouter ip 192.168.10.1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vrouter_loopback_interface_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_ip': '192.168.10.1', 'pn_index': '1', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 vrouter-loopback-interface-remove vrouter-name foo-vrouter index 1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_ospf.py b/test/units/modules/network/netvisor/test_pn_vrouter_ospf.py
deleted file mode 100644
index d9d9fd5e29..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vrouter_ospf.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vrouter_ospf
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestVrouterOSPFModule(TestNvosModule):
-
- module = pn_vrouter_ospf
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_ospf.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_ospf.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'vrouter-ospf-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'vrouter-ospf-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = True, False
- if state == 'absent':
- self.run_check_cli.return_value = True, True
-
- def test_vrouter_ospf_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter',
- 'pn_network': '105.104.104.1', 'pn_netmask': '24', 'pn_ospf_area': '0', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 vrouter-ospf-add vrouter-name sw01-vrouter network 105.104.104.1 netmask 24 ospf-area 0'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vrouter_ospf_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'sw01-vrouter',
- 'pn_network': '105.104.104.1', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 vrouter-ospf-remove vrouter-name sw01-vrouter network 105.104.104.1'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_ospf6.py b/test/units/modules/network/netvisor/test_pn_vrouter_ospf6.py
deleted file mode 100644
index 512348224a..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vrouter_ospf6.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vrouter_ospf6
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestVrouterOSPF6Module(TestNvosModule):
-
- module = pn_vrouter_ospf6
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_ospf6.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_ospf6.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'vrouter-ospf6-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'vrouter-ospf6-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = True, False
- if state == 'absent':
- self.run_check_cli.return_value = True, True
-
- def test_vrouter_ospf6_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_nic': 'eth0.4092', 'pn_ospf6_area': '0.0.0.0', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 vrouter-ospf6-add vrouter-name foo-vrouter nic eth0.4092 ospf6-area 0.0.0.0 '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vrouter_ospf6_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_nic': 'eth0.4092', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 vrouter-ospf6-remove vrouter-name foo-vrouter nic eth0.4092'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_packet_relay.py b/test/units/modules/network/netvisor/test_pn_vrouter_packet_relay.py
deleted file mode 100644
index 6258daedea..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vrouter_packet_relay.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vrouter_packet_relay
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestVrouterPacketRelayModule(TestNvosModule):
-
- module = pn_vrouter_packet_relay
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_packet_relay.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_packet_relay.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'vrouter-packet-relay-add':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'vrouter-packet-relay-remove':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = True, True
- if state == 'absent':
- self.run_check_cli.return_value = True, True
-
- def test_vrouter_packet_relay_add(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_forward_ip': '192.168.1.10', 'pn_nic': 'eth0.4092', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 vrouter-packet-relay-add vrouter-name foo-vrouter nic eth0.4092 forward-proto dhcp forward-ip 192.168.1.10'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vrouter_packet_relay_remove(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_vrouter_name': 'foo-vrouter',
- 'pn_forward_ip': '192.168.1.10', 'pn_nic': 'eth0.4092', 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 vrouter-packet-relay-remove vrouter-name foo-vrouter nic eth0.4092 forward-proto dhcp forward-ip 192.168.1.10'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vrouter_pim_config.py b/test/units/modules/network/netvisor/test_pn_vrouter_pim_config.py
deleted file mode 100644
index 46261af923..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vrouter_pim_config.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vrouter_pim_config
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule
-
-
-class TestVrouterPimConfigModule(TestNvosModule):
-
- module = pn_vrouter_pim_config
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vrouter_pim_config.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vrouter_pim_config.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['update'] == 'vrouter-pim-config-modify':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'update':
- self.run_check_cli.return_value = True
-
- def test_vrouter_pim_config_t1(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_query_interval': '10',
- 'pn_querier_timeout': '30', 'pn_vrouter_name': 'foo-vrouter', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 vrouter-pim-config-modify vrouter-name foo-vrouter '
- expected_cmd += 'querier-timeout 30 query-interval 10'
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vrouter_pim_config_t2(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_query_interval': '30',
- 'pn_hello_interval': '120', 'pn_vrouter_name': 'foo-vrouter', 'state': 'update'})
- result = self.execute_module(changed=True, state='update')
- expected_cmd = ' switch sw01 vrouter-pim-config-modify vrouter-name foo-vrouter '
- expected_cmd += 'hello-interval 120 query-interval 30'
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/netvisor/test_pn_vtep.py b/test/units/modules/network/netvisor/test_pn_vtep.py
deleted file mode 100644
index bbe829becf..0000000000
--- a/test/units/modules/network/netvisor/test_pn_vtep.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright: (c) 2018, Pluribus Networks
-# 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 json
-
-from units.compat.mock import patch
-from ansible.modules.network.netvisor import pn_vtep
-from units.modules.utils import set_module_args
-from .nvos_module import TestNvosModule, load_fixture
-
-
-class TestVtepModule(TestNvosModule):
-
- module = pn_vtep
-
- def setUp(self):
- self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_vtep.run_cli')
- self.run_nvos_commands = self.mock_run_nvos_commands.start()
-
- self.mock_run_check_cli = patch('ansible.modules.network.netvisor.pn_vtep.check_cli')
- self.run_check_cli = self.mock_run_check_cli.start()
-
- def tearDown(self):
- self.mock_run_nvos_commands.stop()
- self.mock_run_check_cli.stop()
-
- def run_cli_patch(self, module, cli, state_map):
- if state_map['present'] == 'vtep-create':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- elif state_map['absent'] == 'vtep-delete':
- results = dict(
- changed=True,
- cli_cmd=cli
- )
- module.exit_json(**results)
-
- def load_fixtures(self, commands=None, state=None, transport='cli'):
- self.run_nvos_commands.side_effect = self.run_cli_patch
- if state == 'present':
- self.run_check_cli.return_value = False
- if state == 'absent':
- self.run_check_cli.return_value = True
-
- def test_vtep_create(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'pn_vrouter_name': 'sw01-vrouter', 'pn_location': 'sw01', 'pn_ip': '192.168.1.10',
- 'pn_virtual_ip': '192.168.1.9', 'state': 'present'})
- result = self.execute_module(changed=True, state='present')
- expected_cmd = ' switch sw01 vtep-create name foo vrouter-name sw01-vrouter ip 192.168.1.10 location sw01 virtual-ip 192.168.1.9 '
- self.assertEqual(result['cli_cmd'], expected_cmd)
-
- def test_vtep_delete(self):
- set_module_args({'pn_cliswitch': 'sw01', 'pn_name': 'foo',
- 'state': 'absent'})
- result = self.execute_module(changed=True, state='absent')
- expected_cmd = ' switch sw01 vtep-delete name foo '
- self.assertEqual(result['cli_cmd'], expected_cmd)
diff --git a/test/units/modules/network/nos/fixtures/nos_config_config.cfg b/test/units/modules/network/nos/fixtures/nos_config_config.cfg
deleted file mode 100644
index dec739a4fa..0000000000
--- a/test/units/modules/network/nos/fixtures/nos_config_config.cfg
+++ /dev/null
@@ -1,31 +0,0 @@
-!
-hostname router
-!
-interface TenGigabitEthernet 104/0/0
- ip address 1.2.3.4 255.255.255.0
- description test string
-!
-interface TenGigabitEthernet 104/0/1
- ip address 6.7.8.9 255.255.255.0
- description test string
- shutdown
-!
-interface TenGigabitEthernet 104/0/10
- channel-group 20 mode active
- description Channel Group Member
-!
-interface TenGigabitEthernet 104/0/11
- channel-group 20 mode active
- description Channel Group Member
-!
-interface Port-channel 20
-!
-interface TenGigabitEthernet 104/0/9
- ip address 172.16.128.99 255.255.255.0
- ipv6 address dead::beaf/64
- description Bleh
-!
-protocol lldp
- system-description An Extreme VDX Device
- disable
-!
diff --git a/test/units/modules/network/nos/fixtures/nos_config_src.cfg b/test/units/modules/network/nos/fixtures/nos_config_src.cfg
deleted file mode 100644
index 81c7c69896..0000000000
--- a/test/units/modules/network/nos/fixtures/nos_config_src.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-!
-hostname foo
-!
-interface TenGigabitEthernet 104/0/0
- no ip address
-!
-interface TenGigabitEthernet 104/0/1
- ip address 6.7.8.9 255.255.255.0
- description test string
- shutdown
-!
diff --git a/test/units/modules/network/nos/fixtures/nos_facts_show_inventory_chassis b/test/units/modules/network/nos/fixtures/nos_facts_show_inventory_chassis
deleted file mode 100644
index 5ca10241e4..0000000000
--- a/test/units/modules/network/nos/fixtures/nos_facts_show_inventory_chassis
+++ /dev/null
@@ -1,3 +0,0 @@
-NAME: Chassis DESCR:System Chassis
-SID:BR-VDX6740 SwitchType:131
-PN:40-1000927-06 SN:CPL2541K01E
diff --git a/test/units/modules/network/nos/fixtures/nos_facts_show_running-config b/test/units/modules/network/nos/fixtures/nos_facts_show_running-config
deleted file mode 100644
index 3c80c59bf5..0000000000
--- a/test/units/modules/network/nos/fixtures/nos_facts_show_running-config
+++ /dev/null
@@ -1 +0,0 @@
- switch-attributes host-name LEAF4
diff --git a/test/units/modules/network/nos/fixtures/nos_facts_show_version b/test/units/modules/network/nos/fixtures/nos_facts_show_version
deleted file mode 100644
index 1accd8191e..0000000000
--- a/test/units/modules/network/nos/fixtures/nos_facts_show_version
+++ /dev/null
@@ -1,17 +0,0 @@
-Network Operating System Software
-Network Operating System Version: 7.2.0
-Copyright (c) 1995-2017 Brocade Communications Systems, Inc.
-Firmware name: 7.2.0
-Build Time: 10:52:47 Jul 10, 2017
-Install Time: 01:32:03 Jan 5, 2018
-Kernel: 2.6.34.6
-
-BootProm: 1.0.1
-Control Processor: e500mc with 4096 MB of memory
-
-Slot Name Primary/Secondary Versions Status
----------------------------------------------------------------------------
-SW/0 NOS 7.2.0 ACTIVE*
- 7.2.0
-SW/1 NOS 7.2.0 STANDBY
- 7.2.0
diff --git a/test/units/modules/network/nos/fixtures/show_version b/test/units/modules/network/nos/fixtures/show_version
deleted file mode 100644
index 1accd8191e..0000000000
--- a/test/units/modules/network/nos/fixtures/show_version
+++ /dev/null
@@ -1,17 +0,0 @@
-Network Operating System Software
-Network Operating System Version: 7.2.0
-Copyright (c) 1995-2017 Brocade Communications Systems, Inc.
-Firmware name: 7.2.0
-Build Time: 10:52:47 Jul 10, 2017
-Install Time: 01:32:03 Jan 5, 2018
-Kernel: 2.6.34.6
-
-BootProm: 1.0.1
-Control Processor: e500mc with 4096 MB of memory
-
-Slot Name Primary/Secondary Versions Status
----------------------------------------------------------------------------
-SW/0 NOS 7.2.0 ACTIVE*
- 7.2.0
-SW/1 NOS 7.2.0 STANDBY
- 7.2.0
diff --git a/test/units/modules/network/nos/nos_module.py b/test/units/modules/network/nos/nos_module.py
deleted file mode 100644
index 80a24f01fc..0000000000
--- a/test/units/modules/network/nos/nos_module.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 file_desc:
- data = file_desc.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestNosModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/nos/test_nos_command.py b/test/units/modules/network/nos/test_nos_command.py
deleted file mode 100644
index 53bfb5bd5a..0000000000
--- a/test/units/modules/network/nos/test_nos_command.py
+++ /dev/null
@@ -1,121 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.nos import nos_command
-from .nos_module import TestNosModule, load_fixture
-
-
-class TestNosCommandModule(TestNosModule):
-
- module = nos_command
-
- def setUp(self):
- super(TestNosCommandModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.nos.nos_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestNosCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item['command'])
- command = obj['command']
- except ValueError:
- command = item['command']
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_nos_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('Network Operating System Software'))
-
- def test_nos_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('Network Operating System Software'))
-
- def test_nos_command_wait_for(self):
- wait_for = 'result[0] contains "Network Operating System Software"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_nos_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_nos_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_nos_command_match_any(self):
- wait_for = ['result[0] contains "Network"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_nos_command_match_all(self):
- wait_for = ['result[0] contains "Network"',
- 'result[0] contains "Network Operating System Software"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_nos_command_match_all_failure(self):
- wait_for = ['result[0] contains "Network Operating System Software"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show version']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
-
- def test_nos_command_configure_error(self):
- commands = ['configure terminal']
- set_module_args({
- 'commands': commands,
- '_ansible_check_mode': True,
- })
- result = self.execute_module(failed=True)
- self.assertEqual(
- result['msg'],
- 'nos_command does not support running config mode commands. '
- 'Please use nos_config instead'
- )
diff --git a/test/units/modules/network/nos/test_nos_config.py b/test/units/modules/network/nos/test_nos_config.py
deleted file mode 100644
index 5fb7b9215e..0000000000
--- a/test/units/modules/network/nos/test_nos_config.py
+++ /dev/null
@@ -1,167 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.nos import nos_config
-from .nos_module import TestNosModule, load_fixture
-
-
-class TestNosConfigModule(TestNosModule):
-
- module = nos_config
-
- def setUp(self):
- super(TestNosConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.nos.nos_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.nos.nos_config.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.nos.nos_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestNosConfigModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'nos_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_nos_config_unchanged(self):
- src = load_fixture('nos_config_config.cfg')
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_nos_config_src(self):
- src = load_fixture('nos_config_src.cfg')
- set_module_args(dict(src=src))
- commands = ['hostname foo', 'interface TenGigabitEthernet 104/0/0',
- 'no ip address']
- self.execute_module(changed=True, commands=commands)
-
- def test_nos_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_nos_config_lines_wo_parents(self):
- set_module_args(dict(lines=['hostname foo']))
- commands = ['hostname foo']
- self.execute_module(changed=True, commands=commands)
-
- def test_nos_config_lines_w_parents(self):
- set_module_args(dict(lines=['shutdown'], parents=['interface TenGigabitEthernet 104/0/0']))
- commands = ['interface TenGigabitEthernet 104/0/0', 'shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_nos_config_before(self):
- set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2']))
- commands = ['test1', 'test2', 'hostname foo']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_nos_config_after(self):
- set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2']))
- commands = ['hostname foo', 'test1', 'test2']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_nos_config_before_after_no_change(self):
- set_module_args(dict(lines=['hostname router'],
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- self.execute_module()
-
- def test_nos_config_config(self):
- config = 'hostname localhost'
- set_module_args(dict(lines=['hostname router'], config=config))
- commands = ['hostname router']
- self.execute_module(changed=True, commands=commands)
-
- def test_nos_config_replace_block(self):
- lines = ['description test string', 'test string']
- parents = ['interface TenGigabitEthernet 104/0/0']
- set_module_args(dict(lines=lines, replace='block', parents=parents))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands)
-
- def test_nos_config_match_none(self):
- lines = ['hostname router']
- set_module_args(dict(lines=lines, match='none'))
- self.execute_module(changed=True, commands=lines)
-
- def test_nos_config_match_none_parents(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string']
- parents = ['interface TenGigabitEthernet 104/0/0']
- set_module_args(dict(lines=lines, parents=parents, match='none'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_nos_config_match_strict(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string',
- 'shutdown']
- parents = ['interface TenGigabitEthernet 104/0/0']
- set_module_args(dict(lines=lines, parents=parents, match='strict'))
- commands = parents + ['shutdown']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_nos_config_match_exact(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string',
- 'shutdown']
- parents = ['interface TenGigabitEthernet 104/0/0']
- set_module_args(dict(lines=lines, parents=parents, match='exact'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_nos_config_src_and_lines_fails(self):
- args = dict(src='foo', lines='foo')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_nos_config_src_and_parents_fails(self):
- args = dict(src='foo', parents='foo')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_nos_config_match_exact_requires_lines(self):
- args = dict(match='exact')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_nos_config_match_strict_requires_lines(self):
- args = dict(match='strict')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_nos_config_replace_block_requires_lines(self):
- args = dict(replace='block')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_nos_config_replace_config_requires_src(self):
- args = dict(replace='config')
- set_module_args(args)
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/nos/test_nos_facts.py b/test/units/modules/network/nos/test_nos_facts.py
deleted file mode 100644
index c8af1e6b47..0000000000
--- a/test/units/modules/network/nos/test_nos_facts.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.nos import nos_facts
-from .nos_module import TestNosModule, load_fixture
-
-
-class TestNosFactsModule(TestNosModule):
-
- module = nos_facts
-
- def setUp(self):
- super(TestNosFactsModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.nos.nos_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestNosFactsModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- commands = args[1]
- output = list()
-
- for command in commands:
- filename = str(command).split(' | ')[0].replace(' ', '_')
- output.append(load_fixture('nos_facts_%s' % filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_nos_facts(self):
- set_module_args(dict(gather_subset='default'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_model'], 'BR-VDX6740'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_serialnum'], 'CPL2541K01E'
- )
diff --git a/test/units/modules/network/nso/fixtures/complex_schema.json b/test/units/modules/network/nso/fixtures/complex_schema.json
deleted file mode 100644
index 49a1176557..0000000000
--- a/test/units/modules/network/nso/fixtures/complex_schema.json
+++ /dev/null
@@ -1,212 +0,0 @@
-{
- "meta": {
- "prefix": "ansible",
- "namespace": "http://example.com/ansible",
- "types": {
- },
- "keypath": "/ansible:action/complex"
- },
- "data": {
- "kind": "action",
- "mandatory": true,
- "name": "complex",
- "qname": "ansible:complex",
- "access": {
- "read": false,
- "create": false,
- "execute": true,
- "update": false,
- "delete": false
- },
- "children": [
- {
- "kind": "leaf",
- "is_action_input": true,
- "name": "number",
- "qname": "ansible:number",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": true,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "uint8"
- }
- },
- {
- "kind": "container",
- "is_action_input": true,
- "mandatory": true,
- "name": "ansible",
- "qname": "ansible:ansible",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": true,
- "delete": false
- },
- "children": [
- {
- "kind": "choice",
- "cases": [
- {
- "kind": "case",
- "name": "version",
- "children": [
- {
- "kind": "leaf",
- "is_action_input": true,
- "name": "version",
- "qname": "ansible:version",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": true,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "string"
- }
- }
- ]
- },
- {
- "kind": "case",
- "name": "release",
- "children": [
- {
- "kind": "container",
- "is_action_input": true,
- "mandatory": true,
- "name": "release",
- "qname": "ansible:release",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": true,
- "delete": false
- },
- "children": [
- {
- "kind": "leaf",
- "is_action_input": true,
- "name": "major",
- "qname": "ansible:major",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": true,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "uint8"
- }
- },
- {
- "kind": "leaf",
- "is_action_input": true,
- "name": "minor",
- "qname": "ansible:minor",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": true,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "uint8"
- }
- }
- ]
- }
- ]
- }
- ],
- "name": "version-releae-choice"
- }
- ]
- },
- {
- "kind": "choice",
- "cases": [
- {
- "kind": "case",
- "name": "version",
- "children": [
- {
- "kind": "list",
- "min_elements": 0,
- "name": "version",
- "max_elements": "unbounded",
- "qname": "ansible:version",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": false,
- "delete": false
- },
- "mandatory": true,
- "children": [
- {
- "kind": "leaf",
- "name": "name",
- "qname": "ansible:name",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": false,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "string"
- },
- "is_action_output": true
- }
- ],
- "is_action_output": true
- }
- ]
- },
- {
- "kind": "case",
- "name": "release",
- "children": [
- {
- "kind": "leaf",
- "name": "release",
- "qname": "ansible:release",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": false,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "string"
- },
- "is_action_output": true
- }
- ]
- }
- ],
- "name": "version-release-choice"
- }
- ]
- }
-}
diff --git a/test/units/modules/network/nso/fixtures/config_config.json b/test/units/modules/network/nso/fixtures/config_config.json
deleted file mode 100644
index b7318586b5..0000000000
--- a/test/units/modules/network/nso/fixtures/config_config.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "l3vpn:vpn": {
- "l3vpn": [
- {
- "name": "company",
- "route-distinguisher": 999,
- "endpoint": [
- {
- "id": "branch-office1",
- "ce-device": "ce6",
- "ce-interface": "GigabitEthernet0/12",
- "ip-network": "10.10.1.0/24",
- "bandwidth": 12000000,
- "as-number": 65101
- }
- ]
- }
- ]
- }
-}
diff --git a/test/units/modules/network/nso/fixtures/config_config_changes.json b/test/units/modules/network/nso/fixtures/config_config_changes.json
deleted file mode 100644
index 3ef234b7ff..0000000000
--- a/test/units/modules/network/nso/fixtures/config_config_changes.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "changes": [
- {
- "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-device",
- "old": "",
- "value": "ce6",
- "op": "value_set"
- },
- {
- "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ip-network",
- "old": "",
- "value": "10.10.1.0/24",
- "op": "value_set"
- },
- {
- "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/as-number",
- "old": "",
- "value": "65101",
- "op": "value_set"
- },
- {
- "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-interface",
- "old": "",
- "value": "GigabitEthernet0/12",
- "op": "value_set"
- },
- {
- "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/bandwidth",
- "old": "",
- "value": "12000000",
- "op": "value_set"
- },
- {
- "path": "/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}",
- "old": "",
- "value": "",
- "op": "created"
- },
- {
- "path": "/l3vpn:vpn/l3vpn{company}",
- "old": "",
- "value": "",
- "op": "modified"
- }
- ]
-}
diff --git a/test/units/modules/network/nso/fixtures/config_empty_data.json b/test/units/modules/network/nso/fixtures/config_empty_data.json
deleted file mode 100644
index 0967ef424b..0000000000
--- a/test/units/modules/network/nso/fixtures/config_empty_data.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/test/units/modules/network/nso/fixtures/description_schema.json b/test/units/modules/network/nso/fixtures/description_schema.json
deleted file mode 100644
index 2680a484ad..0000000000
--- a/test/units/modules/network/nso/fixtures/description_schema.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "meta": {
- "prefix": "ncs",
- "namespace": "http://tail-f.com/ns/ncs",
- "types": {
- },
- "keypath": "/ncs:devices/device{ce0}/description"
- },
- "data": {
- "info": {
- "string": "Free form textual description"
- },
- "kind": "leaf",
- "name": "description",
- "qname": "ncs:description",
- "access": {
- "read": true,
- "create": true,
- "execute": false,
- "update": true,
- "delete": true
- },
- "type": {
- "primitive": true,
- "name": "string"
- }
- }
-}
diff --git a/test/units/modules/network/nso/fixtures/device_schema.json b/test/units/modules/network/nso/fixtures/device_schema.json
deleted file mode 100644
index d3bd2ac363..0000000000
--- a/test/units/modules/network/nso/fixtures/device_schema.json
+++ /dev/null
@@ -1 +0,0 @@
-{"meta": {"prefix": "ncs", "namespace": "http://tail-f.com/ns/ncs", "types": {"http://tail-f.com/ns/ncs:t85": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t85"}], "leaf_type": [{"name": "string"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number": [{"range": {"value": [["0", "65535"]]}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number"}, {"name": "uint16"}], "http://tail-f.com/ns/ncs:t83": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t83"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:node-name": [{"name": "http://tail-f.com/ns/ncs:node-name"}, {"max-length": {"value": 253}, "min-length": {"value": 1}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:domain-name", "pattern": {"value": "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."}}, {"name": "string"}], "http://tail-f.com/ns/ncs:t29": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t29"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:t101": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t101"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t43": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t43"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t27": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t27"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:t40": [{"name": "http://tail-f.com/ns/ncs:t40", "enumeration": [{"label": "reject"}, {"label": "accept"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:t47": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t47"}], "leaf_type": [{"name": "string"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:host": [{"union": [[{"name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:ip-address"}, {"name": "ip-address"}], [{"max-length": {"value": 253}, "min-length": {"value": 1}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:domain-name", "pattern": {"value": "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."}}, {"name": "string"}]]}], "http://tail-f.com/ns/ncs:t45": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t45"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t49": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t49"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:trace-flag": [{"name": "http://tail-f.com/ns/ncs:trace-flag", "enumeration": [{"info": "Trace is disabled", "label": "false"}, {"info": "Raw, unformatted data", "label": "raw"}, {"info": "Pretty-printed data", "label": "pretty"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:t28": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t28"}, {"name": "uint32"}]}, "keypath": "/ncs:devices/device"}, "data": {"info": {"string": "The list of managed devices"}, "kind": "list", "leafref_groups": [["remote-node"], ["authgroup"], ["device-profile"]], "mandatory": true, "name": "device", "max_elements": "unbounded", "contains_when_statement": true, "qname": "ncs:device", "children": [{"info": {"string": "A string uniquely identifying the managed device"}, "kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "IP address or host name for the management interface"}, "kind": "leaf", "name": "address", "qname": "ncs:address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Port for the management interface"}, "kind": "leaf", "name": "port", "qname": "ncs:port", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "Name of remote node which connects to device"}, "kind": "leaf", "name": "remote-node", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "node-name"}, "qname": "ncs:remote-node", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:cluster/remote-node/name", "is_leafref": true}, {"info": {"string": "SSH connection configuration"}, "kind": "container", "mandatory": true, "name": "ssh", "qname": "ncs:ssh", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Free form textual description"}, "kind": "leaf", "name": "description", "qname": "ncs:description", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Physical location of devices in the group"}, "kind": "container", "mandatory": true, "name": "location", "qname": "ncs:location", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Authentication credentials for the device"}, "kind": "leaf", "name": "authgroup", "type": {"primitive": true, "name": "string"}, "qname": "ncs:authgroup", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/authgroups/group/name", "is_leafref": true}, {"info": {"string": "Management protocol for the device"}, "kind": "container", "mandatory": true, "name": "device-type", "qname": "ncs:device-type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "leaf", "name": "device-profile", "type": {"primitive": true, "name": "string"}, "qname": "ncs:device-profile", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/profiles/profile/name", "is_leafref": true}, {"info": {"string": "Timeout in seconds for new connections"}, "kind": "leaf", "name": "connect-timeout", "qname": "ncs:connect-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t27"}}, {"info": {"string": "Timeout in seconds used when reading data"}, "kind": "leaf", "name": "read-timeout", "qname": "ncs:read-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t28"}}, {"info": {"string": "Timeout in seconds used when writing data"}, "kind": "leaf", "name": "write-timeout", "qname": "ncs:write-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t29"}}, {"info": {"string": "Controls SSH keep alive settings"}, "kind": "container", "mandatory": true, "name": "ssh-keep-alive", "qname": "ncs:ssh-keep-alive", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Trace the southbound communication to devices"}, "kind": "leaf", "name": "trace", "qname": "ncs:trace", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "trace-flag"}}, {"info": {"string": "Control which device capabilities NCS uses"}, "kind": "container", "mandatory": true, "name": "ned-settings", "qname": "ncs:ned-settings", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control settings for the commit-queue"}, "kind": "container", "mandatory": true, "name": "commit-queue", "qname": "ncs:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control how sessions to related devices can be pooled."}, "kind": "container", "mandatory": true, "name": "session-pool", "qname": "ncs:session-pool", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control settings for no-overwrite sync check"}, "kind": "container", "mandatory": true, "name": "no-overwrite", "qname": "ncs:no-overwrite", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Specifies the behaviour of a commit operation involving a\ndevice that is out of sync with NCS. Value accept assumes that\nthe device's sync state is unknown and it is cleared on commit.\nThe default behaviour is to reject such commits."}, "kind": "leaf", "name": "out-of-sync-commit-behaviour", "qname": "ncs:out-of-sync-commit-behaviour", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t40"}}, {"default": "use-lsa", "kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"info": {"string": "Handle the LSA nodes as such. This is the default"}, "kind": "leaf", "name": "use-lsa", "qname": "ncs:use-lsa", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"info": {"string": "Do not handle any of the LSA nodes as such. These nodes\nwill be handled as any other device. This has the same\nresult as adding the commit flag 'no-lsa' to every commit."}, "kind": "leaf", "name": "no-lsa", "qname": "ncs:no-lsa", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"info": {"string": "Show all active settings for the device"}, "kind": "container", "mandatory": true, "name": "active-settings", "qname": "ncs:active-settings", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Additional protocols for the live-tree (read-only)"}, "kind": "list", "leafref_groups": [["authgroup"]], "min_elements": 0, "name": "live-status-protocol", "max_elements": "unbounded", "qname": "ncs:live-status-protocol", "children": [{"kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "IP Address for the management interface"}, "kind": "leaf", "name": "address", "qname": "ncs:address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Port for the management interface"}, "kind": "leaf", "name": "port", "qname": "ncs:port", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "SSH host key configuration"}, "kind": "container", "name": "ssh", "presence": true, "qname": "ncs:ssh", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}}, {"info": {"string": "Authentication credentials for the device"}, "kind": "leaf", "name": "authgroup", "type": {"primitive": true, "name": "string"}, "qname": "ncs:authgroup", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/authgroups/group/name", "is_leafref": true}, {"info": {"string": "Management protocol for the device"}, "kind": "container", "mandatory": true, "name": "device-type", "qname": "ncs:device-type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Operational State for the live protocol"}, "kind": "container", "mandatory": true, "name": "state", "qname": "ncs:state", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "List of capabillities supported by the device"}, "kind": "list", "min_elements": 0, "name": "capability", "max_elements": "unbounded", "qname": "ncs:capability", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["uri"], "mandatory": true, "config": false, "children": [{"info": {"string": "Capability URI"}, "kind": "key", "mandatory": true, "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Capability revision"}, "kind": "leaf", "name": "revision", "type": {"primitive": true, "name": "string"}, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability module"}, "kind": "leaf", "name": "module", "type": {"primitive": true, "name": "string"}, "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability features"}, "kind": "leaf-list", "name": "feature", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t83"}, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability deviations"}, "kind": "leaf-list", "name": "deviation", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t85"}, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["authgroup"]]}, {"info": {"string": "Show states for the device"}, "kind": "container", "mandatory": true, "name": "state", "qname": "ncs:state", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "How the device was added to NCS"}, "kind": "container", "mandatory": true, "name": "source", "qname": "ncs:source", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "A list of capabilities supported by the device"}, "kind": "list", "min_elements": 0, "name": "capability", "max_elements": "unbounded", "qname": "ncs:capability", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["uri"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "revision", "config": false, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "name": "module", "config": false, "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf-list", "name": "feature", "config": false, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t43"}}, {"kind": "leaf-list", "name": "deviation", "config": false, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t45"}}, {"info": {"string": "This action removes a capability from the list of capabilities.\nIf leaf module is set then corresponding module is attempted to\nbe removed from the list of modules for this device. This action\nis only intended to be used for pre-provisioning: it is not\npossible to override capabilities and modules provided by the\nNED implementation using this action."}, "kind": "action", "mandatory": true, "name": "remove", "qname": "ncs:remove", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}]}, {"info": {"string": "This is a list of the YANG modules supported by the device.\n\nThis list is populated the first time NCS connects to the\ndevice."}, "kind": "list", "min_elements": 0, "name": "module", "max_elements": "unbounded", "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["name"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "name", "type": {"primitive": true, "name": "string"}, "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "revision", "config": false, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf-list", "name": "feature", "config": false, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t47"}}, {"kind": "leaf-list", "name": "deviation", "config": false, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t49"}}]}, {"info": {"string": "Contains vendor-specific information for\nidentifying the system platform.\n\nNEDs MAY augment this container with more device-specific\nnodes."}, "kind": "container", "mandatory": true, "name": "platform", "qname": "ncs:platform", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "NCS copy of the device configuration"}, "kind": "container", "mandatory": true, "name": "config", "qname": "ncs:config", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Status data fetched from the device"}, "kind": "container", "mandatory": true, "name": "live-status", "qname": "ncs:live-status", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "RPCs from the device"}, "kind": "container", "mandatory": true, "name": "rpc", "qname": "ncs:rpc", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "NETCONF notifications from the device"}, "kind": "container", "mandatory": true, "name": "netconf-notifications", "qname": "ncs:netconf-notifications", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Show services that use this device"}, "kind": "leaf-list", "name": "service-list", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t101"}, "qname": "ncs:service-list", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Notification address if different from device address"}, "kind": "leaf", "name": "snmp-notification-address", "qname": "ncs:snmp-notification-address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Device specific information"}, "kind": "container", "name": "platform", "presence": true, "when_targets": ["/ncs:devices/device/device-type/cli/ned-id"], "qname": "alu-meta:platform", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}}, {"info": {"string": "A summary of all active alarms per device."}, "kind": "container", "mandatory": true, "name": "alarm-summary", "qname": "al:alarm-summary", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Note: this action overwrites existing list of capabilities.\n\nThis action copies the list of capabilities and the list of modules\nfrom another device or profile. When used on a device, this action\nis only intended to be used for pre-provisioning: it is not possible\nto override capabilities and modules provided by the\nNED implementation using this action."}, "kind": "action", "mandatory": true, "name": "copy-capabilities", "qname": "ncs:copy-capabilities", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Note: this action overwrites existing list of capabilities.\n\nThis action populates the list of capabilities based on the\nconfigured ned-id for this device, if possible. NCS will look up\nthe package corresponding to the ned-id and add all the modules\nfrom this packages to the list of this device's capabilities and\nlist of modules. It is the responsibility of the caller to verify\nthat the automatically populated list of capabilities matches actual\ndevice's capabilities. The list of capabilities can then be\nfine-tuned using add-capability and capability/remove actions.\nCurrently this approach will only work for CLI and generic devices.\nThis action is only intended to be used for pre-provisioning:\nit is not possible to override capabilities and modules provided\nby the NED implementation using this action."}, "kind": "action", "mandatory": true, "name": "find-capabilities", "qname": "ncs:find-capabilities", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "This action adds a capability to the list of capabilities.\nIf uri is specified, then it is parsed as YANG capability string\nand module, revision, feature and deviation parameters are derived\nfrom the string. If module is specified, then the namespace is\nlooked up in the list of loaded namespaces and capability string\nconstructed automatically. If the module is specified and the\nattempt to look it up failed, then the action does nothing.\nIf module is specified or can be derived from capability string,\nthen the module is also added/replaced in the list of modules. This\naction is only intended to be used for pre-provisioning: it is not\npossible to override capabilities and modules provided by the NED\nimplementation using this action."}, "kind": "action", "mandatory": true, "name": "add-capability", "qname": "ncs:add-capability", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Take a named template and copy it here"}, "kind": "action", "mandatory": true, "name": "apply-template", "leafrefGroups": [["template-name"]], "qname": "ncs:apply-template", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["template-name"]]}, {"info": {"string": "Instantiate the config for the device from existing device"}, "kind": "action", "mandatory": true, "name": "instantiate-from-other-device", "leafrefGroups": [["device-name"]], "qname": "ncs:instantiate-from-other-device", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device-name"]]}, {"info": {"string": "Compare the actual device config with the NCS copy"}, "kind": "action", "mandatory": true, "name": "compare-config", "qname": "ncs:compare-config", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pulling from the device"}, "kind": "action", "mandatory": true, "name": "sync-from", "qname": "ncs:sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pushing to the device"}, "kind": "action", "mandatory": true, "name": "sync-to", "qname": "ncs:sync-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if the NCS config is in sync with the device"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "ncs:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if NCS and the device have compatible YANG modules"}, "kind": "action", "mandatory": true, "name": "check-yang-modules", "qname": "ncs:check-yang-modules", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Connect to the device"}, "kind": "action", "mandatory": true, "name": "connect", "qname": "ncs:connect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Close all sessions to the device"}, "kind": "action", "mandatory": true, "name": "disconnect", "qname": "ncs:disconnect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "ICMP ping the device"}, "kind": "action", "mandatory": true, "name": "ping", "qname": "ncs:ping", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Delete the config in NCS without deleting it in the device"}, "kind": "action", "mandatory": true, "name": "delete-config", "qname": "ncs:delete-config", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Secure copy file to the device"}, "kind": "action", "mandatory": true, "name": "scp-to", "qname": "ncs:scp-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Secure copy file to the device"}, "kind": "action", "mandatory": true, "name": "scp-from", "qname": "ncs:scp-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "min_elements": 0, "leafrefGroups": [["remote-node"], ["authgroup"], ["device-profile"]]}}
diff --git a/test/units/modules/network/nso/fixtures/devices_schema.json b/test/units/modules/network/nso/fixtures/devices_schema.json
deleted file mode 100644
index 541ba01067..0000000000
--- a/test/units/modules/network/nso/fixtures/devices_schema.json
+++ /dev/null
@@ -1 +0,0 @@
-{"meta": {"prefix": "ncs", "namespace": "http://tail-f.com/ns/ncs", "types": {"http://tail-f.com/ns/ncs:t68": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t68"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t85": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t85"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t83": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t83"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t60": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t60"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t101": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t101"}], "leaf_type": [{"name": "string"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:host": [{"union": [[{"name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:ip-address"}, {"name": "ip-address"}], [{"max-length": {"value": 253}, "min-length": {"value": 1}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:domain-name", "pattern": {"value": "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."}}, {"name": "string"}]]}], "http://tail-f.com/ns/ncs:trace-flag": [{"name": "http://tail-f.com/ns/ncs:trace-flag", "enumeration": [{"info": "Trace is disabled", "label": "false"}, {"info": "Raw, unformatted data", "label": "raw"}, {"info": "Pretty-printed data", "label": "pretty"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:t43": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t43"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t27": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t27"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:t40": [{"name": "http://tail-f.com/ns/ncs:t40", "enumeration": [{"label": "reject"}, {"label": "accept"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:t47": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t47"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t45": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t45"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t49": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t49"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t29": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t29"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:t28": [{"range": {"value": [["1", "4294967"]]}, "name": "http://tail-f.com/ns/ncs:t28"}, {"name": "uint32"}], "http://tail-f.com/ns/ncs:node-name": [{"name": "http://tail-f.com/ns/ncs:node-name"}, {"max-length": {"value": 253}, "min-length": {"value": 1}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:domain-name", "pattern": {"value": "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."}}, {"name": "string"}], "http://tail-f.com/ns/ncs:t74": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t74"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t72": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t72"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t70": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t70"}], "leaf_type": [{"name": "string"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number": [{"range": {"value": [["0", "65535"]]}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number"}, {"name": "uint16"}], "http://tail-f.com/ns/ncs:t56": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t56"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:t58": [{"list_type": [{"leaf-list": true, "name": "http://tail-f.com/ns/ncs:t58"}], "leaf_type": [{"name": "string"}]}]}, "keypath": "/ncs:devices"}, "data": {"info": {"string": "The managed devices and device communication settings"}, "kind": "container", "mandatory": true, "name": "devices", "contains_when_statement": true, "qname": "ncs:devices", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "children": [{"info": {"string": "Global settings for all managed devices."}, "kind": "container", "mandatory": true, "name": "global-settings", "qname": "ncs:global-settings", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Device profile parameters"}, "kind": "container", "mandatory": true, "name": "profiles", "qname": "ncs:profiles", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Authentication for managed devices"}, "kind": "container", "mandatory": true, "name": "authgroups", "qname": "ncs:authgroups", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Named configuration templates for devices"}, "kind": "list", "min_elements": 0, "name": "template", "max_elements": "unbounded", "qname": "ncs:template", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "children": [{"info": {"string": "The name of a specific template configuration."}, "kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "This container is augmented with data models from the devices."}, "kind": "container", "mandatory": true, "name": "config", "qname": "ncs:config", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}]}, {"info": {"string": "Groups of devices"}, "kind": "list", "leafref_groups": [["device-name"], ["device-group"], ["member"]], "min_elements": 0, "name": "device-group", "max_elements": "unbounded", "qname": "ncs:device-group", "children": [{"kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Physical location of devices in the group"}, "kind": "container", "mandatory": true, "name": "location", "qname": "ncs:location", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Device within group"}, "kind": "leaf-list", "name": "device-name", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t56"}, "qname": "ncs:device-name", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/device/name", "is_leafref": true}, {"info": {"string": "Group within group"}, "kind": "leaf-list", "name": "device-group", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t58"}, "qname": "ncs:device-group", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/device-group/name", "is_leafref": true}, {"info": {"string": "Flattened list of all members"}, "kind": "leaf-list", "name": "member", "is_leafref": true, "qname": "ncs:member", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:devices/device/name", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t60"}, "config": false}, {"info": {"string": "RPCs from the device's"}, "kind": "container", "mandatory": true, "name": "rpc", "qname": "ncs:rpc", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "A summary of all active alarms per device group."}, "kind": "container", "mandatory": true, "name": "alarm-summary", "qname": "al:alarm-summary", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Set up sessions to all unlocked devices"}, "kind": "action", "mandatory": true, "name": "connect", "qname": "ncs:connect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pushing to the devices"}, "kind": "action", "mandatory": true, "name": "sync-to", "qname": "ncs:sync-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pulling from the devices"}, "kind": "action", "mandatory": true, "name": "sync-from", "qname": "ncs:sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if the NCS config is in sync with the device"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "ncs:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if NCS and the devices have compatible YANG modules"}, "kind": "action", "mandatory": true, "name": "check-yang-modules", "qname": "ncs:check-yang-modules", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Retrieve SSH host keys from all devices"}, "kind": "action", "mandatory": true, "name": "fetch-ssh-host-keys", "qname": "ncs:fetch-ssh-host-keys", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Take a named template and copy it here"}, "kind": "action", "mandatory": true, "name": "apply-template", "leafrefGroups": [["template-name"]], "qname": "ncs:apply-template", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["template-name"]]}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["device-name"], ["device-group"], ["member"]]}, {"info": {"string": "A list of named groups of MIBs"}, "kind": "list", "leafref_groups": [["mib-group"]], "min_elements": 0, "name": "mib-group", "max_elements": "unbounded", "qname": "ncs:mib-group", "children": [{"info": {"string": "An arbitrary name of the MIB group."}, "kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "MIB module names or name prefixes"}, "kind": "leaf-list", "name": "mib-module", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t68"}, "qname": "ncs:mib-module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/device-module/mib-module", "is_leafref": true}, {"info": {"string": "A list of MIB groups contained in this MIB group"}, "kind": "leaf-list", "name": "mib-group", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t70"}, "qname": "ncs:mib-group", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/mib-group/name", "is_leafref": true}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["mib-group"]]}, {"info": {"string": "List the devices and supported modules"}, "kind": "list", "min_elements": 0, "name": "device-module", "max_elements": "unbounded", "qname": "ncs:device-module", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["name"], "mandatory": true, "config": false, "children": [{"info": {"string": "The module name"}, "kind": "key", "mandatory": true, "name": "name", "type": {"primitive": true, "name": "string"}, "qname": "ncs:name", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "The module revision"}, "kind": "leaf-list", "name": "revision", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t72"}, "qname": "ncs:revision", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "The XML namespace uri for the module"}, "kind": "leaf", "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "The names of the devices that support this module"}, "kind": "leaf-list", "name": "devices", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t74"}, "qname": "ncs:devices", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}, {"info": {"string": "The list of managed devices"}, "kind": "list", "leafref_groups": [["remote-node"], ["authgroup"], ["device-profile"]], "min_elements": 0, "name": "device", "max_elements": "unbounded", "qname": "ncs:device", "children": [{"info": {"string": "A string uniquely identifying the managed device"}, "kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "IP address or host name for the management interface"}, "kind": "leaf", "name": "address", "qname": "ncs:address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Port for the management interface"}, "kind": "leaf", "name": "port", "qname": "ncs:port", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "Name of remote node which connects to device"}, "kind": "leaf", "name": "remote-node", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "node-name"}, "qname": "ncs:remote-node", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:cluster/remote-node/name", "is_leafref": true}, {"info": {"string": "SSH connection configuration"}, "kind": "container", "mandatory": true, "name": "ssh", "qname": "ncs:ssh", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Free form textual description"}, "kind": "leaf", "name": "description", "qname": "ncs:description", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Physical location of devices in the group"}, "kind": "container", "mandatory": true, "name": "location", "qname": "ncs:location", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Authentication credentials for the device"}, "kind": "leaf", "name": "authgroup", "type": {"primitive": true, "name": "string"}, "qname": "ncs:authgroup", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/authgroups/group/name", "is_leafref": true}, {"info": {"string": "Management protocol for the device"}, "kind": "container", "mandatory": true, "name": "device-type", "qname": "ncs:device-type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "leaf", "name": "device-profile", "type": {"primitive": true, "name": "string"}, "qname": "ncs:device-profile", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/profiles/profile/name", "is_leafref": true}, {"info": {"string": "Timeout in seconds for new connections"}, "kind": "leaf", "name": "connect-timeout", "qname": "ncs:connect-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t27"}}, {"info": {"string": "Timeout in seconds used when reading data"}, "kind": "leaf", "name": "read-timeout", "qname": "ncs:read-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t28"}}, {"info": {"string": "Timeout in seconds used when writing data"}, "kind": "leaf", "name": "write-timeout", "qname": "ncs:write-timeout", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "units": "seconds", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t29"}}, {"info": {"string": "Controls SSH keep alive settings"}, "kind": "container", "mandatory": true, "name": "ssh-keep-alive", "qname": "ncs:ssh-keep-alive", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Trace the southbound communication to devices"}, "kind": "leaf", "name": "trace", "qname": "ncs:trace", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "trace-flag"}}, {"info": {"string": "Control which device capabilities NCS uses"}, "kind": "container", "mandatory": true, "name": "ned-settings", "qname": "ncs:ned-settings", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control settings for the commit-queue"}, "kind": "container", "mandatory": true, "name": "commit-queue", "qname": "ncs:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control how sessions to related devices can be pooled."}, "kind": "container", "mandatory": true, "name": "session-pool", "qname": "ncs:session-pool", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Control settings for no-overwrite sync check"}, "kind": "container", "mandatory": true, "name": "no-overwrite", "qname": "ncs:no-overwrite", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Specifies the behaviour of a commit operation involving a\ndevice that is out of sync with NCS. Value accept assumes that\nthe device's sync state is unknown and it is cleared on commit.\nThe default behaviour is to reject such commits."}, "kind": "leaf", "name": "out-of-sync-commit-behaviour", "qname": "ncs:out-of-sync-commit-behaviour", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t40"}}, {"default": "use-lsa", "kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"info": {"string": "Handle the LSA nodes as such. This is the default"}, "kind": "leaf", "name": "use-lsa", "qname": "ncs:use-lsa", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"info": {"string": "Do not handle any of the LSA nodes as such. These nodes\nwill be handled as any other device. This has the same\nresult as adding the commit flag 'no-lsa' to every commit."}, "kind": "leaf", "name": "no-lsa", "qname": "ncs:no-lsa", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"info": {"string": "Show all active settings for the device"}, "kind": "container", "mandatory": true, "name": "active-settings", "qname": "ncs:active-settings", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Additional protocols for the live-tree (read-only)"}, "kind": "list", "leafref_groups": [["authgroup"]], "min_elements": 0, "name": "live-status-protocol", "max_elements": "unbounded", "qname": "ncs:live-status-protocol", "children": [{"kind": "key", "mandatory": true, "name": "name", "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "IP Address for the management interface"}, "kind": "leaf", "name": "address", "qname": "ncs:address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Port for the management interface"}, "kind": "leaf", "name": "port", "qname": "ncs:port", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "SSH host key configuration"}, "kind": "container", "name": "ssh", "presence": true, "qname": "ncs:ssh", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}}, {"info": {"string": "Authentication credentials for the device"}, "kind": "leaf", "name": "authgroup", "type": {"primitive": true, "name": "string"}, "qname": "ncs:authgroup", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/ncs:devices/authgroups/group/name", "is_leafref": true}, {"info": {"string": "Management protocol for the device"}, "kind": "container", "mandatory": true, "name": "device-type", "qname": "ncs:device-type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Operational State for the live protocol"}, "kind": "container", "mandatory": true, "name": "state", "qname": "ncs:state", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "List of capabillities supported by the device"}, "kind": "list", "min_elements": 0, "name": "capability", "max_elements": "unbounded", "qname": "ncs:capability", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["uri"], "mandatory": true, "config": false, "children": [{"info": {"string": "Capability URI"}, "kind": "key", "mandatory": true, "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Capability revision"}, "kind": "leaf", "name": "revision", "type": {"primitive": true, "name": "string"}, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability module"}, "kind": "leaf", "name": "module", "type": {"primitive": true, "name": "string"}, "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability features"}, "kind": "leaf-list", "name": "feature", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t83"}, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Capability deviations"}, "kind": "leaf-list", "name": "deviation", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t85"}, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["authgroup"]]}, {"info": {"string": "Show states for the device"}, "kind": "container", "mandatory": true, "name": "state", "qname": "ncs:state", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "How the device was added to NCS"}, "kind": "container", "mandatory": true, "name": "source", "qname": "ncs:source", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "A list of capabilities supported by the device"}, "kind": "list", "min_elements": 0, "name": "capability", "max_elements": "unbounded", "qname": "ncs:capability", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["uri"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "uri", "type": {"primitive": true, "name": "string"}, "qname": "ncs:uri", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "revision", "config": false, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "name": "module", "config": false, "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf-list", "name": "feature", "config": false, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t43"}}, {"kind": "leaf-list", "name": "deviation", "config": false, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t45"}}, {"info": {"string": "This action removes a capability from the list of capabilities.\nIf leaf module is set then corresponding module is attempted to\nbe removed from the list of modules for this device. This action\nis only intended to be used for pre-provisioning: it is not\npossible to override capabilities and modules provided by the\nNED implementation using this action."}, "kind": "action", "mandatory": true, "name": "remove", "qname": "ncs:remove", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}]}, {"info": {"string": "This is a list of the YANG modules supported by the device.\n\nThis list is populated the first time NCS connects to the\ndevice."}, "kind": "list", "min_elements": 0, "name": "module", "max_elements": "unbounded", "qname": "ncs:module", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["name"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "name", "type": {"primitive": true, "name": "string"}, "qname": "ncs:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "revision", "config": false, "qname": "ncs:revision", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf-list", "name": "feature", "config": false, "qname": "ncs:feature", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t47"}}, {"kind": "leaf-list", "name": "deviation", "config": false, "qname": "ncs:deviation", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t49"}}]}, {"info": {"string": "Contains vendor-specific information for\nidentifying the system platform.\n\nNEDs MAY augment this container with more device-specific\nnodes."}, "kind": "container", "mandatory": true, "name": "platform", "qname": "ncs:platform", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "NCS copy of the device configuration"}, "kind": "container", "mandatory": true, "name": "config", "qname": "ncs:config", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Status data fetched from the device"}, "kind": "container", "mandatory": true, "name": "live-status", "qname": "ncs:live-status", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "RPCs from the device"}, "kind": "container", "mandatory": true, "name": "rpc", "qname": "ncs:rpc", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "NETCONF notifications from the device"}, "kind": "container", "mandatory": true, "name": "netconf-notifications", "qname": "ncs:netconf-notifications", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}}, {"info": {"string": "Show services that use this device"}, "kind": "leaf-list", "name": "service-list", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "t101"}, "qname": "ncs:service-list", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Notification address if different from device address"}, "kind": "leaf", "name": "snmp-notification-address", "qname": "ncs:snmp-notification-address", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "host"}}, {"info": {"string": "Device specific information"}, "kind": "container", "name": "platform", "presence": true, "when_targets": ["/ncs:devices/device/device-type/cli/ned-id"], "qname": "alu-meta:platform", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}}, {"info": {"string": "A summary of all active alarms per device."}, "kind": "container", "mandatory": true, "name": "alarm-summary", "qname": "al:alarm-summary", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Note: this action overwrites existing list of capabilities.\n\nThis action copies the list of capabilities and the list of modules\nfrom another device or profile. When used on a device, this action\nis only intended to be used for pre-provisioning: it is not possible\nto override capabilities and modules provided by the\nNED implementation using this action."}, "kind": "action", "mandatory": true, "name": "copy-capabilities", "qname": "ncs:copy-capabilities", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Note: this action overwrites existing list of capabilities.\n\nThis action populates the list of capabilities based on the\nconfigured ned-id for this device, if possible. NCS will look up\nthe package corresponding to the ned-id and add all the modules\nfrom this packages to the list of this device's capabilities and\nlist of modules. It is the responsibility of the caller to verify\nthat the automatically populated list of capabilities matches actual\ndevice's capabilities. The list of capabilities can then be\nfine-tuned using add-capability and capability/remove actions.\nCurrently this approach will only work for CLI and generic devices.\nThis action is only intended to be used for pre-provisioning:\nit is not possible to override capabilities and modules provided\nby the NED implementation using this action."}, "kind": "action", "mandatory": true, "name": "find-capabilities", "qname": "ncs:find-capabilities", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "This action adds a capability to the list of capabilities.\nIf uri is specified, then it is parsed as YANG capability string\nand module, revision, feature and deviation parameters are derived\nfrom the string. If module is specified, then the namespace is\nlooked up in the list of loaded namespaces and capability string\nconstructed automatically. If the module is specified and the\nattempt to look it up failed, then the action does nothing.\nIf module is specified or can be derived from capability string,\nthen the module is also added/replaced in the list of modules. This\naction is only intended to be used for pre-provisioning: it is not\npossible to override capabilities and modules provided by the NED\nimplementation using this action."}, "kind": "action", "mandatory": true, "name": "add-capability", "qname": "ncs:add-capability", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Take a named template and copy it here"}, "kind": "action", "mandatory": true, "name": "apply-template", "leafrefGroups": [["template-name"]], "qname": "ncs:apply-template", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["template-name"]]}, {"info": {"string": "Instantiate the config for the device from existing device"}, "kind": "action", "mandatory": true, "name": "instantiate-from-other-device", "leafrefGroups": [["device-name"]], "qname": "ncs:instantiate-from-other-device", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device-name"]]}, {"info": {"string": "Compare the actual device config with the NCS copy"}, "kind": "action", "mandatory": true, "name": "compare-config", "qname": "ncs:compare-config", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pulling from the device"}, "kind": "action", "mandatory": true, "name": "sync-from", "qname": "ncs:sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize the config by pushing to the device"}, "kind": "action", "mandatory": true, "name": "sync-to", "qname": "ncs:sync-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if the NCS config is in sync with the device"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "ncs:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if NCS and the device have compatible YANG modules"}, "kind": "action", "mandatory": true, "name": "check-yang-modules", "qname": "ncs:check-yang-modules", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Connect to the device"}, "kind": "action", "mandatory": true, "name": "connect", "qname": "ncs:connect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Close all sessions to the device"}, "kind": "action", "mandatory": true, "name": "disconnect", "qname": "ncs:disconnect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "ICMP ping the device"}, "kind": "action", "mandatory": true, "name": "ping", "qname": "ncs:ping", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Delete the config in NCS without deleting it in the device"}, "kind": "action", "mandatory": true, "name": "delete-config", "qname": "ncs:delete-config", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Secure copy file to the device"}, "kind": "action", "mandatory": true, "name": "scp-to", "qname": "ncs:scp-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Secure copy file to the device"}, "kind": "action", "mandatory": true, "name": "scp-from", "qname": "ncs:scp-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["remote-node"], ["authgroup"], ["device-profile"]]}, {"info": {"string": "List of queued and completed commits"}, "kind": "container", "mandatory": true, "name": "commit-queue", "qname": "ncs:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "List of pooled NED sessions"}, "kind": "container", "mandatory": true, "name": "session-pool", "qname": "ncs:session-pool", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"info": {"string": "Set up sessions to all unlocked devices"}, "kind": "action", "mandatory": true, "name": "connect", "leafrefGroups": [["device"]], "qname": "ncs:connect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Synchronize the config by pushing to the devices"}, "kind": "action", "mandatory": true, "name": "sync-to", "leafrefGroups": [["device"]], "qname": "ncs:sync-to", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Synchronize the config by pulling from the devices"}, "kind": "action", "mandatory": true, "name": "sync-from", "leafrefGroups": [["device"]], "qname": "ncs:sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Close all sessions to all devices"}, "kind": "action", "mandatory": true, "name": "disconnect", "qname": "ncs:disconnect", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if the NCS config is in sync with the device"}, "kind": "action", "mandatory": true, "name": "check-sync", "leafrefGroups": [["device"]], "qname": "ncs:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Check if NCS and the devices have compatible YANG modules"}, "kind": "action", "mandatory": true, "name": "check-yang-modules", "leafrefGroups": [["device"]], "qname": "ncs:check-yang-modules", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Retrieve SSH host keys from all devices"}, "kind": "action", "mandatory": true, "name": "fetch-ssh-host-keys", "leafrefGroups": [["device"]], "qname": "ncs:fetch-ssh-host-keys", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "leafref_groups": [["device"]]}, {"info": {"string": "Clear all trace files"}, "kind": "action", "mandatory": true, "name": "clear-trace", "qname": "ncs:clear-trace", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Synchronize parts of the devices' configuration by pulling from\nthe network."}, "kind": "action", "mandatory": true, "name": "partial-sync-from", "qname": "ncs:partial-sync-from", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}]}}
diff --git a/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_endpoint_schema.json b/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_endpoint_schema.json
deleted file mode 100644
index 0330aeb9b9..0000000000
--- a/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_endpoint_schema.json
+++ /dev/null
@@ -1 +0,0 @@
-{"meta": {"prefix": "l3vpn", "namespace": "http://com/example/l3vpn", "types": {}, "keypath": "/l3vpn:vpn/l3vpn/endpoint"}, "data": {"kind": "list", "leafref_groups": [["ce-device"]], "min_elements": 0, "name": "endpoint", "max_elements": "unbounded", "qname": "l3vpn:endpoint", "children": [{"info": {"string": "Endpoint identifier"}, "kind": "key", "mandatory": true, "name": "id", "qname": "l3vpn:id", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ce-device", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:ce-device", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_target": "/ncs:devices/device/name", "is_leafref": true}, {"kind": "leaf", "mandatory": true, "name": "ce-interface", "qname": "l3vpn:ce-interface", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ip-network", "qname": "l3vpn:ip-network", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "ip-prefix"}}, {"info": {"string": "Bandwidth in bps"}, "kind": "leaf", "mandatory": true, "name": "bandwidth", "qname": "l3vpn:bandwidth", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"info": {"string": "CE Router as-number"}, "kind": "leaf", "name": "as-number", "qname": "l3vpn:as-number", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "uint32"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["id"], "mandatory": true, "leafrefGroups": [["ce-device"]]}}
diff --git a/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_schema.json b/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_schema.json
deleted file mode 100644
index 2737e7a547..0000000000
--- a/test/units/modules/network/nso/fixtures/l3vpn_l3vpn_schema.json
+++ /dev/null
@@ -1 +0,0 @@
-{"meta": {"prefix": "l3vpn", "namespace": "http://com/example/l3vpn", "types": {"http://com/example/l3vpn:t19": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t19"}], "leaf_type": [{"name": "instance-identifier"}]}], "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number": [{"range": {"value": [["0", "65535"]]}, "name": "urn:ietf:params:xml:ns:yang:ietf-inet-types:port-number"}, {"name": "uint16"}], "http://tail-f.com/ns/ncs:outformat-deep-check-sync": [{"name": "http://tail-f.com/ns/ncs:outformat-deep-check-sync", "enumeration": [{"info": "The CLI config that would have to be applied\nto the device(s) in order for the service to\nbecome in sync with the network.", "label": "cli"}, {"info": "The XML (NETCONF format) that would have to be\napplied to the device(s) in order for the service to\nbecome in sync with the network.", "label": "xml"}, {"info": "Returns if the service is in sync or not.", "label": "boolean"}]}, {"name": "string"}], "http://com/example/l3vpn:t21": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t21"}], "leaf_type": [{"name": "string"}]}], "http://com/example/l3vpn:t15": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t15"}], "leaf_type": [{"name": "string"}]}], "http://com/example/l3vpn:protocol-type": [{"name": "http://com/example/l3vpn:protocol-type", "enumeration": [{"label": "icmp"}, {"label": "igmp"}, {"label": "ipip"}, {"label": "tcp"}, {"label": "egp"}, {"label": "udp"}, {"label": "rsvp"}, {"label": "gre"}, {"label": "esp"}, {"label": "ah"}, {"label": "icmp6"}, {"label": "ospf"}, {"label": "pim"}, {"label": "sctp"}]}, {"name": "string"}], "http://com/example/l3vpn:t17": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t17"}], "leaf_type": [{"name": "instance-identifier"}]}], "http://com/example/l3vpn:t23": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t23"}], "leaf_type": [{"name": "string"}]}], "http://com/example/l3vpn:t11": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t11"}], "leaf_type": [{"name": "instance-identifier"}]}], "http://com/example/l3vpn:t13": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t13"}], "leaf_type": [{"name": "instance-identifier"}]}], "http://com/example/l3vpn:t24": [{"name": "http://com/example/l3vpn:t24", "enumeration": [{"label": "waiting"}, {"label": "executing"}, {"label": "blocking"}, {"label": "blocked"}, {"label": "failed"}, {"label": "admin-cleared"}, {"label": "commit-queue-failed"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:log-entry-t": [{"info": "This leaf identifies the specific log entry.", "name": "http://tail-f.com/ns/ncs:log-entry-t", "enumeration": [{"label": "device-modified"}, {"label": "service-modified"}]}, {"name": "identityref"}], "http://com/example/l3vpn:t7": [{"name": "http://com/example/l3vpn:t7", "enumeration": [{"label": "async"}, {"label": "timeout"}, {"label": "deleted"}]}, {"name": "string"}], "http://com/example/l3vpn:qos-match-type": [{"union": [[{"name": "ipv4-address-and-prefix-length"}], [{"name": "http://com/example/l3vpn:t2", "enumeration": [{"label": "any"}]}, {"name": "string"}]]}], "http://com/example/l3vpn:t9": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t9"}], "leaf_type": [{"name": "string"}]}], "http://tail-f.com/ns/ncs:outformat4": [{"name": "http://tail-f.com/ns/ncs:outformat4", "enumeration": [{"info": "NCS CLI curly bracket format.", "label": "cli"}, {"info": "NETCONF XML edit-config format, i.e., the edit-config that\nwould be applied locally (at NCS) to get a config\nthat is equal to that of the managed device.", "label": "xml"}, {"info": "The actual data in native format that would be sent to\nthe device", "label": "native"}, {"label": "boolean"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:log-entry-level-t": [{"info": "Levels used for identifying the severity of an event.\nLevels are organized from least specific to most where\n'all' is least specific and 'error' is most specific.", "name": "http://tail-f.com/ns/ncs:log-entry-level-t", "enumeration": [{"label": "all"}, {"label": "trace"}, {"label": "debug"}, {"label": "info"}, {"label": "warn"}, {"label": "error"}]}, {"name": "string"}], "http://tail-f.com/ns/ncs:outformat2": [{"name": "http://tail-f.com/ns/ncs:outformat2", "enumeration": [{"info": "NCS CLI curly bracket format.", "label": "cli"}, {"info": "NETCONF XML edit-config format, i.e., the edit-config that\nwould be applied locally (at NCS) to get a config\nthat is equal to that of the managed device.", "label": "xml"}]}, {"name": "string"}]}, "keypath": "/l3vpn:vpn/l3vpn"}, "data": {"kind": "list", "leafref_groups": [["used-by-customer-service"]], "min_elements": 0, "name": "l3vpn", "max_elements": "unbounded", "qname": "l3vpn:l3vpn", "children": [{"info": {"string": "Unique service id"}, "kind": "key", "mandatory": true, "name": "name", "qname": "l3vpn:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Devices and other services this service modified directly or\nindirectly."}, "kind": "container", "mandatory": true, "name": "modified", "leafrefGroups": [["devices"]], "qname": "l3vpn:modified", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_groups": [["devices"]], "config": false, "children": [{"info": {"string": "Devices this service modified directly or indirectly"}, "kind": "leaf-list", "name": "devices", "is_leafref": true, "qname": "l3vpn:devices", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:devices/device/name", "type": {"namespace": "http://com/example/l3vpn", "name": "t9"}, "config": false}, {"info": {"string": "Services this service modified directly or indirectly"}, "kind": "leaf-list", "name": "services", "type": {"namespace": "http://com/example/l3vpn", "name": "t11"}, "qname": "l3vpn:services", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Services residing on remote LSA nodes this service\nhas modified directly or indirectly."}, "kind": "leaf-list", "name": "lsa-services", "type": {"namespace": "http://com/example/l3vpn", "name": "t13"}, "qname": "l3vpn:lsa-services", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}, {"info": {"string": "Devices and other services this service has explicitly\nmodified."}, "kind": "container", "mandatory": true, "name": "directly-modified", "leafrefGroups": [["devices"]], "qname": "l3vpn:directly-modified", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_groups": [["devices"]], "config": false, "children": [{"info": {"string": "Devices this service has explicitly modified."}, "kind": "leaf-list", "name": "devices", "is_leafref": true, "qname": "l3vpn:devices", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:devices/device/name", "type": {"namespace": "http://com/example/l3vpn", "name": "t15"}, "config": false}, {"info": {"string": "Services this service has explicitly modified."}, "kind": "leaf-list", "name": "services", "type": {"namespace": "http://com/example/l3vpn", "name": "t17"}, "qname": "l3vpn:services", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Services residing on remote LSA nodes this service\nhas explicitly modified."}, "kind": "leaf-list", "name": "lsa-services", "type": {"namespace": "http://com/example/l3vpn", "name": "t19"}, "qname": "l3vpn:lsa-services", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}]}, {"info": {"string": "A list of devices this service instance has manipulated"}, "kind": "leaf-list", "name": "device-list", "type": {"namespace": "http://com/example/l3vpn", "name": "t21"}, "qname": "l3vpn:device-list", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Customer facing services using this service"}, "kind": "leaf-list", "name": "used-by-customer-service", "is_leafref": true, "qname": "l3vpn:used-by-customer-service", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:services/customer-service/object-id", "type": {"namespace": "http://com/example/l3vpn", "name": "t23"}, "config": false}, {"kind": "container", "mandatory": true, "name": "commit-queue", "qname": "l3vpn:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false, "children": [{"kind": "list", "min_elements": 0, "name": "queue-item", "max_elements": "unbounded", "qname": "l3vpn:queue-item", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["id"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "id", "type": {"primitive": true, "name": "uint64"}, "qname": "l3vpn:id", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "status", "type": {"namespace": "http://com/example/l3vpn", "name": "t24"}, "qname": "l3vpn:status", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"kind": "list", "leafref_groups": [["name"]], "min_elements": 0, "name": "failed-device", "max_elements": "unbounded", "qname": "l3vpn:failed-device", "children": [{"kind": "key", "mandatory": true, "name": "name", "is_leafref": true, "qname": "l3vpn:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_target": "/ncs:devices/device/name", "type": {"primitive": true, "name": "string"}, "config": false}, {"kind": "leaf", "name": "time", "config": false, "qname": "l3vpn:time", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "date-and-time"}}, {"kind": "leaf", "name": "config-data", "is_cli_preformatted": true, "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:config-data", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"kind": "leaf", "name": "error", "config": false, "qname": "l3vpn:error", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["name"], "mandatory": true, "config": false, "leafrefGroups": [["name"]]}, {"access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "kind": "action", "mandatory": true, "name": "admin-clear", "qname": "l3vpn:admin-clear"}, {"access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "kind": "action", "mandatory": true, "name": "delete", "qname": "l3vpn:delete"}]}, {"access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "kind": "action", "mandatory": true, "name": "clear", "qname": "l3vpn:clear"}]}, {"kind": "container", "mandatory": true, "name": "log", "qname": "l3vpn:log", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false, "children": [{"kind": "list", "min_elements": 0, "name": "log-entry", "max_elements": "unbounded", "qname": "l3vpn:log-entry", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "key": ["when"], "mandatory": true, "config": false, "children": [{"kind": "key", "mandatory": true, "name": "when", "type": {"primitive": true, "name": "date-and-time"}, "qname": "l3vpn:when", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "mandatory": true, "name": "type", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "log-entry-t"}, "qname": "l3vpn:type", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "mandatory": true, "name": "level", "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "log-entry-level-t"}, "qname": "l3vpn:level", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "name": "message", "config": false, "qname": "l3vpn:message", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "type": {"primitive": true, "name": "string"}}]}, {"info": {"string": "Remove log entries"}, "kind": "action", "mandatory": true, "name": "purge", "qname": "l3vpn:purge", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}]}, {"kind": "leaf", "mandatory": true, "name": "route-distinguisher", "qname": "l3vpn:route-distinguisher", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"kind": "list", "leafref_groups": [["ce-device"]], "min_elements": 0, "name": "endpoint", "max_elements": "unbounded", "qname": "l3vpn:endpoint", "children": [{"info": {"string": "Endpoint identifier"}, "kind": "key", "mandatory": true, "name": "id", "qname": "l3vpn:id", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ce-device", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:ce-device", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_target": "/ncs:devices/device/name", "is_leafref": true}, {"kind": "leaf", "mandatory": true, "name": "ce-interface", "qname": "l3vpn:ce-interface", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ip-network", "qname": "l3vpn:ip-network", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "ip-prefix"}}, {"info": {"string": "Bandwidth in bps"}, "kind": "leaf", "mandatory": true, "name": "bandwidth", "qname": "l3vpn:bandwidth", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"info": {"string": "CE Router as-number"}, "kind": "leaf", "name": "as-number", "qname": "l3vpn:as-number", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "uint32"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["id"], "mandatory": true, "leafrefGroups": [["ce-device"]]}, {"kind": "container", "mandatory": true, "name": "qos", "leafrefGroups": [["qos-policy"]], "qname": "l3vpn:qos", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_groups": [["qos-policy"]], "children": [{"kind": "leaf", "name": "qos-policy", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:qos-policy", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "leafref_target": "/l3vpn:qos/qos-policy/name", "is_leafref": true}, {"kind": "list", "leafref_groups": [["qos-class"]], "min_elements": 0, "name": "custom-qos-match", "max_elements": "unbounded", "qname": "l3vpn:custom-qos-match", "children": [{"kind": "key", "mandatory": true, "name": "name", "qname": "l3vpn:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "qos-class", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:qos-class", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_target": "/l3vpn:qos/qos-class/name", "is_leafref": true}, {"access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "kind": "leaf", "type": {"namespace": "http://com/example/l3vpn", "name": "qos-match-type"}, "name": "source-ip", "qname": "l3vpn:source-ip"}, {"access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "kind": "leaf", "type": {"namespace": "http://com/example/l3vpn", "name": "qos-match-type"}, "name": "destination-ip", "qname": "l3vpn:destination-ip"}, {"info": {"string": "Destination IP port"}, "kind": "leaf", "name": "port-start", "qname": "l3vpn:port-start", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "Destination IP port"}, "kind": "leaf", "name": "port-end", "qname": "l3vpn:port-end", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", "name": "port-number"}}, {"info": {"string": "Source IP protocol"}, "kind": "leaf", "name": "protocol", "qname": "l3vpn:protocol", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"namespace": "http://com/example/l3vpn", "name": "protocol-type"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["qos-class"]]}]}, {"info": {"string": "Check if device config is according to the service"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "l3vpn:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "leaf", "is_action_input": true, "name": "outformat", "default": "boolean", "qname": "l3vpn:outformat", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "outformat4"}}, {"default": "deep", "kind": "choice", "cases": [{"kind": "case", "name": "deep", "children": [{"kind": "leaf", "is_action_input": true, "name": "deep", "qname": "l3vpn:deep", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "shallow", "children": [{"kind": "leaf", "is_action_input": true, "name": "shallow", "qname": "l3vpn:shallow", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "depth"}, {"info": {"string": "Return list only contains negatives"}, "kind": "leaf", "is_action_input": true, "name": "suppress-positive-result", "qname": "l3vpn:suppress-positive-result", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"kind": "choice", "cases": [{"kind": "case", "name": "in-sync", "children": [{"kind": "leaf", "name": "in-sync", "qname": "l3vpn:in-sync", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"primitive": true, "name": "boolean"}, "is_action_output": true}]}, {"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-native", "children": [{"kind": "container", "mandatory": true, "name": "native", "qname": "l3vpn:native", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}]}, {"info": {"string": "Check if device config is according to the service"}, "kind": "action", "mandatory": true, "name": "deep-check-sync", "qname": "l3vpn:deep-check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "leaf", "is_action_input": true, "name": "outformat", "default": "boolean", "qname": "l3vpn:outformat", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "outformat-deep-check-sync"}}, {"info": {"string": "Return list only contains negatives"}, "kind": "leaf", "is_action_input": true, "name": "suppress-positive-result", "qname": "l3vpn:suppress-positive-result", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"kind": "choice", "cases": [{"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-sync", "children": [{"kind": "container", "mandatory": true, "name": "sync-result", "qname": "l3vpn:sync-result", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}]}, {"info": {"string": "Run/Dryrun the service logic again"}, "kind": "action", "mandatory": true, "name": "re-deploy", "qname": "l3vpn:re-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "container", "is_action_input": true, "name": "dry-run", "presence": true, "qname": "l3vpn:dry-run", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "leaf", "is_action_input": true, "name": "no-revision-drop", "qname": "l3vpn:no-revision-drop", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "leaf", "is_action_input": true, "name": "no-networking", "qname": "l3vpn:no-networking", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "no-overwrite", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-overwrite", "qname": "l3vpn:no-overwrite", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-out-of-sync-check", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-out-of-sync-check", "qname": "l3vpn:no-out-of-sync-check", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-sync-check"}, {"kind": "container", "is_action_input": true, "name": "commit-queue", "presence": true, "qname": "l3vpn:commit-queue", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"default": "deep", "kind": "choice", "cases": [{"kind": "case", "name": "deep", "children": [{"kind": "leaf", "is_action_input": true, "name": "deep", "qname": "l3vpn:deep", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "shallow", "children": [{"kind": "leaf", "is_action_input": true, "name": "shallow", "qname": "l3vpn:shallow", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "depth"}, {"kind": "container", "is_action_input": true, "name": "reconcile", "presence": true, "qname": "l3vpn:reconcile", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "choice", "cases": [{"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-native", "children": [{"kind": "container", "mandatory": true, "name": "native", "qname": "l3vpn:native", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}, {"kind": "container", "mandatory": true, "name": "commit-queue", "qname": "l3vpn:commit-queue", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}, {"kind": "leaf", "name": "id", "type": {"primitive": true, "name": "uint64"}, "qname": "l3vpn:id", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "leafref_target": "/ncs:devices/commit-queue/queue-item/id", "is_leafref": true, "is_action_output": true}, {"kind": "leaf", "name": "tag", "qname": "l3vpn:tag", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"primitive": true, "name": "string"}, "is_action_output": true}, {"kind": "leaf", "name": "status", "qname": "l3vpn:status", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"namespace": "http://com/example/l3vpn", "name": "t7"}, "is_action_output": true}]}, {"info": {"string": "Reactive redeploy of service logic"}, "kind": "action", "mandatory": true, "name": "reactive-re-deploy", "qname": "l3vpn:reactive-re-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "leaf", "name": "id", "type": {"primitive": true, "name": "uint64"}, "qname": "l3vpn:id", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "leafref_target": "/ncs:devices/commit-queue/queue-item/id", "is_leafref": true, "is_action_output": true}, {"kind": "leaf", "name": "tag", "qname": "l3vpn:tag", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"primitive": true, "name": "string"}, "is_action_output": true}, {"kind": "leaf", "name": "status", "qname": "l3vpn:status", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"namespace": "http://com/example/l3vpn", "name": "t7"}, "is_action_output": true}]}, {"info": {"string": "Touch a service"}, "kind": "action", "mandatory": true, "name": "touch", "qname": "l3vpn:touch", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": []}, {"info": {"string": "Get the data this service created"}, "kind": "action", "mandatory": true, "name": "get-modifications", "qname": "l3vpn:get-modifications", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "leaf", "is_action_input": true, "name": "outformat", "qname": "l3vpn:outformat", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"namespace": "http://tail-f.com/ns/ncs", "name": "outformat2"}}, {"kind": "leaf", "is_action_input": true, "name": "reverse", "qname": "l3vpn:reverse", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"default": "deep", "kind": "choice", "cases": [{"kind": "case", "name": "deep", "children": [{"kind": "leaf", "is_action_input": true, "name": "deep", "qname": "l3vpn:deep", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "shallow", "children": [{"kind": "leaf", "is_action_input": true, "name": "shallow", "qname": "l3vpn:shallow", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "depth"}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"kind": "choice", "cases": [{"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}]}, {"info": {"string": "Undo the effects of this service"}, "kind": "action", "mandatory": true, "name": "un-deploy", "qname": "l3vpn:un-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}, "children": [{"kind": "container", "is_action_input": true, "name": "dry-run", "presence": true, "qname": "l3vpn:dry-run", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "leaf", "is_action_input": true, "name": "no-revision-drop", "qname": "l3vpn:no-revision-drop", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "leaf", "is_action_input": true, "name": "no-networking", "qname": "l3vpn:no-networking", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "no-overwrite", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-overwrite", "qname": "l3vpn:no-overwrite", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-out-of-sync-check", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-out-of-sync-check", "qname": "l3vpn:no-out-of-sync-check", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-sync-check"}, {"kind": "container", "is_action_input": true, "name": "commit-queue", "presence": true, "qname": "l3vpn:commit-queue", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}}, {"kind": "choice", "cases": [{"kind": "case", "name": "use-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "use-lsa", "qname": "l3vpn:use-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}, {"kind": "case", "name": "no-lsa", "children": [{"kind": "leaf", "is_action_input": true, "name": "no-lsa", "qname": "l3vpn:no-lsa", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}]}], "name": "choice-lsa"}, {"kind": "leaf", "is_action_input": true, "name": "ignore-refcount", "qname": "l3vpn:ignore-refcount", "access": {"read": false, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "empty"}}, {"kind": "choice", "cases": [{"kind": "case", "name": "case-xml", "children": [{"kind": "container", "mandatory": true, "name": "result-xml", "qname": "l3vpn:result-xml", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-cli", "children": [{"kind": "container", "mandatory": true, "name": "cli", "qname": "l3vpn:cli", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}, {"kind": "case", "name": "case-native", "children": [{"kind": "container", "mandatory": true, "name": "native", "qname": "l3vpn:native", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}]}], "name": "outformat"}, {"kind": "container", "mandatory": true, "name": "commit-queue", "qname": "l3vpn:commit-queue", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "is_action_output": true}, {"kind": "leaf", "name": "id", "type": {"primitive": true, "name": "uint64"}, "qname": "l3vpn:id", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "leafref_target": "/ncs:devices/commit-queue/queue-item/id", "is_leafref": true, "is_action_output": true}, {"kind": "leaf", "name": "tag", "qname": "l3vpn:tag", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"primitive": true, "name": "string"}, "is_action_output": true}, {"kind": "leaf", "name": "status", "qname": "l3vpn:status", "access": {"read": false, "create": false, "execute": false, "update": false, "delete": false}, "type": {"namespace": "http://com/example/l3vpn", "name": "t7"}, "is_action_output": true}]}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["used-by-customer-service"]]}}
diff --git a/test/units/modules/network/nso/fixtures/l3vpn_schema.json b/test/units/modules/network/nso/fixtures/l3vpn_schema.json
deleted file mode 100644
index 0e7e370382..0000000000
--- a/test/units/modules/network/nso/fixtures/l3vpn_schema.json
+++ /dev/null
@@ -1 +0,0 @@
-{"meta": {"prefix": "l3vpn", "namespace": "http://com/example/l3vpn", "types": {"http://com/example/l3vpn:t21": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t21"}], "leaf_type": [{"name": "string"}]}], "http://com/example/l3vpn:t23": [{"list_type": [{"leaf-list": true, "name": "http://com/example/l3vpn:t23"}], "leaf_type": [{"name": "string"}]}]}, "keypath": "/l3vpn:vpn"}, "data": {"kind": "container", "mandatory": true, "name": "vpn", "qname": "l3vpn:vpn", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "children": [{"kind": "list", "leafref_groups": [["used-by-customer-service"]], "min_elements": 0, "name": "l3vpn", "max_elements": "unbounded", "qname": "l3vpn:l3vpn", "children": [{"info": {"string": "Unique service id"}, "kind": "key", "mandatory": true, "name": "name", "qname": "l3vpn:name", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"info": {"string": "Devices and other services this service modified directly or\nindirectly."}, "kind": "container", "mandatory": true, "name": "modified", "leafrefGroups": [["devices"]], "qname": "l3vpn:modified", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_groups": [["devices"]], "config": false}, {"info": {"string": "Devices and other services this service has explicitly\nmodified."}, "kind": "container", "mandatory": true, "name": "directly-modified", "leafrefGroups": [["devices"]], "qname": "l3vpn:directly-modified", "is_config_false_callpoint": true, "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "leafref_groups": [["devices"]], "config": false}, {"info": {"string": "A list of devices this service instance has manipulated"}, "kind": "leaf-list", "name": "device-list", "type": {"namespace": "http://com/example/l3vpn", "name": "t21"}, "qname": "l3vpn:device-list", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "config": false}, {"info": {"string": "Customer facing services using this service"}, "kind": "leaf-list", "name": "used-by-customer-service", "is_leafref": true, "qname": "l3vpn:used-by-customer-service", "is_config_false_callpoint": true, "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "readonly": true, "leafref_target": "/ncs:services/customer-service/object-id", "type": {"namespace": "http://com/example/l3vpn", "name": "t23"}, "config": false}, {"kind": "container", "mandatory": true, "name": "commit-queue", "qname": "l3vpn:commit-queue", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "container", "mandatory": true, "name": "log", "qname": "l3vpn:log", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "readonly": true, "config": false}, {"kind": "leaf", "mandatory": true, "name": "route-distinguisher", "qname": "l3vpn:route-distinguisher", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"kind": "list", "leafref_groups": [["ce-device"]], "min_elements": 0, "name": "endpoint", "max_elements": "unbounded", "qname": "l3vpn:endpoint", "children": [{"info": {"string": "Endpoint identifier"}, "kind": "key", "mandatory": true, "name": "id", "qname": "l3vpn:id", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ce-device", "type": {"primitive": true, "name": "string"}, "qname": "l3vpn:ce-device", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_target": "/ncs:devices/device/name", "is_leafref": true}, {"kind": "leaf", "mandatory": true, "name": "ce-interface", "qname": "l3vpn:ce-interface", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "string"}}, {"kind": "leaf", "mandatory": true, "name": "ip-network", "qname": "l3vpn:ip-network", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "ip-prefix"}}, {"info": {"string": "Bandwidth in bps"}, "kind": "leaf", "mandatory": true, "name": "bandwidth", "qname": "l3vpn:bandwidth", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "type": {"primitive": true, "name": "uint32"}}, {"info": {"string": "CE Router as-number"}, "kind": "leaf", "name": "as-number", "qname": "l3vpn:as-number", "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "type": {"primitive": true, "name": "uint32"}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["id"], "mandatory": true, "leafrefGroups": [["ce-device"]]}, {"kind": "container", "mandatory": true, "name": "qos", "leafrefGroups": [["qos-policy"]], "qname": "l3vpn:qos", "access": {"read": true, "create": false, "execute": false, "update": true, "delete": false}, "leafref_groups": [["qos-policy"]]}, {"info": {"string": "Check if device config is according to the service"}, "kind": "action", "mandatory": true, "name": "check-sync", "qname": "l3vpn:check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Check if device config is according to the service"}, "kind": "action", "mandatory": true, "name": "deep-check-sync", "qname": "l3vpn:deep-check-sync", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Run/Dryrun the service logic again"}, "kind": "action", "mandatory": true, "name": "re-deploy", "qname": "l3vpn:re-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Reactive redeploy of service logic"}, "kind": "action", "mandatory": true, "name": "reactive-re-deploy", "qname": "l3vpn:reactive-re-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Touch a service"}, "kind": "action", "mandatory": true, "name": "touch", "qname": "l3vpn:touch", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Get the data this service created"}, "kind": "action", "mandatory": true, "name": "get-modifications", "qname": "l3vpn:get-modifications", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}, {"info": {"string": "Undo the effects of this service"}, "kind": "action", "mandatory": true, "name": "un-deploy", "qname": "l3vpn:un-deploy", "access": {"read": false, "create": false, "execute": true, "update": false, "delete": false}}], "access": {"read": true, "create": true, "execute": false, "update": true, "delete": true}, "key": ["name"], "mandatory": true, "leafrefGroups": [["used-by-customer-service"]]}]}}
diff --git a/test/units/modules/network/nso/fixtures/sync_from_schema.json b/test/units/modules/network/nso/fixtures/sync_from_schema.json
deleted file mode 100644
index dc2206d499..0000000000
--- a/test/units/modules/network/nso/fixtures/sync_from_schema.json
+++ /dev/null
@@ -1,178 +0,0 @@
-{
- "meta": {
- "prefix": "ncs",
- "namespace": "http://tail-f.com/ns/ncs",
- "types": {
- "http://tail-f.com/ns/ncs:outformat2": [
- {
- "name": "http://tail-f.com/ns/ncs:outformat2",
- "enumeration": [
- {
- "info": "NCS CLI curly bracket format.",
- "label": "cli"
- },
- {
- "info": "NETCONF XML edit-config format, i.e., the edit-config that\nwould be applied locally (at NCS) to get a config\nthat is equal to that of the managed device.",
- "label": "xml"
- }
- ]
- },
- {
- "name": "string"
- }
- ]
- },
- "keypath": "/ncs:devices/device{ce0}/sync-from"
- },
- "data": {
- "info": {
- "string": "Synchronize the config by pulling from the device"
- },
- "kind": "action",
- "mandatory": true,
- "name": "sync-from",
- "qname": "ncs:sync-from",
- "access": {
- "read": false,
- "create": false,
- "execute": true,
- "update": false,
- "delete": false
- },
- "children": [
- {
- "kind": "container",
- "is_action_input": true,
- "name": "dry-run",
- "presence": true,
- "qname": "ncs:dry-run",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": true,
- "delete": false
- },
- "children": [
- {
- "info": {
- "string": "Report what would be done towards CDB, without\nactually doing anything."
- },
- "kind": "leaf",
- "is_action_input": true,
- "name": "outformat",
- "qname": "ncs:outformat",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": true,
- "delete": false
- },
- "type": {
- "namespace": "http://tail-f.com/ns/ncs",
- "name": "outformat2"
- }
- }
- ]
- },
- {
- "kind": "choice",
- "cases": [
- {
- "kind": "case",
- "name": "result",
- "children": [
- {
- "kind": "leaf",
- "name": "result",
- "qname": "ncs:result",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": false,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "boolean"
- },
- "is_action_output": true
- }
- ]
- },
- {
- "kind": "case",
- "name": "result-xml",
- "children": [
- {
- "kind": "leaf",
- "name": "result-xml",
- "is_cli_preformatted": true,
- "qname": "ncs:result-xml",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": false,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "string"
- },
- "is_action_output": true
- }
- ]
- },
- {
- "kind": "case",
- "name": "cli",
- "children": [
- {
- "kind": "leaf",
- "name": "cli",
- "is_cli_preformatted": true,
- "qname": "ncs:cli",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": false,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "string"
- },
- "is_action_output": true
- }
- ]
- }
- ],
- "name": "outformat"
- },
- {
- "info": {
- "string": "If present, contains additional information about the result."
- },
- "kind": "leaf",
- "name": "info",
- "qname": "ncs:info",
- "access": {
- "read": false,
- "create": false,
- "execute": false,
- "update": false,
- "delete": false
- },
- "type": {
- "primitive": true,
- "name": "string"
- },
- "is_action_output": true
- }
- ]
- }
-}
diff --git a/test/units/modules/network/nso/fixtures/verify_violation_data.json b/test/units/modules/network/nso/fixtures/verify_violation_data.json
deleted file mode 100644
index 05742c11d7..0000000000
--- a/test/units/modules/network/nso/fixtures/verify_violation_data.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "tailf-ncs:devices": {
- "device": [
- {
- "name": "ce0",
- "description": "Example Device"
- }
- ]
- }
-}
diff --git a/test/units/modules/network/nso/nso_module.py b/test/units/modules/network/nso/nso_module.py
deleted file mode 100644
index 72a28e02e6..0000000000
--- a/test/units/modules/network/nso/nso_module.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# Copyright (c) 2017 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-
-import os
-import json
-
-from units.compat import unittest
-from units.compat.mock import patch
-from ansible.module_utils import basic
-
-
-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 not in fixture_data:
- with open(path) as f:
- data = json.load(f)
- fixture_data[path] = data
- return fixture_data[path]
-
-
-class MockResponse(object):
- def __init__(self, method, params, code, body, headers=None):
- if headers is None:
- headers = {}
-
- self.method = method
- self.params = params
-
- self.code = code
- self.body = body
- self.headers = dict(headers)
-
- def read(self):
- return self.body
-
-
-def mock_call(calls, url, timeout, validate_certs, data=None, headers=None, method=None):
- if len(calls) == 0:
- raise ValueError('no call mock for method {0}({1})'.format(
- url, data))
-
- result = calls[0]
- del calls[0]
-
- request = json.loads(data)
- if result.method != request['method']:
- raise ValueError('expected method {0}({1}), got {2}({3})'.format(
- result.method, result.params,
- request['method'], request['params']))
-
- for key, value in result.params.items():
- if key not in request['params']:
- raise ValueError('{0} not in parameters'.format(key))
- if value != request['params'][key]:
- raise ValueError('expected {0} to be {1}, got {2}'.format(
- key, value, request['params'][key]))
-
- return result
-
-
-class AnsibleExitJson(Exception):
- pass
-
-
-class AnsibleFailJson(Exception):
- pass
-
-
-class TestNsoModule(unittest.TestCase):
-
- def execute_module(self, failed=False, changed=False, **kwargs):
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- for key, value in kwargs.items():
- if key not in result:
- self.fail("{0} not in result {1}".format(key, result))
- self.assertEqual(value, result[key])
-
- return result
-
- def failed(self):
- def fail_json(*args, **kwargs):
- kwargs['failed'] = True
- raise AnsibleFailJson(kwargs)
-
- with patch.object(basic.AnsibleModule, 'fail_json', fail_json):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- def exit_json(*args, **kwargs):
- if 'changed' not in kwargs:
- kwargs['changed'] = False
- raise AnsibleExitJson(kwargs)
-
- with patch.object(basic.AnsibleModule, 'exit_json', exit_json):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
diff --git a/test/units/modules/network/nso/test_nso_action.py b/test/units/modules/network/nso/test_nso_action.py
deleted file mode 100644
index 5d7f34ec5d..0000000000
--- a/test/units/modules/network/nso/test_nso_action.py
+++ /dev/null
@@ -1,166 +0,0 @@
-#
-# Copyright (c) 2017 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.nso import nso_action
-from . import nso_module
-from .nso_module import MockResponse
-
-from units.modules.utils import set_module_args
-
-
-class TestNsoAction(nso_module.TestNsoModule):
- module = nso_action
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_action_missing(self, open_url_mock):
- action_input = {}
- path = '/ncs:devices/device{ce0}/missing'
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('get_schema', {'path': path}, 200, '{"error": {"data": {"param": "path"}, "type": "rpc.method.invalid_params"}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc',
- 'path': path,
- 'input': action_input,
- 'validate_certs': False
- })
- self.execute_module(failed=True, msg='NSO get_schema invalid params. path = /ncs:devices/device{ce0}/missing')
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_action_not_action(self, open_url_mock):
- action_input = {}
- path = '/ncs:devices/device{ce0}/description'
- schema = nso_module.load_fixture('description_schema.json')
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('get_schema', {'path': path}, 200, '{"result": %s}' % (json.dumps(schema, ))),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc',
- 'path': path,
- 'input': action_input,
- 'validate_certs': False
- })
- self.execute_module(failed=True, msg='/ncs:devices/device{ce0}/description is not an action')
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_action_ok(self, open_url_mock):
- action_input = {}
- path = '/ncs:devices/device{ce0}/sync-from'
- output = {"result": True}
- schema = nso_module.load_fixture('sync_from_schema.json')
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('get_schema', {'path': path}, 200, '{"result": %s}' % (json.dumps(schema, ))),
- MockResponse('run_action', {'path': path, 'params': action_input}, 200, '{"result": {"result": true}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc',
- 'path': path,
- 'input': action_input,
- 'validate_certs': False
- })
- self.execute_module(changed=True, output=output)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_action_validate_ok(self, open_url_mock):
- action_input = {}
- path = '/test:action'
- output = {'version': [{'name': 'v1'}, {'name': 'v2'}]}
- schema = nso_module.load_fixture('complex_schema.json')
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('get_schema', {'path': path}, 200, '{"result": %s}' % (json.dumps(schema, ))),
- MockResponse('run_action', {'path': path, 'params': action_input}, 200,
- '{"result": {"version": [{"name": "v1"}, {"name": "v2"}]}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc',
- 'path': path,
- 'input': action_input,
- 'output_required': output,
- 'validate_certs': False
- })
- self.execute_module(changed=True, output=output)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_action_validate_failed(self, open_url_mock):
- action_input = {}
- path = '/test:action'
- output_mismatch = {'version': [{'name': 'v1'}, {'name': 'v3'}]}
- schema = nso_module.load_fixture('complex_schema.json')
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('get_schema', {'path': path}, 200, '{"result": %s}' % (json.dumps(schema, ))),
- MockResponse('run_action', {'path': path, 'params': action_input}, 200,
- '{"result": {"version": [{"name": "v1"}, {"name": "v2"}]}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc',
- 'path': path,
- 'input': action_input,
- 'output_required': output_mismatch,
- 'validate_certs': False
- })
- self.execute_module(failed=True, msg="version value mismatch. expected [{'name': 'v1'}, {'name': 'v3'}] got [{'name': 'v1'}, {'name': 'v2'}]")
-
- self.assertEqual(0, len(calls))
diff --git a/test/units/modules/network/nso/test_nso_config.py b/test/units/modules/network/nso/test_nso_config.py
deleted file mode 100644
index 64ed8f56c1..0000000000
--- a/test/units/modules/network/nso/test_nso_config.py
+++ /dev/null
@@ -1,137 +0,0 @@
-#
-# Copyright (c) 2017 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.nso import nso_config
-from units.modules.utils import set_module_args
-from . import nso_module
-from .nso_module import MockResponse
-
-
-class TestNsoConfig(nso_module.TestNsoModule):
- module = nso_config
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_config_invalid_version_short(self, open_url_mock):
- self._test_invalid_version(open_url_mock, '3.3')
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_config_invalid_version_long(self, open_url_mock):
- self._test_invalid_version(open_url_mock, '3.3.2')
-
- def _test_invalid_version(self, open_url_mock, version):
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "%s"}' % (version, )),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- data = nso_module.load_fixture('config_config.json')
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc', 'data': data,
- 'validate_certs': False
- })
- self.execute_module(failed=True)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_config_valid_version_short(self, open_url_mock):
- self._test_valid_version(open_url_mock, '4.5')
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_config_valid_version_long(self, open_url_mock):
- self._test_valid_version(open_url_mock, '4.4.3')
-
- def _test_valid_version(self, open_url_mock, version):
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "%s"}' % (version, )),
- MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
- MockResponse('get_trans_changes', {}, 200, '{"result": {"changes": []}}'),
- MockResponse('delete_trans', {}, 200, '{"result": {}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- data = nso_module.load_fixture('config_empty_data.json')
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc', 'data': data,
- 'validate_certs': False
- })
- self.execute_module(changed=False, changes=[], diffs=[])
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_config_changed(self, open_url_mock):
- vpn_schema = nso_module.load_fixture('l3vpn_schema.json')
- l3vpn_schema = nso_module.load_fixture('l3vpn_l3vpn_schema.json')
- endpoint_schema = nso_module.load_fixture('l3vpn_l3vpn_endpoint_schema.json')
- changes = nso_module.load_fixture('config_config_changes.json')
-
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.1"}'),
- MockResponse('get_module_prefix_map', {}, 200, '{"result": {"l3vpn": "l3vpn"}}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('get_schema', {'path': '/l3vpn:vpn'}, 200, '{"result": %s}' % (json.dumps(vpn_schema, ))),
- MockResponse('get_schema', {'path': '/l3vpn:vpn/l3vpn'}, 200, '{"result": %s}' % (json.dumps(l3vpn_schema, ))),
- MockResponse('exists', {'path': '/l3vpn:vpn/l3vpn{company}'}, 200, '{"result": {"exists": true}}'),
- MockResponse('get_schema', {'path': '/l3vpn:vpn/l3vpn/endpoint'}, 200, '{"result": %s}' % (json.dumps(endpoint_schema, ))),
- MockResponse('exists', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}'}, 200, '{"result": {"exists": false}}'),
- MockResponse('new_trans', {'mode': 'read_write'}, 200, '{"result": {"th": 2}}'),
- MockResponse('create', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}'}, 200, '{"result": {}}'),
- MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/route-distinguisher', 'value': 999}, 200, '{"result": {}}'),
- MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/as-number', 'value': 65101}, 200, '{"result": {}}'),
- MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/bandwidth', 'value': 12000000}, 200, '{"result": {}}'),
- MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-device', 'value': 'ce6'}, 200, '{"result": {}}'),
- MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-interface',
- 'value': 'GigabitEthernet0/12'}, 200, '{"result": {}}'),
- MockResponse('set_value', {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ip-network',
- 'value': '10.10.1.0/24'}, 200, '{"result": {}}'),
- MockResponse('get_trans_changes', {}, 200, '{"result": %s}' % (json.dumps(changes), )),
- MockResponse('validate_commit', {}, 200, '{"result": {}}'),
- MockResponse('commit', {}, 200, '{"result": {}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- data = nso_module.load_fixture('config_config.json')
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc', 'data': data,
- 'validate_certs': False
- })
- self.execute_module(changed=True, changes=[
- {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-device', 'type': 'set', 'from': None, 'to': 'ce6'},
- {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ip-network', 'type': 'set', 'from': None, 'to': '10.10.1.0/24'},
- {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/as-number', 'type': 'set', 'from': None, 'to': '65101'},
- {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/ce-interface', 'type': 'set', 'from': None, 'to': 'GigabitEthernet0/12'},
- {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}/bandwidth', 'type': 'set', 'from': None, 'to': '12000000'},
- {'path': '/l3vpn:vpn/l3vpn{company}/endpoint{branch-office1}', 'type': 'create'},
- ], diffs=[])
-
- self.assertEqual(0, len(calls))
diff --git a/test/units/modules/network/nso/test_nso_query.py b/test/units/modules/network/nso/test_nso_query.py
deleted file mode 100644
index 02ee963654..0000000000
--- a/test/units/modules/network/nso/test_nso_query.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# Copyright (c) 2017 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-
-from units.compat.mock import patch
-from ansible.modules.network.nso import nso_query
-from . import nso_module
-from .nso_module import MockResponse
-
-from units.modules.utils import set_module_args
-
-
-class TestNsoQuery(nso_module.TestNsoModule):
- module = nso_query
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_query(self, open_url_mock):
- xpath = '/packages/package'
- fields = ['name', 'package-version']
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('query',
- {'xpath_expr': xpath, 'selection': fields}, 200,
- '{"result": {"results": [["test", "1.0"]]}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc',
- 'xpath': xpath,
- 'fields': fields,
- 'validate_certs': False
- })
- self.execute_module(changed=False, output=[["test", "1.0"]])
-
- self.assertEqual(0, len(calls))
diff --git a/test/units/modules/network/nso/test_nso_show.py b/test/units/modules/network/nso/test_nso_show.py
deleted file mode 100644
index b1eac80a25..0000000000
--- a/test/units/modules/network/nso/test_nso_show.py
+++ /dev/null
@@ -1,97 +0,0 @@
-#
-# Copyright (c) 2017 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-
-from units.compat.mock import patch
-from ansible.modules.network.nso import nso_show
-from . import nso_module
-from .nso_module import MockResponse
-
-from units.modules.utils import set_module_args
-
-
-class TestNsoShow(nso_module.TestNsoModule):
- module = nso_show
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_show_missing(self, open_url_mock):
- path = '/ncs:devices/device{ce0}/missing'
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('show_config',
- {'path': path, 'result_as': 'json'}, 200,
- '{"error": {"data": {"param": "path"}, "type": "rpc.method.invalid_params"}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc',
- 'path': path
- })
- self.execute_module(failed=True, msg='NSO show_config invalid params. path = /ncs:devices/device{ce0}/missing')
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_show_config(self, open_url_mock):
- path = '/ncs:devices/device{ce0}'
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('show_config', {'path': path, 'result_as': 'json'}, 200, '{"result": {"data": {}}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc',
- 'path': path,
- 'operational': False
- })
- self.execute_module(changed=False, output={"data": {}})
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_show_config_and_oper(self, open_url_mock):
- path = '/ncs:devices/device{ce0}/sync-from'
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5"}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('show_config', {'path': path, 'result_as': 'json'}, 200, '{"result": {"data": {}}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc',
- 'path': path,
- 'operational': True,
- 'validate_certs': False
- })
- self.execute_module(changed=False, output={"data": {}})
-
- self.assertEqual(0, len(calls))
diff --git a/test/units/modules/network/nso/test_nso_verify.py b/test/units/modules/network/nso/test_nso_verify.py
deleted file mode 100644
index b39e9eef46..0000000000
--- a/test/units/modules/network/nso/test_nso_verify.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#
-# Copyright (c) 2017 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.nso import nso_verify
-from . import nso_module
-from .nso_module import MockResponse
-
-from units.modules.utils import set_module_args
-
-
-class TestNsoVerify(nso_module.TestNsoModule):
- module = nso_verify
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_verify_empty_data(self, open_url_mock):
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.4.3"}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- data = {}
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc', 'data': data
- })
- self.execute_module(changed=False)
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_verify_violation(self, open_url_mock):
- devices_schema = nso_module.load_fixture('devices_schema.json')
- device_schema = nso_module.load_fixture('device_schema.json')
- description_schema = nso_module.load_fixture('description_schema.json')
-
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'),
- MockResponse('get_module_prefix_map', {}, 200, '{"result": {"tailf-ncs": "ncs"}}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('get_schema', {'path': '/ncs:devices'}, 200, '{"result": %s}' % (json.dumps(devices_schema, ))),
- MockResponse('get_schema', {'path': '/ncs:devices/device'}, 200, '{"result": %s}' % (json.dumps(device_schema, ))),
- MockResponse('exists', {'path': '/ncs:devices/device{ce0}'}, 200, '{"result": {"exists": true}}'),
- MockResponse('get_value', {'path': '/ncs:devices/device{ce0}/description'}, 200, '{"result": {"value": "In Violation"}}'),
- MockResponse('get_schema', {'path': '/ncs:devices/device/description'}, 200, '{"result": %s}' % (json.dumps(description_schema, ))),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- data = nso_module.load_fixture('verify_violation_data.json')
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc', 'data': data
- })
- self.execute_module(failed=True, violations=[
- {'path': '/ncs:devices/device{ce0}/description', 'expected-value': 'Example Device', 'value': 'In Violation'},
- ])
-
- self.assertEqual(0, len(calls))
-
- @patch('ansible.module_utils.network.nso.nso.open_url')
- def test_nso_verify_ok(self, open_url_mock):
- devices_schema = nso_module.load_fixture('devices_schema.json')
- device_schema = nso_module.load_fixture('device_schema.json')
-
- calls = [
- MockResponse('login', {}, 200, '{}', {'set-cookie': 'id'}),
- MockResponse('get_system_setting', {'operation': 'version'}, 200, '{"result": "4.5.0"}'),
- MockResponse('get_module_prefix_map', {}, 200, '{"result": {"tailf-ncs": "ncs"}}'),
- MockResponse('new_trans', {'mode': 'read'}, 200, '{"result": {"th": 1}}'),
- MockResponse('get_schema', {'path': '/ncs:devices'}, 200, '{"result": %s}' % (json.dumps(devices_schema, ))),
- MockResponse('get_schema', {'path': '/ncs:devices/device'}, 200, '{"result": %s}' % (json.dumps(device_schema, ))),
- MockResponse('exists', {'path': '/ncs:devices/device{ce0}'}, 200, '{"result": {"exists": true}}'),
- MockResponse('get_value', {'path': '/ncs:devices/device{ce0}/description'}, 200, '{"result": {"value": "Example Device"}}'),
- MockResponse('logout', {}, 200, '{"result": {}}'),
- ]
- open_url_mock.side_effect = lambda *args, **kwargs: nso_module.mock_call(calls, *args, **kwargs)
-
- data = nso_module.load_fixture('verify_violation_data.json')
- set_module_args({
- 'username': 'user', 'password': 'password',
- 'url': 'http://localhost:8080/jsonrpc', 'data': data,
- 'validate_certs': False
- })
- self.execute_module(changed=False)
-
- self.assertEqual(0, len(calls))
diff --git a/test/units/modules/network/nuage/nuage_module.py b/test/units/modules/network/nuage/nuage_module.py
deleted file mode 100644
index 8ded2fd989..0000000000
--- a/test/units/modules/network/nuage/nuage_module.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# (c) 2017, Nokia
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args as _set_module_args, ModuleTestCase
-
-import pytest
-
-try:
- from vspk import v5_0 as vsdk
- from bambou import nurest_session
-except ImportError:
- pytestmark = pytest.mark.skip('Nuage Ansible modules requires the vspk and bambou python libraries')
-
-
-def set_module_args(args):
- if 'auth' not in args:
- args['auth'] = {
- 'api_username': 'csproot',
- 'api_password': 'csproot',
- 'api_enterprise': 'csp',
- 'api_url': 'https://localhost:8443',
- 'api_version': 'v5_0'
- }
- return _set_module_args(args)
-
-
-class MockNuageResponse(object):
- def __init__(self, status_code, reason, errors):
- self.status_code = status_code
- self.reason = reason
- self.errors = errors
-
-
-class MockNuageConnection(object):
- def __init__(self, status_code, reason, errors):
- self.response = MockNuageResponse(status_code, reason, errors)
-
-
-class TestNuageModule(ModuleTestCase):
-
- def setUp(self):
- super(TestNuageModule, self).setUp()
-
- def session_start(self):
- self._root_object = vsdk.NUMe()
- self._root_object.enterprise_id = 'enterprise-id'
- nurest_session._NURESTSessionCurrentContext.session = self
- return self
-
- self.session_mock = patch('vspk.v5_0.NUVSDSession.start', new=session_start)
- self.session_mock.start()
-
- def tearDown(self):
- super(TestNuageModule, self).tearDown()
- self.session_mock.stop()
diff --git a/test/units/modules/network/nuage/test_nuage_vspk.py b/test/units/modules/network/nuage/test_nuage_vspk.py
deleted file mode 100644
index adebd78461..0000000000
--- a/test/units/modules/network/nuage/test_nuage_vspk.py
+++ /dev/null
@@ -1,1421 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# (c) 2017, Nokia
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-import sys
-
-import pytest
-
-pytestmark = []
-
-if not(sys.version_info[0] == 2 and sys.version_info[1] >= 7):
- pytestmark.append(pytest.mark.skip('Nuage Ansible modules requires Python 2.7'))
-
-try:
- from vspk import v5_0 as vsdk
- from bambou.exceptions import BambouHTTPError
- from ansible.modules.network.nuage import nuage_vspk
-except ImportError:
- pytestmark.append(pytest.mark.skip('Nuage Ansible modules requires the vspk and bambou python libraries'))
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args, AnsibleExitJson, AnsibleFailJson
-from .nuage_module import MockNuageConnection, TestNuageModule
-
-_LOOP_COUNTER = 0
-
-
-class TestNuageVSPKModule(TestNuageModule):
-
- def setUp(self):
- super(TestNuageVSPKModule, self).setUp()
-
- self.patches = []
-
- def enterprises_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- if 'unknown' in filter:
- return []
-
- result = [vsdk.NUEnterprise(id='enterprise-id', name='test-enterprise')]
- if filter == '' or filter == 'name == "test%"':
- result.append(vsdk.NUEnterprise(id='enterprise-id-2', name='test-enterprise-2'))
- return result
-
- self.enterprises_get_mock = patch('vspk.v5_0.fetchers.NUEnterprisesFetcher.get', new=enterprises_get)
- self.enterprises_get_mock.start()
- self.patches.append(self.enterprises_get_mock)
-
- def enterprises_get_first(self, filter=None, order_by=None, group_by=None, query_parameters=None, commit=False, callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- if filter == 'name == "test-enterprise-create"' or 'unknown' in filter:
- return None
- return vsdk.NUEnterprise(id='enterprise-id', name='test-enterprise')
-
- self.enterprises_get_first_mock = patch('vspk.v5_0.fetchers.NUEnterprisesFetcher.get_first', new=enterprises_get_first)
- self.enterprises_get_first_mock.start()
- self.patches.append(self.enterprises_get_first_mock)
-
- def enterprise_delete(self, response_choice=1, callback=None, **kwargs):
- pass
-
- self.enterprise_delete_mock = patch('vspk.v5_0.NUEnterprise.delete', new=enterprise_delete)
- self.enterprise_delete_mock.start()
- self.patches.append(self.enterprise_delete_mock)
-
- def enterprise_fetch(self, callback=None, **kwargs):
- self.id = 'enterprise-id'
- self.name = 'test-enterprise'
-
- self.enterprise_fetch_mock = patch('vspk.v5_0.NUEnterprise.fetch', new=enterprise_fetch)
- self.enterprise_fetch_mock.start()
- self.patches.append(self.enterprise_fetch_mock)
-
- def enterprise_save(self, response_choice=None, callback=None, **kwargs):
- self.id = 'enterprise-id'
- self.name = 'test-enterprise-update'
-
- self.enterprise_save_mock = patch('vspk.v5_0.NUEnterprise.save', new=enterprise_save)
- self.enterprise_save_mock.start()
- self.patches.append(self.enterprise_save_mock)
-
- def enterprise_create_child(self, nurest_object, response_choice=None, callback=None, commit=True, **kwargs):
- nurest_object.id = 'user-id-create'
- return nurest_object
-
- self.enterprise_create_child_mock = patch('vspk.v5_0.NUEnterprise.create_child', new=enterprise_create_child)
- self.enterprise_create_child_mock.start()
- self.patches.append(self.enterprise_create_child_mock)
-
- def me_create_child(self, nurest_object, response_choice=None, callback=None, commit=True, **kwargs):
- nurest_object.id = 'enterprise-id-create'
- return nurest_object
-
- self.me_create_child_mock = patch('vspk.v5_0.NUMe.create_child', new=me_create_child)
- self.me_create_child_mock.start()
- self.patches.append(self.me_create_child_mock)
-
- def user_fetch(self, callback=None, **kwargs):
- self.id = 'user-id'
- self.first_name = 'John'
- self.last_name = 'Doe'
- self.email = 'john.doe@localhost'
- self.user_name = 'johndoe'
- self.password = ''
-
- self.user_fetch_mock = patch('vspk.v5_0.NUUser.fetch', new=user_fetch)
- self.user_fetch_mock.start()
- self.patches.append(self.user_fetch_mock)
-
- def user_save(self, response_choice=None, callback=None, **kwargs):
- self.id = 'user-id'
- self.first_name = 'John'
- self.last_name = 'Doe'
- self.email = 'john.doe@localhost'
- self.user_name = 'johndoe'
- self.password = ''
-
- self.user_save_mock = patch('vspk.v5_0.NUUser.save', new=user_save)
- self.user_save_mock.start()
- self.patches.append(self.user_save_mock)
-
- def groups_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return []
-
- self.groups_get_mock = patch('vspk.v5_0.fetchers.NUGroupsFetcher.get', new=groups_get)
- self.groups_get_mock.start()
- self.patches.append(self.groups_get_mock)
-
- def group_fetch(self, callback=None, **kwargs):
- self.id = 'group-id'
- self.name = 'group'
-
- self.group_fetch_mock = patch('vspk.v5_0.NUGroup.fetch', new=group_fetch)
- self.group_fetch_mock.start()
- self.patches.append(self.group_fetch_mock)
-
- def group_assign(self, objects, nurest_object_type, callback=None, commit=True, **kwargs):
- self.id = 'group-id'
- self.name = 'group'
-
- self.group_assign_mock = patch('vspk.v5_0.NUGroup.assign', new=group_assign)
- self.group_assign_mock.start()
- self.patches.append(self.group_assign_mock)
-
- def job_fetch(self, callback=None, **kwargs):
- global _LOOP_COUNTER
- self.id = 'job-id'
- self.command = 'EXPORT'
- self.status = 'RUNNING'
- if _LOOP_COUNTER > 1:
- self.status = 'SUCCESS'
- _LOOP_COUNTER += 1
-
- self.job_fetch_mock = patch('vspk.v5_0.NUJob.fetch', new=job_fetch)
- self.job_fetch_mock.start()
- self.patches.append(self.job_fetch_mock)
-
- def tearDown(self):
- super(TestNuageVSPKModule, self).tearDown()
- for mock in self.patches:
- mock.stop()
-
- def test_certificate_auth(self):
- set_module_args(
- args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'test-enterprise'
- },
- 'auth': {
- 'api_username': 'csproot',
- 'api_certificate': '/dummy/location/certificate.pem',
- 'api_key': '/dummy/location/key.pem',
- 'api_enterprise': 'csp',
- 'api_url': 'https://localhost:8443',
- 'api_version': 'v5_0'
- }
- }
- )
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
- self.assertEqual(len(result['entities']), 1)
- self.assertEqual(result['id'], 'enterprise-id')
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise')
-
- def test_command_find_by_property(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'command': 'find',
- 'properties': {
- 'name': 'test-enterprise'
- }
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
- self.assertEqual(len(result['entities']), 1)
- self.assertEqual(result['id'], 'enterprise-id')
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise')
-
- def test_command_find_by_filter(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'command': 'find',
- 'match_filter': 'name == "test%"'
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
- self.assertEqual(len(result['entities']), 2)
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise')
- self.assertEqual(result['entities'][1]['name'], 'test-enterprise-2')
-
- def test_command_find_by_id(self):
- set_module_args(args={
- 'id': 'enterprise-id',
- 'type': 'Enterprise',
- 'command': 'find'
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
- self.assertEqual(len(result['entities']), 1)
- self.assertEqual(result['id'], 'enterprise-id')
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise')
-
- def test_command_find_all(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'command': 'find'
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
- self.assertEqual(len(result['entities']), 2)
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise')
- self.assertEqual(result['entities'][1]['name'], 'test-enterprise-2')
-
- def test_command_change_password(self):
- set_module_args(args={
- 'id': 'user-id',
- 'type': 'User',
- 'parent_id': 'enterprise-id',
- 'parent_type': 'Enterprise',
- 'command': 'change_password',
- 'properties': {
- 'password': 'test'
- }
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertEqual(result['changed'], True)
- self.assertEqual(result['id'], 'user-id')
- self.assertEqual(result['entities'][0]['firstName'], 'John')
- self.assertEqual(result['entities'][0]['lastName'], 'Doe')
- self.assertEqual(result['entities'][0]['email'], 'john.doe@localhost')
- self.assertEqual(result['entities'][0]['userName'], 'johndoe')
- self.assertEqual(result['entities'][0]['password'], '')
-
- def test_command_wait_for_job(self):
- set_module_args(args={
- 'id': 'job-id',
- 'type': 'Job',
- 'command': 'wait_for_job',
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertEqual(result['changed'], True)
- self.assertEqual(result['id'], 'job-id')
- self.assertEqual(result['entities'][0]['command'], 'EXPORT')
- self.assertEqual(result['entities'][0]['status'], 'SUCCESS')
-
- def test_command_get_csp_enterprise(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'command': 'get_csp_enterprise'
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
- self.assertEqual(len(result['entities']), 1)
- self.assertEqual(result['id'], 'enterprise-id')
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise')
-
- def test_state_present_existing(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'id': 'enterprise-id',
- 'name': 'test-enterprise'
- }
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
- self.assertEqual(len(result['entities']), 1)
- self.assertEqual(result['id'], 'enterprise-id')
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise')
-
- def test_state_present_existing_filter(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'match_filter': 'name == "test-enterprise"'
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
- self.assertEqual(len(result['entities']), 1)
- self.assertEqual(result['id'], 'enterprise-id')
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise')
-
- def test_state_present_create(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'test-enterprise-create'
- }
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertEqual(result['changed'], True)
- self.assertEqual(len(result['entities']), 1)
- self.assertEqual(result['id'], 'enterprise-id-create')
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise-create')
-
- def test_state_present_update(self):
- set_module_args(args={
- 'id': 'enterprise-id',
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'test-enterprise-update'
- }
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertEqual(result['changed'], True)
- self.assertEqual(len(result['entities']), 1)
- self.assertEqual(result['id'], 'enterprise-id')
- self.assertEqual(result['entities'][0]['name'], 'test-enterprise-update')
-
- def test_state_present_member_existing(self):
- set_module_args(args={
- 'id': 'user-id',
- 'type': 'User',
- 'parent_id': 'group-id',
- 'parent_type': 'Group',
- 'state': 'present'
- })
-
- def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return [vsdk.NUUser(id='user-id'), vsdk.NUUser(id='user-id-2')]
-
- with self.assertRaises(AnsibleExitJson) as exc:
- with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
-
- def test_state_present_member_missing(self):
- set_module_args(args={
- 'id': 'user-id',
- 'type': 'User',
- 'parent_id': 'group-id',
- 'parent_type': 'Group',
- 'state': 'present'
- })
-
- def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return []
-
- with self.assertRaises(AnsibleExitJson) as exc:
- with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertEqual(result['changed'], True)
- self.assertEqual(len(result['entities']), 1)
- self.assertEqual(result['id'], 'user-id')
-
- def test_state_present_children_update(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'test-enterprise'
- },
- 'children': [
- {
- 'id': 'user-id',
- 'type': 'User',
- 'match_filter': 'userName == "johndoe"',
- 'properties': {
- 'user_name': 'johndoe-changed'
- }
- }
- ]
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertEqual(result['changed'], True)
- self.assertEqual(len(result['entities']), 2)
-
- def test_state_present_children_create(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'test-enterprise-create'
- },
- 'children': [
- {
- 'type': 'User',
- 'properties': {
- 'user_name': 'johndoe-new'
- }
- }
- ]
- })
-
- def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return []
-
- with self.assertRaises(AnsibleExitJson) as exc:
- with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['changed'])
- self.assertEqual(len(result['entities']), 2)
-
- def test_state_present_children_member_missing(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'unkown-test-enterprise'
- },
- 'children': [
- {
- 'type': 'Group',
- 'properties': {
- 'name': 'unknown-group'
- },
- 'children': [
- {
- 'id': 'user-id',
- 'type': 'User'
- }
- ]
- }
- ]
- })
-
- def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return []
-
- with self.assertRaises(AnsibleExitJson) as exc:
- with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['changed'])
- self.assertEqual(len(result['entities']), 3)
-
- def test_state_absent(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'absent',
- 'properties': {
- 'name': 'test-enterprise'
- }
- })
-
- with self.assertRaises(AnsibleExitJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['changed'])
-
- def test_state_absent_member(self):
- set_module_args(args={
- 'id': 'user-id',
- 'type': 'User',
- 'parent_id': 'group-id',
- 'parent_type': 'Group',
- 'state': 'absent'
- })
-
- def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return [vsdk.NUUser(id='user-id')]
-
- with self.assertRaises(AnsibleExitJson) as exc:
- with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['changed'])
-
- def test_exception_session(self):
- set_module_args(args={
- 'id': 'enterprise-id',
- 'type': 'Enterprise',
- 'command': 'find'
- })
-
- def failed_session_start(self):
- raise BambouHTTPError(MockNuageConnection(status_code='401', reason='Unauthorized', errors={}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.NUVSDSession.start', new=failed_session_start):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Unable to connect to the API URL with given username, password and enterprise: [HTTP 401(Unauthorized)] {}')
-
- def test_exception_find_parent(self):
- set_module_args(args={
- 'type': 'User',
- 'parent_id': 'group-id',
- 'parent_type': 'Group',
- 'command': 'find'
- })
-
- def group_failed_fetch(self, callback=None, **kwargs):
- raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.NUGroup.fetch', group_failed_fetch):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Failed to fetch the specified parent: [HTTP 404(Not Found)] {'description': 'Entity not found'}")
-
- def test_exception_find_entities_id(self):
- set_module_args(args={
- 'id': 'enterprise-id',
- 'type': 'Enterprise',
- 'command': 'find'
- })
-
- def enterprise_failed_fetch(self, callback=None, **kwargs):
- raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.NUEnterprise.fetch', enterprise_failed_fetch):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Failed to fetch the specified entity by ID: [HTTP 404(Not Found)] {'description': 'Entity not found'}")
-
- def test_excption_find_entities_property(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'match_filter': 'name == "enterprise-id"',
- 'command': 'find'
- })
-
- def enterprises_failed_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.fetchers.NUEnterprisesFetcher.get', enterprises_failed_get):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Unable to find matching entries')
-
- def test_exception_find_entity_id(self):
- set_module_args(args={
- 'id': 'enterprise-id',
- 'type': 'Enterprise',
- 'state': 'present'
- })
-
- def enterprise_failed_fetch(self, callback=None, **kwargs):
- raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.NUEnterprise.fetch', enterprise_failed_fetch):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Failed to fetch the specified entity by ID: [HTTP 404(Not Found)] {'description': 'Entity not found'}")
-
- def test_exception_find_entity_property(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'match_filter': 'name == "enterprise-id"',
- 'state': 'absent'
- })
-
- def enterprises_failed_get_first(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'}))
-
- with self.assertRaises(AnsibleExitJson) as exc:
- with patch('vspk.v5_0.fetchers.NUEnterprisesFetcher.get_first', enterprises_failed_get_first):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertFalse(result['changed'])
-
- def test_exception_get_csp_enterprise(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'command': 'get_csp_enterprise'
- })
-
- def enterprise_failed_fetch(self, callback=None, **kwargs):
- raise BambouHTTPError(MockNuageConnection(status_code='404', reason='Not Found', errors={'description': 'Entity not found'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.NUEnterprise.fetch', enterprise_failed_fetch):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Unable to fetch CSP enterprise: [HTTP 404(Not Found)] {'description': 'Entity not found'}")
-
- def test_exception_assign_member(self):
- set_module_args(args={
- 'id': 'user-id',
- 'type': 'User',
- 'parent_id': 'group-id',
- 'parent_type': 'Group',
- 'state': 'present'
- })
-
- def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return []
-
- def group_assign(self, objects, nurest_object_type, callback=None, commit=True, **kwargs):
- raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to assign member'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get):
- with patch('vspk.v5_0.NUGroup.assign', new=group_assign):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Unable to assign entity as a member: [HTTP 500(Server exception)] {'description': 'Unable to assign member'}")
-
- def test_exception_unassign_member(self):
- set_module_args(args={
- 'id': 'user-id',
- 'type': 'User',
- 'parent_id': 'group-id',
- 'parent_type': 'Group',
- 'state': 'absent'
- })
-
- def users_get(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return [vsdk.NUUser(id='user-id'), vsdk.NUUser(id='user-id-2')]
-
- def group_assign(self, objects, nurest_object_type, callback=None, commit=True, **kwargs):
- raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to remove member'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.fetchers.NUUsersFetcher.get', users_get):
- with patch('vspk.v5_0.NUGroup.assign', new=group_assign):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Unable to remove entity as a member: [HTTP 500(Server exception)] {'description': 'Unable to remove member'}")
-
- def test_exception_create_entity(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'test-enterprise-create'
- }
- })
-
- def me_create_child(self, nurest_object, response_choice=None, callback=None, commit=True, **kwargs):
- raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to create entity'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.NUMe.create_child', me_create_child):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Unable to create entity: [HTTP 500(Server exception)] {'description': 'Unable to create entity'}")
-
- def test_exception_save_entity(self):
- set_module_args(args={
- 'id': 'enterprise-id',
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'new-enterprise-name'
- }
- })
-
- def enterprise_save(self, response_choice=None, callback=None, **kwargs):
- raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to save entity'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.NUEnterprise.save', enterprise_save):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Unable to update entity: [HTTP 500(Server exception)] {'description': 'Unable to save entity'}")
-
- def test_exception_delete_entity(self):
- set_module_args(args={
- 'id': 'enterprise-id',
- 'type': 'Enterprise',
- 'state': 'absent'
- })
-
- def enterprise_delete(self, response_choice=1, callback=None, **kwargs):
- raise BambouHTTPError(MockNuageConnection(status_code='500', reason='Server exception', errors={'description': 'Unable to delete entity'}))
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.NUEnterprise.delete', enterprise_delete):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Unable to delete entity: [HTTP 500(Server exception)] {'description': 'Unable to delete entity'}")
-
- def test_exception_wait_for_job(self):
- set_module_args(args={
- 'id': 'job-id',
- 'type': 'Job',
- 'command': 'wait_for_job'
- })
-
- def job_fetch(self, callback=None, **kwargs):
- global _LOOP_COUNTER
- self.id = 'job-id'
- self.command = 'EXPORT'
- self.status = 'RUNNING'
- if _LOOP_COUNTER > 1:
- self.status = 'ERROR'
- _LOOP_COUNTER += 1
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.NUJob.fetch', new=job_fetch):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "Job ended in an error")
-
- def test_fail_auth(self):
- set_module_args(
- args={
- 'type': 'Enterprise',
- 'command': 'find',
- 'auth': {
- 'api_username': 'csproot',
- 'api_enterprise': 'csp',
- 'api_url': 'https://localhost:8443',
- 'api_version': 'v5_0'
- }
- }
- )
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Missing api_password or api_certificate and api_key parameter in auth')
-
- def test_fail_version(self):
- set_module_args(
- args={
- 'type': 'Enterprise',
- 'command': 'find',
- 'auth': {
- 'api_username': 'csproot',
- 'api_password': 'csproot',
- 'api_enterprise': 'csp',
- 'api_url': 'https://localhost:8443',
- 'api_version': 'v1_0'
- }
- }
- )
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'vspk is required for this module, or the API version specified does not exist.')
-
- def test_fail_type(self):
- set_module_args(args={
- 'type': 'Unknown',
- 'command': 'find'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Unrecognised type specified')
-
- def test_fail_parent_type(self):
- set_module_args(args={
- 'type': 'User',
- 'parent_id': 'unkown-id',
- 'parent_type': 'Unknown',
- 'command': 'find'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Unrecognised parent type specified')
-
- def test_fail_parent_child(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'parent_id': 'user-id',
- 'parent_type': 'User',
- 'command': 'find'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Specified parent is not a valid parent for the specified type')
-
- def test_fail_no_parent(self):
- set_module_args(args={
- 'type': 'Group',
- 'command': 'find'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'No parent specified and root object is not a parent for the type')
-
- def test_fail_present_member(self):
- set_module_args(args={
- 'type': 'User',
- 'match_filter': 'name == "test-user"',
- 'parent_id': 'group-id',
- 'parent_type': 'Group',
- 'state': 'present'
- })
-
- def users_get_first(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return None
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.fetchers.NUUsersFetcher.get_first', users_get_first):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Trying to assign an entity that does not exist', result)
-
- def test_fail_change_password(self):
- set_module_args(args={
- 'id': 'user-id',
- 'type': 'User',
- 'command': 'change_password',
- 'properties': {}
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'command is change_password but the following are missing: password property')
-
- def test_fail_change_password_non_user(self):
- set_module_args(args={
- 'id': 'group-id',
- 'type': 'Group',
- 'command': 'change_password',
- 'properties': {
- 'password': 'new-password'
- }
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Entity does not have a password property')
-
- def test_fail_command_find(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'command': 'find',
- 'properties': {
- 'id': 'unknown-enterprise-id',
- 'name': 'unkown-enterprise'
- }
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Unable to find matching entries')
-
- def test_fail_children_type(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'test-enterprise-create'
- },
- 'children': [
- {
- 'properties': {
- 'user_name': 'johndoe-new'
- }
- }
- ]
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Child type unspecified')
-
- def test_fail_children_mandatory(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'test-enterprise-create'
- },
- 'children': [
- {
- 'type': 'User'
- }
- ]
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Child ID or properties unspecified')
-
- def test_fail_children_unknown(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'properties': {
- 'name': 'test-enterprise-create'
- },
- 'children': [
- {
- 'id': 'unkown-id',
- 'type': 'Unkown'
- }
- ]
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Unrecognised child type specified')
-
- def test_fail_children_parent(self):
- set_module_args(args={
- 'id': 'group-id',
- 'type': 'Group',
- 'state': 'present',
- 'children': [
- {
- 'type': 'User',
- 'properties': {
- 'name': 'test-user'
- }
- }
- ]
- })
-
- def users_get_first(self, filter=None, order_by=None, group_by=None, page=None, page_size=None, query_parameters=None, commit=True,
- callback=None, **kwargs):
- group_by = [] if group_by is None else group_by
-
- return None
-
- with self.assertRaises(AnsibleFailJson) as exc:
- with patch('vspk.v5_0.fetchers.NUUsersFetcher.get_first', users_get_first):
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Trying to assign a child that does not exist')
-
- def test_fail_children_fetcher(self):
- set_module_args(args={
- 'id': 'group-id',
- 'type': 'Group',
- 'state': 'present',
- 'children': [
- {
- 'type': 'Enterprise',
- 'properties': {
- 'name': 'test-enterprise'
- }
- }
- ]
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Unable to find a fetcher for child, and no ID specified.')
-
- def test_fail_has_changed(self):
- set_module_args(args={
- 'id': 'user-id',
- 'type': 'User',
- 'state': 'present',
- 'properties': {
- 'user_name': 'changed-user',
- 'fake': 'invalid-property',
- 'password': 'hidden-property'
- }
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'Property fake is not valid for this type of entity')
-
- def test_input_auth_username(self):
- set_module_args(
- args={
- 'type': 'Enterprise',
- 'command': 'find',
- 'auth': {
- 'api_password': 'csproot',
- 'api_enterprise': 'csp',
- 'api_url': 'https://localhost:8443',
- 'api_version': 'v5_0'
- }
- }
- )
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'missing required arguments: api_username')
-
- def test_input_auth_enterprise(self):
- set_module_args(
- args={
- 'type': 'Enterprise',
- 'command': 'find',
- 'auth': {
- 'api_username': 'csproot',
- 'api_password': 'csproot',
- 'api_url': 'https://localhost:8443',
- 'api_version': 'v5_0'
- }
- }
- )
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'missing required arguments: api_enterprise')
-
- def test_input_auth_url(self):
- set_module_args(
- args={
- 'type': 'Enterprise',
- 'command': 'find',
- 'auth': {
- 'api_username': 'csproot',
- 'api_password': 'csproot',
- 'api_enterprise': 'csp',
- 'api_version': 'v5_0'
- }
- }
- )
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'missing required arguments: api_url')
-
- def test_input_auth_version(self):
- set_module_args(
- args={
- 'type': 'Enterprise',
- 'command': 'find',
- 'auth': {
- 'api_username': 'csproot',
- 'api_password': 'csproot',
- 'api_enterprise': 'csp',
- 'api_url': 'https://localhost:8443',
- }
- }
- )
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], 'missing required arguments: api_version')
-
- def test_input_exclusive(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- 'command': 'find'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "parameters are mutually exclusive: ['command', 'state']")
-
- def test_input_require_both_parent_id(self):
- set_module_args(args={
- 'type': 'User',
- 'command': 'find',
- 'parent_type': 'Enterprise'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "parameters are required together: ['parent_id', 'parent_type']")
-
- def test_input_require_both_parent_type(self):
- set_module_args(args={
- 'type': 'User',
- 'command': 'find',
- 'parent_id': 'enterprise-id'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "parameters are required together: ['parent_id', 'parent_type']")
-
- def test_input_require_on_off(self):
- set_module_args(args={
- 'type': 'Enterprise'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "one of the following is required: command,state")
-
- def test_input_require_if_present(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'present',
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "state is present but the following are missing: id,properties,match_filter")
-
- def test_input_require_if_absent(self):
- set_module_args(args={
- 'type': 'Enterprise',
- 'state': 'absent',
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "state is absent but the following are missing: id,properties,match_filter")
-
- def test_input_require_if_change_password_id(self):
- set_module_args(args={
- 'type': 'User',
- 'command': 'change_password',
- 'properties': {
- 'password': 'dummy-password'
- }
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "command is change_password but the following are missing: id")
-
- def test_input_require_if_change_password_properties(self):
- set_module_args(args={
- 'type': 'User',
- 'command': 'change_password',
- 'id': 'user-id'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "command is change_password but the following are missing: properties")
-
- def test_input_require_if_wait_for_job_id(self):
- set_module_args(args={
- 'type': 'Job',
- 'command': 'wait_for_job'
- })
-
- with self.assertRaises(AnsibleFailJson) as exc:
- nuage_vspk.main()
-
- result = exc.exception.args[0]
-
- self.assertTrue(result['failed'])
- self.assertEqual(result['msg'], "command is wait_for_job but the following are missing: id")
diff --git a/test/units/modules/network/onyx/fixtures/onyx_bgp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_bgp_show.cfg
deleted file mode 100644
index b9c5c952eb..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_bgp_show.cfg
+++ /dev/null
@@ -1,34 +0,0 @@
-##
-## Running database "initial"
-## Generated at 2009/01/14 12:53:06 +0000
-## Hostname: r-ufm-sw102
-##
-
-##
-## Running-config temporary prefix mode setting
-##
-no cli default prefix-modes enable
-
-##
-## BGP configuration
-##
- protocol bgp
- router bgp 172 vrf default
- router bgp 172 vrf default router-id 1.2.3.4 force
- router bgp 172 vrf default bgp fast-external-fallover
- router bgp 172 vrf default maximum-paths 31
- router bgp 172 vrf default bestpath as-path multipath-relax force
- router bgp 172 vrf default neighbor evpn peer-group
- router bgp 172 vrf default neighbor evpn send-community extended
- router bgp 172 vrf default neighbor 10.2.3.4 remote-as 173
- router bgp 172 vrf default neighbor 10.2.3.5 remote-as 322
- router bgp 172 vrf default neighbor 10.2.3.5 peer-group evpn
- router bgp 172 vrf default neighbor 10.2.3.5 ebgp-multihop 255
- router bgp 172 vrf default address-family l2vpn-evpn neighbor evpn next-hop-unchanged
- router bgp 172 vrf default address-family l2vpn-evpn neighbor evpn activate
- router bgp 172 vrf default network 172.16.1.0 /24
- router bgp 172 vrf default address-family l2vpn-evpn auto-create
-##
-## Persistent prefix mode setting
-##
-cli default prefix-modes enable
diff --git a/test/units/modules/network/onyx/fixtures/onyx_buffer_pool.cfg b/test/units/modules/network/onyx/fixtures/onyx_buffer_pool.cfg
deleted file mode 100644
index 7172e8dc1a..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_buffer_pool.cfg
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "roce": [
- {
- "Type": "lossless",
- "Switch Priorities": "3",
- "Max Usage": "0",
- "Usage": "0",
- "Memory actual": "5.9M",
- "Memory [%]": "50.00"
- }
- ],
- "Exception list": {
- "message": "N/A"
- }
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_command_show_version.txt b/test/units/modules/network/onyx/fixtures/onyx_command_show_version.txt
deleted file mode 100644
index cca075b606..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_command_show_version.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Product name: MLNX-OS
-Product release: 3.6.5000
-Build ID: #1-dev
-Build date: 2017-11-10 18:14:32
-Target arch: x86_64
-Target hw: x86_64
-Built by: jenkins@cc45f26cd083
-Version summary: X86_64 3.6.5000 2017-11-10 18:14:32 x86_64
-
-Product model: x86onie
-Host ID: 248A073D505C
-System serial num: \"MT1632X00205\"
-System UUID: 0b19d6d0-5eca-11e6-8000-7cfe90fadc40
-
-Uptime: 1d 16h 31m 43.856s
-CPU load averages: 0.06 / 0.12 / 0.13
-Number of CPUs: 4
-System memory: 2597 MB used / 5213 MB free / 7810 MB total
-Swap: 0 MB used / 0 MB free / 0 MB total
diff --git a/test/units/modules/network/onyx/fixtures/onyx_config_config.cfg b/test/units/modules/network/onyx/fixtures/onyx_config_config.cfg
deleted file mode 100644
index 38062a8c74..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_config_config.cfg
+++ /dev/null
@@ -1,115 +0,0 @@
-##
-## Running database "initial"
-## Generated at 2017/11/28 17:52:08 +0000
-## Hostname: ufm-switch16
-##
-
-##
-## Running-config temporary prefix mode setting
-##
-no cli default prefix-modes enable
-
-##
-## License keys
-##
- license install 11223344
-
-##
-## MLAG protocol
-##
- protocol mlag
-
-##
-## Interface Ethernet configuration
-##
- interface mlag-port-channel 2
- interface port-channel 1
- interface ethernet 1/7-1/8 channel-group 1 mode active
- interface ethernet 1/32 mlag-channel-group 2 mode on
- interface mlag-port-channel 2 switchport mode hybrid
- interface mlag-port-channel 2 no shutdown
-
-##
-## LAG configuration
-##
- lacp
-
-##
-## VLAN configuration
-##
- vlan 101
- vlan 4094
- interface mlag-port-channel 2 switchport access vlan 101
-
-##
-## STP configuration
-##
-no spanning-tree
-
-##
-## L3 configuration
-##
- ip routing vrf default
- interface vlan 101
- interface vlan 4094
- interface vlan 101 ip address 10.0.0.254 255.255.255.0
- interface vlan 4094 ip address 10.10.10.1 255.255.255.0
-
-##
-## Other IP configuration
-##
-hostname ufm-switch16
-
-##
-## DCBX PFC configuration
-##
- dcb priority-flow-control enable force
- interface ethernet 1/7-1/8 dcb priority-flow-control mode on force
- interface port-channel 1 dcb priority-flow-control mode on force
-
-##
-## LLDP configuration
-##
- lldp
-
-##
-## MAGP configuration
-##
- protocol magp
- interface vlan 101 magp 102
- interface vlan 101 magp 102 ip virtual-router address 10.0.0.252
- interface vlan 101 magp 102 ip virtual-router mac-address 00:00:5E:00:01:01
-
-##
-## MLAG configurations
-##
- mlag-vip neo-mlag-vip-4094 ip 192.168.1.1 /24 force
-no mlag shutdown
- mlag system-mac 00:00:5E:00:01:00
- interface port-channel 1 ipl 1
- interface vlan 4094 ipl 1 peer-address 10.10.10.2
-
-##
-## AAA remote server configuration
-##
-# ldap bind-password ********
-# radius-server key ********
-# tacacs-server key ********
-
-##
-## Network management configuration
-##
-# web proxy auth basic password ********
- telnet-server enable
-
-##
-## X.509 certificates configuration
-##
-#
-# Certificate name system-self-signed, ID 51f545df9722387056f674401f510ff56077800b
-# (public-cert config omitted since private-key config is hidden)
-
-##
-## Persistent prefix mode setting
-##
-cli default prefix-modes enable \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_config_src.cfg b/test/units/modules/network/onyx/fixtures/onyx_config_src.cfg
deleted file mode 100644
index 2fc2ada110..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_config_src.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-no cli default prefix-modes enable
-interface mlag-port-channel 2
-
diff --git a/test/units/modules/network/onyx/fixtures/onyx_facts_show_interfaces_ethernet.cfg b/test/units/modules/network/onyx/fixtures/onyx_facts_show_interfaces_ethernet.cfg
deleted file mode 100644
index 03128f1e01..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_facts_show_interfaces_ethernet.cfg
+++ /dev/null
@@ -1,20 +0,0 @@
-[
- {
- "Fec": "auto",
- "Mac address": "7c:fe:90:e5:ca:3c",
- "Actual speed": "100 Gbps",
- "MTU": "1500 bytes(Maximum packet size 1522 bytes)",
- "header": "Eth1/1",
- "Admin state": "Enabled",
- "Operational state": "Down"
- },
- {
- "Fec": "auto",
- "Mac address": "7c:fe:90:e5:ca:3e",
- "Actual speed": "100 Gbps",
- "MTU": "1500 bytes(Maximum packet size 1522 bytes)",
- "header": "Eth1/2",
- "Admin state": "Enabled",
- "Operational state": "Down"
- }
-] \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_facts_show_module.cfg b/test/units/modules/network/onyx/fixtures/onyx_facts_show_module.cfg
deleted file mode 100644
index a82fcf7519..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_facts_show_module.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "MGMT": [
- {
- "Status": "ready"
- }
- ]
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_facts_show_version.cfg b/test/units/modules/network/onyx/fixtures/onyx_facts_show_version.cfg
deleted file mode 100644
index 9a486e8c4e..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_facts_show_version.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "Uptime": "2d 13h 40m 34.992s",
- "Product model": "x86onie",
- "Build date": "2017-11-10 18:14:32",
- "Target arch": "x86_64",
- "Target hw": "x86_64",
- "Number of CPUs": "4",
- "Build ID": "#1-dev",
- "CPU load averages": "0.21 / 0.07 / 0.06",
- "Host ID": "248A07B0141C",
- "System serial num": "MT1708X07233",
- "System UUID": "03d242b6-1a24-11e7-8000-248a07f55400",
- "Swap": "0 MB used / 0 MB free / 0 MB total",
- "Product name": "MLNX-OS",
- "Built by": "jenkins@cc45f26cd083",
- "System memory": "2597 MB used / 5213 MB free / 7810 MB total",
- "Version summary": "X86_64 3.6.5000 2017-11-10 18:14:32 x86_64",
- "Product release": "3.6.5000"
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_igmp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_igmp_show.cfg
deleted file mode 100644
index 13b19d949c..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_igmp_show.cfg
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "Report suppression interval": "5 seconds",
- "IGMP snooping unregistered multicast": "flood",
- "IGMP snooping operationally": "disabled",
- "Mrouter timeout": "125 seconds",
- "IGMP default version for new VLAN": "V3",
- "header": "IGMP snooping global configuration",
- "Last member query interval": "1 seconds",
- "IGMP snooping globally": "disabled",
- "Proxy-reporting globally": "disabled",
- "Port purge timeout": "260 seconds"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_interfaces_rates.cfg b/test/units/modules/network/onyx/fixtures/onyx_interfaces_rates.cfg
deleted file mode 100644
index 11131cc5e5..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_interfaces_rates.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "Eth1/1": [
- {
- "ingress rate": "9000 b/s",
- "egress pkts/sec": "10",
- "egress rate": "10000 b/s",
- "ingress pkts/sec": "10"
- }
- ]
-} \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_interfaces_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_interfaces_show.cfg
deleted file mode 100644
index 982e58fdbd..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_interfaces_show.cfg
+++ /dev/null
@@ -1,74 +0,0 @@
-[
- {
- "Fec": "auto",
- "Mac address": "7c:fe:90:f0:54:fc",
- "60 seconds ingress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec",
- "Last clearing of \"show interface\" counters": "Never",
- "Actual speed": "40 Gbps",
- "MTU": "1500 bytes(Maximum packet size 1522 bytes)",
- "header": "Eth1/1",
- "Telemetry threshold": "Disabled\t TCs: N\\A",
- "Telemetry threshold level": "N\\A",
- "Flow-control": "receive off send off",
- "Forwarding mode": "inherited cut-through",
- "60 seconds egress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec",
- "Last change in operational status": "Never",
- "Boot delay time": "0 sec",
- "Description": "N\\A",
- "Admin state": "Enabled",
- "Telemetry sampling": "Disabled\t TCs: N\\A",
- "Operational state": "Down",
- "Width reduction mode": "Not supported",
- "Tx": {
- "error packets": "0",
- "packets": "0",
- "bytes": "0",
- "multicast packets": "0",
- "unicast packets": "0",
- "discard packets": "0",
- "hoq discard packets": "0",
- "broadcast packets": "0"
- },
- "MAC learning mode": "Enabled",
- "Switchport mode": "access",
- "Rx": {
- "error packets": "0",
- "packets": "0",
- "bytes": "0",
- "multicast packets": "0",
- "unicast packets": "0",
- "discard packets": "0",
- "broadcast packets": "0"
- }
- },
- {
- "Icmp redirect": "Enabled",
- "Description": "N/A",
- "Mac Address": "7C:FE:90:F0:54:C1",
- "Autostate": "Enabled",
- "Admin state": "Enabled",
- "header": "Vlan 10",
- "MTU": "1500 bytes",
- "DHCP client": "Disabled",
- "Operational state": "Up",
- "VRF": "default",
- "Arp timeout": "1500 seconds",
- "Counters": "Disabled"
- },
- {
- "Autostate": "Enabled",
- "Icmp redirect": "Enabled",
- "Broadcast address": "10.2.2.255",
- "Description": "N/A",
- "Mac Address": "7C:FE:90:F0:54:C1",
- "Internet Address": "10.2.2.3/24",
- "Admin state": "Enabled",
- "header": "Vlan 1002",
- "MTU": "1500 bytes",
- "DHCP client": "Disabled",
- "Operational state": "Down",
- "VRF": "default",
- "Arp timeout": "1500 seconds",
- "Counters": "Disabled"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_interfaces_status.cfg b/test/units/modules/network/onyx/fixtures/onyx_interfaces_status.cfg
deleted file mode 100644
index 7a3a974ad3..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_interfaces_status.cfg
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "Eth1/1": [
- {
- "Negotiation": "No-Negotiation",
- "Operational state": "Down",
- "Speed": "100 Gbps"
- }
- ],
- "Vlan 1002": [
- {
- "State": "Down",
- "Description": "N/A"
- }
- ]
-} \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_l2_interface_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_l2_interface_show.cfg
deleted file mode 100644
index dc3704e422..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_l2_interface_show.cfg
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "Eth1/11": {
- "Access vlan": "1",
- "Allowed vlans": "",
- "Mode": "access"
- },
- "Eth1/10": {
- "Access vlan": "1",
- "Allowed vlans": "10",
- "Mode": "hybrid"
- }
-} \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_l3_interface_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_l3_interface_show.cfg
deleted file mode 100644
index 6298953bf8..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_l3_interface_show.cfg
+++ /dev/null
@@ -1,89 +0,0 @@
-[
- {
- "Broadcast address": "172.3.1.255",
- "Fec": "auto",
- "Tx": {
- "error packets": "0",
- "packets": "0",
- "bytes": "0",
- "multicast packets": "0",
- "unicast packets": "0",
- "discard packets": "0",
- "hoq discard packets": "0",
- "broadcast packets": "0"
- },
- "Rx": {
- "error packets": "0",
- "packets": "0",
- "bytes": "0",
- "multicast packets": "0",
- "unicast packets": "0",
- "discard packets": "0",
- "broadcast packets": "0"
- },
- "header": "Eth1/5",
- "Arp timeout": "1500 seconds",
- "Actual speed": "40 Gbps",
- "60 seconds egress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec",
- "Last change in operational status": "Never",
- "Boot delay time": "0 sec",
- "Description": "N\\A",
- "DHCP client": "Disabled",
- "VRF": "default",
- "Mac address": "24:8A:07:F5:54:01",
- "60 seconds ingress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec",
- "Last clearing of \"show interface\" counters": "Never",
- "MTU": "1500 bytes(Maximum packet size 1522 bytes)",
- "Telemetry threshold": "Disabled\t TCs: N\\A",
- "Telemetry threshold level": "N\\A",
- "Flow-control": "receive off send off",
- "Forwarding mode": "inherited cut-through",
- "Admin state": "Enabled",
- "Telemetry sampling": "Disabled\t TCs: N\\A",
- "IP Address": "172.3.12.4 /24",
- "Operational state": "Down",
- "Width reduction mode": "Not supported"
- },
- {
- "Fec": "auto",
- "Mac address": "24:8a:07:f5:54:0c",
- "60 seconds ingress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec",
- "Last clearing of \"show interface\" counters": "Never",
- "Actual speed": "40 Gbps",
- "MTU": "1500 bytes(Maximum packet size 1522 bytes)",
- "header": "Eth1/6",
- "Telemetry threshold": "Disabled\t TCs: N\\A",
- "Telemetry threshold level": "N\\A",
- "Flow-control": "receive off send off",
- "Forwarding mode": "inherited cut-through",
- "60 seconds egress rate": "0 bits/sec, 0 bytes/sec, 0 packets/sec",
- "Last change in operational status": "Never",
- "Boot delay time": "0 sec",
- "Description": "N\\A",
- "Admin state": "Enabled",
- "Telemetry sampling": "Disabled\t TCs: N\\A",
- "Operational state": "Down",
- "Width reduction mode": "Not supported",
- "Tx": {
- "error packets": "0",
- "packets": "0",
- "bytes": "0",
- "multicast packets": "0",
- "unicast packets": "0",
- "discard packets": "0",
- "hoq discard packets": "0",
- "broadcast packets": "0"
- },
- "MAC learning mode": "Enabled",
- "Switchport mode": "access",
- "Rx": {
- "error packets": "0",
- "packets": "0",
- "bytes": "0",
- "multicast packets": "0",
- "unicast packets": "0",
- "discard packets": "0",
- "broadcast packets": "0"
- }
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_l3_vlan_interface_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_l3_vlan_interface_show.cfg
deleted file mode 100644
index 66a5509e21..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_l3_vlan_interface_show.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "Autostate": "Enabled",
- "Icmp redirect": "Enabled",
- "Broadcast address": "172.3.12.255",
- "Description": "N/A",
- "Mac Address": "7C:FE:90:E5:CA:01",
- "Internet Address": "172.3.12.4/24",
- "Admin state": "Enabled",
- "header": "Vlan 1002",
- "MTU": "1500 bytes",
- "DHCP client": "Disabled",
- "Operational state": "Down",
- "VRF": "default",
- "Arp timeout": "1500 seconds",
- "Counters": "Disabled"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_lldp_interface_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_lldp_interface_show.cfg
deleted file mode 100644
index d3a364b985..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_lldp_interface_show.cfg
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "Eth1/1": [
- {
- "Receive": "Enabled",
- "Transmit": "Enabled",
- "TLVs": "PD, SN, SD, SC, MA, PFC, AP, ETS-C, ETS-R"
- }
- ],
- "Eth1/2": [
- {
- "Receive": "Disabled",
- "Transmit": "Disabled",
- "TLVs": "PD, SN, SD, SC, MA, PFC, AP, ETS-C, ETS-R"
- }
- ]
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_lldp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_lldp_show.cfg
deleted file mode 100644
index 7bb1cb0222..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_lldp_show.cfg
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "LLDP": "enabled"
- },
- {
- "Supported capabilities": "B,R",
- "Chassis sub type": "Mac Address",
- "header": "Local global configuration",
- "System Name": "ufm-switch16",
- "Supported capabilities enabled": "B",
- "Chassis id": "7c:fe:90:e5:ca:00",
- "System Description": "Mellanox MSN2700,MLNX-OS,SWv3.6.5000-04"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_logging_config_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_logging_config_show.cfg
deleted file mode 100644
index 235205c2d0..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_logging_config_show.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-logging trap alert
-logging 10.10.10.10
-logging 10.10.10.10 filter exclude ".*ERR.*"
-logging 10.10.10.10 trap info
-logging 10.10.10.12
-logging 10.10.10.12 port 80
-logging 10.10.10.12 trap override class sx-sdk priority emerg
-logging files rotation criteria size-pct 10.000
-logging local info
-logging receive
diff --git a/test/units/modules/network/onyx/fixtures/onyx_logging_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_logging_show.cfg
deleted file mode 100644
index 09e21b104b..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_logging_show.cfg
+++ /dev/null
@@ -1,35 +0,0 @@
-[
- {
- "Log format": "standard",
- "Log rotation size threshold": "10.000% of partition (986.46 megabytes)",
- "Allow receiving of messages from remote hosts": "yes",
- "Override for class debug-module": "notice",
- "Local logging level": "info",
- "Number of archived log files to keep": "10",
- "Default remote logging level": "alert",
- "Subsecond timestamp field": "disabled",
- "Log rotation frequency": "weekly",
- "debug": [
- "logging debug-files rotation criteria frequency daily",
- "logging debug-files rotation criteria size 20",
- "logging debug-files rotation max-num 20"
- ]
- },
- {
- "Levels at which messages are logged": [
- {
- "CLI commands": "notice",
- "Audit messages": "notice"
- }
- ]
- },
- {
- "Remote syslog servers": [
- {
- "Lines": [
- "No remote syslog servers configured"
- ]
- }
- ]
- }
-] \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_magp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_magp_show.cfg
deleted file mode 100644
index 7cc90b7a40..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_magp_show.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "Interface vlan": "1243",
- "Admin state": "Enabled",
- "Virtual IP": "10.0.0.43",
- "header": "MAGP 102",
- "State": "Init",
- "Virtual MAC": "01:02:03:04:05:06"
- },
- {
- "Interface vlan": "1200",
- "Admin state": "Disabled",
- "Virtual IP": "0.0.0.0",
- "header": "MAGP 103",
- "State": "Init",
- "Virtual MAC": "00:00:00:00:00:00"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_mlag_ipl_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_mlag_ipl_show.cfg
deleted file mode 100644
index 6d1f3df577..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_mlag_ipl_show.cfg
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "Reload-delay": "30 sec",
- "Upgrade-timeout": "60 min",
- "System-mac": "00:00:5E:00:01:4E [Mismatched]",
- "Admin status": "Disabled",
- "MLAG Ports Status Summary": {
- "Active-partial": "0",
- "Inactive": "0",
- "Active-full": "0"
- },
- "MLAG IPLs Summary": {
- "1": [
- {
- "Local IP address": "10.2.2.3",
- "Peer IP address": "10.2.2.2",
- "Operational State": "Down",
- "Vlan Interface": "1002",
- "Group Port-Channel": "Po1"
- }
- ]
- },
- "Keepalive-interval": "1 sec",
- "MLAG Ports Configuration Summary": {
- "Disabled": "0",
- "Configured": "0",
- "Enabled": "0"
- },
- "Operational status": "Down"
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_mlag_port_channel_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_mlag_port_channel_show.cfg
deleted file mode 100644
index e883ecf38d..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_mlag_port_channel_show.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "MLAG Port-Channel Flags": "D-Down, U-Up, P-Partial UP, S - suspended by MLAG",
- "Port Flags": {
- "I": "Individual",
- "P": "Up in port-channel (members)",
- "S": "Suspend in port-channel (members)",
- "D": "Down"
- },
- "MLAG Port-Channel Summary": {
- "1 Mpo33(S)": [
- {
- "Local Ports (D/P/S/I)": "Eth1/8(D)",
- "Peer Ports (D/P/S/I)": "N/A",
- "Type": "LACP"
- }
- ]
- }
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_mlag_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_mlag_show.cfg
deleted file mode 100644
index 1996a6b31b..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_mlag_show.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "Reload-delay": "30 sec",
- "Upgrade-timeout": "60 min",
- "System-mac": "00:00:5E:00:01:4E",
- "Admin status": "Disabled",
- "MLAG Ports Status Summary": {
- "Active-partial": "0",
- "Inactive": "0",
- "Active-full": "0"
- },
- "Keepalive-interval": "1 sec",
- "MLAG Ports Configuration Summary": {
- "Disabled": "0",
- "Configured": "0",
- "Enabled": "0"
- },
- "Operational status": "Down"
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_mlag_vip_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_mlag_vip_show.cfg
deleted file mode 100644
index 19bee48f85..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_mlag_vip_show.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "r-neo-sw12": [
- {
- "IP Address": "10.209.26.55",
- "VIP-State": "standby"
- }
- ],
- "r-smg-sw14": [
- {
- "IP Address": "10.209.27.172",
- "VIP-State": "master"
- }
- ],
- "MLAG-VIP": {
- "MLAG VIP address": "10.209.25.107/24",
- "MLAG group name": "neo-mlag-vip-500",
- "Active nodes": "2"
- }
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_ntp_servers_peers_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_ntp_servers_peers_show.cfg
deleted file mode 100644
index 2f5d3c2f6b..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_ntp_servers_peers_show.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-[
- {
- "NTP enabled": "yes",
- "NTP Authentication enabled": "no"
- },
- {
- "NTP version": "4",
- "Enabled": "yes",
- "Key ID": "5",
- "header": "NTP peer 1.1.1.1"
- },
- {
- "NTP version": "4",
- "Enabled": "no",
- "Trusted": "yes",
- "Key ID": "99",
- "header": "NTP server 2.2.2.2"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_ntp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_ntp_show.cfg
deleted file mode 100644
index b0b4a8dbf5..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_ntp_show.cfg
+++ /dev/null
@@ -1,30 +0,0 @@
-[
-[
- {
- "NTP is administratively": "enabled",
- "NTP Authentication administratively": "disabled"
- },
- {
- "Lines": [
- "Clock is unsynchronized."
- ]
- },
- {
- "Active servers and peers": [
- {
- "Lines": [
- "No NTP associations present."
- ]
- }
- ]
- }
-] ,
-[
- {
- "header": "NTP Key 22",
- "Encryption Type": "sha1",
- "Trusted": "no"
- }
-]
-
-] \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_ospf_interfaces_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_ospf_interfaces_show.cfg
deleted file mode 100644
index 7566305862..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_ospf_interfaces_show.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-OSPF Process ID 2 VRF default
-Total number of interface: 1
-Interface Id Area Cost State Neighbors Status
-Loopback1 0.0.0.0 1 Enabled 0 Up
diff --git a/test/units/modules/network/onyx/fixtures/onyx_ospf_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_ospf_show.cfg
deleted file mode 100644
index 72e385684b..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_ospf_show.cfg
+++ /dev/null
@@ -1 +0,0 @@
-Routing Process 2 with ID 10.2.3.4 default
diff --git a/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_disabled.cfg b/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_disabled.cfg
deleted file mode 100644
index 0d51d4d5c7..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_disabled.cfg
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "Eth1/1": [
- {
- "PFC admin": "Auto",
- "PFC oper": "Disabled"
- }
- ],
- "Eth1/1/2": [
- {
- "PFC admin": "Auto",
- "PFC oper": "Disabled"
- }
- ],
- "Po1": [
- {
- "PFC admin": "Auto",
- "PFC oper": "Disabled"
- }
- ],
- "Mpo2": [
- {
- "PFC admin": "Auto",
- "PFC oper": "Disabled"
- }
- ]
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_enabled.cfg b/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_enabled.cfg
deleted file mode 100644
index 471edc8c65..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_pfc_interface_enabled.cfg
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "Eth1/1": [
- {
- "PFC admin": "on",
- "PFC oper": "Enabled"
- }
- ],
- "Eth1/1/2": [
- {
- "PFC admin": "on",
- "PFC oper": "Enabled"
- }
- ],
- "Po1": [
- {
- "PFC admin": "on",
- "PFC oper": "Enabled"
- }
- ],
- "Mpo2": [
- {
- "PFC admin": "on",
- "PFC oper": "Enabled"
- }
- ]
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_port_channel_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_port_channel_show.cfg
deleted file mode 100644
index 805853f46e..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_port_channel_show.cfg
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "Flags": {
- "I": "Individual",
- "P": "Up in port-channel (members)",
- "S": "Suspend in port-channel (members)",
- "U": "Up",
- "D": "Down"
- },
- "1 Po22(D)": [
- {
- "Type": "STATIC",
- "Member Ports": "Eth1/7(D)"
- }
- ]
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_protocols_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_protocols_show.cfg
deleted file mode 100644
index fd4549cdf2..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_protocols_show.cfg
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "pim": "disabled",
- "dhcp-relay": "disabled",
- "igmp-snooping": "disabled",
- "lacp": "disabled",
- "ptp": "disabled",
- "lldp": "disabled",
- "isolation-group": "disabled",
- "bfd": "disabled",
- "openflow": "disabled",
- "telemetry": "disabled",
- "vrrp": "disabled",
- "spanning-tree": "rst",
- "mlag": "disabled",
- "magp": "disabled",
- "nve": "disabled",
- "Ethernet": "enabled",
- "IP L3": "enabled",
- "ets": "enabled",
- "sflow": "disabled",
- "dhcp-relay(v6)": "disabled",
- "dot1x": "disabled",
- "bgp": "disabled",
- "priority-flow-control": "disabled",
- "ospf": "disabled",
- "bfd": "disabled"
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_aaa.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_aaa.cfg
deleted file mode 100644
index 40abbf2183..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_aaa.cfg
+++ /dev/null
@@ -1,16 +0,0 @@
-[
- {
- "Default User": "admin",
- "header": "AAA authorization",
- "Fallback on server-err": "yes",
- "Map Order": "remote-first"
- },
- {
- "header": "Authentication method(s)",
- "message": "local"
- },
- {
- "header": "Accounting method(s)",
- "message": "No accounting methods configured."
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_bfd.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_bfd.cfg
deleted file mode 100644
index 2e578eb164..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_bfd.cfg
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "Lines": [
- " protocol bfd",
- " ip bfd shutdown vrf default",
- " ip bfd vrf 3 interval transmit-rate 55 force",
- " ip bfd vrf default interval transmit-rate 55 force",
- " ip bfd vrf 3 interval min-rx 50 force",
- " ip bfd vrf default interval min-rx 50 force",
- " ip bfd vrf 3 interval multiplier 7 force",
- " ip bfd vrf default interval multiplier 7 force",
- " ip route vrf 3 1.1.1.0/24 3.2.2.2 bfd",
- " ip route vrf default 1.1.1.0/24 3.2.2.2 bfd"
- ]
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_dcb_ets_interface.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_dcb_ets_interface.cfg
deleted file mode 100644
index b6bbc30f28..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_dcb_ets_interface.cfg
+++ /dev/null
@@ -1,99 +0,0 @@
-[
- {
- "Eth1/1": [
- {
- "Multicast unaware mapping": "disabled",
- "Interface Bandwidth Shape [Mbps]": "N/A"
- },
- {
- "Flags": [
- {
- "S.Mode": "Scheduling Mode [Strict/WRR]",
- "Bw.Sh": "Bandwidth Shaper",
- "D": "-",
- "W": "Weight",
- "Bw.Gr": "Bandwidth Guaranteed"
- }
- ]
- },
- {
- "ETS per TC": [
- {
- "1": [
- {
- "S.Mode": "WRR",
- "BW Sh.(Mbps)": "N/A",
- "W(%)": "17",
- "BW Gr.(Mbps)": "0",
- "W": "13"
- }
- ],
- "0": [
- {
- "S.Mode": "WRR",
- "BW Sh.(Mbps)": "N/A",
- "W(%)": "17",
- "BW Gr.(Mbps)": "0",
- "W": "12"
- }
- ],
- "3": [
- {
- "S.Mode": "Strict",
- "BW Sh.(Mbps)": "N/A",
- "W(%)": "0",
- "BW Gr.(Mbps)": "0",
- "W": "0"
- }
- ],
- "2": [
- {
- "S.Mode": "Strict",
- "BW Sh.(Mbps)": "N/A",
- "W(%)": "0",
- "BW Gr.(Mbps)": "0",
- "W": "0"
- }
- ],
- "5": [
- {
- "S.Mode": "WRR",
- "BW Sh.(Mbps)": "N/A",
- "W(%)": "17",
- "BW Gr.(Mbps)": "0",
- "W": "13"
- }
- ],
- "4": [
- {
- "S.Mode": "WRR",
- "BW Sh.(Mbps)": "N/A",
- "W(%)": "16",
- "BW Gr.(Mbps)": "0",
- "W": "12"
- }
- ],
- "7": [
- {
- "S.Mode": "WRR",
- "BW Sh.(Mbps)": "N/A",
- "W(%)": "17",
- "BW Gr.(Mbps)": "0",
- "W": "13"
- }
- ],
- "6": [
- {
- "S.Mode": "WRR",
- "BW Sh.(Mbps)": "N/A",
- "W(%)": "16",
- "BW Gr.(Mbps)": "0",
- "W": "12"
- }
- ]
- }
- ]
- }
- ]
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_igmp_interfaces.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_igmp_interfaces.cfg
deleted file mode 100644
index 22641d8b48..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_igmp_interfaces.cfg
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "Eth1/31": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/11": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/10": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/13": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/12": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/15": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/14": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/17": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/16": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/19": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/18": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/5": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/4": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/7": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/6": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/1": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/3": [
- {
- "leave-mode": "Fast"
- }
- ],
- "Eth1/2": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/9": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/8": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/32": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/24": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/25": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/26": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/27": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/20": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/21": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/22": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/23": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/30": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/28": [
- {
- "leave-mode": "Normal"
- }
- ],
- "Eth1/29": [
- {
- "leave-mode": "Normal"
- }
- ]
-} \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_interface_congestion_control.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_interface_congestion_control.cfg
deleted file mode 100644
index e4c1207f31..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_interface_congestion_control.cfg
+++ /dev/null
@@ -1,46 +0,0 @@
-[
- {
- "Interface ethernet": "1/1",
- "ECN marked packets": "0"
- },
- {
- "header": "TC-0",
- "Mode": "none"
- },
- {
- "header": "TC-1",
- "Mode": "none"
- },
- {
- "Threshold mode": "relative",
- "RED dropped packets": "0",
- "header": "TC-2",
- "Mode": "RED",
- "Maximum threshold": "90%",
- "Minimum threshold": "9%"
- },
- {
- "Threshold mode": "absolute",
- "RED dropped packets": "0",
- "header": "TC-3",
- "Mode": "ECN",
- "Maximum threshold": "1550 KB",
- "Minimum threshold": "500 KB"
- },
- {
- "header": "TC-4",
- "Mode": "none"
- },
- {
- "header": "TC-5",
- "Mode": "none"
- },
- {
- "header": "TC-6",
- "Mode": "none"
- },
- {
- "header": "TC-7",
- "Mode": "none"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve.cfg
deleted file mode 100644
index a907d168d9..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "Mlag tunnel IP": "192.10.10.1",
- "Effective tunnel IP": "(not exist)",
- "NVE member interfaces": "(not configured)",
- "Admin state": "up",
- "Source interface": "loopback 1 (ip 0.0.0.0)",
- "header": "Interface NVE 1 status",
- "Controller mode": "BGP",
- "Global Neigh-Suppression": "Enable",
- "Counters": {
- "dropped NVE-encapsulated packets": "0",
- "decapsulated (Rx) NVE packets": "0",
- "encapsulated (Tx) NVE packets": "0",
- "NVE-encapsulated packets with errors": "0"
- }
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve_detail.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve_detail.cfg
deleted file mode 100644
index e904bcc349..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_interfaces_nve_detail.cfg
+++ /dev/null
@@ -1,16 +0,0 @@
-[
- {
- "10":[
- {
- "Neigh Suppression":"Enable",
- "VNI":"10010"
- }
- ],
- "6":[
- {
- "Neigh Suppression":"Enable",
- "VNI":"10060"
- }
- ]
- }
-] \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping.cfg
deleted file mode 100644
index 975b672300..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- {
- "mrouter static port list": "none",
- "mrouter dynamic port list": "none",
- "header": "Vlan 10 configuration parameters",
- "message 1": "IGMP snooping is disabled",
- "message 2": "IGMP version is V3",
- "message 3": "Snooping switch is acting as Non-Querier"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_groups.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_groups.cfg
deleted file mode 100644
index 3d84667b2e..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_groups.cfg
+++ /dev/null
@@ -1,30 +0,0 @@
-[
- {
- "Snooping group information for VLAN 10 and group 224.5.5.1": [
- {
- "Group flag": "St",
- "Filter Mode": "EXCLUDE",
- "V1/V2 Receiver Ports": "eth1/1, eth1/2",
- "Exclude sources": "None"
- },
- {
- "V3 Receiver Ports": [
- {
- "Exclude sources": [
- "None",
- "None"
- ],
- "Include sources": [
- "1.1.1.1, 1.1.1.2",
- "1.1.1.3"
- ],
- "Port Number": [
- "eth1/1",
- "eth1/2"
- ]
- }
- ]
- }
- ]
- }
-] \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_querier.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_querier.cfg
deleted file mode 100644
index b64c260d3b..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_ip_igmp_snooping_querier.cfg
+++ /dev/null
@@ -1,20 +0,0 @@
-[
- {
- "Snooping querier information for VLAN 10": [
- {
- "Lines": [
- "IGMP Querier Not Present"
- ]
- },
- {
- "Response interval": "100",
- "Elected querier IP address": "0.0.0.0",
- "Group membership interval": "1",
- "Robustness": "2",
- "Configured querier IP address": "-",
- "Query interval": "125",
- "Version": "3"
- }
- ]
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ntp_configured.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ntp_configured.cfg
deleted file mode 100644
index 4fa74b30eb..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_ntp_configured.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-[
- {
- "message 2": "No NTP servers configured.",
- "message 1": "No NTP peers configured.",
- "NTP enabled": "no",
- "NTP Authentication enabled": "no"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ptp_clock.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ptp_clock.cfg
deleted file mode 100644
index 93092b4e61..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_ptp_clock.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "Priority1": "128",
- "Number of PTP ports": "0",
- "Domain": "127",
- "Priority2": "128",
- "Local clock time": "04:50:24 Etc/UTC 2018/09/04"
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_ptp_interface.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_ptp_interface.cfg
deleted file mode 100644
index 389612e0ca..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_ptp_interface.cfg
+++ /dev/null
@@ -1,15 +0,0 @@
-[
- {
- "Transport protocol": "UDP IPv4",
- "PTP interface state": "NONE",
- "Forced Master": "no",
- "Port Clock identity": "N/A",
- "Announce interval(log mean)": "-2",
- "PTP Port number": "0",
- "header": "Interface name: Eth1/1",
- "Delay Mechanism": "End to End",
- "Sync interval(log mean)": "-3",
- "Announce receipt time out": "3",
- "Delay request interval(log mean)": "0"
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_snmp_hosts.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_snmp_hosts.cfg
deleted file mode 100644
index 4a1312cc26..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_snmp_hosts.cfg
+++ /dev/null
@@ -1,38 +0,0 @@
-[
- {
- "Default notification port": "162",
- "Default notification community": "public",
- "Notifications enabled": "yes"
- },
- {
- "Notification sinks": [
- {
- "1.1.1.1": [
- {
- "Enabled": "yes",
- "Port": "3",
- "Notification type": "SNMP v3 inform",
- "Remote engine ID": ""
- },
- {
- "Username": "sara",
- "Authentication password": "(set)",
- "Privacy password": "(set)",
- "Privacy type": "3des",
- "Authentication type": "md5"
- }
- ]
- },
- {
- "2.2.2.2": [
- {
- "Community": "public (default)",
- "Enabled": "yes",
- "Port": "5",
- "Notification type": "SNMP v2c trap"
- }
- ]
- }
- ]
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_show_snmp_users.cfg b/test/units/modules/network/onyx/fixtures/onyx_show_snmp_users.cfg
deleted file mode 100644
index 6c957ff0e5..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_show_snmp_users.cfg
+++ /dev/null
@@ -1,22 +0,0 @@
-[
- {
- "User name sara": [
- {
- "Privacy password": "(NOT SET; user disabled)",
- "Enabled overall": "yes",
- "Authentication password": "(NOT SET; user disabled)",
- "Authentication type": "sha",
- "Require privacy": "no",
- "Privacy type": "aes-128"
- },
- {
- "SET access": [
- {
- "Capability level": "admin",
- "Enabled": "yes"
- }
- ]
- }
- ]
- }
-]
diff --git a/test/units/modules/network/onyx/fixtures/onyx_snmp_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_snmp_show.cfg
deleted file mode 100644
index c3a1621538..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_snmp_show.cfg
+++ /dev/null
@@ -1,52 +0,0 @@
-[
-[
- {
- "SNMP port": "161",
- "System contact": "sara",
- "System location": "Jordan",
- "SNMP enabled": "yes"
- },
- {
- "Read-only communities": [
- {
- "Lines": [
- "community_1",
- "public"
- ]
- }
- ]
- },
- {
- "Read-write communities": [
- {
- "Lines": [
- "community_2"
- ]
- }
- ]
- },
- {
- "Interface listen enabled": "yes"
- },
- {
- "Listen Interfaces": [
- {
- "Lines": [
- "No Listen Interfaces."
- ]
- }
- ]
- }
-],
-{
- "Lines": [
- " snmp-server community community_1 ro",
- " snmp-server community community_2 rw",
- " snmp-server contact sara",
- " snmp-server location Jordan",
- " snmp-server notify port 1",
- " snmp-server notify community community_1"
- ]
-}
-
-] \ No newline at end of file
diff --git a/test/units/modules/network/onyx/fixtures/onyx_username_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_username_show.cfg
deleted file mode 100644
index d5de67bfc5..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_username_show.cfg
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "xmladmin": [
- {
- "CAPABILITY": "admin",
- "ACCOUNT STATUS": "Password set (SHA512)",
- "FULL NAME": "XML Admin User"
- }
- ],
- "monitor": [
- {
- "CAPABILITY": "monitor",
- "ACCOUNT STATUS": "Password set (SHA512)",
- "FULL NAME": "System Monitor"
- }
- ],
- "admin": [
- {
- "CAPABILITY": "admin",
- "ACCOUNT STATUS": "No password required for login",
- "FULL NAME": "System Administrator"
- }
- ],
- "anass": [
- {
- "CAPABILITY": "admin",
- "ACCOUNT STATUS": "Password set (SHA512)",
- "FULL NAME": ""
- }
- ],
- "root": [
- {
- "CAPABILITY": "admin",
- "ACCOUNT STATUS": "No password required for login",
- "FULL NAME": "Root User"
- }
- ],
- "anassh": [
- {
- "CAPABILITY": "admin",
- "ACCOUNT STATUS": "Account disabled",
- "FULL NAME": ""
- }
- ],
- "xmluser": [
- {
- "CAPABILITY": "monitor",
- "ACCOUNT STATUS": "Password set (SHA512)",
- "FULL NAME": "XML Monitor User"
- }
- ]
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_vlan_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_vlan_show.cfg
deleted file mode 100644
index d1ae46bf48..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_vlan_show.cfg
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "1": {
- "Name": "default",
- "Ports": "Eth1/1, Eth1/2, Eth1/3, Eth1/4, Eth1/5,\nEth1/6, Eth1/7, Eth1/8, Eth1/9, Eth1/10,\nEth1/11, Eth1/12, Eth1/13, Eth1/14, Eth1/15,\nEth1/16"
- },
- "10": {
- "Name": "test 10",
- "Ports": ""
- },
- "20": {
- "Name": "test 20",
- "Ports": ""
- }
-}
diff --git a/test/units/modules/network/onyx/fixtures/onyx_wjh_show.cfg b/test/units/modules/network/onyx/fixtures/onyx_wjh_show.cfg
deleted file mode 100644
index d50f497607..0000000000
--- a/test/units/modules/network/onyx/fixtures/onyx_wjh_show.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-no what-just-happened auto-export forwarding enable
-no what-just-happened forwarding enable
diff --git a/test/units/modules/network/onyx/fixtures/show_qos_interface_ethernet.cfg b/test/units/modules/network/onyx/fixtures/show_qos_interface_ethernet.cfg
deleted file mode 100644
index cf2bba8f20..0000000000
--- a/test/units/modules/network/onyx/fixtures/show_qos_interface_ethernet.cfg
+++ /dev/null
@@ -1,134 +0,0 @@
-[
- {
- "Eth1/1": [
- {
- "PCP,DEI rewrite": "enabled",
- "Default switch-priority": "0",
- "IP PCP;DEI rewrite": "enable",
- "Default DEI": "0",
- "Default PCP": "0",
- "Trust mode": "both",
- "DSCP rewrite": "disabled"
- },
- {
- "PCP(DEI); DSCP to switch-priority mapping": [
- {
- "2(0) 2(1)": [
- {
- "switch-priority": "2",
- "DSCP": "16 17 18 19 20 21 22 23"
- }
- ],
- "3(0) 3(1)": [
- {
- "switch-priority": "3",
- "DSCP": "24 25 26 27 28 29 30 31"
- }
- ],
- "5(0) 5(1)": [
- {
- "switch-priority": "5",
- "DSCP": "40 41 42 43 44 45 46 47"
- }
- ],
- "0(0) 0(1)": [
- {
- "switch-priority": "0",
- "DSCP": "0 1 2 3 4 5 6 7"
- }
- ],
- "7(0) 7(1)": [
- {
- "switch-priority": "7",
- "DSCP": "56 57 58 59 60 61 62 63"
- }
- ],
- "4(0) 4(1)": [
- {
- "switch-priority": "4",
- "DSCP": "32 33 34 35 36 37 38 39"
- }
- ],
- "6(0) 6(1)": [
- {
- "switch-priority": "6",
- "DSCP": "48 49 50 51 52 53 54 55"
- }
- ],
- "1(0) 1(1)": [
- {
- "switch-priority": "1",
- "DSCP": "8 9 10 11 12 13 14 15"
- }
- ]
- }
- ]
- },
- {
- "PCP(DEI); DSCP rewrite mapping (switch-priority to PCP(DEI); DSCP; traffic-class)": [
- {
- "Egress Interface": "Eth1/1"
- },
- {
- "1": [
- {
- "PCP(DEI)": "1(0)",
- "TC": "1",
- "DSCP": "8"
- }
- ],
- "0": [
- {
- "PCP(DEI)": "0(0)",
- "TC": "0",
- "DSCP": "0"
- }
- ],
- "3": [
- {
- "PCP(DEI)": "3(0)",
- "TC": "3",
- "DSCP": "24"
- }
- ],
- "2": [
- {
- "PCP(DEI)": "2(0)",
- "TC": "2",
- "DSCP": "16"
- }
- ],
- "5": [
- {
- "PCP(DEI)": "5(0)",
- "TC": "5",
- "DSCP": "40"
- }
- ],
- "4": [
- {
- "PCP(DEI)": "4(0)",
- "TC": "4",
- "DSCP": "32"
- }
- ],
- "7": [
- {
- "PCP(DEI)": "7(0)",
- "TC": "7",
- "DSCP": "56"
- }
- ],
- "6": [
- {
- "PCP(DEI)": "6(0)",
- "TC": "6",
- "DSCP": "48"
- }
- ]
- }
- ]
- }
- ]
- }
-]
diff --git a/test/units/modules/network/onyx/onyx_module.py b/test/units/modules/network/onyx/onyx_module.py
deleted file mode 100644
index cee5e0c683..0000000000
--- a/test/units/modules/network/onyx/onyx_module.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-import os
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-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 TestOnyxModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, is_updates=False, sort=True, transport='cli'):
-
- self.load_fixtures(commands, transport=transport)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if is_updates:
- commands_res = result.get('updates')
- else:
- commands_res = result.get('commands')
- if sort:
- self.assertEqual(sorted(commands), sorted(commands_res), commands_res)
- else:
- self.assertEqual(commands, commands_res, commands_res)
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None, transport='cli'):
- pass
diff --git a/test/units/modules/network/onyx/test_onyx_aaa.py b/test/units/modules/network/onyx/test_onyx_aaa.py
deleted file mode 100644
index fa27662083..0000000000
--- a/test/units/modules/network/onyx/test_onyx_aaa.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_aaa
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxAAAModule(TestOnyxModule):
-
- module = onyx_aaa
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxAAAModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_aaa.OnyxAAAModule, "_show_aaa_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxAAAModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_show_aaa.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_aaa_accounting_no_change(self):
- set_module_args(dict(tacacs_accounting_enabled=False))
- self.execute_module(changed=False)
-
- def test_aaa_accounting_with_change(self):
- set_module_args(dict(tacacs_accounting_enabled=True))
- commands = ['aaa accounting changes default stop-only tacacs+']
- self.execute_module(changed=True, commands=commands)
-
- def test_aaa_auth_default_user_no_change(self):
- set_module_args(dict(auth_default_user='admin'))
- self.execute_module(changed=False)
-
- def test_aaa_auth_default_user_with_change(self):
- set_module_args(dict(auth_default_user='monitor'))
- commands = ['aaa authorization map default-user monitor']
- self.execute_module(changed=True, commands=commands)
-
- def test_aaa_auth_order_no_change(self):
- set_module_args(dict(auth_order='remote-first'))
- self.execute_module(changed=False)
-
- def test_aaa_auth_order_with_change(self):
- set_module_args(dict(auth_order='local-only'))
- commands = ['aaa authorization map order local-only']
- self.execute_module(changed=True, commands=commands)
-
- def test_aaa_fallback_no_change(self):
- set_module_args(dict(auth_fallback_enabled=True))
- self.execute_module(changed=False)
-
- def test_aaa_fallback_with_change(self):
- set_module_args(dict(auth_fallback_enabled=False))
- commands = ['no aaa authorization map fallback server-err']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_bfd.py b/test/units/modules/network/onyx/test_onyx_bfd.py
deleted file mode 100644
index ca53dc6cca..0000000000
--- a/test/units/modules/network/onyx/test_onyx_bfd.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_bfd
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxBFDModule(TestOnyxModule):
-
- module = onyx_bfd
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxBFDModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_bfd.OnyxBFDModule, "_show_bfd_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxBFDModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_show_bfd.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_bfd_shutdown_no_change(self):
- set_module_args(dict(shutdown=True))
- self.execute_module(changed=False)
-
- def test_bfd_shutdown_with_change(self):
- set_module_args(dict(shutdown=False))
- commands = ['no ip bfd shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_vrf_bfd_shutdown_no_change(self):
- set_module_args(dict(shutdown=False,
- vrf='3'))
- self.execute_module(changed=False)
-
- def test_vrf_bfd_shutdown_with_change(self):
- set_module_args(dict(shutdown=True,
- vrf='3'))
- commands = ['ip bfd shutdown vrf 3']
- self.execute_module(changed=True, commands=commands)
-
- def test_bfd_interval_no_change(self):
- set_module_args(dict(interval_min_rx=50,
- interval_multiplier=7,
- interval_transmit_rate=55))
- self.execute_module(changed=False)
-
- def test_bfd_interval_with_change(self):
- set_module_args(dict(interval_min_rx=55,
- interval_multiplier=7,
- interval_transmit_rate=100))
- commands = ['ip bfd interval min-rx 55 multiplier 7 transmit-rate 100 force']
- self.execute_module(changed=True, commands=commands)
-
- def test_vrf_bfd_interval_no_change(self):
- set_module_args(dict(interval_min_rx=50,
- interval_multiplier=7,
- interval_transmit_rate=55,
- vrf='3'))
- self.execute_module(changed=False)
-
- def test_vrf_bfd_interval_with_change(self):
- set_module_args(dict(interval_min_rx=55,
- interval_multiplier=7,
- interval_transmit_rate=100,
- vrf='3'))
- commands = ['ip bfd vrf 3 interval min-rx 55 multiplier 7 transmit-rate 100 force']
- self.execute_module(changed=True, commands=commands)
-
- def test_bfd_iproute_no_change(self):
- set_module_args(dict(iproute_network_prefix='1.1.1.0',
- iproute_mask_length=24,
- iproute_next_hop='3.2.2.2'))
- self.execute_module(changed=False)
-
- def test_bfd_iproute_with_change(self):
- set_module_args(dict(iproute_network_prefix='1.1.1.0',
- iproute_mask_length=24,
- iproute_next_hop='3.2.2.3'))
- commands = ['ip route 1.1.1.0 /24 3.2.2.3 bfd']
- self.execute_module(changed=True, commands=commands)
-
- def test_vrf_bfd_iproute_no_change(self):
- set_module_args(dict(iproute_network_prefix='1.1.1.0',
- iproute_mask_length=24,
- iproute_next_hop='3.2.2.2',
- vrf='3'))
- self.execute_module(changed=False)
-
- def test_vrf_bfd_iproute_with_change(self):
- set_module_args(dict(iproute_network_prefix='1.1.1.0',
- iproute_mask_length=24,
- iproute_next_hop='3.2.2.3',
- vrf='3'))
- commands = ['ip route vrf 3 1.1.1.0 /24 3.2.2.3 bfd']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_bgp.py b/test/units/modules/network/onyx/test_onyx_bgp.py
deleted file mode 100644
index 05d10f3353..0000000000
--- a/test/units/modules/network/onyx/test_onyx_bgp.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_bgp
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxBgpModule(TestOnyxModule):
-
- module = onyx_bgp
-
- def setUp(self):
- super(TestOnyxBgpModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_bgp.OnyxBgpModule, "_get_bgp_summary")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxBgpModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_bgp_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_bgp_no_change(self):
- neighbor = dict(remote_as=322, neighbor='10.2.3.5', multihop=255)
- set_module_args(dict(as_number=172, router_id='1.2.3.4',
- neighbors=[neighbor],
- networks=['172.16.1.0/24'],
- evpn=True, fast_external_fallover=True,
- max_paths=31, ecmp_bestpath=True,
- ))
- self.execute_module(changed=False)
-
- def test_bgp_remove(self):
- set_module_args(dict(as_number=172, state='absent'))
- commands = ['no router bgp 172']
- self.execute_module(changed=True, commands=commands)
-
- def test_bgp_with_vrf_changed(self):
- set_module_args(dict(as_number=173, vrf='new_vrf'))
- commands = ['no router bgp 172 vrf default', 'router bgp 173 vrf new_vrf', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_bgp_change(self):
- neighbor = dict(remote_as=173, neighbor='10.2.3.4')
- set_module_args(dict(as_number=174, router_id='1.2.3.4',
- neighbors=[neighbor],
- evpn=False, fast_external_fallover=False,
- max_paths=32, ecmp_bestpath=False,
- ))
- commands = ['no router bgp 172 vrf default', 'router bgp 174 vrf default', 'exit',
- 'router bgp 174 vrf default router-id 1.2.3.4 force',
- 'router bgp 174 vrf default neighbor 10.2.3.4 remote-as 173',
- 'no router bgp 174 vrf default neighbor evpn peer-group',
- 'no router bgp 174 vrf default address-family l2vpn-evpn auto-create',
- 'router bgp 174 vrf default no bgp fast-external-fallover',
- 'router bgp 174 vrf default maximum-paths 32',
- 'router bgp 174 vrf default no bestpath as-path multipath-relax force']
- self.execute_module(changed=True, commands=commands)
-
- def test_bgp_add_neighbor(self):
- neighbors = [dict(remote_as=173, neighbor='10.2.3.4'),
- dict(remote_as=175, neighbor='10.2.3.5'),
- dict(remote_as=175, neighbor='10.2.3.6', multihop=250)]
- set_module_args(dict(as_number=172, router_id='1.2.3.4',
- neighbors=neighbors,
- networks=['172.16.1.0/24'],
- evpn=True))
- commands = ['router bgp 172 vrf default neighbor 10.2.3.5 remote-as 175',
- 'router bgp 172 vrf default neighbor 10.2.3.6 remote-as 175',
- 'router bgp 172 vrf default neighbor 10.2.3.6 ebgp-multihop 250',
- 'router bgp 172 vrf default neighbor 10.2.3.6 peer-group evpn',
- 'router bgp 172 vrf default neighbor 10.2.3.4 peer-group evpn']
- self.execute_module(changed=True, commands=commands)
-
- def test_bgp_del_neighbor(self):
- set_module_args(dict(as_number=172,
- networks=['172.16.1.0/24'],
- purge=True))
- commands = ['router bgp 172 vrf default no neighbor 10.2.3.4 remote-as 173',
- 'router bgp 172 vrf default no neighbor 10.2.3.5 remote-as 322']
- self.execute_module(changed=True, commands=commands)
-
- def test_bgp_add_network(self):
- neighbors = [dict(remote_as=173, neighbor='10.2.3.4')]
- set_module_args(dict(as_number=172, router_id='1.2.3.4',
- neighbors=neighbors,
- networks=['172.16.1.0/24', '172.16.2.0/24']))
- commands = ['router bgp 172 vrf default network 172.16.2.0 /24']
- self.execute_module(changed=True, commands=commands)
-
- def test_bgp_del_network(self):
- neighbors = [dict(remote_as=173, neighbor='10.2.3.4')]
- set_module_args(dict(as_number=172, neighbors=neighbors))
- commands = ['router bgp 172 no network 172.16.1.0 /24']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_buffer_pool.py b/test/units/modules/network/onyx/test_onyx_buffer_pool.py
deleted file mode 100644
index 8d55c625c1..0000000000
--- a/test/units/modules/network/onyx/test_onyx_buffer_pool.py
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_buffer_pool
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxBufferPoolModule(TestOnyxModule):
-
- module = onyx_buffer_pool
- buffer_pool_configured = False
-
- def setUp(self):
- super(TestOnyxBufferPoolModule, self).setUp()
- self.mock_get_buffer_pool_config = patch.object(
- onyx_buffer_pool.OnyxBufferPoolModule, "_show_traffic_pool")
- self.get_buffer_pool_config = self.mock_get_buffer_pool_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxBufferPoolModule, self).tearDown()
- self.mock_get_buffer_pool_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- buffer_pool_config_file = 'onyx_buffer_pool.cfg'
- self.get_buffer_pool_config.return_value = None
-
- if self.buffer_pool_configured is True:
- buffer_pool_data = load_fixture(buffer_pool_config_file)
- self.get_buffer_pool_config.return_value = buffer_pool_data
-
- self.load_config.return_value = None
-
- def test_buffer_pool_no_change(self):
- self.buffer_pool_configured = True
- set_module_args(dict(name="roce", pool_type="lossless",
- memory_percent=50.0, switch_priority=3))
- self.execute_module(changed=False)
-
- def test_buffer_pool_with_change(self):
- set_module_args(dict(name="roce", pool_type="lossless",
- memory_percent=50.0, switch_priority=3))
- commands = ["traffic pool roce type lossless",
- "traffic pool roce memory percent 50.0",
- "traffic pool roce map switch-priority 3"
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_memory_percent_with_change(self):
- self.buffer_pool_configured = True
- set_module_args(dict(name="roce", pool_type="lossless",
- memory_percent=60.0, switch_priority=3))
- commands = ["traffic pool roce memory percent 60.0"]
- self.execute_module(changed=True, commands=commands)
-
- def test_switch_priority_with_change(self):
- self.buffer_pool_configured = True
- set_module_args(dict(name="roce", pool_type="lossless",
- memory_percent=50.0, switch_priority=5))
- commands = ["traffic pool roce map switch-priority 5"]
- self.execute_module(changed=True, commands=commands)
-
- def test_pool_type_with_change(self):
- self.buffer_pool_configured = True
- set_module_args(dict(name="roce", memory_percent=50.0, switch_priority=3))
- commands = ["traffic pool roce type lossy"]
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_command.py b/test/units/modules/network/onyx/test_onyx_command.py
deleted file mode 100644
index f7825cc528..0000000000
--- a/test/units/modules/network/onyx/test_onyx_command.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_command
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxCommandModule(TestOnyxModule):
-
- module = onyx_command
-
- def setUp(self):
- super(TestOnyxCommandModule, self).setUp()
- self.mock_run_commands = patch(
- 'ansible.modules.network.onyx.onyx_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestOnyxCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item['command'])
- command = obj['command']
- except ValueError:
- command = item['command']
- filename = str(command).replace(' ', '_')
- filename = 'onyx_command_%s.txt' % filename
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_onyx_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('Product name'))
-
- def test_onyx_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('Product name'))
-
- def test_onyx_command_wait_for(self):
- wait_for = 'result[0] contains "MLNX"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_onyx_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_onyx_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(
- dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_onyx_command_match_any(self):
- wait_for = ['result[0] contains "MLNX"',
- 'result[0] contains "test string"']
- set_module_args(dict(
- commands=['show version'],
- wait_for=wait_for,
- match='any'))
- self.execute_module()
-
- def test_onyx_command_match_all(self):
- wait_for = ['result[0] contains "MLNX"',
- 'result[0] contains "Version summary"']
- set_module_args(
- dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_onyx_command_match_all_failure(self):
- wait_for = ['result[0] contains "MLNX"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show version']
- set_module_args(
- dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/onyx/test_onyx_config.py b/test/units/modules/network/onyx/test_onyx_config.py
deleted file mode 100644
index f645034e5c..0000000000
--- a/test/units/modules/network/onyx/test_onyx_config.py
+++ /dev/null
@@ -1,113 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_config
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxConfigModule(TestOnyxModule):
-
- module = onyx_config
-
- def setUp(self):
- super(TestOnyxConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.onyx.onyx_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.onyx.onyx_config.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.onyx.onyx_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestOnyxConfigModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_onyx_config_unchanged(self):
- src = load_fixture('onyx_config_config.cfg')
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_onyx_config_src(self):
- src = load_fixture('onyx_config_src.cfg')
- set_module_args(dict(src=src))
- commands = [
- 'interface mlag-port-channel 2']
- self.execute_module(changed=True, commands=commands, is_updates=True)
-
- def test_onyx_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_onyx_config_save(self):
- set_module_args(dict(lines=['hostname foo'], save='yes'))
- self.execute_module(changed=True)
- self.assertEqual(self.run_commands.call_count, 0)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.load_config.call_count, 1)
- args = self.load_config.call_args[0][1]
- self.assertIn('configuration write', args)
-
- def test_onyx_config_lines_wo_parents(self):
- set_module_args(dict(lines=['hostname foo']))
- commands = ['hostname foo']
- self.execute_module(changed=True, commands=commands, is_updates=True)
-
- def test_onyx_config_before(self):
- set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2']))
- commands = ['test1', 'test2', 'hostname foo']
- self.execute_module(changed=True, commands=commands, sort=False, is_updates=True)
-
- def test_onyx_config_after(self):
- set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2']))
- commands = ['hostname foo', 'test1', 'test2']
- self.execute_module(changed=True, commands=commands, sort=False, is_updates=True)
-
- def test_onyx_config_before_after(self):
- set_module_args(dict(lines=['hostname foo'],
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- commands = ['test1', 'test2', 'hostname foo', 'test3', 'test4']
- self.execute_module(changed=True, commands=commands, sort=False, is_updates=True)
-
- def test_onyx_config_config(self):
- config = 'hostname localhost'
- set_module_args(dict(lines=['hostname router'], config=config))
- commands = ['hostname router']
- self.execute_module(changed=True, commands=commands, is_updates=True)
-
- def test_onyx_config_match_none(self):
- lines = ['hostname router']
- set_module_args(dict(lines=lines, match='none'))
- self.execute_module(changed=True, commands=lines, is_updates=True)
diff --git a/test/units/modules/network/onyx/test_onyx_facts.py b/test/units/modules/network/onyx/test_onyx_facts.py
deleted file mode 100644
index 4195e290e0..0000000000
--- a/test/units/modules/network/onyx/test_onyx_facts.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-from ansible.modules.network.onyx import onyx_facts
-
-
-class TestOnyxFacts(TestOnyxModule):
-
- module = onyx_facts
-
- def setUp(self):
- super(TestOnyxFacts, self).setUp()
-
- self.mock_run_command = patch.object(
- onyx_facts.FactsBase, "_show_cmd")
- self.run_command = self.mock_run_command.start()
-
- def tearDown(self):
- super(TestOnyxFacts, self).tearDown()
-
- self.mock_run_command.stop()
-
- def load_fixtures(self, commands=None, transport=None):
-
- def load_from_file(*args, **kwargs):
- command = args[0]
- filename = "onyx_facts_%s.cfg" % command
- filename = filename.replace(' ', '_')
- filename = filename.replace('/', '7')
- output = load_fixture(filename)
- return output
-
- self.run_command.side_effect = load_from_file
-
- def test_onyx_facts_version(self):
- set_module_args(dict(gather_subset='version'))
- result = self.execute_module()
- facts = result.get('ansible_facts')
- self.assertEqual(len(facts), 2)
- version = facts['ansible_net_version']
- self.assertEqual(version['Product name'], 'MLNX-OS')
-
- def test_onyx_facts_modules(self):
- set_module_args(dict(gather_subset='modules'))
- result = self.execute_module()
- facts = result.get('ansible_facts')
- self.assertEqual(len(facts), 2)
- modules = facts['ansible_net_modules']
- self.assertIn("MGMT", modules)
-
- def test_onyx_facts_interfaces(self):
- set_module_args(dict(gather_subset='interfaces'))
- result = self.execute_module()
- facts = result.get('ansible_facts')
- self.assertEqual(len(facts), 2)
- interfaces = facts['ansible_net_interfaces']
- self.assertEqual(len(interfaces), 2)
-
- def test_onyx_facts_all(self):
- set_module_args(dict(gather_subset='all'))
- result = self.execute_module()
- facts = result.get('ansible_facts')
- self.assertEqual(len(facts), 4)
diff --git a/test/units/modules/network/onyx/test_onyx_igmp.py b/test/units/modules/network/onyx/test_onyx_igmp.py
deleted file mode 100644
index 8172eadb18..0000000000
--- a/test/units/modules/network/onyx/test_onyx_igmp.py
+++ /dev/null
@@ -1,127 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_igmp
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxIgmpModule(TestOnyxModule):
-
- module = onyx_igmp
- enabled = False
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxIgmpModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_igmp.OnyxIgmpModule, "_show_igmp")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxIgmpModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_igmp_show.cfg'
- data = load_fixture(config_file)
- if self.enabled:
- data[0]['IGMP snooping globally'] = 'enabled'
- self.get_config.return_value = data
- self.load_config.return_value = None
-
- def test_igmp_no_change(self):
- set_module_args(dict(state='disabled'))
- self.execute_module(changed=False)
-
- def test_igmp_enable(self):
- set_module_args(dict(state='enabled'))
- commands = ['ip igmp snooping']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_last_member_query_interval(self):
- set_module_args(dict(state='enabled',
- last_member_query_interval=10))
- commands = ['ip igmp snooping',
- 'ip igmp snooping last-member-query-interval 10']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_mrouter_timeout(self):
- set_module_args(dict(state='enabled',
- mrouter_timeout=100))
- commands = ['ip igmp snooping',
- 'ip igmp snooping mrouter-timeout 100']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_port_purge_timeout(self):
- set_module_args(dict(state='enabled',
- port_purge_timeout=150))
- commands = ['ip igmp snooping',
- 'ip igmp snooping port-purge-timeout 150']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_report_suppression_interval(self):
- set_module_args(dict(state='enabled',
- report_suppression_interval=10))
- commands = ['ip igmp snooping',
- 'ip igmp snooping report-suppression-interval 10']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_proxy_reporting_disabled(self):
- set_module_args(dict(state='enabled',
- proxy_reporting='disabled'))
- commands = ['ip igmp snooping']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_proxy_reporting_enabled(self):
- set_module_args(dict(state='enabled',
- proxy_reporting='enabled'))
- commands = ['ip igmp snooping',
- 'ip igmp snooping proxy reporting']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_unregistered_multicast_flood(self):
- set_module_args(dict(state='enabled',
- unregistered_multicast='flood'))
- commands = ['ip igmp snooping']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_unregistered_multicast_forward(self):
- set_module_args(
- dict(state='enabled',
- unregistered_multicast='forward-to-mrouter-ports'))
- commands = [
- 'ip igmp snooping',
- 'ip igmp snooping unregistered multicast forward-to-mrouter-ports'
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_version_v2(self):
- set_module_args(dict(state='enabled',
- default_version='V2'))
- commands = ['ip igmp snooping',
- 'ip igmp snooping version 2']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_version_v3(self):
- set_module_args(dict(state='enabled',
- default_version='V3'))
- commands = ['ip igmp snooping']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_disable(self):
- self.enabled = True
- set_module_args(dict(state='disabled'))
- commands = ['no ip igmp snooping']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_igmp_interface.py b/test/units/modules/network/onyx/test_onyx_igmp_interface.py
deleted file mode 100644
index 35f84045b5..0000000000
--- a/test/units/modules/network/onyx/test_onyx_igmp_interface.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_igmp_interface
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxIgmpInterfaceModule(TestOnyxModule):
-
- module = onyx_igmp_interface
-
- def setUp(self):
- super(TestOnyxIgmpInterfaceModule, self).setUp()
-
- self.mock_get_config = patch.object(onyx_igmp_interface.OnyxIgmpInterfaceModule, "_show_igmp_interfaces")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxIgmpInterfaceModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_show_igmp_interfaces.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_igmp_interface_enabled_no_change(self):
- set_module_args(dict(state='enabled', name='Eth1/3'))
- self.execute_module(changed=False)
-
- def test_igmp_interface_enabled_change(self):
- set_module_args(dict(state='enabled', name='Eth1/1'))
- commands = ['interface ethernet 1/1 ip igmp snooping fast-leave']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_interface_disabled_no_change(self):
- set_module_args(dict(state='disabled', name='Eth1/1'))
- self.execute_module(changed=False)
-
- def test_igmp_interface_disabled_change(self):
- set_module_args(dict(state='disabled', name='Eth1/3'))
- commands = ['interface ethernet 1/3 no ip igmp snooping fast-leave']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_igmp_vlan.py b/test/units/modules/network/onyx/test_onyx_igmp_vlan.py
deleted file mode 100644
index 1943090eaa..0000000000
--- a/test/units/modules/network/onyx/test_onyx_igmp_vlan.py
+++ /dev/null
@@ -1,190 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_igmp_vlan
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxIgmpVlan(TestOnyxModule):
-
- module = onyx_igmp_vlan
- enabled = False
- mrouter_state = False
- querier_state = False
- static_groups_enabled = False
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxIgmpVlan, self).setUp()
- self.mock_get_igmp_config = patch.object(
- onyx_igmp_vlan.OnyxIgmpVlanModule, "_show_igmp_vlan")
- self.get_igmp_config = self.mock_get_igmp_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_igmp_guerier_config = patch.object(
- onyx_igmp_vlan.OnyxIgmpVlanModule, "_show_igmp_querier_config")
- self.get_igmp_guerier_config = self.mock_get_igmp_guerier_config.start()
-
- self.mock_get_igmp_static_groups_config = patch.object(
- onyx_igmp_vlan.OnyxIgmpVlanModule, "_show_igmp_snooping_groups_config")
- self.get_igmp_static_groups_config = self.mock_get_igmp_static_groups_config.start()
-
- def tearDown(self):
- super(TestOnyxIgmpVlan, self).tearDown()
- self.mock_get_igmp_config.stop()
- self.mock_load_config.stop()
- self.mock_get_igmp_guerier_config.stop()
- self.mock_get_igmp_static_groups_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- igmp_vlan_config_file = 'onyx_show_ip_igmp_snooping.cfg'
- igmp_querier_config_file = 'onyx_show_ip_igmp_snooping_querier.cfg'
- igmp_static_groups_file = 'onyx_show_ip_igmp_snooping_groups.cfg'
- igmp_vlan_data = load_fixture(igmp_vlan_config_file)
- igmp_querier_data = load_fixture(igmp_querier_config_file)
- igmp_static_groups_data = None
- if self.enabled:
- igmp_vlan_data[0]['message 1'] = 'IGMP snooping is enabled'
-
- if self.querier_state:
- igmp_vlan_data[0]['message 3'] = 'Snooping switch is acting as Querier'
-
- if self.mrouter_state:
- igmp_vlan_data[0]['mrouter static port list'] = 'Eth1/1'
-
- if self.static_groups_enabled:
- igmp_static_groups_data = load_fixture(igmp_static_groups_file)
-
- self.get_igmp_config.return_value = igmp_vlan_data
- self.get_igmp_guerier_config = igmp_querier_data
- self.get_igmp_static_groups_config = igmp_static_groups_data
- self.load_config.return_value = None
-
- def test_igmp_disabled_no_change(self):
- set_module_args(dict(state='disabled', vlan_id=10))
- self.execute_module(changed=False)
-
- def test_igmp_disabled_with_change(self):
- self.enabled = True
- set_module_args(dict(state='disabled', vlan_id=10))
- commands = ['vlan 10 no ip igmp snooping']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_enabled_no_change(self):
- self.enabled = True
- set_module_args(dict(state='enabled', vlan_id=10))
- self.execute_module(changed=False)
-
- def test_igmp_enabled_with_change(self):
- set_module_args(dict(state='enabled', vlan_id=10))
- commands = ['vlan 10 ip igmp snooping']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_mrouter_disabled_no_change(self):
- self.enabled = True
- set_module_args(dict(vlan_id=10, mrouter=dict(state='disabled', name='Eth1/1')))
- self.execute_module(changed=False)
-
- def test_igmp_mrouter_disabled_with_change(self):
- self.enabled = True
- self.mrouter_state = True
- set_module_args(dict(vlan_id=10, mrouter=dict(state='disabled', name='Eth1/1')))
- commands = ['vlan 10 no ip igmp snooping mrouter interface ethernet 1/1']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_mrouter_enabled_no_change(self):
- self.enabled = True
- self.mrouter_state = True
- set_module_args(dict(vlan_id=10, mrouter=dict(state='enabled', name='Eth1/1')))
- self.execute_module(changed=False)
-
- def test_igmp_mrouter_enabled_with_change(self):
- self.enabled = True
- set_module_args(dict(vlan_id=10, mrouter=dict(state='enabled', name='Eth1/1')))
- commands = ['vlan 10 ip igmp snooping mrouter interface ethernet 1/1']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_mrouter_enabled_withinterface_change(self):
- self.enabled = True
- self.mrouter_state = True
- set_module_args(dict(vlan_id=10, mrouter=dict(state='enabled', name='Eth1/2')))
- commands = ['vlan 10 ip igmp snooping mrouter interface ethernet 1/2']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_querier_disabled_no_change(self):
- self.enabled = True
- set_module_args(dict(vlan_id=10, querier=dict(state='disabled')))
- self.execute_module(changed=False)
-
- def test_igmp_querier_disabled_with_change(self):
- self.enabled = True
- self.querier_state = True
- set_module_args(dict(vlan_id=10, querier=dict(state='disabled')))
- commands = ['vlan 10 no ip igmp snooping querier']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_querier_enabled_no_change(self):
- self.enabled = True
- self.querier_state = True
- set_module_args(dict(vlan_id=10, querier=dict(state='enabled')))
- self.execute_module(changed=False)
-
- def test_igmp_querier_enabled_with_change(self):
- self.enabled = True
- set_module_args(dict(vlan_id=10, querier=dict(state='enabled')))
- commands = ['vlan 10 ip igmp snooping querier']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_querier_attr_no_change(self):
- self.enabled = True
- self.querier_state = True
- set_module_args(dict(vlan_id=10, querier=dict(state='enabled', interval=125, address='-')))
- self.execute_module(changed=True)
-
- def test_igmp_querier_attr_with_change(self):
- self.enabled = True
- self.querier_state = True
- set_module_args(dict(vlan_id=10, querier=dict(state='enabled', interval=127, address='10.10.10.1')))
- commands = ['vlan 10 ip igmp snooping querier query-interval 127',
- 'vlan 10 ip igmp snooping querier address 10.10.10.1']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_version_no_change(self):
- self.enabled = True
- set_module_args(dict(vlan_id=10, version='V3'))
- self.execute_module(changed=False)
-
- def test_igmp_version_with_change(self):
- self.enabled = True
- set_module_args(dict(vlan_id=10, version='V2'))
- commands = ['vlan 10 ip igmp snooping version 2']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_static_groups_multicast_ip_address_not_configured(self):
- self.enabled = True
- set_module_args(dict(vlan_id=10, static_groups=[dict(multicast_ip_address='224.5.5.2', name='Eth1/1',
- sources=["1.1.1.2", "1.1.1.3"])]))
- commands = ['vlan 10 ip igmp snooping static-group 224.5.5.2 interface ethernet 1/1',
- 'vlan 10 ip igmp snooping static-group 224.5.5.2 interface ethernet 1/1 source 1.1.1.2',
- 'vlan 10 ip igmp snooping static-group 224.5.5.2 interface ethernet 1/1 source 1.1.1.3']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_static_groups_multicast_ip_address_configured_with_change(self):
- self.enabled = True
- self.static_groups_enabled = True
- set_module_args(dict(vlan_id=10, static_groups=[dict(multicast_ip_address='224.5.5.1', name='Eth1/3',
- sources=["1.1.1.1", "1.1.1.2"])]))
- commands = ['vlan 10 ip igmp snooping static-group 224.5.5.1 interface ethernet 1/3',
- 'vlan 10 ip igmp snooping static-group 224.5.5.1 interface ethernet 1/3 source 1.1.1.1',
- 'vlan 10 ip igmp snooping static-group 224.5.5.1 interface ethernet 1/3 source 1.1.1.2']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_interface.py b/test/units/modules/network/onyx/test_onyx_interface.py
deleted file mode 100644
index 3eb06318c4..0000000000
--- a/test/units/modules/network/onyx/test_onyx_interface.py
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_interface
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxInterfaceModule(TestOnyxModule):
-
- module = onyx_interface
-
- def setUp(self):
- super(TestOnyxInterfaceModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_interface.OnyxInterfaceModule, "_get_interfaces_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_get_interfaces_status = patch.object(
- onyx_interface.OnyxInterfaceModule, "_get_interfaces_status")
- self.get_interfaces_status = self.mock_get_interfaces_status.start()
-
- self.mock_get_interfaces_rates = patch.object(
- onyx_interface.OnyxInterfaceModule, "_get_interfaces_rates")
- self.get_interfaces_rates = self.mock_get_interfaces_rates.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_version = patch.object(
- onyx_interface.OnyxInterfaceModule, "_get_os_version")
- self.get_version = self.mock_get_version.start()
-
- def tearDown(self):
- super(TestOnyxInterfaceModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_interfaces_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
- self.get_version.return_value = "3.6.5000"
-
- def test_mtu_no_change(self):
- set_module_args(dict(name='Eth1/1', mtu=1500))
- self.execute_module(changed=False)
-
- def test_mtu_change(self):
- set_module_args(dict(name='Eth1/1', mtu=1522))
- commands = ['interface ethernet 1/1', 'mtu 1522 force', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_speed_no_change(self):
- set_module_args(dict(name='Eth1/1', speed='40G'))
- self.execute_module(changed=False)
-
- def test_speed_change(self):
- set_module_args(dict(name='Eth1/1', speed='100G'))
- commands = ['interface ethernet 1/1', 'speed 100G force', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_mtu_speed_change(self):
- set_module_args(dict(name='Eth1/1', speed='100G', mtu=1522))
- commands = ['interface ethernet 1/1', 'speed 100G force',
- 'mtu 1522 force', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_admin_state_no_change(self):
- set_module_args(dict(name='Eth1/1', enabled=True))
- self.execute_module(changed=False)
-
- def test_admin_state_change(self):
- set_module_args(dict(name='Eth1/1', enabled=False))
- commands = ['interface ethernet 1/1', 'shutdown', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_add_loopback_if(self):
- set_module_args(dict(name='Loopback 1', description='Loopback test'))
- commands = ['interface loopback 1', 'description Loopback test',
- 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_add_vlan_if(self):
- set_module_args(dict(name='Vlan 101', description='Vlan test',
- enabled=True))
- commands = ['interface vlan 101', 'description Vlan test',
- 'no shutdown', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_remove_vlan_if(self):
- set_module_args(dict(name='Vlan 1002', state='absent'))
- commands = ['no interface vlan 1002']
- self.execute_module(changed=True, commands=commands)
-
- def test_oper_state_check(self):
- set_module_args(dict(name='Eth1/1', enabled=True, state='down'))
- config_file = 'onyx_interfaces_status.cfg'
- self.get_interfaces_status.return_value = load_fixture(config_file)
- self.execute_module(changed=False)
-
- def test_vlan_oper_state_check(self):
- set_module_args(dict(name='Vlan 1002', state='down'))
- config_file = 'onyx_interfaces_status.cfg'
- self.get_interfaces_status.return_value = load_fixture(config_file)
- self.execute_module(changed=False)
-
- def test_rx_rate_check(self):
- set_module_args(dict(name='Eth1/1', enabled=True, rx_rate='ge(9000)'))
- config_file = 'onyx_interfaces_rates.cfg'
- self.get_interfaces_rates.return_value = load_fixture(config_file)
- self.execute_module(changed=False)
-
- def test_tx_rate_check(self):
- set_module_args(dict(name='Eth1/1', enabled=True, tx_rate='ge(10000)'))
- config_file = 'onyx_interfaces_rates.cfg'
- self.get_interfaces_rates.return_value = load_fixture(config_file)
- self.execute_module(changed=False)
diff --git a/test/units/modules/network/onyx/test_onyx_l2_interface.py b/test/units/modules/network/onyx/test_onyx_l2_interface.py
deleted file mode 100644
index 7efc6b16e3..0000000000
--- a/test/units/modules/network/onyx/test_onyx_l2_interface.py
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_l2_interface
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxInterfaceModule(TestOnyxModule):
-
- module = onyx_l2_interface
-
- def setUp(self):
- super(TestOnyxInterfaceModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_l2_interface.OnyxL2InterfaceModule, "_get_switchport_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_version = patch.object(
- onyx_l2_interface.OnyxL2InterfaceModule, "_get_os_version")
- self.get_version = self.mock_get_version.start()
-
- def tearDown(self):
- super(TestOnyxInterfaceModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_l2_interface_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
- self.get_version.return_value = "3.6.5000"
-
- def test_access_vlan_no_change(self):
- set_module_args(dict(name='Eth1/11', access_vlan=1))
- self.execute_module(changed=False)
-
- def test_trunk_vlans_no_change(self):
- set_module_args(dict(name='Eth1/10', mode='hybrid', access_vlan=1,
- trunk_allowed_vlans=[10]))
- self.execute_module(changed=False)
-
- def test_access_vlan_change(self):
- set_module_args(dict(name='Eth1/11', access_vlan=10))
- commands = ['interface ethernet 1/11', 'switchport access vlan 10',
- 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_trunk_vlan_change(self):
- set_module_args(dict(name='Eth1/10', mode='hybrid', access_vlan=1,
- trunk_allowed_vlans=[11]))
- commands = ['interface ethernet 1/10',
- 'switchport hybrid allowed-vlan remove 10',
- 'switchport hybrid allowed-vlan add 11', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_trunk_vlan_add(self):
- set_module_args(dict(name='Eth1/10', mode='hybrid', access_vlan=1,
- trunk_allowed_vlans=[10, 11]))
- commands = ['interface ethernet 1/10',
- 'switchport hybrid allowed-vlan add 11', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_switch_port_access(self):
- set_module_args(dict(name='Eth1/12', mode='access', access_vlan=11))
- commands = ['interface ethernet 1/12', 'switchport mode access',
- 'switchport access vlan 11', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_switch_port_trunk(self):
- set_module_args(dict(name='Eth1/12', mode='trunk',
- trunk_allowed_vlans=[11]))
- commands = ['interface ethernet 1/12', 'switchport mode trunk',
- 'switchport trunk allowed-vlan add 11', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_switch_port_hybrid(self):
- set_module_args(dict(name='Eth1/12', mode='hybrid', access_vlan=10,
- trunk_allowed_vlans=[11]))
- commands = ['interface ethernet 1/12', 'switchport mode hybrid',
- 'switchport access vlan 10',
- 'switchport hybrid allowed-vlan add 11', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_aggregate(self):
- aggregate = list()
- aggregate.append(dict(name='Eth1/10'))
- aggregate.append(dict(name='Eth1/12'))
-
- set_module_args(dict(aggregate=aggregate, access_vlan=10))
- commands = ['interface ethernet 1/10', 'switchport mode access',
- 'switchport access vlan 10', 'exit',
- 'interface ethernet 1/12', 'switchport mode access',
- 'switchport access vlan 10', 'exit']
- self.execute_module(changed=True, commands=commands, sort=False)
diff --git a/test/units/modules/network/onyx/test_onyx_l3_interface.py b/test/units/modules/network/onyx/test_onyx_l3_interface.py
deleted file mode 100644
index 0fa21aab12..0000000000
--- a/test/units/modules/network/onyx/test_onyx_l3_interface.py
+++ /dev/null
@@ -1,113 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_l3_interface
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxL3InterfaceModule(TestOnyxModule):
-
- module = onyx_l3_interface
-
- def setUp(self):
- super(TestOnyxL3InterfaceModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_l3_interface.OnyxL3InterfaceModule,
- "_get_interfaces_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_version = patch.object(
- onyx_l3_interface.OnyxL3InterfaceModule, "_get_os_version")
- self.get_version = self.mock_get_version.start()
-
- def tearDown(self):
- super(TestOnyxL3InterfaceModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def _execute_module(self, failed=False, changed=False, commands=None, sort=True):
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- commands_res = result.get('commands')
- if sort:
- self.assertEqual(sorted(commands), sorted(commands_res), commands_res)
- else:
- self.assertEqual(commands, commands_res, commands_res)
-
- return result
-
- def load_fixture(self, config_file):
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
- self.get_version.return_value = "3.6.5000"
-
- def load_eth_ifc_fixture(self):
- config_file = 'onyx_l3_interface_show.cfg'
- self.load_fixture(config_file)
-
- def load_vlan_ifc_fixture(self):
- config_file = 'onyx_l3_vlan_interface_show.cfg'
- self.load_fixture(config_file)
-
- def test_vlan_ifc_no_change(self):
- set_module_args(dict(name='Vlan 1002', state='present',
- ipv4='172.3.12.4/24'))
- self.load_vlan_ifc_fixture()
- self._execute_module(changed=False)
-
- def test_vlan_ifc_remove(self):
- set_module_args(dict(name='Vlan 1002', state='absent'))
- commands = ['interface vlan 1002 no ip address']
- self.load_vlan_ifc_fixture()
- self._execute_module(changed=True, commands=commands)
-
- def test_vlan_ifc_update(self):
- set_module_args(dict(name='Vlan 1002', state='present',
- ipv4='172.3.13.4/24'))
- commands = ['interface vlan 1002 ip address 172.3.13.4/24']
- self.load_vlan_ifc_fixture()
- self._execute_module(changed=True, commands=commands)
-
- def test_eth_ifc_no_change(self):
- set_module_args(dict(name='Eth1/5', state='present',
- ipv4='172.3.12.4/24'))
- self.load_eth_ifc_fixture()
- self._execute_module(changed=False)
-
- def test_eth_ifc_remove(self):
- set_module_args(dict(name='Eth1/5', state='absent'))
- commands = ['interface ethernet 1/5 no ip address']
- self.load_eth_ifc_fixture()
- self._execute_module(changed=True, commands=commands)
-
- def test_eth_ifc_update(self):
- set_module_args(dict(name='Eth1/5', state='present',
- ipv4='172.3.13.4/24'))
- commands = ['interface ethernet 1/5 ip address 172.3.13.4/24']
- self.load_eth_ifc_fixture()
- self._execute_module(changed=True, commands=commands)
-
- def test_eth_ifc_add_ip(self):
- set_module_args(dict(name='Eth1/6', state='present',
- ipv4='172.3.14.4/24'))
- commands = ['interface ethernet 1/6 no switchport force',
- 'interface ethernet 1/6 ip address 172.3.14.4/24']
- self.load_eth_ifc_fixture()
- self._execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_linkagg.py b/test/units/modules/network/onyx/test_onyx_linkagg.py
deleted file mode 100644
index 4d9c8b1642..0000000000
--- a/test/units/modules/network/onyx/test_onyx_linkagg.py
+++ /dev/null
@@ -1,116 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_linkagg
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxLinkaggModule(TestOnyxModule):
-
- module = onyx_linkagg
-
- def setUp(self):
- super(TestOnyxLinkaggModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_linkagg.OnyxLinkAggModule,
- "_get_port_channels")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
- self.mock_get_version = patch.object(
- onyx_linkagg.OnyxLinkAggModule, "_get_os_version")
- self.get_version = self.mock_get_version.start()
-
- def tearDown(self):
- super(TestOnyxLinkaggModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_get_version.stop()
-
- def load_fixture(self, config_file):
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
- self.get_version.return_value = "3.6.5000"
-
- def load_port_channel_fixture(self):
- config_file = 'onyx_port_channel_show.cfg'
- self.load_fixture(config_file)
-
- def load_mlag_port_channel_fixture(self):
- config_file = 'onyx_mlag_port_channel_show.cfg'
- self.load_fixture(config_file)
-
- def test_port_channel_no_change(self):
- set_module_args(dict(name='Po22', state='present',
- members=['Eth1/7']))
- self.load_port_channel_fixture()
- self.execute_module(changed=False)
-
- def test_port_channel_remove(self):
- set_module_args(dict(name='Po22', state='absent'))
- self.load_port_channel_fixture()
- commands = ['no interface port-channel 22']
- self.execute_module(changed=True, commands=commands)
-
- def test_port_channel_add(self):
- set_module_args(dict(name='Po23', state='present',
- members=['Eth1/8']))
- self.load_port_channel_fixture()
- commands = ['interface port-channel 23', 'exit',
- 'interface ethernet 1/8 channel-group 23 mode on']
- self.execute_module(changed=True, commands=commands)
-
- def test_port_channel_add_member(self):
- set_module_args(dict(name='Po22', state='present',
- members=['Eth1/7', 'Eth1/8']))
- self.load_port_channel_fixture()
- commands = ['interface ethernet 1/8 channel-group 22 mode on']
- self.execute_module(changed=True, commands=commands)
-
- def test_port_channel_remove_member(self):
- set_module_args(dict(name='Po22', state='present'))
- self.load_port_channel_fixture()
- commands = ['interface ethernet 1/7 no channel-group']
- self.execute_module(changed=True, commands=commands)
-
- def test_mlag_port_channel_no_change(self):
- set_module_args(dict(name='Mpo33', state='present',
- members=['Eth1/8']))
- self.load_mlag_port_channel_fixture()
- self.execute_module(changed=False)
-
- def test_mlag_port_channel_remove(self):
- set_module_args(dict(name='Mpo33', state='absent'))
- self.load_mlag_port_channel_fixture()
- commands = ['no interface mlag-port-channel 33']
- self.execute_module(changed=True, commands=commands)
-
- def test_mlag_port_channel_add(self):
- set_module_args(dict(name='Mpo34', state='present',
- members=['Eth1/9']))
- self.load_mlag_port_channel_fixture()
- commands = ['interface mlag-port-channel 34', 'exit',
- 'interface ethernet 1/9 mlag-channel-group 34 mode on']
- self.execute_module(changed=True, commands=commands)
-
- def test_mlag_port_channel_add_member(self):
- set_module_args(dict(name='Mpo33', state='present',
- members=['Eth1/8', 'Eth1/9']))
- self.load_mlag_port_channel_fixture()
- commands = ['interface ethernet 1/9 mlag-channel-group 33 mode on']
- self.execute_module(changed=True, commands=commands)
-
- def test_mlag_port_channel_remove_member(self):
- set_module_args(dict(name='Mpo33', state='present'))
- self.load_mlag_port_channel_fixture()
- commands = ['interface ethernet 1/8 no mlag-channel-group']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_lldp.py b/test/units/modules/network/onyx/test_onyx_lldp.py
deleted file mode 100644
index 4957af6360..0000000000
--- a/test/units/modules/network/onyx/test_onyx_lldp.py
+++ /dev/null
@@ -1,68 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_lldp
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxInterfaceModule(TestOnyxModule):
-
- module = onyx_lldp
-
- def setUp(self):
- super(TestOnyxInterfaceModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_lldp.OnyxLldpModule, "_get_lldp_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxInterfaceModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- if commands == ['lldp']:
- self.get_config.return_value = None
- else:
- config_file = 'onyx_lldp_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_lldp_no_change(self):
- set_module_args(dict())
- self.execute_module(changed=False)
-
- def test_lldp_disable(self):
- set_module_args(dict(state='absent'))
- commands = ['no lldp']
- self.execute_module(changed=True, commands=commands)
-
- def test_lldp_enable(self):
- set_module_args(dict(state='present'))
- commands = ['lldp']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_lldp_interface.py b/test/units/modules/network/onyx/test_onyx_lldp_interface.py
deleted file mode 100644
index 223b0c6be8..0000000000
--- a/test/units/modules/network/onyx/test_onyx_lldp_interface.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_lldp_interface
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxLldpInterfaceModule(TestOnyxModule):
-
- module = onyx_lldp_interface
-
- def setUp(self):
- super(TestOnyxLldpInterfaceModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_lldp_interface.OnyxLldpInterfaceModule,
- "_get_lldp_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxLldpInterfaceModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_lldp_interface_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_lldp_no_change(self):
- set_module_args(dict(name='Eth1/1', state='present'))
- self.execute_module(changed=False)
-
- def test_no_lldp_no_change(self):
- set_module_args(dict(name='Eth1/2', state='absent'))
- self.execute_module(changed=False)
-
- def test_no_lldp_change(self):
- set_module_args(dict(name='Eth1/2', state='present'))
- commands = ['interface ethernet 1/2 lldp receive',
- 'interface ethernet 1/2 lldp transmit']
- self.execute_module(changed=True, commands=commands)
-
- def test_lldp_change(self):
- set_module_args(dict(name='Eth1/1', state='absent'))
- commands = ['interface ethernet 1/1 no lldp receive',
- 'interface ethernet 1/1 no lldp transmit']
- self.execute_module(changed=True, commands=commands)
-
- def test_lldp_aggregate(self):
- aggregate = [dict(name='Eth1/1'), dict(name='Eth1/2')]
- set_module_args(dict(aggregate=aggregate, state='present'))
- commands = ['interface ethernet 1/2 lldp receive',
- 'interface ethernet 1/2 lldp transmit']
- self.execute_module(changed=True, commands=commands)
-
- def test_lldp_aggregate_purge(self):
- aggregate = [dict(name='Eth1/3'), dict(name='Eth1/2')]
- set_module_args(dict(aggregate=aggregate, state='present', purge=True))
- commands = ['interface ethernet 1/2 lldp receive',
- 'interface ethernet 1/2 lldp transmit',
- 'interface ethernet 1/3 lldp receive',
- 'interface ethernet 1/3 lldp transmit',
- 'interface ethernet 1/1 no lldp receive',
- 'interface ethernet 1/1 no lldp transmit']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_magp.py b/test/units/modules/network/onyx/test_onyx_magp.py
deleted file mode 100644
index 2fbbd82e4c..0000000000
--- a/test/units/modules/network/onyx/test_onyx_magp.py
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_magp
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxMagpModule(TestOnyxModule):
-
- module = onyx_magp
-
- def setUp(self):
- super(TestOnyxMagpModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_magp.OnyxMagpModule,
- "_get_magp_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_version = patch.object(onyx_magp.OnyxMagpModule,
- "_get_os_version")
- self.get_version = self.mock_get_version.start()
-
- def tearDown(self):
- super(TestOnyxMagpModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_get_version.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_magp_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
- self.get_version.return_value = "3.6.5000"
-
- def test_magp_absent_no_change(self):
- set_module_args(dict(interface='Vlan 1002', magp_id=110,
- state='absent'))
- self.execute_module(changed=False)
-
- def test_magp_no_change(self):
- set_module_args(dict(interface='Vlan 1200', magp_id=103,
- state='disabled'))
- self.execute_module(changed=False)
-
- def test_magp_present_no_change(self):
- set_module_args(dict(interface='Vlan 1200', magp_id=103))
- self.execute_module(changed=False)
-
- def test_magp_enable(self):
- set_module_args(dict(interface='Vlan 1200', magp_id=103,
- state='enabled'))
- commands = ['interface vlan 1200 magp 103 no shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_magp_disable(self):
- set_module_args(dict(interface='Vlan 1243', magp_id=102,
- state='disabled', router_ip='10.0.0.43',
- router_mac='01:02:03:04:05:06'))
- commands = ['interface vlan 1243 magp 102 shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_magp_change_address(self):
- set_module_args(dict(interface='Vlan 1243', magp_id=102,
- router_ip='10.0.0.44',
- router_mac='01:02:03:04:05:07'))
- commands = [
- 'interface vlan 1243 magp 102 ip virtual-router address 10.0.0.44',
- 'interface vlan 1243 magp 102 ip virtual-router mac-address 01:02:03:04:05:07']
- self.execute_module(changed=True, commands=commands)
-
- def test_magp_remove_address(self):
- set_module_args(dict(interface='Vlan 1243', magp_id=102))
- commands = [
- 'interface vlan 1243 magp 102 no ip virtual-router address',
- 'interface vlan 1243 magp 102 no ip virtual-router mac-address']
- self.execute_module(changed=True, commands=commands)
-
- def test_magp_add(self):
- set_module_args(dict(interface='Vlan 1244', magp_id=104,
- router_ip='10.0.0.44',
- router_mac='01:02:03:04:05:07'))
- commands = [
- 'interface vlan 1244 magp 104',
- 'exit',
- 'interface vlan 1244 magp 104 ip virtual-router address 10.0.0.44',
- 'interface vlan 1244 magp 104 ip virtual-router mac-address 01:02:03:04:05:07']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_magp_change_vlan(self):
- set_module_args(dict(interface='Vlan 1244', magp_id=102,
- router_ip='10.0.0.43',
- router_mac='01:02:03:04:05:06'))
- commands = [
- 'interface vlan 1243 no magp 102',
- 'interface vlan 1244 magp 102',
- 'exit',
- 'interface vlan 1244 magp 102 ip virtual-router address 10.0.0.43',
- 'interface vlan 1244 magp 102 ip virtual-router mac-address 01:02:03:04:05:06']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_mlag_ipl.py b/test/units/modules/network/onyx/test_onyx_mlag_ipl.py
deleted file mode 100644
index 126f82e32f..0000000000
--- a/test/units/modules/network/onyx/test_onyx_mlag_ipl.py
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_mlag_ipl
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxMlagIplModule(TestOnyxModule):
-
- module = onyx_mlag_ipl
-
- def setUp(self):
- super(TestOnyxMlagIplModule, self).setUp()
- self._mlag_enabled = True
- self.mock_get_config = patch.object(
- onyx_mlag_ipl.OnyxMlagIplModule,
- "_show_mlag_data")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxMlagIplModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- if self._mlag_enabled:
- config_file = 'onyx_mlag_ipl_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- else:
- self.get_config.return_value = None
- self.load_config.return_value = None
-
- def test_no_ipl_no_change(self):
- self._mlag_enabled = False
- set_module_args(dict(name="Po1", state='absent'))
- self.execute_module(changed=False)
-
- def test_ipl_no_change(self):
- self._mlag_enabled = True
- set_module_args(dict(name="Po1", state='present',
- vlan_interface='Vlan 1002',
- peer_address='10.2.2.2'))
- self.execute_module(changed=False)
-
- def test_ipl_add(self):
- self._mlag_enabled = False
- set_module_args(dict(name="Po1", state='present',
- vlan_interface='Vlan 1002',
- peer_address='10.2.2.2'))
- commands = ['interface port-channel 1 ipl 1',
- 'interface vlan 1002 ipl 1 peer-address 10.2.2.2']
- self.execute_module(changed=True, commands=commands)
-
- def test_ipl_add_peer(self):
- self._mlag_enabled = True
- set_module_args(dict(name="Po1", state='present',
- vlan_interface='Vlan 1002',
- peer_address='10.2.2.4'))
- commands = ['interface vlan 1002 ipl 1 peer-address 10.2.2.4']
- self.execute_module(changed=True, commands=commands)
-
- def test_ipl_remove(self):
- self._mlag_enabled = True
- set_module_args(dict(name="Po1", state='absent'))
- commands = ['interface port-channel 1 no ipl 1']
- self.execute_module(changed=True, commands=commands)
-
- def test_ipl_change_vlan(self):
- self._mlag_enabled = True
- set_module_args(dict(name="Po1", state='present',
- vlan_interface='Vlan 1003',
- peer_address='10.2.2.4'))
- commands = ['interface vlan 1002 no ipl 1',
- 'interface vlan 1003 ipl 1 peer-address 10.2.2.4']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_mlag_vip.py b/test/units/modules/network/onyx/test_onyx_mlag_vip.py
deleted file mode 100644
index 1ff20afab3..0000000000
--- a/test/units/modules/network/onyx/test_onyx_mlag_vip.py
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_mlag_vip
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxMlagVipModule(TestOnyxModule):
-
- module = onyx_mlag_vip
-
- def setUp(self):
- super(TestOnyxMlagVipModule, self).setUp()
- self._mlag_enabled = True
- self.mock_show_mlag = patch.object(
- onyx_mlag_vip.OnyxMLagVipModule,
- "_show_mlag")
- self.show_mlag = self.mock_show_mlag.start()
- self.mock_show_mlag_vip = patch.object(
- onyx_mlag_vip.OnyxMLagVipModule,
- "_show_mlag_vip")
- self.show_mlag_vip = self.mock_show_mlag_vip.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxMlagVipModule, self).tearDown()
- self.mock_show_mlag.stop()
- self.mock_show_mlag_vip.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- if self._mlag_enabled:
- config_file = 'onyx_mlag_vip_show.cfg'
- self.show_mlag_vip.return_value = load_fixture(config_file)
- config_file = 'onyx_mlag_show.cfg'
- self.show_mlag.return_value = load_fixture(config_file)
- else:
- self.show_mlag_vip.return_value = None
- self.show_mlag.return_value = None
- self.load_config.return_value = None
-
- def test_mlag_no_change(self):
- set_module_args(dict(ipaddress='10.209.25.107/24',
- group_name='neo-mlag-vip-500',
- mac_address='00:00:5E:00:01:4E'))
- self.execute_module(changed=False)
-
- def test_mlag_change(self):
- self._mlag_enabled = False
- set_module_args(dict(ipaddress='10.209.25.107/24',
- group_name='neo-mlag-vip-500',
- mac_address='00:00:5E:00:01:4E',
- delay=0))
- commands = ['mlag-vip neo-mlag-vip-500 ip 10.209.25.107 /24 force',
- 'mlag system-mac 00:00:5e:00:01:4e', 'no mlag shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_mlag_send_group_name_only_change(self):
- self._mlag_enabled = False
- set_module_args(dict(group_name='neo-mlag-vip-500',
- delay=0))
- commands = ['mlag-vip neo-mlag-vip-500',
- 'no mlag shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_mlag_absent_no_change(self):
- self._mlag_enabled = False
- set_module_args(dict(state='absent'))
- self.execute_module(changed=False)
-
- def test_mlag_absent_change(self):
- set_module_args(dict(state='absent', delay=0))
- commands = ['no mlag-vip']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_ntp.py b/test/units/modules/network/onyx/test_onyx_ntp.py
deleted file mode 100644
index aa4499c5b3..0000000000
--- a/test/units/modules/network/onyx/test_onyx_ntp.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_ntp
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxNTP(TestOnyxModule):
-
- module = onyx_ntp
- enabled = False
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxNTP, self).setUp()
- self.mock_get_config = patch.object(
- onyx_ntp.OnyxNTPModule, "_show_ntp_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxNTP, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_ntp_show.cfg'
- data = load_fixture(config_file)
- self.get_config.return_value = data
- self.load_config.return_value = None
-
- def test_ntp_state_no_change(self):
- set_module_args(dict(state='enabled'))
- self.execute_module(changed=False)
-
- def test_ntp_state_with_change(self):
- set_module_args(dict(state='disabled'))
- commands = ['no ntp enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_authenticate_state_no_change(self):
- set_module_args(dict(authenticate_state='disabled'))
- self.execute_module(changed=False)
-
- def test_ntp_authenticate_state_with_change(self):
- set_module_args(dict(authenticate_state='enabled'))
- commands = ['ntp authenticate']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_authentication_key_no_change(self):
- set_module_args(dict(ntp_authentication_keys=[dict(auth_key_id='22',
- auth_key_encrypt_type='sha1',
- auth_key_password='12345')]))
- self.execute_module(changed=False)
-
- def test_ntp_authentication_key_with_change(self):
- set_module_args(dict(ntp_authentication_keys=[dict(auth_key_id='22',
- auth_key_encrypt_type='md5',
- auth_key_password='12345')]))
- commands = ['ntp authentication-key 22 md5 12345']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_trusted_keys_with_change(self):
- set_module_args(dict(trusted_keys='22'))
- commands = ['ntp trusted-key 22']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_ntp_servers_peers.py b/test/units/modules/network/onyx/test_onyx_ntp_servers_peers.py
deleted file mode 100644
index 39bd33d1a9..0000000000
--- a/test/units/modules/network/onyx/test_onyx_ntp_servers_peers.py
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_ntp_servers_peers
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxNtpServersPeersModule(TestOnyxModule):
-
- module = onyx_ntp_servers_peers
- enabled = False
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxNtpServersPeersModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_ntp_servers_peers.OnyxNTPServersPeersModule, "_show_peers_servers_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxNtpServersPeersModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_ntp_servers_peers_show.cfg'
- data = load_fixture(config_file)
- self.get_config.return_value = data
- self.load_config.return_value = None
-
- def test_ntp_peer_state_no_change(self):
- set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1',
- enabled='yes')]))
- self.execute_module(changed=False)
-
- def test_ntp_peer_state_with_change(self):
- set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1',
- enabled='no')]))
- commands = ['ntp peer 1.1.1.1 disable']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_peer_version_no_change(self):
- set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1',
- version='4')]))
- self.execute_module(changed=False)
-
- def test_ntp_peer_version_with_change(self):
- set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1',
- version='3')]))
- commands = ['ntp peer 1.1.1.1 version 3']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_peer_key_id_no_change(self):
- set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1',
- key_id='5')]))
- self.execute_module(changed=False)
-
- def test_ntp_peer_key_id_with_change(self):
- set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1',
- key_id='6')]))
- commands = ['ntp peer 1.1.1.1 keyID 6']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_peer_delete_with_change(self):
- set_module_args(dict(peer=[dict(ip_or_name='1.1.1.1',
- state='absent')]))
- commands = ['no ntp peer 1.1.1.1']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_server_state_no_change(self):
- set_module_args(dict(server=[dict(ip_or_name='2.2.2.2',
- enabled='no')]))
- self.execute_module(changed=False)
-
- def test_ntp_server_state_with_change(self):
- set_module_args(dict(server=[dict(ip_or_name='2.2.2.2',
- enabled='yes')]))
- commands = ['no ntp server 2.2.2.2 disable']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_server_version_no_change(self):
- set_module_args(dict(server=[dict(ip_or_name='2.2.2.2',
- version='4')]))
- self.execute_module(changed=False)
-
- def test_ntp_server_version_with_change(self):
- set_module_args(dict(server=[dict(ip_or_name='2.2.2.2',
- version='3')]))
- commands = ['ntp server 2.2.2.2 version 3']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_server_keyID_no_change(self):
- set_module_args(dict(server=[dict(ip_or_name='2.2.2.2',
- key_id='99')]))
- self.execute_module(changed=False)
-
- def test_ntp_server_keyID_with_change(self):
- set_module_args(dict(server=[dict(ip_or_name='2.2.2.2',
- key_id='8')]))
- commands = ['ntp server 2.2.2.2 keyID 8']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_server_trusted_state_no_change(self):
- set_module_args(dict(server=[dict(ip_or_name='2.2.2.2',
- trusted_enable='yes')]))
- self.execute_module(changed=False)
-
- def test_ntp_server_trusted_state_with_change(self):
- set_module_args(dict(server=[dict(ip_or_name='2.2.2.2',
- trusted_enable='no')]))
- commands = ['no ntp server 2.2.2.2 trusted-enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_server_delete_with_change(self):
- set_module_args(dict(server=[dict(ip_or_name='2.2.2.2',
- state='absent')]))
- commands = ['no ntp server 2.2.2.2']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntpdate_with_change(self):
- set_module_args(dict(ntpdate='192.22.1.66'))
- commands = ['ntpdate 192.22.1.66']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_ospf.py b/test/units/modules/network/onyx/test_onyx_ospf.py
deleted file mode 100644
index 76c7f4332c..0000000000
--- a/test/units/modules/network/onyx/test_onyx_ospf.py
+++ /dev/null
@@ -1,106 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_ospf
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxOspfModule(TestOnyxModule):
-
- module = onyx_ospf
-
- def setUp(self):
- super(TestOnyxOspfModule, self).setUp()
- self._ospf_exists = True
- self.mock_get_config = patch.object(
- onyx_ospf.OnyxOspfModule,
- "_get_ospf_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_get_interfaces_config = patch.object(
- onyx_ospf.OnyxOspfModule,
- "_get_ospf_interfaces_config")
- self.get_interfaces_config = self.mock_get_interfaces_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxOspfModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- if self._ospf_exists:
- config_file = 'onyx_ospf_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- config_file = 'onyx_ospf_interfaces_show.cfg'
- self.get_interfaces_config.return_value = load_fixture(config_file)
- else:
- self.get_config.return_value = None
- self.get_interfaces_config.return_value = None
- self.load_config.return_value = None
-
- def test_ospf_absent_no_change(self):
- set_module_args(dict(ospf=3, state='absent'))
- self.execute_module(changed=False)
-
- def test_ospf_present_no_change(self):
- interface = dict(name='Loopback 1', area='0.0.0.0')
- set_module_args(dict(ospf=2, router_id='10.2.3.4',
- interfaces=[interface]))
- self.execute_module(changed=False)
-
- def test_ospf_present_remove(self):
- set_module_args(dict(ospf=2, state='absent'))
- commands = ['no router ospf 2']
- self.execute_module(changed=True, commands=commands)
-
- def test_ospf_change_router(self):
- interface = dict(name='Loopback 1', area='0.0.0.0')
- set_module_args(dict(ospf=2, router_id='10.2.3.5',
- interfaces=[interface]))
- commands = ['router ospf 2', 'router-id 10.2.3.5', 'exit']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_ospf_remove_router(self):
- interface = dict(name='Loopback 1', area='0.0.0.0')
- set_module_args(dict(ospf=2, interfaces=[interface]))
- commands = ['router ospf 2', 'no router-id', 'exit']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_ospf_add_interface(self):
- interfaces = [dict(name='Loopback 1', area='0.0.0.0'),
- dict(name='Loopback 2', area='0.0.0.0')]
- set_module_args(dict(ospf=2, router_id='10.2.3.4',
- interfaces=interfaces))
- commands = ['interface loopback 2 ip ospf area 0.0.0.0']
- self.execute_module(changed=True, commands=commands)
-
- def test_ospf_remove_interface(self):
- set_module_args(dict(ospf=2, router_id='10.2.3.4'))
- commands = ['interface loopback 1 no ip ospf area']
- self.execute_module(changed=True, commands=commands)
-
- def test_ospf_add(self):
- self._ospf_exists = False
- interfaces = [dict(name='Loopback 1', area='0.0.0.0'),
- dict(name='Vlan 210', area='0.0.0.0'),
- dict(name='Eth1/1', area='0.0.0.0'),
- dict(name='Po1', area='0.0.0.0')]
- set_module_args(dict(ospf=2, router_id='10.2.3.4',
- interfaces=interfaces))
- commands = ['router ospf 2', 'router-id 10.2.3.4', 'exit',
- 'interface loopback 1 ip ospf area 0.0.0.0',
- 'interface vlan 210 ip ospf area 0.0.0.0',
- 'interface ethernet 1/1 ip ospf area 0.0.0.0',
- 'interface port-channel 1 ip ospf area 0.0.0.0']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_pfc_interface.py b/test/units/modules/network/onyx/test_onyx_pfc_interface.py
deleted file mode 100644
index 9f70f31ff4..0000000000
--- a/test/units/modules/network/onyx/test_onyx_pfc_interface.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_pfc_interface
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxPfcInterfaceModule(TestOnyxModule):
-
- module = onyx_pfc_interface
-
- def setUp(self):
- super(TestOnyxPfcInterfaceModule, self).setUp()
- self._pfc_enabled = True
- self.mock_get_config = patch.object(
- onyx_pfc_interface.OnyxPfcInterfaceModule,
- "_get_pfc_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
- self.mock_get_version = patch.object(
- onyx_pfc_interface.OnyxPfcInterfaceModule, "_get_os_version")
- self.get_version = self.mock_get_version.start()
-
- def tearDown(self):
- super(TestOnyxPfcInterfaceModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_get_version.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- if self._pfc_enabled:
- suffix = 'enabled'
- else:
- suffix = 'disabled'
- config_file = 'onyx_pfc_interface_%s.cfg' % suffix
-
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
- self.get_version.return_value = "3.6.5000"
-
- def _test_pfc_if(self, if_name, enabled, changed, commands):
- state = 'enabled' if enabled else 'disabled'
- set_module_args(dict(name=if_name, state=state))
- self.execute_module(changed=changed, commands=commands)
-
- def _test_pfc_no_change(self, enabled):
- interfaces = ('Eth1/1', 'Eth1/1/2', 'Po1', 'Mpo2')
- changed = False
- commands = None
- for ifc in interfaces:
- self._test_pfc_if(ifc, enabled, changed, commands)
-
- def test_pfc_enabled_no_change(self):
- self._pfc_enabled = True
- enabled = True
- self._test_pfc_no_change(enabled)
-
- def test_pfc_disabled_no_change(self):
- self._pfc_enabled = False
- enabled = False
- self._test_pfc_no_change(enabled)
-
- def _test_pfc_change(self, enabled):
- cmd_list = [
- ('Eth1/1', 'interface ethernet 1/1'),
- ('Eth1/1/2', 'interface ethernet 1/1/2'),
- ('Po1', 'interface port-channel 1'),
- ('Mpo2', 'interface mlag-port-channel 2'),
- ]
- changed = True
- suffix = ' dcb priority-flow-control mode on force'
- if not enabled:
- suffix = ' no dcb priority-flow-control mode force'
- for (if_name, cmd) in cmd_list:
- commands = [cmd + suffix]
- self._test_pfc_if(if_name, enabled, changed, commands)
-
- def test_pfc_disabled_change(self):
- self._pfc_enabled = False
- enabled = True
- self._test_pfc_change(enabled)
-
- def test_pfc_enabled_change(self):
- self._pfc_enabled = True
- enabled = False
- self._test_pfc_change(enabled)
-
- def test_pfc_aggregate(self):
- self._pfc_enabled = False
- aggregate = [dict(name='Eth1/1'), dict(name='Eth1/1/2')]
- set_module_args(dict(aggregate=aggregate, state='enabled'))
- commands = [
- 'interface ethernet 1/1 dcb priority-flow-control mode on force',
- 'interface ethernet 1/1/2 dcb priority-flow-control mode on force']
- self.execute_module(changed=True, commands=commands)
-
- def test_pfc_aggregate_purge(self):
- self._pfc_enabled = True
- aggregate = [dict(name='Po1'), dict(name='Mpo2')]
- set_module_args(dict(aggregate=aggregate, state='enabled', purge=True))
- commands = [
- 'interface ethernet 1/1 no dcb priority-flow-control mode force',
- 'interface ethernet 1/1/2 no dcb priority-flow-control mode force']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_protocol.py b/test/units/modules/network/onyx/test_onyx_protocol.py
deleted file mode 100644
index c81dd8ee60..0000000000
--- a/test/units/modules/network/onyx/test_onyx_protocol.py
+++ /dev/null
@@ -1,152 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_protocol
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxProtocolModule(TestOnyxModule):
-
- module = onyx_protocol
-
- def setUp(self):
- super(TestOnyxProtocolModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_protocol.OnyxProtocolModule,
- "_get_protocols")
- self.get_config = self.mock_get_config.start()
-
- self.mock_get_ip_config = patch.object(
- onyx_protocol.OnyxProtocolModule,
- "_get_ip_routing")
- self.get_ip_config = self.mock_get_ip_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxProtocolModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_protocols_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
- self.get_ip_config.return_value = "IP routing: enabled"
-
- def test_mlag_enable(self):
- set_module_args(dict(mlag='enabled'))
- commands = ['protocol mlag']
- self.execute_module(changed=True, commands=commands)
-
- def test_mlag_disable(self):
- set_module_args(dict(mlag='disabled'))
- self.execute_module(changed=False)
-
- def test_magp_enable(self):
- set_module_args(dict(magp='enabled'))
- commands = ['protocol magp']
- self.execute_module(changed=True, commands=commands)
-
- def test_magp_disable(self):
- set_module_args(dict(magp='disabled'))
- self.execute_module(changed=False)
-
- def test_spanning_tree_enable(self):
- set_module_args(dict(spanning_tree='enabled'))
- self.execute_module(changed=False)
-
- def test_spanning_tree_disable(self):
- set_module_args(dict(spanning_tree='disabled'))
- commands = ['no spanning-tree']
- self.execute_module(changed=True, commands=commands)
-
- def test_dcb_pfc_enable(self):
- set_module_args(dict(dcb_pfc='enabled'))
- commands = ['dcb priority-flow-control enable force']
- self.execute_module(changed=True, commands=commands)
-
- def test_dcb_pfc_disable(self):
- set_module_args(dict(dcb_pfc='disabled'))
- self.execute_module(changed=False)
-
- def test_igmp_snooping_enable(self):
- set_module_args(dict(igmp_snooping='enabled'))
- commands = ['ip igmp snooping']
- self.execute_module(changed=True, commands=commands)
-
- def test_igmp_snooping_disable(self):
- set_module_args(dict(igmp_snooping='disabled'))
- self.execute_module(changed=False)
-
- def test_lacp_enable(self):
- set_module_args(dict(lacp='enabled'))
- commands = ['lacp']
- self.execute_module(changed=True, commands=commands)
-
- def test_lacp_disable(self):
- set_module_args(dict(lacp='disabled'))
- self.execute_module(changed=False)
-
- def test_ip_routing_enable(self):
- set_module_args(dict(ip_routing='enabled'))
- self.execute_module(changed=False)
-
- def test_ip_routing_disable(self):
- set_module_args(dict(ip_routing='disabled'))
- commands = ['no ip routing']
- self.execute_module(changed=True, commands=commands)
-
- def test_lldp_enable(self):
- set_module_args(dict(lldp='enabled'))
- commands = ['lldp']
- self.execute_module(changed=True, commands=commands)
-
- def test_lldp_disable(self):
- set_module_args(dict(lldp='disabled'))
- self.execute_module(changed=False)
-
- def test_bgp_enable(self):
- set_module_args(dict(bgp='enabled'))
- commands = ['protocol bgp']
- self.execute_module(changed=True, commands=commands)
-
- def test_bgp_disable(self):
- set_module_args(dict(bgp='disabled'))
- self.execute_module(changed=False)
-
- def test_ospf_enable(self):
- set_module_args(dict(ospf='enabled'))
- commands = ['protocol ospf']
- self.execute_module(changed=True, commands=commands)
-
- def test_ospf_disable(self):
- set_module_args(dict(ospf='disabled'))
- self.execute_module(changed=False)
-
- def test_nve_enable(self):
- set_module_args(dict(nve='enabled'))
- commands = ['protocol nve']
- self.execute_module(changed=True, commands=commands)
-
- def test_nve_disabled(self):
- set_module_args(dict(nve='disabled'))
- self.execute_module(changed=False)
-
- def test_bfd_enable(self):
- set_module_args(dict(bfd='enabled'))
- commands = ['protocol bfd']
- self.execute_module(changed=True, commands=commands)
-
- def test_bfd_disabled(self):
- set_module_args(dict(bfd='disabled'))
- self.execute_module(changed=False)
diff --git a/test/units/modules/network/onyx/test_onyx_ptp_global.py b/test/units/modules/network/onyx/test_onyx_ptp_global.py
deleted file mode 100644
index 923c4549e9..0000000000
--- a/test/units/modules/network/onyx/test_onyx_ptp_global.py
+++ /dev/null
@@ -1,138 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_ptp_global
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxPtpModule(TestOnyxModule):
-
- module = onyx_ptp_global
-
- def setUp(self):
- self._ptp_enabled = True
- self._ntp_enabled = True
- super(TestOnyxPtpModule, self).setUp()
-
- self.mock_get_ptp_config = patch.object(onyx_ptp_global.OnyxPtpGlobalModule, "_show_ptp_config")
- self.get_ptp_config = self.mock_get_ptp_config.start()
- self.mock_get_ntp_config = patch.object(onyx_ptp_global.OnyxPtpGlobalModule, "_show_ntp_config")
- self.get_ntp_config = self.mock_get_ntp_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxPtpModule, self).tearDown()
- self.mock_get_ptp_config.stop()
- self.mock_get_ntp_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- if self._ptp_enabled:
- config_file = 'onyx_show_ptp_clock.cfg'
- self.get_ptp_config.return_value = load_fixture(config_file)
- else:
- self.get_ptp_config.return_value = None
-
- config_file = 'onyx_show_ntp_configured.cfg'
- ret_val = load_fixture(config_file)
- if self._ntp_enabled:
- ret_val[0]['NTP enabled'] = 'yes'
- self.get_ntp_config.return_value = ret_val
- self.load_config.return_value = None
-
- def test_ptp_enabled_no_change(self):
- set_module_args(dict(ptp_state='enabled'))
- self.execute_module(changed=False)
-
- def test_ptp_enabled_with_change(self):
- self._ptp_enabled = False
- set_module_args(dict(ptp_state='enabled'))
- commands = ['protocol ptp']
- self.execute_module(changed=True, commands=commands)
-
- def test_ptp_disabled_no_change(self):
- self._ptp_enabled = False
- set_module_args(dict(ptp_state='disabled'))
- self.execute_module(changed=False)
-
- def test_ptp_disabled_with_change(self):
- set_module_args(dict(ptp_state='disabled'))
- commands = ['no protocol ptp']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_enabled_no_change(self):
- self._ptp_enabled = False
- set_module_args(dict(ntp_state='enabled',
- ptp_state='disabled'))
- self.execute_module(changed=False)
-
- def test_ntp_enabled_with_change(self):
- self._ptp_enabled = False
- self._ntp_enabled = False
- set_module_args(dict(ntp_state='enabled',
- ptp_state='disabled'))
- commands = ['ntp enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_ntp_disabled_no_change(self):
- self._ntp_enabled = False
- set_module_args(dict(ntp_state='disabled'))
- self.execute_module(changed=False)
-
- def test_ntp_disabled_with_change(self):
- set_module_args(dict(ntp_state='disabled'))
- commands = ['no ntp enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_set_domain_no_change(self):
- self._ntp_enabled = False
- set_module_args(dict(ntp_state='disabled',
- domain=127))
- self.execute_module(changed=False)
-
- def test_set_domain_with_change(self):
- set_module_args(dict(domain=100))
- commands = ['ptp domain 100']
- self.execute_module(changed=True, commands=commands)
-
- def test_set_primary_priority_no_change(self):
- set_module_args(dict(primary_priority=128))
- self.execute_module(changed=False)
-
- def test_set_primary_priority_with_change(self):
- set_module_args(dict(primary_priority=250))
- commands = ['ptp priority1 250']
- self.execute_module(changed=True, commands=commands)
-
- def test_set_secondary_priority_no_change(self):
- set_module_args(dict(secondary_priority=128))
- self.execute_module(changed=False)
-
- def test_set_secondary_priority_with_change(self):
- set_module_args(dict(secondary_priority=190))
- commands = ['ptp priority2 190']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_ptp_interface.py b/test/units/modules/network/onyx/test_onyx_ptp_interface.py
deleted file mode 100644
index 30c3b02a8f..0000000000
--- a/test/units/modules/network/onyx/test_onyx_ptp_interface.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_ptp_interface
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxPtpInterface(TestOnyxModule):
-
- module = onyx_ptp_interface
- enabled = False
- interfaces = {'Eth1/1': ('ethernet', '1/1'), 'Vlan 1': ('vlan', '1')}
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxPtpInterface, self).setUp()
- self.mock_get_config = patch.object(
- onyx_ptp_interface.OnyxPtpInterfaceModule, "_show_ptp_interface_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxPtpInterface, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_show_ptp_interface.cfg'
- data = None
- if self.enabled:
- data = load_fixture(config_file)
-
- self.get_config.return_value = data
- self.load_config.return_value = None
-
- def test_ptp_disabled_no_change(self):
- for interface in self.interfaces:
- set_module_args(dict(state='disabled', name=interface))
- self.execute_module(changed=False)
-
- def test_ptp_disabled_with_change(self):
- self.enabled = True
- for interface in self.interfaces:
- set_module_args(dict(state='disabled', name=interface))
- interface_type, interface_id = self.interfaces.get(interface)
- commands = ['no interface %s %s ptp enable' % (interface_type, interface_id)]
- self.execute_module(changed=True, commands=commands)
-
- def test_ptp_enabled_no_change(self):
- self.enabled = True
- for interface in self.interfaces:
- set_module_args(dict(state='enabled', name=interface))
- self.execute_module(changed=False)
-
- def test_ptp_enabled_with_change(self):
- for interface in self.interfaces:
- set_module_args(dict(state='disabled', name=interface))
- interface_type, interface_id = self.interfaces.get(interface)
- set_module_args(dict(state='enabled', name=interface))
- commands = ['interface %s %s ptp enable' % (interface_type, interface_id)]
- self.execute_module(changed=True, commands=commands)
-
- def test_ptp_attributs_no_change(self):
- self.enabled = True
- for interface in self.interfaces:
- set_module_args(dict(state='enabled', name=interface, delay_request=0,
- announce_interval=-2, announce_timeout=3,
- sync_interval=-3))
- self.execute_module(changed=False)
-
- def test_ptp_attributs_with_change(self):
- self.enabled = True
- for interface in self.interfaces:
- set_module_args(dict(state='enabled', name=interface, delay_request=2,
- announce_interval=-1, announce_timeout=5, sync_interval=-1))
- interface_type, interface_id = self.interfaces.get(interface)
- commands = ['interface %s %s ptp delay-req interval 2' % (interface_type, interface_id),
- 'interface %s %s ptp announce interval -1' % (interface_type, interface_id),
- 'interface %s %s ptp announce timeout 5' % (interface_type, interface_id),
- 'interface %s %s ptp sync interval -1' % (interface_type, interface_id)]
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_qos.py b/test/units/modules/network/onyx/test_onyx_qos.py
deleted file mode 100644
index 7d578cec49..0000000000
--- a/test/units/modules/network/onyx/test_onyx_qos.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_qos
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxQosModule(TestOnyxModule):
-
- module = onyx_qos
-
- def setUp(self):
- super(TestOnyxQosModule, self).setUp()
- self.mock_get_if_qos_config = patch.object(
- onyx_qos.OnyxQosModule, "_show_interface_qos")
- self.get_if_qos_config = self.mock_get_if_qos_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxQosModule, self).tearDown()
- self.mock_get_if_qos_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- qos_interface_ethernet_config_file = 'show_qos_interface_ethernet.cfg'
- qos_interface_ethernet_data = load_fixture(qos_interface_ethernet_config_file)
- self.get_if_qos_config.return_value = qos_interface_ethernet_data
- self.load_config.return_value = None
-
- def test_qos_interface_ethernet_no_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], trust="both", rewrite_pcp="enabled",
- rewrite_dscp="disabled"))
- self.execute_module(changed=False)
-
- def test_qos_interface_ethernet_with_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], trust="L2", rewrite_pcp="disabled",
- rewrite_dscp="enabled"))
- commands = ["interface ethernet 1/1 no qos rewrite pcp",
- "interface ethernet 1/1 qos trust L2",
- "interface ethernet 1/1 qos rewrite dscp"
- ]
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_snmp.py b/test/units/modules/network/onyx/test_onyx_snmp.py
deleted file mode 100644
index bcc9e2f4fa..0000000000
--- a/test/units/modules/network/onyx/test_onyx_snmp.py
+++ /dev/null
@@ -1,150 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_snmp
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxSNMPModule(TestOnyxModule):
-
- module = onyx_snmp
- enabled = False
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxSNMPModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_snmp.OnyxSNMPModule, "_show_snmp_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxSNMPModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_snmp_show.cfg'
- data = load_fixture(config_file)
- self.get_config.return_value = data
- self.load_config.return_value = None
-
- def test_snmp_state_no_change(self):
- set_module_args(dict(state_enabled=True))
- self.execute_module(changed=False)
-
- def test_snmp_state_with_change(self):
- set_module_args(dict(state_enabled=False))
- commands = ['no snmp-server enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_contact_no_change(self):
- set_module_args(dict(contact_name='sara'))
- self.execute_module(changed=False)
-
- def test_snmp_contact_with_change(self):
- set_module_args(dict(contact_name='Omar'))
- commands = ['snmp-server contact Omar']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_location_no_change(self):
- set_module_args(dict(location='Jordan'))
- self.execute_module(changed=False)
-
- def test_snmp_location_with_change(self):
- set_module_args(dict(location='London'))
- commands = ['snmp-server location London']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_communities_state_no_change(self):
- set_module_args(dict(communities_enabled=True))
- self.execute_module(changed=False)
-
- def test_snmp_communities_state_with_change(self):
- set_module_args(dict(communities_enabled=False))
- commands = ['no snmp-server enable communities']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_multi_communities_state_with_no_change(self):
- set_module_args(dict(multi_communities_enabled=True))
- self.execute_module(changed=False)
-
- def test_snmp_multi_communities_state_with_change(self):
- set_module_args(dict(multi_communities_enabled=False))
- commands = ['no snmp-server enable mult-communities']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_communities_no_change(self):
- set_module_args(dict(snmp_communities=[dict(community_name='community_2',
- community_type='read-write')]))
- self.execute_module(changed=False)
-
- def test_snmp_communities_with_change(self):
- set_module_args(dict(snmp_communities=[dict(community_name='community_2',
- community_type='read-only')]))
- commands = ['snmp-server community community_2 ro']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_communities_delete_with_change(self):
- set_module_args(dict(snmp_communities=[dict(community_name='community_1',
- state='absent')]))
- commands = ['no snmp-server community community_1']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_notify_state_no_change(self):
- set_module_args(dict(notify_enabled=True))
- self.execute_module(changed=False)
-
- def test_snmp_notify_state_with_change(self):
- set_module_args(dict(notify_enabled=False))
- commands = ['no snmp-server enable notify']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_notify_port_no_change(self):
- set_module_args(dict(notify_port='1'))
- self.execute_module(changed=False)
-
- def test_snmp_notify_port_with_change(self):
- set_module_args(dict(notify_port='2'))
- commands = ['snmp-server notify port 2']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_notify_community_no_change(self):
- set_module_args(dict(notify_community='community_1'))
- self.execute_module(changed=False)
-
- def test_snmp_notify_community_with_change(self):
- set_module_args(dict(notify_community='community_2'))
- commands = ['snmp-server notify community community_2']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_notify_send_test_with_change(self):
- set_module_args(dict(notify_send_test='yes'))
- commands = ['snmp-server notify send-test']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_notify_event_with_change(self):
- set_module_args(dict(notify_event='interface-up'))
- commands = ['snmp-server notify event interface-up']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_permissions_with_change(self):
- set_module_args(dict(snmp_permissions=[dict(state_enabled=True,
- permission_type='RFC1213-MIB')]))
- commands = ['snmp-server enable set-permission RFC1213-MIB']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_engine_id_reset_with_change(self):
- set_module_args(dict(engine_id_reset='yes'))
- commands = ['snmp-server engineID reset']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_snmp_hosts.py b/test/units/modules/network/onyx/test_onyx_snmp_hosts.py
deleted file mode 100644
index 85bba27724..0000000000
--- a/test/units/modules/network/onyx/test_onyx_snmp_hosts.py
+++ /dev/null
@@ -1,170 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_snmp_hosts
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxSNMPHostsModule(TestOnyxModule):
-
- module = onyx_snmp_hosts
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxSNMPHostsModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_snmp_hosts.OnyxSNMPHostsModule, "_show_hosts_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxSNMPHostsModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_show_snmp_hosts.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_snmp_host_enabled_state_no_change(self):
- set_module_args(dict(hosts=[dict(name='1.1.1.1',
- enabled=True)]))
- self.execute_module(changed=False)
-
- def test_snmp_host_enabled_state_with_change(self):
- set_module_args(dict(hosts=[dict(name='1.1.1.1',
- enabled=False)]))
- commands = ['snmp-server host 1.1.1.1 disable']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_host_notification_type_no_change(self):
- set_module_args(dict(hosts=[dict(name='2.2.2.2',
- notification_type='trap',
- version='2c',
- port='5')]))
- self.execute_module(changed=False)
-
- def test_snmp_host_notification_type_with_change(self):
- set_module_args(dict(hosts=[dict(name='2.2.2.2',
- notification_type='inform',
- version='2c',
- port='5')]))
- commands = ['snmp-server host 2.2.2.2 informs port 5 version 2c']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_host_version_no_change(self):
- set_module_args(dict(hosts=[dict(name='2.2.2.2',
- notification_type='trap',
- version='2c',
- port='5')]))
- self.execute_module(changed=False)
-
- def test_snmp_host_version_with_change(self):
- set_module_args(dict(hosts=[dict(name='2.2.2.2',
- notification_type='trap',
- version='1',
- port='5')]))
- commands = ['snmp-server host 2.2.2.2 traps port 5 version 1']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_host_port_no_change(self):
- set_module_args(dict(hosts=[dict(name='2.2.2.2',
- notification_type='trap',
- version='2c',
- port='5')]))
- self.execute_module(changed=False)
-
- def test_snmp_host_port_with_change(self):
- set_module_args(dict(hosts=[dict(name='2.2.2.2',
- notification_type='trap',
- version='2c',
- port='3')]))
- commands = ['snmp-server host 2.2.2.2 traps port 3 version 2c']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_host_user_name_no_change(self):
- set_module_args(dict(hosts=[dict(name='1.1.1.1',
- notification_type='inform',
- version='3',
- port='3',
- user_name='sara',
- auth_type='md5',
- auth_password='sara123saea1234678')]))
- self.execute_module(changed=False)
-
- def test_snmp_host_user_name_with_change(self):
- set_module_args(dict(hosts=[dict(name='1.1.1.1',
- notification_type='inform',
- version='3',
- port='3',
- user_name='masa',
- auth_type='md5',
- auth_password='sara123saea1234678')]))
- commands = ['snmp-server host 1.1.1.1 informs port 3 version 3 user masa auth md5 sara123saea1234678']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_host_auth_type_no_change(self):
- set_module_args(dict(hosts=[dict(name='1.1.1.1',
- notification_type='inform',
- version='3',
- port='3',
- user_name='sara',
- auth_type='md5',
- auth_password='sara123saea1234678')]))
- self.execute_module(changed=False)
-
- def test_snmp_host_auth_type_with_change(self):
- set_module_args(dict(hosts=[dict(name='1.1.1.1',
- notification_type='inform',
- version='3',
- port='3',
- user_name='sara',
- auth_type='sha',
- auth_password='sara123saea1234678')]))
- commands = ['snmp-server host 1.1.1.1 informs port 3 version 3 user sara auth sha sara123saea1234678']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_host_privacy_type_no_change(self):
- set_module_args(dict(hosts=[dict(name='1.1.1.1',
- notification_type='inform',
- version='3',
- port='3',
- user_name='sara',
- auth_type='md5',
- auth_password='sara123saea1234678',
- privacy_type='3des',
- privacy_password='pjqriuewjhksjmdoiws')]))
- self.execute_module(changed=False)
-
- def test_snmp_host_privacy_type_with_change(self):
- set_module_args(dict(hosts=[dict(name='1.1.1.1',
- notification_type='inform',
- version='3',
- port='3',
- user_name='sara',
- auth_type='md5',
- auth_password='sara123saea1234678',
- privacy_type='aes-192',
- privacy_password='pjqriuewjhksjmdoiws')]))
- commands = ['snmp-server host 1.1.1.1 informs port 3 version 3 user sara auth md5 sara123saea1234678 priv aes-192 pjqriuewjhksjmdoiws']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_host_state_with_change(self):
- set_module_args(dict(hosts=[dict(name='2.2.2.2',
- notification_type='trap',
- version='2c',
- port='5',
- state='absent')]))
- commands = ['no snmp-server host 2.2.2.2']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_snmp_users.py b/test/units/modules/network/onyx/test_onyx_snmp_users.py
deleted file mode 100644
index cc4176cd49..0000000000
--- a/test/units/modules/network/onyx/test_onyx_snmp_users.py
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_snmp_users
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxSNMPUsersModule(TestOnyxModule):
-
- module = onyx_snmp_users
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxSNMPUsersModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_snmp_users.OnyxSNMPUsersModule, "_show_users")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxSNMPUsersModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_show_snmp_users.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_snmp_user_state_no_change(self):
- set_module_args(dict(users=[dict(name='sara',
- enabled='true')]))
- self.execute_module(changed=False)
-
- def test_snmp_user_state_with_change(self):
- set_module_args(dict(users=[dict(name='sara',
- enabled='false')]))
- commands = ['no snmp-server user sara v3 enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_user_set_access_state_no_change(self):
- set_module_args(dict(users=[dict(name='sara',
- set_access_enabled='true')]))
- self.execute_module(changed=False)
-
- def test_snmp_user_set_access_state_with_change(self):
- set_module_args(dict(users=[dict(name='sara',
- set_access_enabled='false')]))
- commands = ['no snmp-server user sara v3 enable sets']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_user_require_privacy_state_no_change(self):
- set_module_args(dict(users=[dict(name='sara',
- require_privacy='false')]))
- self.execute_module(changed=False)
-
- def test_snmp_user_require_privacy_state_with_change(self):
- set_module_args(dict(users=[dict(name='sara',
- require_privacy='yes')]))
- commands = ['snmp-server user sara v3 require-privacy']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_user_auth_type_no_change(self):
- set_module_args(dict(users=[dict(name='sara',
- auth_type='sha',
- auth_password='12sara123456')]))
- self.execute_module(changed=False)
-
- def test_snmp_user_auth_type_with_change(self):
- set_module_args(dict(users=[dict(name='sara',
- auth_type='md5',
- auth_password='12sara123456')]))
- commands = ['snmp-server user sara v3 auth md5 12sara123456']
- self.execute_module(changed=True, commands=commands)
-
- def test_snmp_user_capability_level_no_change(self):
- set_module_args(dict(users=[dict(name='sara',
- capability_level='admin')]))
- self.execute_module(changed=False)
-
- def test_snmp_user_capability_level_with_change(self):
- set_module_args(dict(users=[dict(name='sara',
- capability_level='monitor')]))
- commands = ['snmp-server user sara v3 capability monitor']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_syslog_files.py b/test/units/modules/network/onyx/test_onyx_syslog_files.py
deleted file mode 100644
index 9307de55cf..0000000000
--- a/test/units/modules/network/onyx/test_onyx_syslog_files.py
+++ /dev/null
@@ -1,113 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_syslog_files
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxSyslogFilesModule(TestOnyxModule):
-
- module = onyx_syslog_files
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxSyslogFilesModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_syslog_files.OnyxSyslogFilesModule, "show_logging")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxSyslogFilesModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_logging_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_syslog_files_force_rotate(self):
- set_module_args(dict(rotation=dict(force=True)))
- commands = ["logging files rotation force"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_files_max_num(self):
- set_module_args(dict(rotation=dict(max_num=30)))
- commands = ["logging files rotation max-num 30"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_files_freq(self):
- set_module_args(dict(rotation=dict(frequency="daily")))
- commands = ["logging files rotation criteria frequency daily"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_files_size(self):
- set_module_args(dict(rotation=dict(size=10.5)))
- commands = ["logging files rotation criteria size 10.5"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_files_delete(self):
- set_module_args(dict(delete_group="oldest"))
- commands = ["logging files delete oldest"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_debug_files_force_rotate(self):
- set_module_args(dict(rotation=dict(force=True), debug=True))
- commands = ["logging debug-files rotation force"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_debug_files_max_num(self):
- set_module_args(dict(rotation=dict(max_num=30), debug=True))
- commands = ["logging debug-files rotation max-num 30"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_debug_files_freq(self):
- set_module_args(dict(rotation=dict(frequency="weekly"), debug=True))
- commands = ["logging debug-files rotation criteria frequency weekly"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_debug_files_size(self):
- set_module_args(dict(rotation=dict(size=10.5), debug=True))
- commands = ["logging debug-files rotation criteria size 10.5"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_debug_files_delete(self):
- set_module_args(dict(delete_group="oldest", debug=True))
- commands = ["logging debug-files delete oldest"]
- self.execute_module(changed=True, commands=commands)
-
- ''' nochange '''
- def test_syslog_files_max_num_no_change(self):
- set_module_args(dict(rotation=dict(max_num=10)))
- self.execute_module(changed=False)
-
- def test_syslog_files_freq_no_change(self):
- set_module_args(dict(rotation=dict(frequency="weekly")))
- self.execute_module(changed=False)
-
- def test_syslog_files_size_no_change(self):
- set_module_args(dict(rotation=dict(size_pct=10)))
- self.execute_module(changed=False)
-
- def test_syslog_debug_files_max_num_no_change(self):
- set_module_args(dict(rotation=dict(max_num=20), debug=True))
- self.execute_module(changed=False)
-
- def test_syslog_debug_files_freq_no_change(self):
- set_module_args(dict(rotation=dict(frequency="daily"), debug=True))
- self.execute_module(changed=False)
-
- def test_syslog_debug_files_size_no_change(self):
- set_module_args(dict(rotation=dict(size=20), debug=True))
- self.execute_module(changed=False)
diff --git a/test/units/modules/network/onyx/test_onyx_syslog_remote.py b/test/units/modules/network/onyx/test_onyx_syslog_remote.py
deleted file mode 100644
index f5b9d5d72d..0000000000
--- a/test/units/modules/network/onyx/test_onyx_syslog_remote.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_syslog_remote
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxSysLogRemoteModule(TestOnyxModule):
-
- module = onyx_syslog_remote
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxSysLogRemoteModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_syslog_remote.OnyxSyslogRemoteModule, "show_logging")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxSysLogRemoteModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_logging_config_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_syslog_new_host(self):
- set_module_args(dict(host="10.10.20.20"))
- commands = ["logging 10.10.20.20"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_new_host_port(self):
- set_module_args(dict(host="10.10.20.20", port=8080))
- commands = ['logging 10.10.20.20', 'logging 10.10.20.20 port 8080']
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_override(self):
- set_module_args(dict(host="10.10.10.12", trap_override=[dict(override_class="sx-sdk", override_priority='emerg'),
- dict(override_class="mgmt-back", override_priority='emerg')]))
- commands = ["logging 10.10.10.12 trap override class mgmt-back priority emerg"] # no sx-sdk its already configured
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_trap(self):
- set_module_args(dict(host="10.10.10.10", trap="notice"))
- commands = ["logging 10.10.10.10 trap notice"]
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_include_filter(self):
- set_module_args(dict(host="10.10.10.10", filter="include", filter_str=".*ERR.*"))
- commands = ['logging 10.10.10.10 filter include .*ERR.*']
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_no_override(self):
- set_module_args(dict(host="10.10.10.12", trap_override=[dict(override_class="sx-sdk", override_enabled=False),
- dict(override_class="mgmt-front", override_enabled=False)]))
- commands = ['no logging 10.10.10.12 trap override class sx-sdk'] # no mgmt-front because doesn't configured
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_no_port(self):
- set_module_args(dict(host="10.10.10.12", enabled=False))
- commands = ['no logging 10.10.10.12']
- self.execute_module(changed=True, commands=commands)
-
- def test_syslog_filter_no_change(self):
- set_module_args(dict(host="10.10.10.10", filter="exclude", filter_str=".*ERR.*"))
- self.execute_module(changed=False)
-
- def test_syslog_trap_no_change(self):
- set_module_args(dict(host="10.10.10.10", trap="info"))
- self.execute_module(changed=False)
-
- def test_syslog_add_port_no_change(self):
- set_module_args(dict(host="10.10.10.12", port=80))
- self.execute_module(changed=False)
-
- def test_syslog_override_no_change(self):
- set_module_args(dict(host="10.10.10.12", trap_override=[dict(override_priority="emerg", override_class="sx-sdk")]))
- self.execute_module(changed=False)
diff --git a/test/units/modules/network/onyx/test_onyx_traffic_class.py b/test/units/modules/network/onyx/test_onyx_traffic_class.py
deleted file mode 100644
index d62feca137..0000000000
--- a/test/units/modules/network/onyx/test_onyx_traffic_class.py
+++ /dev/null
@@ -1,108 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_traffic_class
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxTrafficClassModule(TestOnyxModule):
-
- module = onyx_traffic_class
- arp_suppression = True
-
- def setUp(self):
- super(TestOnyxTrafficClassModule, self).setUp()
- self.mock_get_congestion_control_config = patch.object(
- onyx_traffic_class.OnyxTrafficClassModule, "_show_interface_congestion_control")
- self.get_congestion_control_config = self.mock_get_congestion_control_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_dcb_config = patch.object(
- onyx_traffic_class.OnyxTrafficClassModule, "_show_interface_dcb_ets")
- self.get_dcb_config = self.mock_get_dcb_config.start()
-
- def tearDown(self):
- super(TestOnyxTrafficClassModule, self).tearDown()
- self.mock_get_congestion_control_config.stop()
- self.mock_load_config.stop()
- self.mock_get_dcb_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- interfaces_congestion_control_config_file = 'onyx_show_interface_congestion_control.cfg'
- interfaces_dcb_config_file = 'onyx_show_dcb_ets_interface.cfg'
- interfaces_congestion_control_data = load_fixture(interfaces_congestion_control_config_file)
- interfaces_dcb_config_data = load_fixture(interfaces_dcb_config_file)
- self.get_congestion_control_config.return_value = interfaces_congestion_control_data
- self.get_dcb_config.return_value = interfaces_dcb_config_data
- self.load_config.return_value = None
-
- def test_configure_congestion_control_disabled_with_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], tc=1,
- congestion_control=dict(control="ecn", threshold_mode="absolute",
- min_threshold=500, max_threshold=1500)))
- commands = [
- "interface ethernet 1/1 traffic-class 1 congestion-control ecn minimum-absolute 500 maximum-absolute 1500"
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_configure_congestion_control_disabled_with_no_change(self):
- set_module_args(dict(state="disabled", interfaces=["Eth1/1"], tc=0))
-
- self.execute_module(changed=False)
-
- def test_configure_congestion_control_with_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], tc=2,
- congestion_control=dict(control="ecn", threshold_mode="relative",
- min_threshold=9, max_threshold=88)))
- commands = [
- "interface ethernet 1/1 traffic-class 2 congestion-control ecn minimum-relative 9 maximum-relative 88"
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_configure_congestion_control_absolute_with_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], tc=3,
- congestion_control=dict(control="ecn", threshold_mode="absolute",
- min_threshold=500, max_threshold=1500)))
- commands = [
- "interface ethernet 1/1 traffic-class 3 congestion-control ecn minimum-absolute 500 maximum-absolute 1500"
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_configure_congestion_control_with_no_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], tc=3,
- congestion_control=dict(control="ecn", threshold_mode="absolute",
- min_threshold=500, max_threshold=1550)))
- self.execute_module(changed=False)
-
- def test_configure_dcb_mode_with_no_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], tc=3, dcb=dict(mode="strict")))
- self.execute_module(changed=False)
-
- def test_configure_dcb_strict_mode_with_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], tc=1, dcb=dict(mode="strict")))
- commands = [
- "interface ethernet 1/1 traffic-class 1 dcb ets strict"
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_configure_dcb_wrr_mode_with_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], tc=0, dcb=dict(mode="wrr", weight=10)))
- commands = [
- "interface ethernet 1/1 traffic-class 0 dcb ets wrr 10"
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_configure_dcb_wrr_mode_with_no_change(self):
- set_module_args(dict(interfaces=["Eth1/1"], tc=0, dcb=dict(mode="wrr", weight=12)))
-
- self.execute_module(changed=False)
diff --git a/test/units/modules/network/onyx/test_onyx_username.py b/test/units/modules/network/onyx/test_onyx_username.py
deleted file mode 100644
index f40de66602..0000000000
--- a/test/units/modules/network/onyx/test_onyx_username.py
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_username
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxUsernameModule(TestOnyxModule):
-
- module = onyx_username
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxUsernameModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_username.OnyxUsernameModule, "_get_username_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxUsernameModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_username_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_new_username(self):
- set_module_args(dict(username='test'))
- commands = ['username test']
- self.execute_module(changed=True, commands=commands)
-
- def test_change_full_username(self):
- set_module_args(dict(username='anass', full_name="anasshami"))
- commands = ['username anass full-name anasshami']
- self.execute_module(changed=True, commands=commands)
-
- def test_change_username_password(self):
- set_module_args(dict(username='anass', password="12345"))
- commands = ['username anass password 12345']
- self.execute_module(changed=True, commands=commands)
-
- def test_change_username_password_encrypted(self):
- set_module_args(dict(username='anass', password="12345", encrypted_password=True))
- commands = ['username anass password 7 12345']
- self.execute_module(changed=True, commands=commands)
-
- def test_disable_username(self):
- set_module_args(dict(username='anass', disabled="all"))
- commands = ['username anass disable']
- self.execute_module(changed=True, commands=commands)
-
- def test_disable_username_login(self):
- set_module_args(dict(username='anass', disabled="login"))
- commands = ['username anass disable login']
- self.execute_module(changed=True, commands=commands)
-
- def test_disable_username_password(self):
- set_module_args(dict(username='anass', disabled="password"))
- commands = ['username anass disable password']
- self.execute_module(changed=True, commands=commands)
-
- def test_change_username_capability(self):
- set_module_args(dict(username='anass', capability="monitor"))
- commands = ['username anass capability monitor']
- self.execute_module(changed=True, commands=commands)
-
- def test_disconnect_username(self):
- set_module_args(dict(username='anass', disconnected=True))
- commands = ['username anass disconnect']
- self.execute_module(changed=True, commands=commands)
-
- def test_no_change_username_capability(self):
- set_module_args(dict(username='anass', capability="admin"))
- self.execute_module(changed=False)
-
- def test_no_change_username_disabled(self):
- set_module_args(dict(username='anassh', disabled="all"))
- self.execute_module(changed=False)
-
- def test_no_change_username_nopass(self):
- set_module_args(dict(username='admin', nopassword=True))
- self.execute_module(changed=False)
-
- def test_no_change_full_username(self):
- set_module_args(dict(username='admin', full_name="System Administrator"))
- self.execute_module(changed=False)
diff --git a/test/units/modules/network/onyx/test_onyx_vlan.py b/test/units/modules/network/onyx/test_onyx_vlan.py
deleted file mode 100644
index 9697444854..0000000000
--- a/test/units/modules/network/onyx/test_onyx_vlan.py
+++ /dev/null
@@ -1,106 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_vlan
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxVlanModule(TestOnyxModule):
-
- module = onyx_vlan
-
- def setUp(self):
- super(TestOnyxVlanModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_vlan.OnyxVlanModule, "_get_vlan_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_version = patch.object(
- onyx_vlan.OnyxVlanModule, "_get_os_version")
- self.get_version = self.mock_get_version.start()
-
- def tearDown(self):
- super(TestOnyxVlanModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_get_version.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_vlan_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
- self.get_version.return_value = "3.6.5000"
-
- def test_vlan_no_change(self):
- set_module_args(dict(vlan_id=20))
- self.execute_module(changed=False)
-
- def test_vlan_remove_name(self):
- set_module_args(dict(vlan_id=10, name=''))
- commands = ['vlan 10 no name']
- self.execute_module(changed=True, commands=commands)
-
- def test_vlan_change_name(self):
- set_module_args(dict(vlan_id=10, name='test-test'))
- commands = ['vlan 10 name test-test']
- self.execute_module(changed=True, commands=commands)
-
- def test_vlan_create(self):
- set_module_args(dict(vlan_id=30))
- commands = ['vlan 30', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_vlan_create_with_name(self):
- set_module_args(dict(vlan_id=30, name='test-test'))
- commands = ['vlan 30', 'exit', 'vlan 30 name test-test']
- self.execute_module(changed=True, commands=commands)
-
- def test_vlan_remove(self):
- set_module_args(dict(vlan_id=20, state='absent'))
- commands = ['no vlan 20']
- self.execute_module(changed=True, commands=commands)
-
- def test_vlan_remove_not_exist(self):
- set_module_args(dict(vlan_id=30, state='absent'))
- self.execute_module(changed=False)
-
- def test_vlan_aggregate(self):
- aggregate = list()
- aggregate.append(dict(vlan_id=30))
- aggregate.append(dict(vlan_id=20))
- set_module_args(dict(aggregate=aggregate))
- commands = ['vlan 30', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_vlan_aggregate_purge(self):
- aggregate = list()
- aggregate.append(dict(vlan_id=30))
- aggregate.append(dict(vlan_id=20))
- set_module_args(dict(aggregate=aggregate, purge=True))
- commands = ['vlan 30', 'exit', 'no vlan 10', 'no vlan 1']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_vxlan.py b/test/units/modules/network/onyx/test_onyx_vxlan.py
deleted file mode 100644
index 5800d0fda7..0000000000
--- a/test/units/modules/network/onyx/test_onyx_vxlan.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_vxlan
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxVxlanModule(TestOnyxModule):
-
- module = onyx_vxlan
- arp_suppression = True
-
- def setUp(self):
- super(TestOnyxVxlanModule, self).setUp()
- self.mock_get_vxlan_config = patch.object(
- onyx_vxlan.OnyxVxlanModule, "_show_vxlan_config")
- self.get_vxlan_config = self.mock_get_vxlan_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_get_nve_detail = patch.object(
- onyx_vxlan.OnyxVxlanModule, "_show_nve_detail")
- self.get_nve_detail = self.mock_get_nve_detail.start()
-
- def tearDown(self):
- super(TestOnyxVxlanModule, self).tearDown()
- self.mock_get_vxlan_config.stop()
- self.mock_load_config.stop()
- self.mock_get_nve_detail.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- interfaces_nve_config_file = 'onyx_show_interfaces_nve.cfg'
- interfaces_nve_detail_config_file = 'onyx_show_interfaces_nve_detail.cfg'
- self.get_nve_detail.return_value = None
- interfaces_nve_detail_data = load_fixture(interfaces_nve_detail_config_file)
- interfaces_nv_data = load_fixture(interfaces_nve_config_file)
- self.get_nve_detail.return_value = interfaces_nve_detail_data
- if self.arp_suppression is False:
- interfaces_nve_detail_data[0]["10"][0]["Neigh Suppression"] = "Disable"
- interfaces_nve_detail_data[0]["6"][0]["Neigh Suppression"] = "Disable"
- self.get_nve_detail.return_value = interfaces_nve_detail_data
- self.get_vxlan_config.return_value = interfaces_nv_data
-
- self.load_config.return_value = None
-
- def test_configure_vxlan_no_change(self):
- set_module_args(dict(nve_id=1, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.1',
- vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)],
- arp_suppression=True))
- self.execute_module(changed=False)
-
- def test_configure_vxlan_with_change(self):
- set_module_args(dict(nve_id=2, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.1',
- vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)],
- arp_suppression=True))
- commands = [
- "no interface nve 1", "interface nve 2", "exit",
- "interface nve 2 vxlan source interface loopback 1 ",
- "interface nve 2 nve controller bgp", "interface nve 2 vxlan mlag-tunnel-ip 192.10.10.1",
- "interface nve 2 nve neigh-suppression", "interface nve 2 nve vni 10010 vlan 10",
- "interface vlan 10", "exit", "interface nve 2 nve vni 10060 vlan 6", "interface vlan 6", "exit"
- ]
- self.execute_module(changed=True, commands=commands)
-
- def test_loopback_id_with_change(self):
- set_module_args(dict(nve_id=1, loopback_id=2, bgp=True, mlag_tunnel_ip='192.10.10.1',
- vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)],
- arp_suppression=True))
- commands = ["interface nve 1 vxlan source interface loopback 2 "]
- self.execute_module(changed=True, commands=commands)
-
- def test_mlag_tunnel_ip_with_change(self):
- set_module_args(dict(nve_id=1, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.10',
- vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)],
- arp_suppression=True))
- commands = ["interface nve 1 vxlan mlag-tunnel-ip 192.10.10.10"]
- self.execute_module(changed=True, commands=commands)
-
- def test_vni_vlan_list_with_change(self):
- set_module_args(dict(nve_id=1, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.1',
- vni_vlan_list=[dict(vlan_id=11, vni_id=10011), dict(vlan_id=7, vni_id=10061)],
- arp_suppression=False))
- commands = ["interface nve 1 nve vni 10011 vlan 11", "interface nve 1 nve vni 10061 vlan 7"]
- self.execute_module(changed=True, commands=commands)
-
- def test_arp_suppression_with_change(self):
- self.arp_suppression = False
- set_module_args(dict(nve_id=1, loopback_id=1, bgp=True, mlag_tunnel_ip='192.10.10.1',
- vni_vlan_list=[dict(vlan_id=10, vni_id=10010), dict(vlan_id=6, vni_id=10060)],
- arp_suppression=True))
- commands = ["interface vlan 10", "exit", "interface vlan 6", "exit"]
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/onyx/test_onyx_wjh.py b/test/units/modules/network/onyx/test_onyx_wjh.py
deleted file mode 100644
index e98c8841eb..0000000000
--- a/test/units/modules/network/onyx/test_onyx_wjh.py
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# Copyright: Ansible Project
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.onyx import onyx_wjh
-from units.modules.utils import set_module_args
-from .onyx_module import TestOnyxModule, load_fixture
-
-
-class TestOnyxWJHModule(TestOnyxModule):
-
- module = onyx_wjh
-
- def setUp(self):
- self.enabled = False
- super(TestOnyxWJHModule, self).setUp()
- self.mock_get_config = patch.object(
- onyx_wjh.OnyxWJHModule, "_get_wjh_config")
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch(
- 'ansible.module_utils.network.onyx.onyx.load_config')
- self.load_config = self.mock_load_config.start()
-
- def tearDown(self):
- super(TestOnyxWJHModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
-
- def load_fixtures(self, commands=None, transport='cli'):
- config_file = 'onyx_wjh_show.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_wjh_no_change(self):
- set_module_args(dict(group='forwarding', enabled=False))
- self.execute_module(changed=False)
-
- def test_wjh_enable(self):
- set_module_args(dict(group='forwarding', enabled=True))
- commands = ['what-just-happened forwarding enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_wjh_export_no_change(self):
- set_module_args(dict(export_group='forwarding', auto_export=False))
- self.execute_module(changed=False)
-
- def test_wjh_export_enable(self):
- set_module_args(dict(export_group='forwarding', auto_export=True))
- commands = ['what-just-happened auto-export forwarding enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_wjh_export_disable(self):
- set_module_args(dict(export_group='all', auto_export=False))
- commands = ['no what-just-happened auto-export all enable']
- self.execute_module(changed=True, commands=commands)
-
- def test_wjh_clear(self):
- set_module_args(dict(clear_group='all'))
- commands = ['clear what-just-happened pcap-files all']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/opx/fixtures/opx_get_config.cfg b/test/units/modules/network/opx/fixtures/opx_get_config.cfg
deleted file mode 100644
index 37db58272e..0000000000
--- a/test/units/modules/network/opx/fixtures/opx_get_config.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
- {
- "base-if-vlan/if/interfaces/interface/id": 105,
- "if/interfaces/interface/name": "br105",
- "dell-base-if-cmn/if/interfaces/interface/if-index": 74,
- "dell-if/if/interfaces/interface/learning-mode": 1,
- "dell-if/if/interfaces/interface/mtu": 1532,
- "dell-if/if/interfaces/interface/phys-address": "",
- "dell-if/if/interfaces/interface/vlan-type": 1,
- "if/interfaces/interface/enabled": 0
- }
diff --git a/test/units/modules/network/opx/fixtures/opx_operation_create.cfg b/test/units/modules/network/opx/fixtures/opx_operation_create.cfg
deleted file mode 100644
index cdecae6c19..0000000000
--- a/test/units/modules/network/opx/fixtures/opx_operation_create.cfg
+++ /dev/null
@@ -1,13 +0,0 @@
- {
- "data": {
- "base-if-vlan/if/interfaces/interface/id": 105,
- "cps/key_data": {
- "if/interfaces/interface/name": "br105"
- },
- "cps/object-group/return-code": 0,
- "dell-base-if-cmn/if/interfaces/interface/if-index": 70,
- "if/interfaces/interface/type": "ianaift:l2vlan"
- },
- "key": "target/dell-base-if-cmn/if/interfaces/interface"
- }
-
diff --git a/test/units/modules/network/opx/fixtures/opx_operation_delete.cfg b/test/units/modules/network/opx/fixtures/opx_operation_delete.cfg
deleted file mode 100644
index ba0ab2f97e..0000000000
--- a/test/units/modules/network/opx/fixtures/opx_operation_delete.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
- {
- "data": {
- "cps/object-group/return-code": 0,
- "if/interfaces/interface/name": "br105"
- },
- "key": "target/dell-base-if-cmn/if/interfaces/interface"
- }
-
diff --git a/test/units/modules/network/opx/fixtures/opx_operation_get.cfg b/test/units/modules/network/opx/fixtures/opx_operation_get.cfg
deleted file mode 100644
index 08593db156..0000000000
--- a/test/units/modules/network/opx/fixtures/opx_operation_get.cfg
+++ /dev/null
@@ -1,16 +0,0 @@
- {
- "data": {
- "base-if-vlan/if/interfaces/interface/id": 105,
- "cps/key_data": {
- "if/interfaces/interface/name": "br105"
- },
- "dell-base-if-cmn/if/interfaces/interface/if-index": 74,
- "dell-if/if/interfaces/interface/learning-mode": 1,
- "dell-if/if/interfaces/interface/mtu": 1532,
- "dell-if/if/interfaces/interface/phys-address": "",
- "dell-if/if/interfaces/interface/vlan-type": 1,
- "if/interfaces/interface/enabled": 0
- },
- "key": "target/dell-base-if-cmn/if/interfaces/interface"
- }
-
diff --git a/test/units/modules/network/opx/fixtures/opx_operation_get_db.cfg b/test/units/modules/network/opx/fixtures/opx_operation_get_db.cfg
deleted file mode 100644
index 1f2571a077..0000000000
--- a/test/units/modules/network/opx/fixtures/opx_operation_get_db.cfg
+++ /dev/null
@@ -1,25 +0,0 @@
- {
- "data": {
- "base-if-phy/if/interfaces/interface/learn-mode": 3,
- "base-if-phy/if/interfaces/interface/npu-id": 0,
- "base-if-phy/if/interfaces/interface/phy-media": 43,
- "base-if-phy/if/interfaces/interface/port-id": 25,
- "base-if-phy/if/interfaces/interface/tagging-mode": 3,
- "dell-base-if-cmn/if/interfaces/interface/if-index": 10,
- "dell-if/if/interfaces-state/interface/supported-speed": [
- 3,
- 4,
- 6
- ],
- "dell-if/if/interfaces/interface/auto-negotiation": 1,
- "dell-if/if/interfaces/interface/duplex": 1,
- "dell-if/if/interfaces/interface/mode": 1,
- "dell-if/if/interfaces/interface/mtu": 1532,
- "dell-if/if/interfaces/interface/phys-address": "ec:f4:bb:fc:61:9a",
- "dell-if/if/interfaces/interface/speed": 0,
- "if/interfaces/interface/enabled": 0,
- "if/interfaces/interface/name": "e101-001-0",
- "if/interfaces/interface/type": "ianaift:ethernetCsmacd"
- },
- "key": "target/dell-base-if-cmn/if/interfaces/interface"
-
diff --git a/test/units/modules/network/opx/fixtures/opx_operation_set.cfg b/test/units/modules/network/opx/fixtures/opx_operation_set.cfg
deleted file mode 100644
index 99c0354cf7..0000000000
--- a/test/units/modules/network/opx/fixtures/opx_operation_set.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
- {
- "data": {
- "cps/object-group/return-code": 0,
- "dell-if/if/interfaces/interface/untagged-ports": [
- "e101-001-0"
- ],
- "if/interfaces/interface/name": "br105"
- },
- "key": "target/dell-base-if-cmn/if/interfaces/interface"
- }
-
diff --git a/test/units/modules/network/opx/opx_module.py b/test/units/modules/network/opx/opx_module.py
deleted file mode 100644
index 3741771f0e..0000000000
--- a/test/units/modules/network/opx/opx_module.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# (c) 2018 Red Hat Inc.
-#
-# (c) 2018 Dell Inc. or its subsidiaries. All Rights Reserved.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestOpxModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False,
- response=None, msg=None, db=None,
- commit_event=None):
-
- self.load_fixtures(response)
-
- if failed:
- result = self.failed(msg)
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed, db)
- self.assertEqual(result['changed'], changed, result)
-
- return result
-
- def failed(self, msg):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- self.assertEqual(result['msg'], msg, result)
- return result
-
- def changed(self, changed=False, db=None):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- print("res" + str(result) + "dv=" + str(db) + "ch=" + str(changed))
- self.assertEqual(result['changed'], changed, result)
- if db:
- self.assertEqual(result['db'], db, result)
-
- return result
-
- def load_fixtures(self, response=None):
- pass
diff --git a/test/units/modules/network/opx/test_opx_cps.py b/test/units/modules/network/opx/test_opx_cps.py
deleted file mode 100644
index d22850301b..0000000000
--- a/test/units/modules/network/opx/test_opx_cps.py
+++ /dev/null
@@ -1,183 +0,0 @@
-#
-# (c) 2018 Red Hat Inc.
-#
-# (c) 2018 Dell Inc. or its subsidiaries. All Rights Reserved.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch, Mock
-import sys
-sys.modules['cps'] = Mock(QUALIFIERS=[
- "target",
- "observed",
- "proposed",
- "realtime",
- "registration",
- "running",
- "startup"
-], OPERATIONS=[
- "delete",
- "create",
- "set",
- "action",
- "get"
-])
-sys.modules['cps_object'] = Mock()
-sys.modules['cps_utils'] = Mock()
-
-from ansible.modules.network.opx import opx_cps
-
-from units.modules.utils import set_module_args
-from .opx_module import TestOpxModule, load_fixture
-
-
-class TestOpxCpsModule(TestOpxModule):
-
- module = opx_cps
-
- def setUp(self):
- super(TestOpxCpsModule, self).setUp()
-
- self.mock_cps_get = patch('ansible.modules.network.opx.opx_cps.cps_get')
- self.cps_get = self.mock_cps_get.start()
-
- self.mock_cps_transaction = patch('ansible.modules.network.opx.opx_cps.cps_transaction')
- self.cps_transaction = self.mock_cps_transaction.start()
-
- self.mock_parse_cps_parameters = patch('ansible.modules.network.opx.opx_cps.parse_cps_parameters')
- self.parse_cps_parameters = self.mock_parse_cps_parameters.start()
-
- self.mock_get_config = patch('ansible.modules.network.opx.opx_cps.cps_get.parse_cps_parameters')
- self.get_config = self.mock_get_config.start()
-
- def tearDown(self):
- super(TestOpxCpsModule, self).tearDown()
- self.mock_cps_get.stop()
- self.mock_cps_transaction.stop()
- self.mock_parse_cps_parameters.stop()
- self.mock_get_config.stop()
-
- def test_opx_operation_create(self):
- resp = load_fixture('opx_operation_create.cfg')
- attr_data = {"base-if-vlan/if/interfaces/interface/id": 105,
- "if/interfaces/interface/type": "ianaift:l2vlan"}
- module_name = "dell-base-if-cmn/if/interfaces/interface"
- set_module_args(dict(module_name=module_name, operation="create", attr_data=attr_data))
- self.get_config.return_value = dict()
- self.cps_transaction.return_value = dict(changed=True, response=resp)
- self.execute_module(changed=True, response=resp)
- self.assertEqual(self.parse_cps_parameters.call_count, 2)
- self.assertEqual(self.cps_transaction.call_count, 1)
-
- def test_opx_operation_set(self):
- resp = load_fixture('opx_operation_set.cfg')
- config_data = load_fixture('opx_get_config.cfg')
- attr_data = {"dell-if/if/interfaces/interface/untagged-ports": "e101-001-0",
- "if/interfaces/interface/name": "br105"}
- module_name = "dell-base-if-cmn/if/interfaces/interface"
- set_module_args(dict(module_name=module_name, operation="set", attr_data=attr_data))
- self.get_config.return_value = config_data
- self.cps_transaction.return_value = dict(changed=True, response=resp)
- self.execute_module(changed=True, response=resp)
- self.assertEqual(self.parse_cps_parameters.call_count, 2)
- self.assertEqual(self.cps_transaction.call_count, 1)
-
- def test_opx_operation_delete(self):
- resp = load_fixture('opx_operation_delete.cfg')
- config_data = load_fixture('opx_get_config.cfg')
- attr_data = {"if/interfaces/interface/name": "br105"}
- module_name = "dell-base-if-cmn/if/interfaces/interface"
- set_module_args(dict(module_name=module_name, operation="delete", attr_data=attr_data))
- self.get_config.return_value = config_data
- self.cps_transaction.return_value = dict(changed=True, response=resp)
- self.execute_module(changed=True, response=resp)
- self.assertEqual(self.parse_cps_parameters.call_count, 2)
- self.assertEqual(self.cps_transaction.call_count, 1)
-
- def test_opx_operation_delete_fail(self):
- resp = load_fixture('opx_operation_delete.cfg')
- attr_data = {"if/interfaces/interface/name": "br105"}
- module_name = "dell-base-if-cmn/if/interfaces/interface"
- set_module_args(dict(module_name=module_name, operation="delete", attr_data=attr_data))
- self.get_config.return_value = dict()
- self.execute_module(changed=False)
- self.assertEqual(self.parse_cps_parameters.call_count, 2)
- self.assertEqual(self.cps_transaction.call_count, 1)
-
- def test_opx_operation_get(self):
- resp = load_fixture('opx_operation_get.cfg')
- attr_data = {"if/interfaces/interface/type": "ianaift:l2vlan"}
- module_name = "dell-base-if-cmn/if/interfaces/interface"
- set_module_args(dict(module_name=module_name, operation="get", attr_data=attr_data))
- self.cps_get.return_value = dict(changed=True, response=resp)
- self.cps_transaction.return_value = None
- self.execute_module(changed=True, response=resp)
- self.assertEqual(self.parse_cps_parameters.call_count, 1)
- self.assertEqual(self.cps_get.call_count, 1)
- self.cps_transaction.assert_not_called()
-
- def test_opx_operation_set_fail(self):
- attr_data = {"dell-if/if/interfaces/interface/untagged-ports": "e101-001-0",
- "if/interfaces/interface/name": "br105"}
- exp_msg = "RuntimeError: Transaction error while set"
- module_name = "dell-base-if-cmn/if/interfaces/interface"
- set_module_args(dict(module_name=module_name, operation="set", attr_data=attr_data))
- self.get_config.return_value = dict()
- self.cps_transaction.side_effect = RuntimeError("Transaction error while set")
- self.execute_module(failed=True, msg=exp_msg)
- self.assertEqual(self.parse_cps_parameters.call_count, 2)
- self.assertEqual(self.cps_transaction.call_count, 1)
-
- def test_opx_operation_create_fail(self):
- attr_data = {"if/interfaces/interface/type": "ianaift:l2vlan"}
- config_data = load_fixture('opx_get_config.cfg')
- exp_msg = "RuntimeError: Transaction error while create"
- module_name = "dell-base-if-cmn/if/interfaces/interface"
- set_module_args(dict(module_name=module_name, operation="create", attr_data=attr_data))
- self.get_config.return_value = config_data
- self.cps_transaction.side_effect = RuntimeError("Transaction error while create")
- self.execute_module(failed=True, msg=exp_msg)
- self.assertEqual(self.parse_cps_parameters.call_count, 2)
- self.assertEqual(self.cps_transaction.call_count, 1)
-
- def test_opx_operation_get_db(self):
- resp = load_fixture('opx_operation_get_db.cfg')
- attr_data = {"if/interfaces/interface/name": "e101-001-0"}
- module_name = "dell-base-if-cmn/if/interfaces/interface"
- set_module_args(dict(module_name=module_name, operation="get", attr_data=attr_data, db=True))
- self.cps_get.return_value = dict(changed=True, response=resp)
- self.cps_transaction.return_value = None
- self.execute_module(changed=True, response=resp, db=True)
- self.assertEqual(self.parse_cps_parameters.call_count, 1)
- self.assertEqual(self.cps_get.call_count, 1)
- self.cps_transaction.assert_not_called()
-
- def test_opx_operation_set_commit_event(self):
- resp = load_fixture('opx_operation_set.cfg')
- config_data = load_fixture('opx_get_config.cfg')
- attr_data = {"dell-if/if/interfaces/interface/untagged-ports": "e101-001-0",
- "if/interfaces/interface/name": "br105"}
- module_name = "dell-base-if-cmn/if/interfaces/interface"
- set_module_args(dict(module_name=module_name, operation="set", attr_data=attr_data, commit_event=True))
- self.get_config.return_value = config_data
- self.cps_transaction.return_value = dict(changed=True, response=resp)
- self.execute_module(changed=True, response=resp, commit_event=True)
- self.assertEqual(self.parse_cps_parameters.call_count, 2)
- self.assertEqual(self.cps_transaction.call_count, 1)
diff --git a/test/units/modules/network/radware/ct.vm b/test/units/modules/network/radware/ct.vm
deleted file mode 100644
index 3e6acfe2a1..0000000000
--- a/test/units/modules/network/radware/ct.vm
+++ /dev/null
@@ -1,32 +0,0 @@
-##Copyright 2019 Radware
-##
-##Licensed under the Apache License, Version 2.0 (the "License");
-##you may not use this file except in compliance with the License.
-##You may obtain a copy of the License at
-##
-## http://www.apache.org/licenses/LICENSE-2.0
-##
-##Unless required by applicable law or agreed to in writing, software
-##distributed under the License is distributed on an "AS IS" BASIS,
-##WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-##See the License for the specific language governing permissions and
-##limitations under the License.
-
-#property('description', 'Ansible Test mock')
-
-#param($p1, 'int', 'in')
-#param($p2, 'int[]', 'out')
-
-#set($p2 = [])
-#set($start = 2)
-#set($end = 1024)
-#set($range = [$start..$end])
-
-#foreach($i in $range)
- #set($j = $adc.readBean('MOCK', $i))
- #if ($adc.isEmpty($j))
- #set($dummy = $p2.add($i))
- #if ($p2.size() == $p1)
- #break
- #end
-#end
diff --git a/test/units/modules/network/radware/test_vdirect_commit.py b/test/units/modules/network/radware/test_vdirect_commit.py
deleted file mode 100644
index 55a1bb2503..0000000000
--- a/test/units/modules/network/radware/test_vdirect_commit.py
+++ /dev/null
@@ -1,199 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright 2017 Radware LTD.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from units.compat.mock import patch, MagicMock
-
-from units.compat import unittest
-from units.compat.mock import patch
-
-BASE_PARAMS = {'vdirect_ip': None, 'vdirect_user': None, 'vdirect_password': None,
- 'vdirect_wait': None, 'vdirect_secondary_ip': None,
- 'vdirect_https_port': None, 'vdirect_http_port': None,
- 'vdirect_timeout': None, 'vdirect_use_ssl': None, 'validate_certs': None}
-
-COMMIT_PARAMS = {'devices': ['adc', 'defensepro', 'vx', 'appwall'], 'apply': True, 'save': True, 'sync': True}
-
-COMMIT_GET_DEVICE_200_RESULT = [200, '', '', {'type': 'AlteonPartitioned'}]
-COMMIT_GET_DEVICE_404_RESULT = [404, '', '', '']
-
-COMMIT_RESULT_200 = [200, '', '', '']
-COMMIT_RESULT_204 = [204, '', '', '']
-
-MODULE_RESULT = {"msg": "Requested actions were successfully performed on all devices.",
- "details": [{'device_name': 'adc', 'device_type': 'Adc',
- 'apply': 'succeeded', 'save': 'succeeded', 'sync': 'succeeded'},
- {'device_name': 'defensepro', 'device_type': 'DefensePro',
- 'commit': 'succeeded'},
- {'device_name': 'vx', 'device_type': 'Container',
- 'apply': 'succeeded', 'save': 'succeeded'},
- {'device_name': 'appwall', 'device_type': 'AppWall',
- 'commit': 'succeeded'}]}
-
-
-@patch('vdirect_client.rest_client.RestClient')
-class RestClient:
- def __init__(self, vdirect_ip=None, vdirect_user=None, vdirect_password=None, wait=None,
- secondary_vdirect_ip=None, https_port=None, http_port=None,
- timeout=None, https=None, strict_http_results=None,
- verify=None):
- pass
-
-
-class DeviceMock:
-
- def __init__(self, name, client):
- self.name = name
- self.client = client
- self.get_throw = False
- self.control_throw = False
- self.exception = Exception('exception message')
- self.control_result = COMMIT_RESULT_200
-
- def set_control_result(self, result):
- self.control_result = result
-
- def throw_exception(self, get_throw=False, control_throw=False):
- self.get_throw = get_throw
- self.control_throw = control_throw
-
- def get(self, name):
- if self.get_throw:
- raise self.exception # pylint: disable=E0702
- if name == self.name:
- return COMMIT_GET_DEVICE_200_RESULT
- else:
- return COMMIT_GET_DEVICE_404_RESULT
-
- def control_device(self, name, action):
- if self.control_throw:
- raise self.exception # pylint: disable=E0702
- return self.control_result
-
- def control(self, name, action):
- return self.control_device(name, action)
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.module_mock = MagicMock()
- self.module_mock.rest_client.RESP_STATUS = 0
- self.module_mock.rest_client.RESP_REASON = 1
- self.module_mock.rest_client.RESP_STR = 2
- self.module_mock.rest_client.RESP_DATA = 3
-
- def test_missing_parameter(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client.RestClient': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_commit
-
- try:
- params = BASE_PARAMS.copy()
- vdirect_commit.VdirectCommit(params)
- self.fail("KeyError was not thrown for missing parameter")
- except KeyError:
- assert True
-
- def test_validate_devices(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client.RestClient': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_commit
-
- BASE_PARAMS.update(COMMIT_PARAMS)
- vdirectcommit = vdirect_commit.VdirectCommit(BASE_PARAMS)
- vdirectcommit.client.adc = DeviceMock('adc', vdirectcommit.client)
- vdirectcommit.client.container = DeviceMock('vx', vdirectcommit.client)
- vdirectcommit.client.appWall = DeviceMock('appwall', vdirectcommit.client)
- vdirectcommit.client.defensePro = DeviceMock('defensepro', vdirectcommit.client)
-
- vdirectcommit._validate_devices()
- assert True
-
- vdirectcommit.client.adc.throw_exception(True)
- try:
- vdirectcommit._validate_devices()
- self.fail("CommitException was not thrown for device communication failure")
- except vdirect_commit.CommitException:
- assert True
-
- vdirectcommit.client.adc.throw_exception(False)
- vdirectcommit.client.defensePro.throw_exception(True)
- try:
- vdirectcommit._validate_devices()
- self.fail("CommitException was not thrown for device communication failure")
- except vdirect_commit.CommitException:
- assert True
-
- vdirectcommit.client.defensePro.throw_exception(False)
-
- vdirectcommit.client.adc.name = 'wrong'
- try:
- vdirectcommit._validate_devices()
- self.fail("MissingDeviceException was not thrown for missing device")
- except vdirect_commit.MissingDeviceException:
- assert True
-
- def test_commit(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client.RestClient': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_commit
-
- BASE_PARAMS.update(COMMIT_PARAMS)
- vdirectcommit = vdirect_commit.VdirectCommit(BASE_PARAMS)
- vdirectcommit.client.adc = DeviceMock('adc', vdirectcommit.client)
- vdirectcommit.client.container = DeviceMock('vx', vdirectcommit.client)
- vdirectcommit.client.appWall = DeviceMock('appwall', vdirectcommit.client)
- vdirectcommit.client.defensePro = DeviceMock('defensepro', vdirectcommit.client)
-
- res = vdirectcommit.commit()
- assert res == MODULE_RESULT
-
- vdirectcommit.sync = False
- for detail in MODULE_RESULT['details']:
- if 'sync' in detail:
- detail['sync'] = vdirect_commit.NOT_PERFORMED
- res = vdirectcommit.commit()
- assert res == MODULE_RESULT
-
- vdirectcommit.client.adc.control_result = COMMIT_RESULT_204
- vdirectcommit.client.adc.control_result[self.module_mock.rest_client.RESP_STATUS] = 500
- vdirectcommit.client.adc.control_result[self.module_mock.rest_client.RESP_STR] = 'Some Failure'
- MODULE_RESULT['msg'] = 'Failure occurred while performing requested actions on devices. See details'
- for detail in MODULE_RESULT['details']:
- if detail['device_name'] == 'adc':
- detail['apply'] = vdirect_commit.FAILED
- detail['failure_description'] = 'Some Failure'
- detail['save'] = vdirect_commit.NOT_PERFORMED
- detail['sync'] = vdirect_commit.NOT_PERFORMED
- res = vdirectcommit.commit()
- assert res == MODULE_RESULT
-
- vdirectcommit.client.adc.throw_exception(control_throw=True)
- for detail in MODULE_RESULT['details']:
- if detail['device_name'] == 'adc':
- detail['failure_description'] = 'Exception occurred while performing apply action. ' \
- 'Exception: exception message'
- res = vdirectcommit.commit()
- assert res == MODULE_RESULT
diff --git a/test/units/modules/network/radware/test_vdirect_file.py b/test/units/modules/network/radware/test_vdirect_file.py
deleted file mode 100644
index 65e2f25b1c..0000000000
--- a/test/units/modules/network/radware/test_vdirect_file.py
+++ /dev/null
@@ -1,241 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright 2017 Radware LTD.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-import os
-from mock import patch, MagicMock
-
-from units.compat import unittest
-from units.compat.mock import patch
-
-RESP_STATUS = 0
-RESP_REASON = 1
-RESP_STR = 2
-RESP_DATA = 3
-
-NONE_PARAMS = {'vdirect_ip': None, 'vdirect_user': None, 'vdirect_password': None,
- 'vdirect_wait': None, 'vdirect_secondary_ip': None,
- 'vdirect_https_port': None, 'vdirect_http_port': None,
- 'vdirect_timeout': None, 'vdirect_use_ssl': None, 'validate_certs': None}
-
-
-@patch('vdirect_client.rest_client.RestClient')
-class RestClient:
- def __init__(self, vdirect_ip=None, vdirect_user=None, vdirect_password=None, wait=None,
- secondary_vdirect_ip=None, https_port=None, http_port=None,
- timeout=None, https=None, strict_http_results=None,
- verify=None):
- pass
-
-
-@patch('vdirect_client.rest_client.Template')
-class Template:
- create_from_source_result = None
- upload_source_result = None
-
- def __init__(self, client):
- self.client = client
-
- @classmethod
- def set_create_from_source_result(cls, result):
- Template.create_from_source_result = result
-
- @classmethod
- def set_upload_source_result(cls, result):
- Template.upload_source_result = result
-
- def create_from_source(self, data, name=None, tenant=None, fail_if_invalid=False):
- return Template.create_from_source_result
-
- def upload_source(self, data, name=None, tenant=None, fail_if_invalid=False):
- return Template.upload_source_result
-
-
-@patch('vdirect_client.rest_client.WorkflowTemplate')
-class WorkflowTemplate:
- create_template_from_archive_result = None
- update_archive_result = None
-
- def __init__(self, client):
- self.client = client
-
- @classmethod
- def set_create_template_from_archive_result(cls, result):
- WorkflowTemplate.create_template_from_archive_result = result
-
- @classmethod
- def set_update_archive_result(cls, result):
- WorkflowTemplate.update_archive_result = result
-
- def create_template_from_archive(self, data, validate=False, fail_if_invalid=False, tenant=None):
- return WorkflowTemplate.create_template_from_archive_result
-
- def update_archive(self, data, workflow_template_name):
- return WorkflowTemplate.update_archive_result
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- pass
-
- def test_missing_parameter(self, *args):
- module_mock = MagicMock()
- with patch.dict('sys.modules', **{
- 'vdirect_client': module_mock,
- 'vdirect_client.rest_client': module_mock,
- }):
- from ansible.modules.network.radware import vdirect_file
-
- try:
- params = NONE_PARAMS.copy()
- del params['vdirect_ip']
- vdirect_file.VdirectFile(params)
- self.fail("KeyError was not thrown for missing parameter")
- except KeyError:
- assert True
-
- def test_wrong_file_extension(self, *args):
- module_mock = MagicMock()
- with patch.dict('sys.modules', **{
- 'vdirect_client': module_mock,
- 'vdirect_client.rest_client': module_mock,
- }):
- from ansible.modules.network.radware import vdirect_file
-
- module_mock.RESP_STATUS = 0
- file = vdirect_file.VdirectFile(NONE_PARAMS)
- result = file.upload("file.??")
- assert result == vdirect_file.WRONG_EXTENSION_ERROR
-
- def test_missing_file(self, *args):
- module_mock = MagicMock()
- with patch.dict('sys.modules', **{
- 'vdirect_client': module_mock,
- 'vdirect_client.rest_client': module_mock,
- }):
- from ansible.modules.network.radware import vdirect_file
-
- file = vdirect_file.VdirectFile(NONE_PARAMS)
- try:
- file.upload("missing_file.vm")
- self.fail("IOException was not thrown for missing file")
- except IOError:
- assert True
-
- def test_template_upload_create(self, *args):
- module_mock = MagicMock()
- with patch.dict('sys.modules', **{
- 'vdirect_client': module_mock,
- 'vdirect_client.rest_client': module_mock,
- }):
- from ansible.modules.network.radware import vdirect_file
- vdirect_file.rest_client.RESP_STATUS = 0
- vdirect_file.rest_client.Template = Template
-
- file = vdirect_file.VdirectFile(NONE_PARAMS)
- path = os.path.dirname(os.path.abspath(__file__))
-
- Template.set_create_from_source_result([201])
- result = file.upload(os.path.join(path, "ct.vm"))
- self.assertEqual(result, vdirect_file.CONFIGURATION_TEMPLATE_CREATED_SUCCESS,
- 'Unexpected result received:' + repr(result))
-
- Template.set_create_from_source_result([400, "", "Parsing error", ""])
- try:
- result = file.upload(os.path.join(path, "ct.vm"))
- self.fail("InvalidSourceException was not thrown")
- except vdirect_file.InvalidSourceException:
- assert True
-
- def test_template_upload_update(self, *args):
- module_mock = MagicMock()
- with patch.dict('sys.modules', **{
- 'vdirect_client': module_mock,
- 'vdirect_client.rest_client': module_mock,
- }):
- from ansible.modules.network.radware import vdirect_file
- vdirect_file.rest_client.RESP_STATUS = 0
- vdirect_file.rest_client.Template = Template
-
- file = vdirect_file.VdirectFile(NONE_PARAMS)
- path = os.path.dirname(os.path.abspath(__file__))
-
- Template.set_create_from_source_result([409])
- Template.set_upload_source_result([201])
- result = file.upload(os.path.join(path, "ct.vm"))
- self.assertEqual(result, vdirect_file.CONFIGURATION_TEMPLATE_UPDATED_SUCCESS,
- 'Unexpected result received:' + repr(result))
-
- Template.set_upload_source_result([400, "", "Parsing error", ""])
- try:
- result = file.upload(os.path.join(path, "ct.vm"))
- self.fail("InvalidSourceException was not thrown")
- except vdirect_file.InvalidSourceException:
- assert True
-
- def test_workflow_upload_create(self, *args):
- module_mock = MagicMock()
- with patch.dict('sys.modules', **{
- 'vdirect_client': module_mock,
- 'vdirect_client.rest_client': module_mock,
- }):
- from ansible.modules.network.radware import vdirect_file
- vdirect_file.rest_client.RESP_STATUS = 0
- vdirect_file.rest_client.WorkflowTemplate = WorkflowTemplate
-
- file = vdirect_file.VdirectFile(NONE_PARAMS)
- path = os.path.dirname(os.path.abspath(__file__))
-
- WorkflowTemplate.set_create_template_from_archive_result([201])
- result = file.upload(os.path.join(path, "wt.zip"))
- self.assertEqual(result, vdirect_file.WORKFLOW_TEMPLATE_CREATED_SUCCESS,
- 'Unexpected result received:' + repr(result))
-
- WorkflowTemplate.set_create_template_from_archive_result([400, "", "Parsing error", ""])
- try:
- result = file.upload(os.path.join(path, "wt.zip"))
- self.fail("InvalidSourceException was not thrown")
- except vdirect_file.InvalidSourceException:
- assert True
-
- def test_workflow_upload_update(self, *args):
- module_mock = MagicMock()
- with patch.dict('sys.modules', **{
- 'vdirect_client': module_mock,
- 'vdirect_client.rest_client': module_mock,
- }):
- from ansible.modules.network.radware import vdirect_file
- vdirect_file.rest_client.RESP_STATUS = 0
- vdirect_file.rest_client.WorkflowTemplate = WorkflowTemplate
-
- file = vdirect_file.VdirectFile(NONE_PARAMS)
- path = os.path.dirname(os.path.abspath(__file__))
-
- WorkflowTemplate.set_create_template_from_archive_result([409])
- WorkflowTemplate.set_update_archive_result([201])
- result = file.upload(os.path.join(path, "wt.zip"))
- self.assertEqual(result, vdirect_file.WORKFLOW_TEMPLATE_UPDATED_SUCCESS,
- 'Unexpected result received:' + repr(result))
-
- WorkflowTemplate.set_update_archive_result([400, "", "Parsing error", ""])
- try:
- result = file.upload(os.path.join(path, "wt.zip"))
- self.fail("InvalidSourceException was not thrown")
- except vdirect_file.InvalidSourceException:
- assert True
diff --git a/test/units/modules/network/radware/test_vdirect_runnable.py b/test/units/modules/network/radware/test_vdirect_runnable.py
deleted file mode 100644
index 394d223671..0000000000
--- a/test/units/modules/network/radware/test_vdirect_runnable.py
+++ /dev/null
@@ -1,435 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright 2017 Radware LTD.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from units.compat.mock import patch, MagicMock
-
-from units.compat import unittest
-from units.compat.mock import patch
-
-BASE_PARAMS = {'vdirect_ip': None, 'vdirect_user': None, 'vdirect_password': None,
- 'vdirect_wait': None, 'vdirect_secondary_ip': None,
- 'vdirect_https_port': None, 'vdirect_http_port': None,
- 'vdirect_timeout': None, 'vdirect_use_ssl': None, 'validate_certs': None}
-
-CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS = {
- 'runnable_type': 'ConfigurationTemplate', 'runnable_name': 'runnable',
- 'action_name': None, 'parameters': None}
-
-WORKFLOW_TEMPLATE_RUNNABLE_PARAMS = {
- 'runnable_type': 'WorkflowTemplate', 'runnable_name': 'runnable',
- 'action_name': None, 'parameters': None}
-
-WORKFLOW_RUNNABLE_PARAMS = {
- 'runnable_type': 'Workflow', 'runnable_name': 'runnable',
- 'action_name': 'one', 'parameters': None}
-
-PLUGIN_RUNNABLE_PARAMS = {
- 'runnable_type': 'Plugin', 'runnable_name': 'runnable',
- 'action_name': 'two', 'parameters': None}
-
-
-WORKFLOW_RUNNABLE_OBJECT_RESULT = [200, '', '', {'names': ['runnable']}]
-ACTIONS_RESULT = [200, '', '', {'names': ['one', 'two']}]
-
-
-ACTIONS_PARAMS_RESULT_BASIC = [200, '', '',
- {'parameters': [
- {'name': 'pin', 'type': 'in', 'direction': 'in'},
- {'name': 'pout', 'type': 'out', 'direction': 'out'},
- {'name': 'alteon', 'type': 'alteon'}
- ]}]
-ACTIONS_PARAMS_RESULT_FULL = [200, '', '',
- {'parameters': [
- {'name': 'pin', 'type': 'in', 'direction': 'in'},
- {'name': 'pout', 'type': 'out', 'direction': 'out'},
- {'name': 'alteon', 'type': 'alteon'},
- {'name': 'alteon_array', 'type': 'alteon[]'},
- {'name': 'dp', 'type': 'defensePro'},
- {'name': 'dp_array', 'type': 'defensePro[]'},
- {'name': 'appWall', 'type': 'appWall'},
- {'name': 'appWall_array', 'type': 'appWall[]'}
- ]}]
-
-RUN_RESULT = [200, '', '', {
- "uri": "https://10.11.12.13:2189/api/status?token=Workflow%5Ca%5Capply%5Cc4b533a8-8764-4cbf-a19c-63b11b9ccc09",
- "targetUri": "https://10.11.12.13:2189/api/workflow/a",
- "complete": True, "status": 200, "success": True, "messages": [], "action": "apply", "parameters": {},
-}]
-
-MODULE_RESULT = {"msg": "Configuration template run completed."}
-
-
-@patch('vdirect_client.rest_client.RestClient')
-class RestClient:
- def __init__(self, vdirect_ip=None, vdirect_user=None, vdirect_password=None, wait=None,
- secondary_vdirect_ip=None, https_port=None, http_port=None,
- timeout=None, https=None, strict_http_results=None,
- verify=None):
- pass
-
-
-@patch('vdirect_client.rest_client.Runnable')
-class Runnable:
- runnable_objects_result = None
- available_actions_result = None
- action_info_result = None
- run_result = None
-
- def __init__(self, client):
- self.client = client
-
- @classmethod
- def set_runnable_objects_result(cls, result):
- Runnable.runnable_objects_result = result
-
- @classmethod
- def set_available_actions_result(cls, result):
- Runnable.available_actions_result = result
-
- @classmethod
- def set_action_info_result(cls, result):
- Runnable.action_info_result = result
-
- @classmethod
- def set_run_result(cls, result):
- Runnable.run_result = result
-
- def get_runnable_objects(self, type):
- return Runnable.runnable_objects_result
-
- def get_available_actions(self, type=None, name=None):
- return Runnable.available_actions_result
-
- def get_action_info(self, type, name, action_name):
- return Runnable.action_info_result
-
- def run(self, data, type, name, action_name):
- return Runnable.run_result
-
-
-@patch('vdirect_client.rest_client.Catalog')
-class Catalog:
- _404 = False
-
- def __init__(self, client):
- self.client = client
-
- @classmethod
- def set_catalog_item_200(cls):
- Catalog._404 = False
-
- @classmethod
- def set_catalog_item_404(cls):
- Catalog._404 = True
-
- @classmethod
- def get_catalog_item(cls, type=None, name=None):
- if Catalog._404:
- from ansible.modules.network.radware import vdirect_runnable
- raise vdirect_runnable.MissingRunnableException(name)
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.module_mock = MagicMock()
- self.module_mock.rest_client.RESP_STATUS = 0
- self.module_mock.rest_client.RESP_REASON = 1
- self.module_mock.rest_client.RESP_STR = 2
- self.module_mock.rest_client.RESP_DATA = 3
-
- def test_missing_parameter(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- try:
- params = BASE_PARAMS.copy()
- vdirect_runnable.VdirectRunnable(params)
- self.fail("KeyError was not thrown for missing parameter")
- except KeyError:
- assert True
-
- def test_validate_configuration_template_exists(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Catalog.set_catalog_item_200()
- BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS)
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client)
- vdirectRunnable._validate_runnable_exists()
- assert True
-
- def test_validate_workflow_template_exists(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Catalog.set_catalog_item_200()
- BASE_PARAMS.update(WORKFLOW_TEMPLATE_RUNNABLE_PARAMS)
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client)
- vdirectRunnable._validate_runnable_exists()
- assert True
-
- def test_validate_workflow_exists(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Catalog.set_catalog_item_200()
- BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS)
- Runnable.set_runnable_objects_result(WORKFLOW_RUNNABLE_OBJECT_RESULT)
- BASE_PARAMS.update(WORKFLOW_RUNNABLE_PARAMS)
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client)
- vdirectRunnable._validate_runnable_exists()
- assert True
-
- def test_validate_plugin_exists(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Runnable.set_runnable_objects_result(WORKFLOW_RUNNABLE_OBJECT_RESULT)
- BASE_PARAMS.update(WORKFLOW_RUNNABLE_PARAMS)
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client)
- vdirectRunnable._validate_runnable_exists()
- assert True
-
- BASE_PARAMS['runnable_name'] = 'missing'
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client)
- try:
- vdirectRunnable._validate_runnable_exists()
- self.fail("MissingRunnableException was not thrown for missing runnable name")
- except vdirect_runnable.MissingRunnableException:
- assert True
-
- def test_validate_configuration_template_action_name(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Catalog.set_catalog_item_200()
- BASE_PARAMS.update(PLUGIN_RUNNABLE_PARAMS)
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- vdirectRunnable.client.catalog = Catalog(vdirectRunnable.client)
- vdirectRunnable._validate_runnable_exists()
- assert True
-
- Catalog.set_catalog_item_404()
- try:
- vdirectRunnable._validate_runnable_exists()
- self.fail("MissingRunnableException was not thrown for missing runnable name")
- except vdirect_runnable.MissingRunnableException:
- assert True
-
- def test_validate_configuration_template_action_name(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Runnable.set_available_actions_result(ACTIONS_RESULT)
- BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS)
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable._validate_action_name()
- assert vdirectRunnable.action_name == vdirect_runnable.VdirectRunnable.RUN_ACTION
-
- def test_validate_workflow_template_action_name(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Runnable.set_available_actions_result(ACTIONS_RESULT)
- BASE_PARAMS.update(WORKFLOW_TEMPLATE_RUNNABLE_PARAMS)
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable._validate_action_name()
- assert vdirectRunnable.action_name == vdirect_runnable.VdirectRunnable.CREATE_WORKFLOW_ACTION
-
- def test_validate_workflow_action_name(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Runnable.set_available_actions_result(ACTIONS_RESULT)
- BASE_PARAMS.update(WORKFLOW_RUNNABLE_PARAMS)
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- vdirectRunnable._validate_action_name()
- assert vdirectRunnable.action_name == 'one'
-
- BASE_PARAMS['action_name'] = 'three'
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- try:
- vdirectRunnable._validate_action_name()
- self.fail("WrongActionNameException was not thrown for wrong action name")
- except vdirect_runnable.WrongActionNameException:
- assert True
-
- def test_validate_plugin_action_name(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Runnable.set_available_actions_result(ACTIONS_RESULT)
- BASE_PARAMS.update(PLUGIN_RUNNABLE_PARAMS)
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- vdirectRunnable._validate_action_name()
- assert vdirectRunnable.action_name == 'two'
-
- BASE_PARAMS['action_name'] = 'three'
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- try:
- vdirectRunnable._validate_action_name()
- self.fail("WrongActionNameException was not thrown for wrong action name")
- except vdirect_runnable.WrongActionNameException:
- assert True
-
- def test_validate_required_action_params(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Runnable.set_action_info_result(ACTIONS_PARAMS_RESULT_BASIC)
- BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS)
-
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- try:
- vdirectRunnable._validate_required_action_params()
- self.fail("MissingActionParametersException was not thrown for missing parameters")
- except vdirect_runnable.MissingActionParametersException:
- assert True
-
- BASE_PARAMS['parameters'] = {"alteon": "x"}
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- try:
- vdirectRunnable._validate_required_action_params()
- self.fail("MissingActionParametersException was not thrown for missing parameters")
- except vdirect_runnable.MissingActionParametersException:
- assert True
-
- BASE_PARAMS['parameters'] = {"pin": "x", "alteon": "a1"}
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable._validate_action_name()
- vdirectRunnable._validate_required_action_params()
- assert True
-
- Runnable.set_action_info_result(ACTIONS_PARAMS_RESULT_FULL)
- vdirectRunnable._validate_action_name()
- try:
- vdirectRunnable._validate_required_action_params()
- self.fail("MissingActionParametersException was not thrown for missing parameters")
- except vdirect_runnable.MissingActionParametersException:
- assert True
-
- BASE_PARAMS['parameters'].update(
- {"alteon_array": "[a1, a2]",
- "dp": "dp1", "dp_array": "[dp1, dp2]",
- "appWall": "appWall1",
- "appWall_array": "[appWall1, appWall2]"
- })
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable._validate_action_name()
- vdirectRunnable._validate_required_action_params()
- assert True
-
- def test_run(self, *args):
- with patch.dict('sys.modules', **{
- 'vdirect_client': self.module_mock,
- 'vdirect_client.rest_client': self.module_mock,
- }):
- from ansible.modules.network.radware import vdirect_runnable
-
- Catalog.set_catalog_item_200()
- BASE_PARAMS.update(CONFIGURATION_TEMPLATE_RUNNABLE_PARAMS)
- Runnable.set_available_actions_result(ACTIONS_RESULT)
- Runnable.set_action_info_result(ACTIONS_PARAMS_RESULT_BASIC)
- BASE_PARAMS['parameters'] = {"pin": "x", "alteon": "x"}
-
- vdirectRunnable = vdirect_runnable.VdirectRunnable(BASE_PARAMS)
- vdirectRunnable.client.runnable = Runnable(vdirectRunnable.client)
- Runnable.set_run_result(RUN_RESULT)
- res = vdirectRunnable.run()
- assert res['msg'] == MODULE_RESULT['msg']
-
- result_parameters = {"param1": "value1", "param2": "value2"}
- RUN_RESULT[self.module_mock.rest_client.RESP_DATA]['parameters'] = result_parameters
- MODULE_RESULT['parameters'] = result_parameters
- res = vdirectRunnable.run()
- assert res['msg'] == MODULE_RESULT['msg']
- assert res['output']['parameters'] == result_parameters
-
- RUN_RESULT[self.module_mock.rest_client.RESP_DATA]['status'] = 404
- vdirectRunnable.run()
- assert res['msg'] == MODULE_RESULT['msg']
-
- RUN_RESULT[self.module_mock.rest_client.RESP_STATUS] = 400
- RUN_RESULT[self.module_mock.rest_client.RESP_REASON] = "Reason"
- RUN_RESULT[self.module_mock.rest_client.RESP_STR] = "Details"
- try:
- vdirectRunnable.run()
- self.fail("RunnableException was not thrown for failed run.")
- except vdirect_runnable.RunnableException as e:
- assert str(e) == "Reason: Reason. Details:Details."
-
- RUN_RESULT[self.module_mock.rest_client.RESP_STATUS] = 200
- RUN_RESULT[self.module_mock.rest_client.RESP_DATA]["status"] = 400
- RUN_RESULT[self.module_mock.rest_client.RESP_DATA]["success"] = False
- RUN_RESULT[self.module_mock.rest_client.RESP_DATA]["exception"] = {"message": "exception message"}
- try:
- vdirectRunnable.run()
- self.fail("RunnableException was not thrown for failed run.")
- except vdirect_runnable.RunnableException as e:
- assert str(e) == "Reason: exception message. Details:Details."
diff --git a/test/units/modules/network/radware/wt.zip b/test/units/modules/network/radware/wt.zip
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/units/modules/network/radware/wt.zip
+++ /dev/null
diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/export b/test/units/modules/network/routeros/fixtures/routeros_facts/export
deleted file mode 100644
index 0f49fefe30..0000000000
--- a/test/units/modules/network/routeros/fixtures/routeros_facts/export
+++ /dev/null
@@ -1,26 +0,0 @@
-# sep/25/2018 10:10:52 by RouterOS 6.42.5
-# software id = 9EER-511K
-#
-#
-#
-/interface wireless security-profiles
-set [ find default=yes ] supplicant-identity=MikroTik
-/tool user-manager customer
-set admin access=own-routers,own-users,own-profiles,own-limits,config-payment-gw
-/ip address
-add address=192.168.88.1/24 comment=defconf interface=ether1 network=192.168.88.0
-/ip dhcp-client
-add dhcp-options=hostname,clientid disabled=no interface=ether1
-/system lcd
-set contrast=0 enabled=no port=parallel type=24x4
-/system lcd page
-set time disabled=yes display-time=5s
-set resources disabled=yes display-time=5s
-set uptime disabled=yes display-time=5s
-set packets disabled=yes display-time=5s
-set bits disabled=yes display-time=5s
-set version disabled=yes display-time=5s
-set identity disabled=yes display-time=5s
-set ether1 disabled=yes display-time=5s
-/tool user-manager database
-set db-path=user-manager
diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/interface_print_detail_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/interface_print_detail_without-paging
deleted file mode 100644
index 9ccddb292f..0000000000
--- a/test/units/modules/network/routeros/fixtures/routeros_facts/interface_print_detail_without-paging
+++ /dev/null
@@ -1,34 +0,0 @@
-Flags: D - dynamic, X - disabled, R - running, S - slave
- 0 R name="ether1" default-name="ether1" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:90 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
- 1 R name="ether2" default-name="ether2" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:91 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
- 2 R name="ether3" default-name="ether3" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:92 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
- 3 R name="ether4" default-name="ether4" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:93 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
- 4 R name="ether5" default-name="ether5" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:94 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
- 5 R name="ether6" default-name="ether6" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:95 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
- 6 R name="ether7" default-name="ether7" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:96 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
- 7 R name="ether8" default-name="ether8" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:97 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
- 8 R name="ether9" default-name="ether9" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:98 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
- 9 R name="ether10" default-name="ether10" type="ether" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:99 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
-10 R name="pppoe" default-name="pppoe" type="ppp" mtu=1500 actual-mtu=1500
- mac-address=00:1C:42:36:52:00 last-link-up-time=sep/25/2018 06:30:04
- link-downs=0
diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/ip_address_print_detail_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/ip_address_print_detail_without-paging
deleted file mode 100644
index d4fd2bcd24..0000000000
--- a/test/units/modules/network/routeros/fixtures/routeros_facts/ip_address_print_detail_without-paging
+++ /dev/null
@@ -1,10 +0,0 @@
-Flags: X - disabled, I - invalid, D - dynamic
- 0 ;;; defconf
- address=192.168.88.1/24 network=192.168.88.0 interface=ether1
- actual-interface=ether1
-
- 1 D address=10.37.129.3/24 network=10.37.129.0 interface=ether1
- actual-interface=ether1
-
- 2 D address=10.37.0.0/24 network=10.37.0.1 interface=pppoe
- actual-interface=pppoe
diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/ip_neighbor_print_detail_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/ip_neighbor_print_detail_without-paging
deleted file mode 100644
index 906dfb7502..0000000000
--- a/test/units/modules/network/routeros/fixtures/routeros_facts/ip_neighbor_print_detail_without-paging
+++ /dev/null
@@ -1,15 +0,0 @@
- 0 interface=ether2-master address=10.37.129.3 address4=10.37.129.3 mac-address=D4:CA:6D:C6:16:4C identity="router1" platform="MikroTik" version="6.42.2 (stable)" unpack=none age=59s
- uptime=3w19h11m36s software-id="1234-1234" board="RBwAPG-5HacT2HnD" interface-name="bridge" system-description="MikroTik RouterOS 6.42.2 (stable) RBwAPG-5HacT2HnD"
- system-caps="" system-caps-enabled=""
-
- 1 interface=ether3 address=10.37.129.4 address4=10.37.129.4 mac-address=D4:CA:6D:C6:18:2F identity="router2" platform="MikroTik" version="6.42.2 (stable)" unpack=none age=54s
- uptime=3w19h11m30s software-id="1234-1234" board="RBwAPG-5HacT2HnD" ipv6=no interface-name="bridge" system-description="MikroTik RouterOS 6.42.2 (stable) RBwAPG-5HacT2HnD"
- system-caps="" system-caps-enabled=""
-
- 2 interface=ether5 address=10.37.129.5 address4=10.37.129.5 mac-address=B8:69:F4:37:F0:C8 identity="router3" platform="MikroTik" version="6.40.8 (bugfix)" unpack=none age=43s
- uptime=3d14h25m31s software-id="1234-1234" board="RB960PGS" interface-name="ether1" system-description="MikroTik RouterOS 6.40.8 (bugfix) RB960PGS" system-caps=""
- system-caps-enabled=""
-
- 3 interface=ether10 address=10.37.129.6 address4=10.37.129.6 mac-address=6C:3B:6B:A1:0B:63 identity="router4" platform="MikroTik" version="6.42.2 (stable)" unpack=none age=54s
- uptime=3w6d1h11m44s software-id="1234-1234" board="RBSXTLTE3-7" interface-name="bridge" system-description="MikroTik RouterOS 6.42.2 (stable) RBSXTLTE3-7" system-caps=""
- system-caps-enabled=""
diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/ipv6_address_print_detail_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/ipv6_address_print_detail_without-paging
deleted file mode 100644
index c18e9ea573..0000000000
--- a/test/units/modules/network/routeros/fixtures/routeros_facts/ipv6_address_print_detail_without-paging
+++ /dev/null
@@ -1,3 +0,0 @@
-Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local
- 0 DL address=fe80::21c:42ff:fe36:5290/64 from-pool="" interface=ether1
- actual-interface=ether1 eui-64=no advertise=no no-dad=no
diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/system_identity_print_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/system_identity_print_without-paging
deleted file mode 100644
index d7dc3ff3ee..0000000000
--- a/test/units/modules/network/routeros/fixtures/routeros_facts/system_identity_print_without-paging
+++ /dev/null
@@ -1 +0,0 @@
- name: MikroTik
diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/system_resource_print_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/system_resource_print_without-paging
deleted file mode 100644
index 79353f791f..0000000000
--- a/test/units/modules/network/routeros/fixtures/routeros_facts/system_resource_print_without-paging
+++ /dev/null
@@ -1,16 +0,0 @@
- uptime: 3h28m52s
- version: 6.42.5 (stable)
- build-time: Jun/26/2018 12:12:08
- free-memory: 988.3MiB
- total-memory: 1010.8MiB
- cpu: Intel(R)
- cpu-count: 2
- cpu-frequency: 2496MHz
- cpu-load: 0%
- free-hdd-space: 63.4GiB
- total-hdd-space: 63.5GiB
- write-sect-since-reboot: 4576
- write-sect-total: 4576
- architecture-name: x86
- board-name: x86
- platform: MikroTik
diff --git a/test/units/modules/network/routeros/fixtures/routeros_facts/system_routerboard_print_without-paging b/test/units/modules/network/routeros/fixtures/routeros_facts/system_routerboard_print_without-paging
deleted file mode 100644
index 263c959095..0000000000
--- a/test/units/modules/network/routeros/fixtures/routeros_facts/system_routerboard_print_without-paging
+++ /dev/null
@@ -1,7 +0,0 @@
- routerboard: yes
- model: RouterBOARD 3011UiAS
- serial-number: 1234567890
- firmware-type: ipq8060
- factory-firmware: 3.41
- current-firmware: 3.41
- upgrade-firmware: 6.42.2
diff --git a/test/units/modules/network/routeros/fixtures/system_package_print b/test/units/modules/network/routeros/fixtures/system_package_print
deleted file mode 100644
index 3f806211e5..0000000000
--- a/test/units/modules/network/routeros/fixtures/system_package_print
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- MMM MMM KKK TTTTTTTTTTT KKK
-
- MMMM MMMM KKK TTTTTTTTTTT KKK
-
- MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
-
- MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
-
- MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
-
- MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK
-
-
-
- MikroTik RouterOS 6.42.5 (c) 1999-2018 http://www.mikrotik.com/
-
-
-[?] Gives the list of available commands
-
-command [?] Gives help on the command and list of arguments
-
-
-
-[Tab] Completes the command/word. If the input is ambiguous,
-
- a second [Tab] gives possible options
-
-
-
-/ Move up to base level
-
-.. Move up one level
-
-/command Use command at the base level
-
-
-Z <[?47l[?7h[?5l[?25h
-
-
-
-[admin@MainRouter] >
-[admin@MainRouter] > /system routerboard print
-[admin@MainRouter] > /system routerboard print
-
- routerboard: yes
- model: 750GL
- serial-number: 1234567890AB
- firmware-type: ar7240
- factory-firmware: 3.09
- current-firmware: 6.41.2
- upgrade-firmware: 6.42.5
-
-
-
-
-
-[admin@MainRouter] >
-[admin@MainRouter] > /system identity print
-[admin@MainRouter] > /system identity print
-
- name: MikroTik
-
-
-
-
-
-[admin@MainRouter] >
-[admin@MainRouter] > /system package print
-[admin@MainRouter] > /system package print
-
-Flags: X - disabled
- # NAME VERSION SCHEDULED
- 0 routeros-mipsbe 6.42.5
- 1 system 6.42.5
- 2 ipv6 6.42.5
- 3 wireless 6.42.5
- 4 hotspot 6.42.5
- 5 dhcp 6.42.5
- 6 mpls 6.42.5
- 7 routing 6.42.5
- 8 ppp 6.42.5
- 9 security 6.42.5
-10 advanced-tools 6.42.5
-
-
-
-
-
-[admin@MainRouter] >
-[admin@MainRouter] > \ No newline at end of file
diff --git a/test/units/modules/network/routeros/fixtures/system_resource_print b/test/units/modules/network/routeros/fixtures/system_resource_print
deleted file mode 100644
index 63bc3beba5..0000000000
--- a/test/units/modules/network/routeros/fixtures/system_resource_print
+++ /dev/null
@@ -1,17 +0,0 @@
-[admin@RB1100test] /system resource> print
- uptime: 2w1d23h34m57s
- version: "5.0rc1"
- free-memory: 385272KiB
- total-memory: 516708KiB
- cpu: "e500v2"
- cpu-count: 1
- cpu-frequency: 799MHz
- cpu-load: 9%
- free-hdd-space: 466328KiB
- total-hdd-space: 520192KiB
- write-sect-since-reboot: 1411
- write-sect-total: 70625
- bad-blocks: 0.2%
- architecture-name: "powerpc"
- board-name: "RB1100"
- platform: "MikroTik"
diff --git a/test/units/modules/network/routeros/routeros_module.py b/test/units/modules/network/routeros/routeros_module.py
deleted file mode 100644
index cf9a3dfe2d..0000000000
--- a/test/units/modules/network/routeros/routeros_module.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestRouterosModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/routeros/test_routeros_command.py b/test/units/modules/network/routeros/test_routeros_command.py
deleted file mode 100644
index 7503e78c7b..0000000000
--- a/test/units/modules/network/routeros/test_routeros_command.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from ansible.modules.network.routeros import routeros_command
-from units.modules.utils import set_module_args
-from .routeros_module import TestRouterosModule, load_fixture
-
-
-class TestRouterosCommandModule(TestRouterosModule):
-
- module = routeros_command
-
- def setUp(self):
- super(TestRouterosCommandModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.routeros.routeros_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestRouterosCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item)
- command = obj
- except ValueError:
- command = item
- filename = str(command).replace(' ', '_').replace('/', '')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_routeros_command_simple(self):
- set_module_args(dict(commands=['/system resource print']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue('platform: "MikroTik"' in result['stdout'][0])
-
- def test_routeros_command_multiple(self):
- set_module_args(dict(commands=['/system resource print', '/system resource print']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue('platform: "MikroTik"' in result['stdout'][0])
-
- def test_routeros_command_wait_for(self):
- wait_for = 'result[0] contains "MikroTik"'
- set_module_args(dict(commands=['/system resource print'], wait_for=wait_for))
- self.execute_module()
-
- def test_routeros_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['/system resource print'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_routeros_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['/system resource print'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_routeros_command_match_any(self):
- wait_for = ['result[0] contains "MikroTik"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['/system resource print'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_routeros_command_match_all(self):
- wait_for = ['result[0] contains "MikroTik"',
- 'result[0] contains "RB1100"']
- set_module_args(dict(commands=['/system resource print'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_routeros_command_match_all_failure(self):
- wait_for = ['result[0] contains "MikroTik"',
- 'result[0] contains "test string"']
- commands = ['/system resource print', '/system resource print']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
-
- def test_routeros_command_wait_for_2(self):
- wait_for = 'result[0] contains "wireless"'
- set_module_args(dict(commands=['/system package print'], wait_for=wait_for))
- self.execute_module()
diff --git a/test/units/modules/network/routeros/test_routeros_facts.py b/test/units/modules/network/routeros/test_routeros_facts.py
deleted file mode 100644
index 4bd648b052..0000000000
--- a/test/units/modules/network/routeros/test_routeros_facts.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from ansible.modules.network.routeros import routeros_facts
-from units.modules.utils import set_module_args
-from .routeros_module import TestRouterosModule, load_fixture
-
-
-class TestRouterosFactsModule(TestRouterosModule):
-
- module = routeros_facts
-
- def setUp(self):
- super(TestRouterosFactsModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.routeros.routeros_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestRouterosFactsModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- module = args
- commands = kwargs['commands']
- output = list()
-
- for command in commands:
- filename = str(command).split(' | ')[0].replace(' ', '_')
- output.append(load_fixture('routeros_facts%s' % filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_routeros_facts_default(self):
- set_module_args(dict(gather_subset='default'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_hostname'], 'MikroTik'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_version'], '6.42.5 (stable)'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_model'], 'RouterBOARD 3011UiAS'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_serialnum'], '1234567890'
- )
-
- def test_routeros_facts_hardware(self):
- set_module_args(dict(gather_subset='hardware'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_spacefree_mb'], 64921.6
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_spacetotal_mb'], 65024.0
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_memfree_mb'], 988.3
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_memtotal_mb'], 1010.8
- )
-
- def test_routeros_facts_config(self):
- set_module_args(dict(gather_subset='config'))
- result = self.execute_module()
- self.assertIsInstance(
- result['ansible_facts']['ansible_net_config'], str
- )
-
- def test_routeros_facts_interfaces(self):
- set_module_args(dict(gather_subset='interfaces'))
- result = self.execute_module()
- self.assertIn(
- result['ansible_facts']['ansible_net_all_ipv4_addresses'][0], ['10.37.129.3', '10.37.0.0']
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_all_ipv6_addresses'], ['fe80::21c:42ff:fe36:5290']
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_all_ipv6_addresses'][0],
- result['ansible_facts']['ansible_net_interfaces']['ether1']['ipv6'][0]['address']
- )
- self.assertEqual(
- len(result['ansible_facts']['ansible_net_interfaces'].keys()), 11
- )
- self.assertEqual(
- len(result['ansible_facts']['ansible_net_neighbors'].keys()), 4
- )
diff --git a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_2_switchport b/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_2_switchport
deleted file mode 100644
index b43c357021..0000000000
--- a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_2_switchport
+++ /dev/null
@@ -1,6 +0,0 @@
- Interface name : Ethernet 0/2
- Switchport mode : access
- Ingress filter : enable
- Acceptable frame types : vlan-untagged only
- Default Vlan : 1
- Active Vlans : 1
diff --git a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_3_switchport b/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_3_switchport
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_3_switchport
+++ /dev/null
diff --git a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_4_switchport b/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_4_switchport
deleted file mode 100644
index 63a761bdce..0000000000
--- a/test/units/modules/network/slxos/fixtures/show_interface_ethernet_0_4_switchport
+++ /dev/null
@@ -1,6 +0,0 @@
- Interface name : Ethernet 0/4
- Switchport mode : trunk
- Ingress filter : enable
- Acceptable frame types : vlan-tagged only
- Native Vlan : 1
- Active Vlans : 1,22,200
diff --git a/test/units/modules/network/slxos/fixtures/show_version b/test/units/modules/network/slxos/fixtures/show_version
deleted file mode 100644
index 0d648378ac..0000000000
--- a/test/units/modules/network/slxos/fixtures/show_version
+++ /dev/null
@@ -1,18 +0,0 @@
-SLX-OS Operating System Software
-SLX-OS Operating System Version: 17s.1.02
-Copyright (c) 1995-2018 Brocade Communications Systems, Inc.
-Firmware name: 17s.1.02
-Build Time: 00:06:59 Sep 28, 2017
-Install Time: 15:58:29 Feb 9, 2018
-Kernel: 2.6.34.6
-Host Version: Ubuntu 14.04 LTS
-Host Kernel: Linux 3.14.17
-
-Control Processor: QEMU Virtual CPU version 2.0.0
-
-System Uptime: 34days 4hrs 41mins 53secs
-
-Slot Name Primary/Secondary Versions Status
----------------------------------------------------------------------------
-SW/0 SLX-OS 17s.1.02 ACTIVE*
- 17s.1.02
diff --git a/test/units/modules/network/slxos/fixtures/show_vlan_brief b/test/units/modules/network/slxos/fixtures/show_vlan_brief
deleted file mode 100644
index 3a49c5a7a4..0000000000
--- a/test/units/modules/network/slxos/fixtures/show_vlan_brief
+++ /dev/null
@@ -1,17 +0,0 @@
-Total Number of VLANs configured : 2
-VLAN Name State Config status Ports Classification
-(R)-RSPAN (u)-Untagged
- (t)-Tagged
-================ =============== ========================== =============== ====================
-1 default ACTIVE Static Eth 1/5(t)
-
-22 VLAN0022 INACTIVE(no member port) Static
-
-5 VLAN0005 ACTIVE Static Tu 61442(t) vni 5
- Tu 61443(t) vni 5
-
-200 VLAN0200 ACTIVE Dynamic (MVRP) Po 60(t)
-
-1000 VLAN1000 ACTIVE Dynamic (EP tracking) Po 60(t)
-
-4090 VLAN4090 INACTIVE(no member port) Static
diff --git a/test/units/modules/network/slxos/fixtures/slxos_config_config.cfg b/test/units/modules/network/slxos/fixtures/slxos_config_config.cfg
deleted file mode 100644
index 48286bf1e5..0000000000
--- a/test/units/modules/network/slxos/fixtures/slxos_config_config.cfg
+++ /dev/null
@@ -1,31 +0,0 @@
-!
-hostname router
-!
-interface Ethernet 0/0
- ip address 1.2.3.4 255.255.255.0
- description test string
-!
-interface Ethernet 0/1
- ip address 6.7.8.9 255.255.255.0
- description test string
- shutdown
-!
-interface Ethernet 0/10
- channel-group 20 mode active
- description Channel Group Member
-!
-interface Ethernet 0/11
- channel-group 20 mode active
- description Channel Group Member
-!
-interface Port-channel 20
-!
-interface Ethernet 0/9
- ip address 172.16.128.99 255.255.255.0
- ipv6 address dead::beaf/64
- description Bleh
-!
-protocol lldp
- system-description An Extreme SLX Device
- disable
-!
diff --git a/test/units/modules/network/slxos/fixtures/slxos_config_src.cfg b/test/units/modules/network/slxos/fixtures/slxos_config_src.cfg
deleted file mode 100644
index 1b642f8b4e..0000000000
--- a/test/units/modules/network/slxos/fixtures/slxos_config_src.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-!
-hostname foo
-!
-interface Ethernet 0/0
- no ip address
-!
-interface Ethernet 0/1
- ip address 6.7.8.9 255.255.255.0
- description test string
- shutdown
-!
diff --git a/test/units/modules/network/slxos/fixtures/slxos_facts_show_inventory_chassis b/test/units/modules/network/slxos/fixtures/slxos_facts_show_inventory_chassis
deleted file mode 100644
index 7908951251..0000000000
--- a/test/units/modules/network/slxos/fixtures/slxos_facts_show_inventory_chassis
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-NAME: Chassis DESCR:System Chassis
-SID:BR-SLX9140 SwitchType:3001
-PN:84-1002952-01 SN:EXH3349M005
diff --git a/test/units/modules/network/slxos/fixtures/slxos_facts_show_running-config b/test/units/modules/network/slxos/fixtures/slxos_facts_show_running-config
deleted file mode 100644
index 3d7d017b06..0000000000
--- a/test/units/modules/network/slxos/fixtures/slxos_facts_show_running-config
+++ /dev/null
@@ -1 +0,0 @@
-switch-attributes host-name DC2LEAF2
diff --git a/test/units/modules/network/slxos/fixtures/slxos_facts_show_version b/test/units/modules/network/slxos/fixtures/slxos_facts_show_version
deleted file mode 100644
index 0d648378ac..0000000000
--- a/test/units/modules/network/slxos/fixtures/slxos_facts_show_version
+++ /dev/null
@@ -1,18 +0,0 @@
-SLX-OS Operating System Software
-SLX-OS Operating System Version: 17s.1.02
-Copyright (c) 1995-2018 Brocade Communications Systems, Inc.
-Firmware name: 17s.1.02
-Build Time: 00:06:59 Sep 28, 2017
-Install Time: 15:58:29 Feb 9, 2018
-Kernel: 2.6.34.6
-Host Version: Ubuntu 14.04 LTS
-Host Kernel: Linux 3.14.17
-
-Control Processor: QEMU Virtual CPU version 2.0.0
-
-System Uptime: 34days 4hrs 41mins 53secs
-
-Slot Name Primary/Secondary Versions Status
----------------------------------------------------------------------------
-SW/0 SLX-OS 17s.1.02 ACTIVE*
- 17s.1.02
diff --git a/test/units/modules/network/slxos/slxos_module.py b/test/units/modules/network/slxos/slxos_module.py
deleted file mode 100644
index 8cd482ed11..0000000000
--- a/test/units/modules/network/slxos/slxos_module.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 file_desc:
- data = file_desc.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestSlxosModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/network/slxos/test_slxos_command.py b/test/units/modules/network/slxos/test_slxos_command.py
deleted file mode 100644
index 3e7de3c6f1..0000000000
--- a/test/units/modules/network/slxos/test_slxos_command.py
+++ /dev/null
@@ -1,121 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.slxos import slxos_command
-from .slxos_module import TestSlxosModule, load_fixture
-
-
-class TestSlxosCommandModule(TestSlxosModule):
-
- module = slxos_command
-
- def setUp(self):
- super(TestSlxosCommandModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.slxos.slxos_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestSlxosCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item['command'])
- command = obj['command']
- except ValueError:
- command = item['command']
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_slxos_command_simple(self):
- set_module_args(dict(commands=['show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('SLX-OS Operating System Software'))
-
- def test_slxos_command_multiple(self):
- set_module_args(dict(commands=['show version', 'show version']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('SLX-OS Operating System Software'))
-
- def test_slxos_command_wait_for(self):
- wait_for = 'result[0] contains "SLX-OS Operating System Software"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module()
-
- def test_slxos_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_slxos_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_slxos_command_match_any(self):
- wait_for = ['result[0] contains "SLX-OS"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_slxos_command_match_all(self):
- wait_for = ['result[0] contains "SLX-OS"',
- 'result[0] contains "SLX-OS Operating System Software"']
- set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_slxos_command_match_all_failure(self):
- wait_for = ['result[0] contains "SLX-OS Operating System Software"',
- 'result[0] contains "test string"']
- commands = ['show version', 'show version']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
-
- def test_slxos_command_configure_error(self):
- commands = ['configure terminal']
- set_module_args({
- 'commands': commands,
- '_ansible_check_mode': True,
- })
- result = self.execute_module(failed=True)
- self.assertEqual(
- result['msg'],
- 'slxos_command does not support running config mode commands. '
- 'Please use slxos_config instead'
- )
diff --git a/test/units/modules/network/slxos/test_slxos_config.py b/test/units/modules/network/slxos/test_slxos_config.py
deleted file mode 100644
index e37f547dff..0000000000
--- a/test/units/modules/network/slxos/test_slxos_config.py
+++ /dev/null
@@ -1,195 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.slxos import slxos_config
-from .slxos_module import TestSlxosModule, load_fixture
-
-
-class TestSlxosConfigModule(TestSlxosModule):
-
- module = slxos_config
-
- def setUp(self):
- super(TestSlxosConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.slxos.slxos_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_load_config = patch('ansible.modules.network.slxos.slxos_config.load_config')
- self.load_config = self.mock_load_config.start()
-
- self.mock_run_commands = patch('ansible.modules.network.slxos.slxos_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestSlxosConfigModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_load_config.stop()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'slxos_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.load_config.return_value = None
-
- def test_slxos_config_unchanged(self):
- src = load_fixture('slxos_config_config.cfg')
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_slxos_config_src(self):
- src = load_fixture('slxos_config_src.cfg')
- set_module_args(dict(src=src))
- commands = ['hostname foo', 'interface Ethernet 0/0',
- 'no ip address']
- self.execute_module(changed=True, commands=commands)
-
- def test_slxos_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_slxos_config_save_always(self):
- self.run_commands.return_value = "Hostname foo"
- set_module_args(dict(save_when='always'))
- self.execute_module(changed=True)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.load_config.call_count, 0)
- args = self.run_commands.call_args[0][1]
- self.assertIn('copy running-config startup-config', args['command'])
-
- def test_slxos_config_save_changed_true(self):
- src = load_fixture('slxos_config_src.cfg')
- set_module_args(dict(src=src, save_when='changed'))
- commands = ['hostname foo', 'interface Ethernet 0/0', 'no ip address']
- self.execute_module(changed=True, commands=commands)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.load_config.call_count, 1)
- args = self.run_commands.call_args[0][1]
- self.assertIn('copy running-config startup-config', args['command'])
-
- def test_slxos_config_save_changed_false(self):
- set_module_args(dict(save_when='changed'))
- self.execute_module(changed=False)
- self.assertEqual(self.run_commands.call_count, 0)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.load_config.call_count, 0)
-
- def test_slxos_config_lines_wo_parents(self):
- set_module_args(dict(lines=['hostname foo']))
- commands = ['hostname foo']
- self.execute_module(changed=True, commands=commands)
-
- def test_slxos_config_lines_w_parents(self):
- set_module_args(dict(lines=['shutdown'], parents=['interface Ethernet 0/0']))
- commands = ['interface Ethernet 0/0', 'shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_slxos_config_before(self):
- set_module_args(dict(lines=['hostname foo'], before=['test1', 'test2']))
- commands = ['test1', 'test2', 'hostname foo']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_slxos_config_after(self):
- set_module_args(dict(lines=['hostname foo'], after=['test1', 'test2']))
- commands = ['hostname foo', 'test1', 'test2']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_slxos_config_before_after_no_change(self):
- set_module_args(dict(lines=['hostname router'],
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- self.execute_module()
-
- def test_slxos_config_config(self):
- config = 'hostname localhost'
- set_module_args(dict(lines=['hostname router'], config=config))
- commands = ['hostname router']
- self.execute_module(changed=True, commands=commands)
-
- def test_slxos_config_replace_block(self):
- lines = ['description test string', 'test string']
- parents = ['interface Ethernet 0/0']
- set_module_args(dict(lines=lines, replace='block', parents=parents))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands)
-
- def test_slxos_config_match_none(self):
- lines = ['hostname router']
- set_module_args(dict(lines=lines, match='none'))
- self.execute_module(changed=True, commands=lines)
-
- def test_slxos_config_match_none_parents(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string']
- parents = ['interface Ethernet 0/0']
- set_module_args(dict(lines=lines, parents=parents, match='none'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_slxos_config_match_strict(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string',
- 'shutdown']
- parents = ['interface Ethernet 0/0']
- set_module_args(dict(lines=lines, parents=parents, match='strict'))
- commands = parents + ['shutdown']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_slxos_config_match_exact(self):
- lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string',
- 'shutdown']
- parents = ['interface Ethernet 0/0']
- set_module_args(dict(lines=lines, parents=parents, match='exact'))
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_slxos_config_src_and_lines_fails(self):
- args = dict(src='foo', lines='foo')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_slxos_config_src_and_parents_fails(self):
- args = dict(src='foo', parents='foo')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_slxos_config_match_exact_requires_lines(self):
- args = dict(match='exact')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_slxos_config_match_strict_requires_lines(self):
- args = dict(match='strict')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_slxos_config_replace_block_requires_lines(self):
- args = dict(replace='block')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_slxos_config_replace_config_requires_src(self):
- args = dict(replace='config')
- set_module_args(args)
- self.execute_module(failed=True)
diff --git a/test/units/modules/network/slxos/test_slxos_facts.py b/test/units/modules/network/slxos/test_slxos_facts.py
deleted file mode 100644
index 4859903e81..0000000000
--- a/test/units/modules/network/slxos/test_slxos_facts.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.slxos import slxos_facts
-from .slxos_module import TestSlxosModule, load_fixture
-
-
-class TestSlxosFactsModule(TestSlxosModule):
-
- module = slxos_facts
-
- def setUp(self):
- super(TestSlxosFactsModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.slxos.slxos_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestSlxosFactsModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- commands = args[1]
- output = list()
-
- for command in commands:
- filename = str(command).split(' | ')[0].replace(' ', '_')
- output.append(load_fixture('slxos_facts_%s' % filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_slxos_facts(self):
- set_module_args(dict(gather_subset='default'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_model'], 'BR-SLX9140'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_serialnum'], 'EXH3349M005'
- )
diff --git a/test/units/modules/network/slxos/test_slxos_interface.py b/test/units/modules/network/slxos/test_slxos_interface.py
deleted file mode 100644
index 4814ec0f54..0000000000
--- a/test/units/modules/network/slxos/test_slxos_interface.py
+++ /dev/null
@@ -1,155 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.slxos import slxos_interface
-from .slxos_module import TestSlxosModule, load_fixture
-
-
-class TestSlxosInterfaceModule(TestSlxosModule):
- module = slxos_interface
-
- def setUp(self):
- super(TestSlxosInterfaceModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.slxos.slxos_interface.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.slxos.slxos_interface.load_config'
- )
- self._patch_exec_command = patch(
- 'ansible.modules.network.slxos.slxos_interface.exec_command'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
- self._exec_command = self._patch_exec_command.start()
-
- def tearDown(self):
- super(TestSlxosInterfaceModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
- self._patch_exec_command.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'slxos_config_config.cfg'
- self._get_config.return_value = load_fixture(config_file)
- self._load_config.return_value = None
-
- def test_slxos_interface_description(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/2',
- description='show version'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet 0/2',
- 'description show version'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_interface_speed(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/2',
- speed=1000
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet 0/2',
- 'speed 1000'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_interface_mtu(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/2',
- mtu=1548
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet 0/2',
- 'mtu 1548'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_interface_mtu_out_of_range(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/2',
- mtu=15000
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(
- result,
- {
- 'msg': 'mtu must be between 1548 and 9216',
- 'failed': True
- }
- )
-
- def test_slxos_interface_enabled(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/1',
- enabled=True
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet 0/1',
- 'no shutdown'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_interface_invalid_argument(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/1',
- shawshank='Redemption'
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(result['failed'], True)
- self.assertTrue(re.match(
- r'Unsupported parameters for \((basic.py|basic.pyc)\) module: '
- 'shawshank Supported parameters include: aggregate, '
- 'delay, description, enabled, mtu, name, neighbors, '
- 'rx_rate, speed, state, tx_rate',
- result['msg']
- ))
diff --git a/test/units/modules/network/slxos/test_slxos_l2_interface.py b/test/units/modules/network/slxos/test_slxos_l2_interface.py
deleted file mode 100644
index 929552a47a..0000000000
--- a/test/units/modules/network/slxos/test_slxos_l2_interface.py
+++ /dev/null
@@ -1,171 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.slxos import slxos_l2_interface
-from .slxos_module import TestSlxosModule, load_fixture
-
-
-class TestSlxosL2InterfaceModule(TestSlxosModule):
- module = slxos_l2_interface
-
- def setUp(self):
- super(TestSlxosL2InterfaceModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.slxos.slxos_l2_interface.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.slxos.slxos_l2_interface.load_config'
- )
- self._patch_run_commands = patch(
- 'ansible.modules.network.slxos.slxos_l2_interface.run_commands'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
- self._run_commands = self._patch_run_commands.start()
- self._run_commands.side_effect = self.run_commands_load_fixtures
-
- def run_commands_load_fixtures(self, module, commands, *args, **kwargs):
- return self.load_fixtures(
- commands,
- destination=self._run_commands,
- return_values=True
- )
-
- def tearDown(self):
- super(TestSlxosL2InterfaceModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
- self._patch_run_commands.stop()
-
- def load_fixtures(self, commands=None, destination=None, return_values=False):
- side_effects = []
-
- if not destination:
- destination = self._get_config
-
- if not commands:
- commands = ['slxos_config_config.cfg']
-
- for command in commands:
- filename = str(command).replace(' ', '_')
- filename = str(filename).replace('/', '_')
- side_effects.append(load_fixture(filename))
-
- if return_values is True:
- return side_effects
-
- destination.side_effect = side_effects
- return None
-
- def test_slxos_l2_interface_access_vlan(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/2',
- mode='access',
- access_vlan=200,
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface ethernet 0/2',
- 'switchport access vlan 200'
- ],
- 'changed': True,
- 'warnings': []
- }
- )
-
- def test_slxos_l2_interface_vlan_does_not_exist(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/2',
- mode='access',
- access_vlan=10,
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(
- result,
- {
- 'msg': 'You are trying to configure a VLAN on an interface '
- 'that\ndoes not exist on the switch yet!',
- 'failed': True,
- 'vlan': '10'
- }
- )
-
- def test_slxos_l2_interface_incorrect_state(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/3',
- mode='access',
- access_vlan=10,
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(
- result,
- {
- 'msg': 'Ensure interface is configured to be a L2\nport first '
- 'before using this module. You can use\nthe slxos_'
- 'interface module for this.',
- 'failed': True
- }
- )
-
- def test_slxos_l2_interface_trunk(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/4',
- mode='trunk',
- native_vlan='22',
- trunk_allowed_vlans='200,22'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface ethernet 0/4',
- 'switchport trunk allowed vlan add 200,22',
- 'switchport trunk native vlan 22'
- ],
- 'changed': True,
- 'warnings': []
- }
- )
-
- def test_slxos_l2_interface_invalid_argument(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/2',
- mode='access',
- access_vlan=10,
- shawshank='Redemption'
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(result['failed'], True)
- self.assertTrue(re.match(
- r'Unsupported parameters for \((basic.py|basic.pyc)\) module: '
- 'shawshank Supported parameters include: access_vlan, aggregate, '
- 'mode, name, native_vlan, state, trunk_allowed_vlans, trunk_vlans',
- result['msg']
- ))
diff --git a/test/units/modules/network/slxos/test_slxos_l3_interface.py b/test/units/modules/network/slxos/test_slxos_l3_interface.py
deleted file mode 100644
index dd4826c6df..0000000000
--- a/test/units/modules/network/slxos/test_slxos_l3_interface.py
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.slxos import slxos_l3_interface
-from .slxos_module import TestSlxosModule, load_fixture
-
-
-class TestSlxosL3InterfaceModule(TestSlxosModule):
- module = slxos_l3_interface
-
- def setUp(self):
- super(TestSlxosL3InterfaceModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.slxos.slxos_l3_interface.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.slxos.slxos_l3_interface.load_config'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
-
- def tearDown(self):
- super(TestSlxosL3InterfaceModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'slxos_config_config.cfg'
- self._get_config.return_value = load_fixture(config_file)
- self._load_config.return_value = None
-
- def test_slxos_l3_interface_ipv4_address(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/2',
- ipv4='192.168.4.1/24'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet 0/2',
- 'ip address 192.168.4.1/24'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_l3_interface_absent(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/9',
- state='absent'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface Ethernet 0/9',
- 'no ip address',
- 'no ipv6 address'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_l3_interface_invalid_argument(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/1',
- shawshank='Redemption'
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(result['failed'], True)
- self.assertTrue(re.match(
- r'Unsupported parameters for \((basic.py|basic.pyc)\) module: '
- 'shawshank Supported parameters include: aggregate, ipv4, ipv6, '
- 'name, state',
- result['msg']
- ))
diff --git a/test/units/modules/network/slxos/test_slxos_linkagg.py b/test/units/modules/network/slxos/test_slxos_linkagg.py
deleted file mode 100644
index 5969b0c652..0000000000
--- a/test/units/modules/network/slxos/test_slxos_linkagg.py
+++ /dev/null
@@ -1,159 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.slxos import slxos_linkagg
-from .slxos_module import TestSlxosModule, load_fixture
-
-
-class TestSlxosLinkaggModule(TestSlxosModule):
- module = slxos_linkagg
-
- def setUp(self):
- super(TestSlxosLinkaggModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.slxos.slxos_linkagg.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.slxos.slxos_linkagg.load_config'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
-
- def tearDown(self):
- super(TestSlxosLinkaggModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'slxos_config_config.cfg'
- self._get_config.return_value = load_fixture(config_file)
- self._load_config.return_value = None
-
- def test_slxos_linkagg_group_present(self, *args, **kwargs):
- set_module_args(dict(
- group='10',
- state='present'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface port-channel 10',
- 'exit'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_linkagg_group_members_active(self, *args, **kwargs):
- set_module_args(dict(
- group='10',
- mode='active',
- members=[
- 'Ethernet 0/1',
- 'Ethernet 0/2'
- ]
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface port-channel 10',
- 'exit',
- 'interface Ethernet 0/1',
- 'channel-group 10 mode active',
- 'interface Ethernet 0/2',
- 'channel-group 10 mode active'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_linkagg_group_member_removal(self, *args, **kwargs):
- set_module_args(dict(
- group='20',
- mode='active',
- members=[
- 'Ethernet 0/10',
- ]
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'interface port-channel 20',
- 'exit',
- 'interface Ethernet 0/11',
- 'no channel-group'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_linkagg_group_members_absent(self, *args, **kwargs):
- set_module_args(dict(
- group='20',
- state='absent'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'no interface port-channel 20'
- ],
- 'changed': True
- }
- )
- set_module_args(dict(
- group='10',
- state='absent'
- ))
- result = self.execute_module(changed=False)
- self.assertEqual(
- result,
- {
- 'commands': [],
- 'changed': False
- }
- )
-
- def test_slxos_linkagg_invalid_argument(self, *args, **kwargs):
- set_module_args(dict(
- group='10',
- shawshank='Redemption'
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(result['failed'], True)
- self.assertTrue(re.match(
- r'Unsupported parameters for \((basic.pyc|basic.py)\) module: '
- 'shawshank Supported parameters include: aggregate, group, '
- 'members, mode, purge, state',
- result['msg']
- ))
diff --git a/test/units/modules/network/slxos/test_slxos_lldp.py b/test/units/modules/network/slxos/test_slxos_lldp.py
deleted file mode 100644
index 4d6c2d1555..0000000000
--- a/test/units/modules/network/slxos/test_slxos_lldp.py
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.slxos import slxos_lldp
-from .slxos_module import TestSlxosModule, load_fixture
-
-
-class TestSlxosLldpModule(TestSlxosModule):
- module = slxos_lldp
-
- def setUp(self):
- super(TestSlxosLldpModule, self).setUp()
- self._patch_get_config = patch(
- 'ansible.modules.network.slxos.slxos_lldp.get_config'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.slxos.slxos_lldp.load_config'
- )
-
- self._get_config = self._patch_get_config.start()
- self._load_config = self._patch_load_config.start()
-
- def tearDown(self):
- super(TestSlxosLldpModule, self).tearDown()
- self._patch_get_config.stop()
- self._patch_load_config.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'slxos_config_config.cfg'
- self._get_config.return_value = load_fixture(config_file)
- self._load_config.return_value = None
-
- def test_slxos_lldp_present(self, *args, **kwargs):
- set_module_args(dict(
- state='present'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'protocol lldp',
- 'no disable'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_lldp_absent(self, *args, **kwargs):
- set_module_args(dict(
- state='absent'
- ))
- result = self.execute_module()
- self.assertEqual(
- result,
- {
- 'commands': [],
- 'changed': False
- }
- )
-
- def test_slxos_lldp_invalid_argument(self, *args, **kwargs):
- set_module_args(dict(
- state='absent',
- shawshank='Redemption'
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(result['failed'], True)
- self.assertTrue(re.match(
- r'Unsupported parameters for \((basic.py|basic.pyc)\) module: '
- 'shawshank Supported parameters include: state',
- result['msg']
- ), 'Output did not match. Got: %s' % result['msg'])
diff --git a/test/units/modules/network/slxos/test_slxos_vlan.py b/test/units/modules/network/slxos/test_slxos_vlan.py
deleted file mode 100644
index 5c103a70d1..0000000000
--- a/test/units/modules/network/slxos/test_slxos_vlan.py
+++ /dev/null
@@ -1,144 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.slxos import slxos_vlan
-from .slxos_module import TestSlxosModule, load_fixture
-
-
-class TestSlxosVlanModule(TestSlxosModule):
- module = slxos_vlan
-
- def setUp(self):
- super(TestSlxosVlanModule, self).setUp()
- self._patch_run_commands = patch(
- 'ansible.modules.network.slxos.slxos_vlan.run_commands'
- )
- self._patch_load_config = patch(
- 'ansible.modules.network.slxos.slxos_vlan.load_config'
- )
-
- self._run_commands = self._patch_run_commands.start()
- self._load_config = self._patch_load_config.start()
-
- def tearDown(self):
- super(TestSlxosVlanModule, self).tearDown()
- self._patch_run_commands.stop()
- self._patch_load_config.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'show_vlan_brief'
- self._run_commands.return_value = [load_fixture(config_file)]
- self._load_config.return_value = None
-
- def test_slxos_vlan_id_with_name(self, *args, **kwargs):
- load_fixture('show_vlan_brief')
- set_module_args(dict(
- vlan_id=100,
- name='ONEHUNDRED'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'vlan 100',
- 'name ONEHUNDRED'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_vlan_with_members(self, *args, **kwargs):
- set_module_args(dict(
- vlan_id=100,
- name='ONEHUNDRED',
- interfaces=[
- 'Ethernet 0/1',
- 'Ethernet 0/2'
- ]
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'vlan 100',
- 'name ONEHUNDRED',
- 'interface Ethernet 0/1',
- 'switchport',
- 'switchport mode access',
- 'switchport access vlan 100',
- 'interface Ethernet 0/2',
- 'switchport',
- 'switchport mode access',
- 'switchport access vlan 100'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_vlan_state_absent(self, *args, **kwargs):
- set_module_args(dict(
- vlan_id=200,
- state='absent'
- ))
- result = self.execute_module(changed=True)
- self.assertEqual(
- result,
- {
- 'commands': [
- 'no vlan 200'
- ],
- 'changed': True
- }
- )
-
- def test_slxos_vlan_state_absent_nonexistent_vlan(self, *args, **kwargs):
- set_module_args(dict(
- vlan_id=100,
- state='absent'
- ))
- result = self.execute_module()
- self.assertEqual(
- result,
- {
- 'commands': [],
- 'changed': False
- }
- )
-
- def test_slxos_interface_invalid_argument(self, *args, **kwargs):
- set_module_args(dict(
- name='Ethernet 0/1',
- shawshank='Redemption'
- ))
- result = self.execute_module(failed=True)
- self.assertEqual(result['failed'], True)
- self.assertTrue(re.match(
- r'Unsupported parameters for \((basic.py|basic.pyc)\) module: '
- 'shawshank Supported parameters include: aggregate, delay, '
- 'interfaces, name, purge, state, vlan_id',
- result['msg']
- ), 'Result did not match expected output. Got: %s' % result['msg'])
diff --git a/test/units/modules/network/voss/fixtures/show_sys-info b/test/units/modules/network/voss/fixtures/show_sys-info
deleted file mode 100644
index 6e7099c2b6..0000000000
--- a/test/units/modules/network/voss/fixtures/show_sys-info
+++ /dev/null
@@ -1,107 +0,0 @@
-General Info :
-
- SysDescr : VSP-4450GSX-PWR+ (7.0.0.0_B015)
- SysName : VSP-4450GSX-PWR+
- SysUpTime : 5 day(s), 17:13:09
- SysContact : http://www.extremenetworks.com/contact/
- SysLocation :
-
-Chassis Info:
-
- Chassis : 4450GSX-PWR+
- ModelName : 4450GSX-PWR+
- BrandName : Extreme Networks.
- Serial# : 14JP512E0001
- H/W Revision : 01
- H/W Config : none
- Part Number :
- NumSlots : 1
- NumPorts : 50
- BaseMacAddr : b4:47:5e:00:00:00
- MacAddrCapacity : 256
- System MTU : 1950
-
-Card Info :
-
- Slot# CardType Serial# Part# Oper Admin Power
- Status Status State
- 1 4450GSX-PWR+ 14JP512E0001 -- up up on
-
-Temperature Info :
-
- Chassis Temperature
- 30
-
-
-Power Supply Info :
-
- Ps#1 Status : UP
- Ps#1 Type : AC
- Ps#1 Description : AC-DC-54V-1000W
- Ps#1 Serial Number: LBNNTMPL20180R
- Ps#1 Version : --
- Ps#1 Part Number : 325220-A.01
-
- Ps#2 Status : empty
-
- Total Power Available : 1000 watts
- Total Power Usage : 127 watts
-
-Fan Info :
-
- Description OperStatus OperSpeed AirflowDir
- Tray 1 Fan 1 up mediumSpeed left-right
- Tray 1 Fan 2 up mediumSpeed left-right
- Tray 1 Fan 3 up mediumSpeed left-right
-
-LED Info :
-
- LED#1 Label : PWR
- LED#1 Status : GreenSteady
-
- LED#2 Label : Status
- LED#2 Status : GreenSteady
-
- LED#3 Label : Rps
- LED#3 Status : Off
-
- LED#4 Label : Up
- LED#4 Status : UnSupported
-
- LED#5 Label : Down
- LED#5 Status : UnSupported
-
- LED#6 Label : Base
- LED#6 Status : UnSupported
-
-System Error Info :
-
- Send Login Success Trap : false
- Send Authentication Trap : false
- Error Code : 0
- Error Severity : 0
-
-Port Lock Info :
-
- Status : off
- LockedPorts :
-
-Message Control Info :
-
- Action : suppress-msg
- Control-Interval : 5
- Max-msg-num : 5
- Status : disable
-
-
-Configuration Operation Info Since Boot Up:
- Last Change: 0 day(s), 08:31:10 (5 day(s), 08:41:59 ago)
- Last Vlan Change: 0 day(s), 08:27:35 (5 day(s), 08:45:34 ago)
-Last Statistic Reset: 5 day(s), 16:56:45 (0 day(s), 00:16:24 ago)
-
-Current Uboot Info :
-----------------------------------------------------------------------------------------------------
-
- VU-Boot 2012.04-00002-g6fb1c26 (Apr 26 2017 - 13:37:44) bld=17042617
-
-
diff --git a/test/units/modules/network/voss/fixtures/voss_config_config.cfg b/test/units/modules/network/voss/fixtures/voss_config_config.cfg
deleted file mode 100644
index 29e5233fbb..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_config_config.cfg
+++ /dev/null
@@ -1,16 +0,0 @@
-prompt "VSP300"
-interface GigabitEthernet 1/1
-name "ServerA"
-vlacp enable
-exit
-interface GigabitEthernet 1/2
-name "ServerB"
-vlacp enable
-no shutdown
-exit
-interface loopback 1
-ip address 1 1.1.1.1/255.255.255.255
-exit
-interface loopback 1
-ipv6 interface address 2011:0:0:0:0:0:0:1/128
-exit
diff --git a/test/units/modules/network/voss/fixtures/voss_config_ipv6.cfg b/test/units/modules/network/voss/fixtures/voss_config_ipv6.cfg
deleted file mode 100644
index 53611e7dda..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_config_ipv6.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-interface loopback 1
-ip address 1 2.2.2.2/255.255.255.255
-exit
-interface loopback 1
-ipv6 interface address 2011:0:0:0:0:0:0:2/128
-exit
diff --git a/test/units/modules/network/voss/fixtures/voss_config_src.cfg b/test/units/modules/network/voss/fixtures/voss_config_src.cfg
deleted file mode 100644
index 72aa545874..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_config_src.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-prompt "VSP8K"
-interface GigabitEthernet 1/1
-name "UNUSED"
-vlacp enable
-exit
-interface GigabitEthernet 1/2
-name "ServerB"
-vlacp enable
-no shutdown
-exit
diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_interface b/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_interface
deleted file mode 100644
index cdebd4068b..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_interface
+++ /dev/null
@@ -1,93 +0,0 @@
-
-==========================================================================================
- Port Interface
-==========================================================================================
-PORT LINK PORT PHYSICAL STATUS
-NUM INDEX DESCRIPTION TRAP LOCK MTU ADDRESS ADMIN OPERATE
-------------------------------------------------------------------------------------------
-1/1 192 10GbNone true false 1950 00:51:00:16:40:00 down down
-1/2 193 10GbNone true false 1950 00:51:00:16:40:01 down down
-1/3 194 10GbNone true false 1950 00:51:00:16:40:02 down down
-1/4 195 10GbNone true false 1950 00:51:00:16:40:03 down down
-1/5 196 10GbNone true false 1950 00:51:00:16:40:04 down down
-1/6 197 10GbNone true false 1950 00:51:00:16:40:05 down down
-1/7 198 10GbNone true false 1950 00:51:00:16:40:06 down down
-1/8 199 10GbNone true false 1950 00:51:00:16:40:07 down down
-1/9 200 10GbNone true false 1950 00:51:00:16:40:08 down down
-1/10 201 10GbNone true false 1950 00:51:00:16:40:09 down down
-1/11 202 10GbNone true false 1950 00:51:00:16:40:0a down down
-1/12 203 10GbNone true false 1950 00:51:00:16:40:0b down down
-1/13 204 10GbNone true false 1950 00:51:00:16:40:0c down down
-1/14 205 10GbNone true false 1950 00:51:00:16:40:0d down down
-1/15 206 10GbNone true false 1950 00:51:00:16:40:0e down down
-1/16 207 10GbNone true false 1950 00:51:00:16:40:0f down down
-1/17 208 10GbNone true false 1950 00:51:00:16:40:10 down down
-1/18 209 10GbNone true false 1950 00:51:00:16:40:11 down down
-1/19 210 10GbNone true false 1950 00:51:00:16:40:12 down down
-1/20 211 10GbNone true false 1950 00:51:00:16:40:13 down down
-1/21 212 10GbNone true false 1950 00:51:00:16:40:14 down down
-1/22 213 10GbNone true false 1950 00:51:00:16:40:15 down down
-1/23 214 10GbNone true false 1950 00:51:00:16:40:16 down down
-1/24 215 10GbNone true false 1950 00:51:00:16:40:17 down down
-1/25 216 10GbNone true false 1950 00:51:00:16:40:18 down down
-1/26 217 10GbNone true false 1950 00:51:00:16:40:19 down down
-1/27 218 10GbNone true false 1950 00:51:00:16:40:1a down down
-1/28 219 10GbNone true false 1950 00:51:00:16:40:1b down down
-1/29 220 10GbNone true false 1950 00:51:00:16:40:1c down down
-1/30 221 10GbNone true false 1950 00:51:00:16:40:1d down down
-1/31 222 10GbNone true false 1950 00:51:00:16:40:1e down down
-1/32 223 10GbNone true false 1950 00:51:00:16:40:1f down down
-1/33 224 10GbNone true false 1950 00:51:00:16:40:20 down down
-1/34 225 10GbNone true false 1950 00:51:00:16:40:21 down down
-1/35 226 10GbNone true false 1950 00:51:00:16:40:22 down down
-1/36 227 10GbNone true false 1950 00:51:00:16:40:23 down down
-1/37 228 10GbNone true false 1950 00:51:00:16:40:24 down down
-1/38 229 10GbNone true false 1950 00:51:00:16:40:25 down down
-1/39 230 10GbNone true false 1950 00:51:00:16:40:26 down down
-1/40 231 10GbNone true false 1950 00:51:00:16:40:27 down down
-1/41 232 40GbNone true false 1950 00:51:00:16:40:28 down down
-1/42 236 40GbNone true false 1950 00:51:00:16:40:2c down down
-2/1 256 10GbNone true false 1950 00:51:00:16:40:40 down down
-2/2 257 10GbNone true false 1950 00:51:00:16:40:41 down down
-2/3 258 10GbNone true false 1950 00:51:00:16:40:42 down down
-2/4 259 10GbNone true false 1950 00:51:00:16:40:43 down down
-2/5 260 10GbNone true false 1950 00:51:00:16:40:44 down down
-2/6 261 10GbNone true false 1950 00:51:00:16:40:45 down down
-2/7 262 10GbNone true false 1950 00:51:00:16:40:46 down down
-2/8 263 10GbNone true false 1950 00:51:00:16:40:47 down down
-2/9 264 10GbNone true false 1950 00:51:00:16:40:48 down down
-2/10 265 10GbNone true false 1950 00:51:00:16:40:49 down down
-2/11 266 10GbNone true false 1950 00:51:00:16:40:4a down down
-2/12 267 10GbNone true false 1950 00:51:00:16:40:4b down down
-2/13 268 10GbNone true false 1950 00:51:00:16:40:4c down down
-2/14 269 10GbNone true false 1950 00:51:00:16:40:4d down down
-2/15 270 10GbNone true false 1950 00:51:00:16:40:4e down down
-2/16 271 10GbNone true false 1950 00:51:00:16:40:4f down down
-2/17 272 10GbNone true false 1950 00:51:00:16:40:50 down down
-2/18 273 10GbNone true false 1950 00:51:00:16:40:51 down down
-2/19 274 10GbNone true false 1950 00:51:00:16:40:52 down down
-2/20 275 10GbNone true false 1950 00:51:00:16:40:53 down down
-2/21 276 10GbNone true false 1950 00:51:00:16:40:54 down down
-2/22 277 10GbNone true false 1950 00:51:00:16:40:55 down down
-2/23 278 10GbNone true false 1950 00:51:00:16:40:56 down down
-2/24 279 10GbNone true false 1950 00:51:00:16:40:57 down down
-2/25 280 10GbNone true false 1950 00:51:00:16:40:58 down down
-2/26 281 10GbNone true false 1950 00:51:00:16:40:59 down down
-2/27 282 10GbNone true false 1950 00:51:00:16:40:5a down down
-2/28 283 10GbNone true false 1950 00:51:00:16:40:5b down down
-2/29 284 10GbNone true false 1950 00:51:00:16:40:5c down down
-2/30 285 10GbNone true false 1950 00:51:00:16:40:5d down down
-2/31 286 10GbNone true false 1950 00:51:00:16:40:5e down down
-2/32 287 10GbNone true false 1950 00:51:00:16:40:5f down down
-2/33 288 10GbNone true false 1950 00:51:00:16:40:60 down down
-2/34 289 10GbNone true false 1950 00:51:00:16:40:61 down down
-2/35 290 10GbNone true false 1950 00:51:00:16:40:62 down down
-2/36 291 10GbNone true false 1950 00:51:00:16:40:63 down down
-2/37 292 10GbNone true false 1950 00:51:00:16:40:64 down down
-2/38 293 10GbNone true false 1950 00:51:00:16:40:65 down down
-2/39 294 10GbNone true false 1950 00:51:00:16:40:66 down down
-2/40 295 10GbNone true false 1950 00:51:00:16:40:67 down down
-2/41 296 40GbNone true false 1950 00:51:00:16:40:68 down down
-2/42 300 40GbNone true false 1950 00:51:00:16:40:6c down down
-
-
diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_name b/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_name
deleted file mode 100644
index 7efcfd07f3..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_facts_show_interfaces_gigabitEthernet_name
+++ /dev/null
@@ -1,93 +0,0 @@
-
-==========================================================================================
- Port Name
-==========================================================================================
-PORT OPERATE OPERATE OPERATE
-NUM NAME DESCRIPTION STATUS DUPLX SPEED VLAN
-----------------------------------------------------------------------------------------------------
-1/1 serverA 10GbNone down full 0 Access
-1/2 10GbNone down full 0 Access
-1/3 10GbNone down full 0 Access
-1/4 10GbNone down full 0 Access
-1/5 10GbNone down full 0 Access
-1/6 10GbNone down full 0 Access
-1/7 10GbNone down full 0 Access
-1/8 10GbNone down full 0 Access
-1/9 10GbNone down full 0 Access
-1/10 10GbNone down full 0 Access
-1/11 10GbNone down full 0 Access
-1/12 10GbNone down full 0 Access
-1/13 10GbNone down full 0 Access
-1/14 10GbNone down full 0 Access
-1/15 10GbNone down full 0 Access
-1/16 10GbNone down full 0 Access
-1/17 10GbNone down full 0 Access
-1/18 10GbNone down full 0 Access
-1/19 10GbNone down full 0 Access
-1/20 10GbNone down full 0 Access
-1/21 10GbNone down full 0 Access
-1/22 10GbNone down full 0 Access
-1/23 10GbNone down full 0 Access
-1/24 10GbNone down full 0 Access
-1/25 10GbNone down full 0 Access
-1/26 10GbNone down full 0 Access
-1/27 10GbNone down full 0 Access
-1/28 10GbNone down full 0 Access
-1/29 10GbNone down full 0 Access
-1/30 10GbNone down full 0 Access
-1/31 10GbNone down full 0 Access
-1/32 10GbNone down full 0 Access
-1/33 10GbNone down full 0 Access
-1/34 10GbNone down full 0 Access
-1/35 10GbNone down full 0 Access
-1/36 10GbNone down full 0 Access
-1/37 10GbNone down full 0 Access
-1/38 10GbNone down full 0 Access
-1/39 10GbNone down full 0 Access
-1/40 10GbNone down full 0 Access
-1/41 40GbNone down half 0 Access
-1/42 40GbNone down half 0 Access
-2/1 10GbNone down full 0 Access
-2/2 10GbNone down full 0 Access
-2/3 10GbNone down full 0 Access
-2/4 10GbNone down full 0 Access
-2/5 10GbNone down full 0 Access
-2/6 10GbNone down full 0 Access
-2/7 10GbNone down full 0 Access
-2/8 10GbNone down full 0 Access
-2/9 10GbNone down full 0 Access
-2/10 10GbNone down full 0 Access
-2/11 10GbNone down full 0 Access
-2/12 10GbNone down full 0 Access
-2/13 10GbNone down full 0 Access
-2/14 10GbNone down full 0 Access
-2/15 10GbNone down full 0 Access
-2/16 10GbNone down full 0 Access
-2/17 10GbNone down full 0 Access
-2/18 10GbNone down full 0 Access
-2/19 10GbNone down full 0 Access
-2/20 10GbNone down full 0 Access
-2/21 10GbNone down full 0 Access
-2/22 10GbNone down full 0 Access
-2/23 10GbNone down full 0 Access
-2/24 10GbNone down full 0 Access
-2/25 10GbNone down full 0 Access
-2/26 10GbNone down full 0 Access
-2/27 10GbNone down full 0 Access
-2/28 10GbNone down full 0 Access
-2/29 10GbNone down full 0 Access
-2/30 10GbNone down full 0 Access
-2/31 10GbNone down full 0 Access
-2/32 10GbNone down full 0 Access
-2/33 10GbNone down full 0 Access
-2/34 10GbNone down full 0 Access
-2/35 10GbNone down full 0 Access
-2/36 10GbNone down full 0 Access
-2/37 10GbNone down full 0 Access
-2/38 10GbNone down full 0 Access
-2/39 10GbNone down full 0 Access
-2/40 10GbNone down full 0 Access
-2/41 40GbNone down half 0 Access
-2/42 40GbNone down half 0 Access
-
-
diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_ip_interface b/test/units/modules/network/voss/fixtures/voss_facts_show_ip_interface
deleted file mode 100644
index 7283cef137..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_facts_show_ip_interface
+++ /dev/null
@@ -1,12 +0,0 @@
-
-====================================================================================================
- IP Interface - GlobalRouter
-====================================================================================================
-INTERFACE IP NET BCASTADDR REASM VLAN BROUTER IPSEC
- ADDRESS MASK FORMAT MAXSIZE ID PORT STATE
-----------------------------------------------------------------------------------------------------
-Clip1 1.1.1.1 255.255.255.255 ones 1500 -- false disable
-Vlan1 10.10.10.10 255.255.255.0 ones 1500 1 false disable
-
-
-All 2 out of 2 Total Num of IP interfaces displayed
diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_ipv6_address_interface b/test/units/modules/network/voss/fixtures/voss_facts_show_ipv6_address_interface
deleted file mode 100644
index 51b1caed44..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_facts_show_ipv6_address_interface
+++ /dev/null
@@ -1,12 +0,0 @@
-=======================================================================================================
- Address Information - GlobalRouter
-=======================================================================================================
-IPV6 ADDRESS/PREFIX LENGTH VID/BID/TID TYPE ORIGIN STATUS VALID PREF
- LIFETIME LIFETIME
--------------------------------------------------------------------------------------------------------
-2011:0:0:0:0:0:0:1/128 C-1 UNICAST MANUAL PREFERRED INF INF
-2001:0:0:0:0:0:0:1/64 V-1 UNICAST MANUAL INACCESSIBLE INF INF
-2002:0:0:0:0:0:0:1/64 V-1 UNICAST MANUAL INACCESSIBLE INF INF
-fe80:0:0:0:251:ff:fe16:4100/64 V-1 UNICAST LINKLAYER INACCESSIBLE INF INF
-
-4 out of 4 Total Num of Address Entries displayed.
diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_khi_performance_memory b/test/units/modules/network/voss/fixtures/voss_facts_show_khi_performance_memory
deleted file mode 100644
index a9628f8a22..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_facts_show_khi_performance_memory
+++ /dev/null
@@ -1,14 +0,0 @@
- Slot:1
- Used: 386164 (KB)
- Free: 639868 (KB)
- Current utilization: 37 %
- 5-minute average utilization: 37 %
- 5-minute high water mark: 37 (%)
- 10-minute average utilization: 37 %
- 10-minute high water mark: 37 (%)
- 1-Hour average utilization: 37 %
- 1-Hour high water mark: 37 (%)
- 1-Day average utilization: 36 %
- 1-Month average utilization: 0 %
- 1-Year average utilization: 0 %
-
diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_lldp_neighbor b/test/units/modules/network/voss/fixtures/voss_facts_show_lldp_neighbor
deleted file mode 100644
index 02e6b1600a..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_facts_show_lldp_neighbor
+++ /dev/null
@@ -1,12 +0,0 @@
-Port: 1/1 Index : 1
- PortId : IfName 5
- SysName : X690-48t-2q-4c
- PortDescr:
-Port: 1/2 Index : 2
- PortId : IfName 1/2
- SysName : VSP2
- PortDescr: Extreme Networks Virtual Services Platform 4450GSX-PWR+ - 1000BaseTX Port 1/2
-Port: 1/12 Index : 2
- PortId : IfName 1/12
- SysName : VSP2
- PortDescr: Extreme Networks Virtual Services Platform 4450GSX-PWR+ - 1000BaseTX Port 1/12
diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_running-config b/test/units/modules/network/voss/fixtures/voss_facts_show_running-config
deleted file mode 100644
index a049a27965..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_facts_show_running-config
+++ /dev/null
@@ -1,903 +0,0 @@
-Preparing to Display Configuration...
-#
-# Wed Aug 15 05:20:06 2018 UTC
-# box type : VSP-8284XSQ
-# software version : 7.0.0.0_B015
-# cli mode : ECLI
-#
-
-#Card Info :
-
-# Slot 1 :
-# CardType : 8242XSQ
-# CardDescription : 8242XSQ
-# CardSerial# :
-# CardPart# :
-# CardAssemblyDate :
-# CardHWRevision :
-# CardHWConfig :
-# AdminStatus : up
-# OperStatus : up
-
-# Slot 2 :
-# CardType : 8242XSQ
-# CardDescription : 8242XSQ
-# CardSerial# :
-# CardPart# :
-# CardAssemblyDate :
-# CardHWRevision :
-# CardHWConfig :
-# AdminStatus : up
-# OperStatus : up
-
-#
-#!end
-#
-config terminal
-
-#
-# BOOT CONFIGURATION
-#
-
-boot config flags block-snmp
-boot config flags sshd
-# end boot flags
-
-#
-# CLI CONFIGURATION
-#
-
-cli timeout 3600
-password password-history 3
-
-#
-# SYSTEM CONFIGURATION
-#
-
-
-#
-# LOG CONFIGURATION
-#
-
-
-#
-# LINK-FLAP-DETECT CONFIGURATION
-#
-
-
-#
-# IEEE VLAN AGING CONFIGURATION
-#
-
-
-#
-# ACCESS-POLICY CONFIGURATION
-#
-
-#
-# SSH CONFIGURATION
-#
-
-ssh keyboard-interactive-auth
-
-
-
-ssh secure
-
-#
-# ASG CONFIGURATION
-#
-
-
-#
-# MCAST SOFTWARE FORWARDING CONFIGURATION
-#
-
-
-#
-# MCAST SMLT CONFIGURATION
-#
-
-
-#
-# SNMP V3 GLOBAL CONFIGURATION
-#
-
-
-#
-# SNMP V3 GROUP MEMBERSHIP CONFIGURATION
-#
-
-
-#
-# SNMP V3 NOTIFY FILTER CONFIGURATION
-#
-
-
-#
-# SNMP V3 MIB VIEW CONFIGURATION
-#
-
-
-#
-# SNMP V3 GROUP CONFIGURATION
-#
-
-
-#
-# SNMP V3 TARGET ADDRESS CONFIGURATION
-#
-
-
-#
-# DDI CONFIGURATION
-#
-
-
-#
-# SLOT CONFIGURATION
-#
-
-
-#
-# MAC AGING CONFIGURATION
-#
-
-
-#
-# SMTP CONFIGURATION
-#
-
-
-#
-# WEB CONFIGURATION
-#
-
-web-server enable
-
-
-#
-# GLOBAL FDB FILTER CONFIGURATION
-#
-
-
-
-
-#
-# QOS CONFIGURATION - PHASE I
-#
-
-
-#
-# LACP CONFIGURATION
-#
-
-
-#
-# VRF CONFIGURATION
-#
-
-ip vrf dmz vrfid 1
-
-#
-# MAINTENANCE-DOMAIN CONFIGURATION
-#
-
-
-#
-# MAINTENANCE-ASSOCIATION CONFIGURATION
-#
-
-
-#
-# MAINTENANCE-ENDPOINT CONFIGURATION
-#
-
-
-#
-# PORT CHANNELIZE CONFIGURATION
-#
-
-
-#
-# PORT CONFIGURATION - PHASE I
-#
-
-
-#
-# ISIS SPBM CONFIGURATION
-#
-
-
-#
-# SPB-PIM-GW CONFIGURATION
-#
-
-
-#
-# MLT CONFIGURATION
-#
-
-
-#
-# IP PREFIX LIST CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IP PREFIX LIST CONFIGURATION - VRF
-#
-
-
-#
-# IPv6 PREFIX LIST CONFIGURATION - GlobalRouter
-#
-
-
-#
-# RMON CONFIGURATION
-#
-
-
-#
-# DVR CONFIGURATION
-#
-
-
-#
-# VLAN CONFIGURATION
-#
-
-interface Vlan 1
-ip address 10.10.10.10 255.255.255.0 0
-ipv6 interface mac-offset 0
-ipv6 interface address 2001:0:0:0:0:0:0:1/64
-ipv6 interface address 2002:0:0:0:0:0:0:1/64
-
-exit
-vlan create 3 type port-mstprstp 0
-
-#
-# MSTP CONFIGURATION
-#
-
-
-#
-# NLS CONFIGURATION
-#
-
-
-#
-# FHS CONFIGURATION
-#
-
-
-#
-# MAC ACL CONFIGURATION
-#
-
-
-#
-# IPv6 FHS ACL CONFIGURATION
-#
-
-
-#
-# RA-GUARD CONFIGURATION
-#
-
-
-#
-# DHCP-GUARD CONFIGURATION
-#
-
-
-#
-# FHS SNOOPING CONFIGURATION
-#
-
-
-#
-# SFLOW CONFIGURATION
-#
-
-
-#
-# DHCP SNOOPING CONFIGURATION
-#
-
-
-#
-# DHCP SNOOPING BINDING CONFIGURATION
-#
-
-
-#
-# LINK-STATE TRACKING
-#
-
-
-#
-# VIRTUAL IST CONFIGURATION
-#
-
-
-#
-# MLT INTERFACE CONFIGURATION
-#
-
-
-#
-# PORT CONFIGURATION - PHASE II
-#
-
-interface mgmtEthernet mgmt
-auto-negotiate
-ip address 192.168.8.10 255.255.255.0
-
-exit
-interface GigabitEthernet 1/1
-name "serverA"
-exit
-
-#
-# IP CONFIGURATION
-#
-
-
-#
-# IP AS LIST CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IP AS LIST CONFIGURATION - VRF
-#
-
-
-#
-# IP COMMUNITY LIST CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IP COMMUNITY LIST CONFIGURATION - VRF
-#
-
-
-#
-# IP EXTENDED COMMUNITY LIST CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IP EXTENDED COMMUNITY LIST CONFIGURATION - VRF
-#
-
-
-#
-# IP ROUTE MAP CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IP ROUTE MAP CONFIGURATION - VRF
-#
-
-
-#
-# IP CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IP CONFIGURATION - VRF
-#
-
-
-#
-# CIRCUITLESS IP INTERFACE CONFIGURATION - GlobalRouter
-#
-
-interface loopback 1
-ip address 1 1.1.1.1/255.255.255.255
-exit
-
-#
-# CIRCUITLESS IP INTERFACE CONFIGURATION - VRF
-#
-
-interface loopback 2
-ip address 2 4.4.4.4/255.255.255.255 vrf dmz
-exit
-
-#
-# TOPOLOGY-CLIP-IP
-#
-
-
-#
-# MSDP CONFIGURATION - GlobalRouter
-#
-
-
-
-
-#
-# CIRCUITLESS IPV6 INTERFACE CONFIGURATION - GlobalRouter
-#
-
-interface loopback 1
-ipv6 interface address 2011:0:0:0:0:0:0:1/128
-exit
-
-#
-# CIRCUITLESS IPV6 INTERFACE CONFIGURATION - VRF
-#
-
-
-#
-# VRRP CONFIGURATION - GlobalRouter
-#
-
-
-#
-# VRRP CONFIGURATION - VRF
-#
-
-
-#
-# UDP FORWARDING CONFIGURATION - GlobalRouter
-#
-
-
-#
-# UDP FORWARDING CONFIGURATION - VRF
-#
-
-
-#
-# UDP FORWARDING VLAN CONFIGURATION
-#
-
-
-#
-# DHCP CONFIGURATION - GlobalRouter
-#
-
-
-#
-# DHCP CONFIGURATION - VRF
-#
-
-
-#
-# RIP CONFIGURATION - GlobalRouter
-#
-
-
-#
-# RIP CONFIGURATION - VRF
-#
-
-
-#
-# RIP VLAN CONFIGURATION
-#
-
-
-#
-# IGMP CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IGMP CONFIGURATION - VRF
-#
-
-
-#
-# MROUTE CONFIGURATION
-#
-
-
-#
-# MCAST RESOURCE USAGE CONFIGURATION - GlobalRouter
-#
-
-
-#
-# MCAST RESOURCE USAGE CONFIGURATION - VRF
-#
-
-
-#
-# TIMED PRUNE CONFIGURATION - GlobalRouter
-#
-
-
-#
-# TIMED PRUNE CONFIGURATION - VRF
-#
-
-
-#
-# RSMLT CONFIGURATION
-#
-
-
-#
-# IPV6 CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IPV6 CONFIGURATION - VRF
-#
-
-
-#
-# MLD CONFIGURATION - GlobalRouter
-#
-
-
-#
-# MROUTE6 CONFIGURATION
-#
-
-
-#
-# ISIS CONFIGURATION
-#
-
-
-#
-# VTEP CONFIGURATION
-#
-
-
-#
-# REMOTE VTEP CONFIGURATIONS
-#
-
-
-#
-# VLAN NODAL MEP/MIP CONFIGURATION
-#
-
-
-#
-# QOS CONFIGURATION - PHASE II
-#
-
-qos queue-profile 1 member add 1/1-1/42,2/1-2/42
-
-#
-# CFM CONFIGURATION - PHASE II
-#
-
-
-#
-# DIAG CONFIGURATION
-#
-
-
-#
-# NTP CONFIGURATION
-#
-
-no ntp
-
-#
-# OSPF CONFIGURATION - GlobalRouter
-#
-
-router ospf
-exit
-
-#
-# OSPF CONFIGURATION - VRF
-#
-
-
-#
-# OSPF ACCEPT CONFIGURATION - GlobalRouter
-#
-
-
-#
-# OSPF ACCEPT CONFIGURATION - VRF
-#
-
-
-#
-# BGP CONFIGURATION - GlobalRouter
-#
-
-
-#
-# BGP CONFIGURATION - VRF
-#
-
-
-#
-# ISIS SPBM IPVPN CONFIGURATION
-#
-
-#
-# IP ISID LIST CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IP ISID LIST CONFIGURATION - VRF
-#
-
-
-#
-# ISIS ACCEPT CONFIGURATION - GlobalRouter
-#
-
-
-#
-# ISIS ACCEPT CONFIGURATION - VRF
-#
-
-
-#
-# IP REDISTRIBUTION CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IP REDISTRIBUTION CONFIGURATION - VRF
-#
-
-
-#
-# OSPF VLAN CONFIGURATION
-#
-
-
-#
-# OSPF PORT CONFIGURATION
-#
-
-
-#
-# OSPF LOOPBACK CONFIGURATION
-#
-
-
-#
-# RIP PORT CONFIGURATION
-#
-
-
-#
-# IPVPN CONFIGURATION
-#
-
-#
-# SLPP CONFIGURATION
-#
-
-
-#
-# FILTER CONFIGURATION
-#
-
-
-#
-# IPV6 TUNNEL CONFIGURATION
-#
-
-
-#
-# IPV6 OSPFV3 CONFIGURATION
-#
-
-router ospf
-
-exit
-
-#
-# IPV6 RIPng CONFIGURATION
-#
-
-router rip
-exit
-
-#
-# IPV6 STATIC ROUTE CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IPV6 STATIC ROUTE CONFIGURATION - VRF
-#
-
-#
-# IPV6 MGMT INTERFACE CONFIGURATION
-#
-
-
-#
-# IPV6 OSPF VLAN CONFIGURATION
-#
-
-
-#
-# IPV6 OSPF PORT CONFIGURATION
-#
-
-
-#
-# IPV6 RIP VLAN CONFIGURATION
-#
-
-
-#
-# IPV6 RIP PORT CONFIGURATION
-#
-
-
-#
-# IPV6 VRRP VLAN CONFIGURATION
-#
-
-
-#
-# IPV6 VRRP PORT CONFIGURATION
-#
-
-
-#
-# IPV6 NEIGHBOR CONFIGURATION - GlobalRouter
-#
-
-
-#
-# IPV6 NEIGHBOR CONFIGURATION - VRF
-#
-
-
-#
-# IPV6 DHCP CONFIGURATION - GlobalRouter
-#
-
-
-
-#
-# IPV6 DHCP CONFIGURATION - VRF
-#
-
-
-#
-# I-SID CONFIGURATION
-#
-
-
-#
-# VNID CONFIGURATION
-#
-
-
-
-
-#
-# RADIUS CONFIGURATION
-#
-
-
-#
-# TACACS CONFIGURATION
-#
-
-
-#
-# LLDP CONFIGURATION
-#
-
-
-#
-# EAP CONFIGURATION
-#
-
-
-#
-# MACSEC CONFIGURATION
-#
-
-
-#
-# FABRIC ATTACH CONFIGURATION
-#
-
-
-#
-# SPB-PIM-GW CONFIGURATION
-#
-
-
-#
-# SOFTWARE CONFIGURATION
-#
-
-
-#
-# APPLICATION CONFIGURATION
-#
-
-
-#
-# OVSDB CONFIGURATION
-#
-
-
-
-
-
-
-#
-# IPSEC CONFIGURATION
-#
-
-
-#
-# IPSEC POLICY TABLE CONFIGURATION
-#
-
-
-#
-# IPSEC SA TABLE CONFIGURATION
-#
-
-
-#
-# IPSEC SA POLICY LINK TABLE CONFIGURATION
-#
-
-
-#
-# IPV6 OSPFV3 IPSEC CONFIGURATION
-#
-
-
-#
-# IPV6 IPSEC INTERFACE CONFIGURATION
-#
-
-
-#
-# IP IPSEC INTERFACE CONFIGURATION
-#
-
-
-
-
-
-
-#
-# IKE CONFIGURATION
-#
-
-
-
-
-#
-# IP REDISTRIBUTE APPLY CONFIGURATIONS
-
-#
-#
-
-
-#
-# IP ECMP APPLY CONFIGURATIONS
-
-
-
-
-end
-
-
diff --git a/test/units/modules/network/voss/fixtures/voss_facts_show_sys-info b/test/units/modules/network/voss/fixtures/voss_facts_show_sys-info
deleted file mode 100644
index 6e7099c2b6..0000000000
--- a/test/units/modules/network/voss/fixtures/voss_facts_show_sys-info
+++ /dev/null
@@ -1,107 +0,0 @@
-General Info :
-
- SysDescr : VSP-4450GSX-PWR+ (7.0.0.0_B015)
- SysName : VSP-4450GSX-PWR+
- SysUpTime : 5 day(s), 17:13:09
- SysContact : http://www.extremenetworks.com/contact/
- SysLocation :
-
-Chassis Info:
-
- Chassis : 4450GSX-PWR+
- ModelName : 4450GSX-PWR+
- BrandName : Extreme Networks.
- Serial# : 14JP512E0001
- H/W Revision : 01
- H/W Config : none
- Part Number :
- NumSlots : 1
- NumPorts : 50
- BaseMacAddr : b4:47:5e:00:00:00
- MacAddrCapacity : 256
- System MTU : 1950
-
-Card Info :
-
- Slot# CardType Serial# Part# Oper Admin Power
- Status Status State
- 1 4450GSX-PWR+ 14JP512E0001 -- up up on
-
-Temperature Info :
-
- Chassis Temperature
- 30
-
-
-Power Supply Info :
-
- Ps#1 Status : UP
- Ps#1 Type : AC
- Ps#1 Description : AC-DC-54V-1000W
- Ps#1 Serial Number: LBNNTMPL20180R
- Ps#1 Version : --
- Ps#1 Part Number : 325220-A.01
-
- Ps#2 Status : empty
-
- Total Power Available : 1000 watts
- Total Power Usage : 127 watts
-
-Fan Info :
-
- Description OperStatus OperSpeed AirflowDir
- Tray 1 Fan 1 up mediumSpeed left-right
- Tray 1 Fan 2 up mediumSpeed left-right
- Tray 1 Fan 3 up mediumSpeed left-right
-
-LED Info :
-
- LED#1 Label : PWR
- LED#1 Status : GreenSteady
-
- LED#2 Label : Status
- LED#2 Status : GreenSteady
-
- LED#3 Label : Rps
- LED#3 Status : Off
-
- LED#4 Label : Up
- LED#4 Status : UnSupported
-
- LED#5 Label : Down
- LED#5 Status : UnSupported
-
- LED#6 Label : Base
- LED#6 Status : UnSupported
-
-System Error Info :
-
- Send Login Success Trap : false
- Send Authentication Trap : false
- Error Code : 0
- Error Severity : 0
-
-Port Lock Info :
-
- Status : off
- LockedPorts :
-
-Message Control Info :
-
- Action : suppress-msg
- Control-Interval : 5
- Max-msg-num : 5
- Status : disable
-
-
-Configuration Operation Info Since Boot Up:
- Last Change: 0 day(s), 08:31:10 (5 day(s), 08:41:59 ago)
- Last Vlan Change: 0 day(s), 08:27:35 (5 day(s), 08:45:34 ago)
-Last Statistic Reset: 5 day(s), 16:56:45 (0 day(s), 00:16:24 ago)
-
-Current Uboot Info :
-----------------------------------------------------------------------------------------------------
-
- VU-Boot 2012.04-00002-g6fb1c26 (Apr 26 2017 - 13:37:44) bld=17042617
-
-
diff --git a/test/units/modules/network/voss/test_voss_command.py b/test/units/modules/network/voss/test_voss_command.py
deleted file mode 100644
index b478eb0ebe..0000000000
--- a/test/units/modules/network/voss/test_voss_command.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import json
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.voss import voss_command
-from .voss_module import TestVossModule, load_fixture
-
-
-class TestVossCommandModule(TestVossModule):
-
- module = voss_command
-
- def setUp(self):
- super(TestVossCommandModule, self).setUp()
-
- self.mock_run_commands = patch('ansible.modules.network.voss.voss_command.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestVossCommandModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
-
- def load_from_file(*args, **kwargs):
- module, commands = args
- output = list()
-
- for item in commands:
- try:
- obj = json.loads(item['command'])
- command = obj['command']
- except ValueError:
- command = item['command']
- filename = str(command).replace(' ', '_')
- output.append(load_fixture(filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_voss_command_simple(self):
- set_module_args(dict(commands=['show sys-info']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 1)
- self.assertTrue(result['stdout'][0].startswith('General Info'))
-
- def test_voss_command_multiple(self):
- set_module_args(dict(commands=['show sys-info', 'show sys-info']))
- result = self.execute_module()
- self.assertEqual(len(result['stdout']), 2)
- self.assertTrue(result['stdout'][0].startswith('General Info'))
-
- def test_voss_command_wait_for(self):
- wait_for = 'result[0] contains "General Info"'
- set_module_args(dict(commands=['show sys-info'], wait_for=wait_for))
- self.execute_module()
-
- def test_voss_command_wait_for_fails(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show sys-info'], wait_for=wait_for))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 10)
-
- def test_voss_command_retries(self):
- wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['show sys-info'], wait_for=wait_for, retries=2))
- self.execute_module(failed=True)
- self.assertEqual(self.run_commands.call_count, 2)
-
- def test_voss_command_match_any(self):
- wait_for = ['result[0] contains "General Info"',
- 'result[0] contains "test string"']
- set_module_args(dict(commands=['show sys-info'], wait_for=wait_for, match='any'))
- self.execute_module()
-
- def test_voss_command_match_all(self):
- wait_for = ['result[0] contains "General Info"',
- 'result[0] contains "Chassis Info"']
- set_module_args(dict(commands=['show sys-info'], wait_for=wait_for, match='all'))
- self.execute_module()
-
- def test_voss_command_match_all_failure(self):
- wait_for = ['result[0] contains "General Info"',
- 'result[0] contains "test string"']
- commands = ['show sys-info', 'show sys-info']
- set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
- self.execute_module(failed=True)
-
- def test_voss_command_configure_error(self):
- commands = ['configure terminal']
- set_module_args({
- 'commands': commands,
- '_ansible_check_mode': True,
- })
- result = self.execute_module(failed=True)
- self.assertEqual(
- result['msg'],
- 'voss_command does not support running config mode commands. Please use voss_config instead'
- )
diff --git a/test/units/modules/network/voss/test_voss_config.py b/test/units/modules/network/voss/test_voss_config.py
deleted file mode 100644
index 7006c4e1d8..0000000000
--- a/test/units/modules/network/voss/test_voss_config.py
+++ /dev/null
@@ -1,272 +0,0 @@
-#
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch, MagicMock
-from units.modules.utils import set_module_args
-from ansible.modules.network.voss import voss_config
-from ansible.plugins.cliconf.voss import Cliconf
-from .voss_module import TestVossModule, load_fixture
-
-
-class TestVossConfigModule(TestVossModule):
-
- module = voss_config
-
- def setUp(self):
- super(TestVossConfigModule, self).setUp()
-
- self.mock_get_config = patch('ansible.modules.network.voss.voss_config.get_config')
- self.get_config = self.mock_get_config.start()
-
- self.mock_get_connection = patch('ansible.modules.network.voss.voss_config.get_connection')
- self.get_connection = self.mock_get_connection.start()
-
- self.conn = self.get_connection()
- self.conn.edit_config = MagicMock()
-
- self.mock_run_commands = patch('ansible.modules.network.voss.voss_config.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- self.cliconf_obj = Cliconf(MagicMock())
- self.running_config = load_fixture('voss_config_config.cfg')
-
- def tearDown(self):
- super(TestVossConfigModule, self).tearDown()
- self.mock_get_config.stop()
- self.mock_run_commands.stop()
- self.mock_get_connection.stop()
-
- def load_fixtures(self, commands=None):
- config_file = 'voss_config_config.cfg'
- self.get_config.return_value = load_fixture(config_file)
- self.get_connection.edit_config.return_value = None
-
- def test_voss_config_unchanged(self):
- src = load_fixture('voss_config_config.cfg')
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, src))
- set_module_args(dict(src=src))
- self.execute_module()
-
- def test_voss_config_src(self):
- src = load_fixture('voss_config_src.cfg')
- set_module_args(dict(src=src))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config))
- commands = ['prompt "VSP8K"', 'interface GigabitEthernet 1/1',
- 'name "UNUSED"', 'exit']
- self.execute_module(changed=True, commands=commands)
-
- def test_voss_config_backup(self):
- set_module_args(dict(backup=True))
- result = self.execute_module()
- self.assertIn('__backup__', result)
-
- def test_voss_config_save_always(self):
- self.run_commands.return_value = "Hostname foo"
- set_module_args(dict(save_when='always'))
- self.execute_module(changed=True)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.conn.edit_config.call_count, 0)
- args = self.run_commands.call_args[0][1]
- self.assertIn('save config\r', args)
-
- def test_voss_config_save_changed_true(self):
- src = load_fixture('voss_config_src.cfg')
- set_module_args(dict(src=src, save_when='changed'))
- commands = ['prompt "VSP8K"', 'interface GigabitEthernet 1/1',
- 'name "UNUSED"', 'exit']
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config))
- self.execute_module(changed=True, commands=commands)
- self.assertEqual(self.run_commands.call_count, 1)
- self.assertEqual(self.get_config.call_count, 1)
- self.assertEqual(self.conn.edit_config.call_count, 1)
- args = self.run_commands.call_args[0][1]
- self.assertIn('save config\r', args)
-
- def test_voss_config_save_changed_false(self):
- set_module_args(dict(save_when='changed'))
- self.execute_module(changed=False)
- self.assertEqual(self.run_commands.call_count, 0)
- self.assertEqual(self.get_config.call_count, 0)
- self.assertEqual(self.conn.edit_config.call_count, 0)
-
- def test_voss_config_lines_wo_parents(self):
- lines = ['prompt "VSP8K"']
- set_module_args(dict(lines=lines))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config))
- commands = ['prompt "VSP8K"']
- self.execute_module(changed=True, commands=commands)
-
- def test_voss_config_lines_w_parents(self):
- lines = ['no shutdown']
- parents = ['interface GigabitEthernet 1/1']
- set_module_args(dict(lines=lines, parents=parents))
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = voss_config.get_candidate_config(module)
-
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config))
-
- commands = ['interface GigabitEthernet 1/1', 'no shutdown']
- self.execute_module(changed=True, commands=commands)
-
- def test_voss_config_before(self):
- lines = ['prompt "VSP8K"']
- set_module_args(dict(lines=lines, before=['test1', 'test2']))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines),
- self.running_config))
- commands = ['test1', 'test2', 'prompt "VSP8K"']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_voss_config_after(self):
- lines = ['prompt "VSP8K"']
- set_module_args(dict(lines=lines, after=['test1', 'test2']))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines),
- self.running_config))
- commands = ['prompt "VSP8K"', 'test1', 'test2']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_voss_config_before_after_no_change(self):
- lines = ['prompt "VSP300"']
- set_module_args(dict(lines=lines,
- before=['test1', 'test2'],
- after=['test3', 'test4']))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config))
- self.execute_module()
-
- def test_voss_config_config(self):
- config = 'prompt "VSP300"'
- lines = ['prompt router']
- set_module_args(dict(lines=lines, config=config))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), config))
- commands = ['prompt router']
- self.execute_module(changed=True, commands=commands)
-
- def test_voss_config_replace_block(self):
- lines = ['name "ServerB"', 'test string']
- parents = ['interface GigabitEthernet 1/2']
- set_module_args(dict(lines=lines, replace='block', parents=parents))
-
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = voss_config.get_candidate_config(module)
-
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_replace='block', path=parents))
-
- commands = parents + lines
- self.execute_module(changed=True, commands=commands)
-
- def test_voss_config_match_none(self):
- lines = ['prompt router']
- set_module_args(dict(lines=lines, match='none'))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), self.running_config, diff_match='none'))
- self.execute_module(changed=True, commands=lines)
-
- def test_voss_config_match_none_parents(self):
- lines = ['name ServerA', 'vlacp enable']
- parents = ['interface GigabitEthernet 1/1']
- set_module_args(dict(lines=lines, parents=parents, match='none'))
-
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = voss_config.get_candidate_config(module)
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='none', path=parents))
-
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_voss_config_match_strict(self):
- lines = ['name "ServerA"', 'vlacp enable',
- 'no shutdown']
- parents = ['interface GigabitEthernet 1/1']
- set_module_args(dict(lines=lines, parents=parents, match='strict'))
-
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = voss_config.get_candidate_config(module)
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='strict', path=parents))
-
- commands = parents + ['no shutdown']
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_voss_config_match_exact(self):
- lines = ['name "ServerA"', 'vlacp enable', 'no shutdown']
- parents = ['interface GigabitEthernet 1/1']
- set_module_args(dict(lines=lines, parents=parents, match='exact'))
-
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = voss_config.get_candidate_config(module)
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='exact', path=parents))
-
- commands = parents + lines
- self.execute_module(changed=True, commands=commands, sort=False)
-
- def test_voss_config_src_and_lines_fails(self):
- args = dict(src='foo', lines='foo')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_voss_config_src_and_parents_fails(self):
- args = dict(src='foo', parents='foo')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_voss_config_match_exact_requires_lines(self):
- args = dict(match='exact')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_voss_config_match_strict_requires_lines(self):
- args = dict(match='strict')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_voss_config_replace_block_requires_lines(self):
- args = dict(replace='block')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_voss_config_replace_config_requires_src(self):
- args = dict(replace='config')
- set_module_args(args)
- self.execute_module(failed=True)
-
- def test_voss_config_ipv6(self):
- lines = ['ip address 1 1.1.1.1/255.255.255.255',
- 'ipv6 interface address 2011:0:0:0:0:0:0:1/128']
- parents = ['interface loopback 1']
- set_module_args(dict(lines=lines, parents=parents))
- module = MagicMock()
- module.params = {'lines': lines, 'parents': parents, 'src': None}
- candidate_config = voss_config.get_candidate_config(module)
-
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config))
- self.execute_module(changed=False)
-
- def test_voss_config_src_ipv6(self):
- src = load_fixture('voss_config_ipv6.cfg')
- set_module_args(dict(src=src))
- self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config))
- commands = ['interface loopback 1', 'ip address 1 2.2.2.2/255.255.255.255',
- 'ipv6 interface address 2011:0:0:0:0:0:0:2/128', 'exit']
- self.execute_module(changed=True, commands=commands)
diff --git a/test/units/modules/network/voss/test_voss_facts.py b/test/units/modules/network/voss/test_voss_facts.py
deleted file mode 100644
index dd62f4a4dc..0000000000
--- a/test/units/modules/network/voss/test_voss_facts.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from units.compat.mock import patch
-from units.modules.utils import set_module_args
-from ansible.modules.network.voss import voss_facts
-from .voss_module import TestVossModule, load_fixture
-
-
-class TestVossFactsModule(TestVossModule):
-
- module = voss_facts
-
- def setUp(self):
- super(TestVossFactsModule, self).setUp()
- self.mock_run_commands = patch('ansible.modules.network.voss.voss_facts.run_commands')
- self.run_commands = self.mock_run_commands.start()
-
- def tearDown(self):
- super(TestVossFactsModule, self).tearDown()
- self.mock_run_commands.stop()
-
- def load_fixtures(self, commands=None):
- def load_from_file(*args, **kwargs):
- module = args
- commands = kwargs['commands']
- output = list()
-
- for command in commands:
- filename = str(command).split(' | ')[0].replace(' ', '_')
- output.append(load_fixture('voss_facts_%s' % filename))
- return output
-
- self.run_commands.side_effect = load_from_file
-
- def test_voss_facts_default(self):
- set_module_args(dict(gather_subset='default'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_model'], '4450GSX-PWR+'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_serialnum'], '14JP512E0001'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_version'], '7.0.0.0_B015'
- )
-
- def test_voss_facts_interfaces(self):
- set_module_args(dict(gather_subset='interfaces'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']['1/1']['description'], 'serverA'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_interfaces']['Clip1']['ipv4'][0]['address'], '1.1.1.1'
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_neighbors']['1/1'][0]['host'], 'X690-48t-2q-4c'
- )
-
- def test_voss_facts_hardware(self):
- set_module_args(dict(gather_subset='hardware'))
- result = self.execute_module()
- self.assertEqual(
- result['ansible_facts']['ansible_net_memfree_mb'], 625
- )
- self.assertEqual(
- result['ansible_facts']['ansible_net_memtotal_mb'], 1002
- )
diff --git a/test/units/modules/network/voss/voss_module.py b/test/units/modules/network/voss/voss_module.py
deleted file mode 100644
index d5ca438c06..0000000000
--- a/test/units/modules/network/voss/voss_module.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# (c) 2016 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase
-
-
-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 TestVossModule(ModuleTestCase):
-
- def execute_module(self, failed=False, changed=False, commands=None, sort=True, defaults=False):
-
- self.load_fixtures(commands)
-
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if commands is not None:
- if sort:
- self.assertEqual(sorted(commands), sorted(result['commands']), result['commands'])
- else:
- self.assertEqual(commands, result['commands'], result['commands'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def load_fixtures(self, commands=None):
- pass
diff --git a/test/units/modules/notification/test_campfire.py b/test/units/modules/notification/test_campfire.py
deleted file mode 100644
index 33f53e957e..0000000000
--- a/test/units/modules/notification/test_campfire.py
+++ /dev/null
@@ -1,93 +0,0 @@
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import pytest
-from units.compat.mock import patch
-from ansible.modules.notification import campfire
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-
-class TestCampfireModule(ModuleTestCase):
-
- def setUp(self):
- super(TestCampfireModule, self).setUp()
- self.module = campfire
-
- def tearDown(self):
- super(TestCampfireModule, self).tearDown()
-
- @pytest.fixture
- def fetch_url_mock(self, mocker):
- return mocker.patch('ansible.module_utils.notification.campfire.fetch_url')
-
- def test_without_required_parameters(self):
- """Failure must occurs when all parameters are missing"""
- with self.assertRaises(AnsibleFailJson):
- set_module_args({})
- self.module.main()
-
- def test_successful_message(self):
- """Test failure message"""
- set_module_args({
- 'subscription': 'test',
- 'token': 'abc',
- 'room': 'test',
- 'msg': 'test'
- })
-
- with patch.object(campfire, "fetch_url") as fetch_url_mock:
- fetch_url_mock.return_value = (None, {"status": 200})
- with self.assertRaises(AnsibleExitJson):
- self.module.main()
-
- assert fetch_url_mock.call_count == 1
- url = fetch_url_mock.call_args[0][1]
- data = fetch_url_mock.call_args[1]['data']
-
- assert url == 'https://test.campfirenow.com/room/test/speak.xml'
- assert data == '<message><body>test</body></message>'
-
- def test_successful_message_with_notify(self):
- """Test failure message"""
- set_module_args({
- 'subscription': 'test',
- 'token': 'abc',
- 'room': 'test',
- 'msg': 'test',
- 'notify': 'bell'
- })
-
- with patch.object(campfire, "fetch_url") as fetch_url_mock:
- fetch_url_mock.return_value = (None, {"status": 200})
- with self.assertRaises(AnsibleExitJson):
- self.module.main()
-
- assert fetch_url_mock.call_count == 2
- notify_call = fetch_url_mock.mock_calls[0]
- url = notify_call[1][1]
- data = notify_call[2]['data']
-
- assert url == 'https://test.campfirenow.com/room/test/speak.xml'
- assert data == '<message><type>SoundMessage</type><body>bell</body></message>'
-
- message_call = fetch_url_mock.mock_calls[1]
- url = message_call[1][1]
- data = message_call[2]['data']
-
- assert url == 'https://test.campfirenow.com/room/test/speak.xml'
- assert data == '<message><body>test</body></message>'
-
- def test_failure_message(self):
- """Test failure message"""
- set_module_args({
- 'subscription': 'test',
- 'token': 'abc',
- 'room': 'test',
- 'msg': 'test'
- })
-
- with patch.object(campfire, "fetch_url") as fetch_url_mock:
- fetch_url_mock.return_value = (None, {"status": 403})
- with self.assertRaises(AnsibleFailJson):
- self.module.main()
diff --git a/test/units/modules/notification/test_slack.py b/test/units/modules/notification/test_slack.py
deleted file mode 100644
index dc2e3eea02..0000000000
--- a/test/units/modules/notification/test_slack.py
+++ /dev/null
@@ -1,120 +0,0 @@
-import json
-import pytest
-from units.compat.mock import patch
-from ansible.modules.notification import slack
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-
-class TestSlackModule(ModuleTestCase):
-
- def setUp(self):
- super(TestSlackModule, self).setUp()
- self.module = slack
-
- def tearDown(self):
- super(TestSlackModule, self).tearDown()
-
- @pytest.fixture
- def fetch_url_mock(self, mocker):
- return mocker.patch('ansible.module_utils.notification.slack.fetch_url')
-
- def test_without_required_parameters(self):
- """Failure must occurs when all parameters are missing"""
- with self.assertRaises(AnsibleFailJson):
- set_module_args({})
- self.module.main()
-
- def test_invalid_old_token(self):
- """Failure if there is an old style token"""
- set_module_args({
- 'token': 'test',
- })
- with self.assertRaises(AnsibleFailJson):
- self.module.main()
-
- def test_sucessful_message(self):
- """tests sending a message. This is example 1 from the docs"""
- set_module_args({
- 'token': 'XXXX/YYYY/ZZZZ',
- 'msg': 'test'
- })
-
- with patch.object(slack, "fetch_url") as fetch_url_mock:
- fetch_url_mock.return_value = (None, {"status": 200})
- with self.assertRaises(AnsibleExitJson):
- self.module.main()
-
- self.assertTrue(fetch_url_mock.call_count, 1)
- call_data = json.loads(fetch_url_mock.call_args[1]['data'])
- assert call_data['username'] == "Ansible"
- assert call_data['text'] == "test"
- assert fetch_url_mock.call_args[1]['url'] == "https://hooks.slack.com/services/XXXX/YYYY/ZZZZ"
-
- def test_failed_message(self):
- """tests failing to send a message"""
-
- set_module_args({
- 'token': 'XXXX/YYYY/ZZZZ',
- 'msg': 'test'
- })
-
- with patch.object(slack, "fetch_url") as fetch_url_mock:
- fetch_url_mock.return_value = (None, {"status": 404, 'msg': 'test'})
- with self.assertRaises(AnsibleFailJson):
- self.module.main()
-
- def test_message_with_thread(self):
- """tests sending a message with a thread"""
- set_module_args({
- 'token': 'XXXX/YYYY/ZZZZ',
- 'msg': 'test',
- 'thread_id': 100.00
- })
-
- with patch.object(slack, "fetch_url") as fetch_url_mock:
- fetch_url_mock.return_value = (None, {"status": 200})
- with self.assertRaises(AnsibleExitJson):
- self.module.main()
-
- self.assertTrue(fetch_url_mock.call_count, 1)
- call_data = json.loads(fetch_url_mock.call_args[1]['data'])
- assert call_data['username'] == "Ansible"
- assert call_data['text'] == "test"
- assert call_data['thread_ts'] == 100.00
- assert fetch_url_mock.call_args[1]['url'] == "https://hooks.slack.com/services/XXXX/YYYY/ZZZZ"
-
- def test_message_with_invalid_color(self):
- """tests sending invalid color value to module"""
- set_module_args({
- 'token': 'XXXX/YYYY/ZZZZ',
- 'msg': 'test',
- 'color': 'aa',
- })
- with self.assertRaises(AnsibleFailJson) as exec_info:
- self.module.main()
-
- msg = "Color value specified should be either one of" \
- " ['normal', 'good', 'warning', 'danger'] or any valid" \
- " hex value with length 3 or 6."
- assert exec_info.exception.args[0]['msg'] == msg
-
-
-color_test = [
- ('#111111', True),
- ('#00aabb', True),
- ('#abc', True),
- ('#gghhjj', False),
- ('#ghj', False),
- ('#a', False),
- ('#aaaaaaaa', False),
- ('', False),
- ('aaaa', False),
- ('$00aabb', False),
- ('$00a', False),
-]
-
-
-@pytest.mark.parametrize("color_value, ret_status", color_test)
-def test_is_valid_hex_color(color_value, ret_status):
- generated_value = slack.is_valid_hex_color(color_value)
- assert generated_value == ret_status
diff --git a/test/units/modules/packaging/language/test_gem.py b/test/units/modules/packaging/language/test_gem.py
deleted file mode 100644
index 30c46d3bc1..0000000000
--- a/test/units/modules/packaging/language/test_gem.py
+++ /dev/null
@@ -1,139 +0,0 @@
-# Copyright (c) 2018 Antoine Catton
-# MIT License (see licenses/MIT-license.txt or https://opensource.org/licenses/MIT)
-import copy
-
-import pytest
-
-from ansible.modules.packaging.language import gem
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-
-def get_command(run_command):
- """Generate the command line string from the patched run_command"""
- args = run_command.call_args[0]
- command = args[0]
- return ' '.join(command)
-
-
-class TestGem(ModuleTestCase):
- def setUp(self):
- super(TestGem, self).setUp()
- self.rubygems_path = ['/usr/bin/gem']
- self.mocker.patch(
- 'ansible.modules.packaging.language.gem.get_rubygems_path',
- lambda module: copy.deepcopy(self.rubygems_path),
- )
-
- @pytest.fixture(autouse=True)
- def _mocker(self, mocker):
- self.mocker = mocker
-
- def patch_installed_versions(self, versions):
- """Mocks the versions of the installed package"""
-
- target = 'ansible.modules.packaging.language.gem.get_installed_versions'
-
- def new(module, remote=False):
- return versions
-
- return self.mocker.patch(target, new)
-
- def patch_rubygems_version(self, version=None):
- target = 'ansible.modules.packaging.language.gem.get_rubygems_version'
-
- def new(module):
- return version
-
- return self.mocker.patch(target, new)
-
- def patch_run_command(self):
- target = 'ansible.module_utils.basic.AnsibleModule.run_command'
- return self.mocker.patch(target)
-
- def test_fails_when_user_install_and_install_dir_are_combined(self):
- set_module_args({
- 'name': 'dummy',
- 'user_install': True,
- 'install_dir': '/opt/dummy',
- })
-
- with pytest.raises(AnsibleFailJson) as exc:
- gem.main()
-
- result = exc.value.args[0]
- assert result['failed']
- assert result['msg'] == "install_dir requires user_install=false"
-
- def test_passes_install_dir_to_gem(self):
- # XXX: This test is extremely fragile, and makes assuptions about the module code, and how
- # functions are run.
- # If you start modifying the code of the module, you might need to modify what this
- # test mocks. The only thing that matters is the assertion that this 'gem install' is
- # invoked with '--install-dir'.
-
- set_module_args({
- 'name': 'dummy',
- 'user_install': False,
- 'install_dir': '/opt/dummy',
- })
-
- self.patch_rubygems_version()
- self.patch_installed_versions([])
- run_command = self.patch_run_command()
-
- with pytest.raises(AnsibleExitJson) as exc:
- gem.main()
-
- result = exc.value.args[0]
- assert result['changed']
- assert run_command.called
-
- assert '--install-dir /opt/dummy' in get_command(run_command)
-
- def test_passes_install_dir_and_gem_home_when_uninstall_gem(self):
- # XXX: This test is also extremely fragile because of mocking.
- # If this breaks, the only that matters is to check whether '--install-dir' is
- # in the run command, and that GEM_HOME is passed to the command.
- set_module_args({
- 'name': 'dummy',
- 'user_install': False,
- 'install_dir': '/opt/dummy',
- 'state': 'absent',
- })
-
- self.patch_rubygems_version()
- self.patch_installed_versions(['1.0.0'])
-
- run_command = self.patch_run_command()
-
- with pytest.raises(AnsibleExitJson) as exc:
- gem.main()
-
- result = exc.value.args[0]
-
- assert result['changed']
- assert run_command.called
-
- assert '--install-dir /opt/dummy' in get_command(run_command)
-
- update_environ = run_command.call_args[1].get('environ_update', {})
- assert update_environ.get('GEM_HOME') == '/opt/dummy'
-
- def test_passes_add_force_option(self):
- set_module_args({
- 'name': 'dummy',
- 'force': True,
- })
-
- self.patch_rubygems_version()
- self.patch_installed_versions([])
- run_command = self.patch_run_command()
-
- with pytest.raises(AnsibleExitJson) as exc:
- gem.main()
-
- result = exc.value.args[0]
- assert result['changed']
- assert run_command.called
-
- assert '--force' in get_command(run_command)
diff --git a/test/units/modules/packaging/language/test_maven_artifact.py b/test/units/modules/packaging/language/test_maven_artifact.py
deleted file mode 100644
index 09e3b4e8ac..0000000000
--- a/test/units/modules/packaging/language/test_maven_artifact.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (c) 2017 Ansible Project
-# 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 pytest
-
-from ansible.modules.packaging.language import maven_artifact
-from ansible.module_utils import basic
-
-
-pytestmark = pytest.mark.usefixtures('patch_ansible_module')
-
-maven_metadata_example = b"""<?xml version="1.0" encoding="UTF-8"?>
-<metadata>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <versioning>
- <latest>4.13-beta-2</latest>
- <release>4.13-beta-2</release>
- <versions>
- <version>3.7</version>
- <version>3.8</version>
- <version>3.8.1</version>
- <version>3.8.2</version>
- <version>4.0</version>
- <version>4.1</version>
- <version>4.2</version>
- <version>4.3</version>
- <version>4.3.1</version>
- <version>4.4</version>
- <version>4.5</version>
- <version>4.6</version>
- <version>4.7</version>
- <version>4.8</version>
- <version>4.8.1</version>
- <version>4.8.2</version>
- <version>4.9</version>
- <version>4.10</version>
- <version>4.11-beta-1</version>
- <version>4.11</version>
- <version>4.12-beta-1</version>
- <version>4.12-beta-2</version>
- <version>4.12-beta-3</version>
- <version>4.12</version>
- <version>4.13-beta-1</version>
- <version>4.13-beta-2</version>
- </versions>
- <lastUpdated>20190202141051</lastUpdated>
- </versioning>
-</metadata>
-"""
-
-
-@pytest.mark.parametrize('patch_ansible_module, version_by_spec, version_choosed', [
- (None, "(,3.9]", "3.8.2"),
- (None, "3.0", "3.8.2"),
- (None, "[3.7]", "3.7"),
- (None, "[4.10, 4.12]", "4.12"),
- (None, "[4.10, 4.12)", "4.11"),
- (None, "[2.0,)", "4.13-beta-2"),
-])
-def test_find_version_by_spec(mocker, version_by_spec, version_choosed):
- _getContent = mocker.patch('ansible.modules.packaging.language.maven_artifact.MavenDownloader._getContent')
- _getContent.return_value = maven_metadata_example
-
- artifact = maven_artifact.Artifact("junit", "junit", None, version_by_spec, "jar")
- mvn_downloader = maven_artifact.MavenDownloader(basic.AnsibleModule, "https://repo1.maven.org/maven2")
-
- assert mvn_downloader.find_version_by_spec(artifact) == version_choosed
diff --git a/test/units/modules/packaging/os/test_apk.py b/test/units/modules/packaging/os/test_apk.py
deleted file mode 100644
index 96bae54532..0000000000
--- a/test/units/modules/packaging/os/test_apk.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from units.compat import mock
-from units.compat import unittest
-
-from ansible.modules.packaging.os import apk
-
-
-class TestApkQueryLatest(unittest.TestCase):
-
- def setUp(self):
- self.module_names = [
- 'bash',
- 'g++',
- ]
-
- @mock.patch('ansible.modules.packaging.os.apk.AnsibleModule')
- def test_not_latest(self, mock_module):
- apk.APK_PATH = ""
- for module_name in self.module_names:
- command_output = module_name + '-2.0.0-r1 < 3.0.0-r2 '
- mock_module.run_command.return_value = (0, command_output, None)
- command_result = apk.query_latest(mock_module, module_name)
- self.assertFalse(command_result)
-
- @mock.patch('ansible.modules.packaging.os.apk.AnsibleModule')
- def test_latest(self, mock_module):
- apk.APK_PATH = ""
- for module_name in self.module_names:
- command_output = module_name + '-2.0.0-r1 = 2.0.0-r1 '
- mock_module.run_command.return_value = (0, command_output, None)
- command_result = apk.query_latest(mock_module, module_name)
- self.assertTrue(command_result)
diff --git a/test/units/modules/packaging/os/test_redhat_subscription.py b/test/units/modules/packaging/os/test_redhat_subscription.py
deleted file mode 100644
index b2a11894fa..0000000000
--- a/test/units/modules/packaging/os/test_redhat_subscription.py
+++ /dev/null
@@ -1,1221 +0,0 @@
-# Author: Jiri Hnidek (jhnidek@redhat.com)
-#
-# 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 json
-
-from ansible.module_utils import basic
-from ansible.modules.packaging.os import redhat_subscription
-
-import pytest
-
-TESTED_MODULE = redhat_subscription.__name__
-
-
-@pytest.fixture
-def patch_redhat_subscription(mocker):
- """
- Function used for mocking some parts of redhat_subscribtion module
- """
- mocker.patch('ansible.modules.packaging.os.redhat_subscription.RegistrationBase.REDHAT_REPO')
- mocker.patch('ansible.modules.packaging.os.redhat_subscription.isfile', return_value=False)
- mocker.patch('ansible.modules.packaging.os.redhat_subscription.unlink', return_value=True)
- mocker.patch('ansible.modules.packaging.os.redhat_subscription.AnsibleModule.get_bin_path',
- return_value='/testbin/subscription-manager')
-
-
-@pytest.mark.parametrize('patch_ansible_module', [{}], indirect=['patch_ansible_module'])
-@pytest.mark.usefixtures('patch_ansible_module')
-def test_without_required_parameters(capfd, patch_redhat_subscription):
- """
- Failure must occurs when all parameters are missing
- """
- with pytest.raises(SystemExit):
- redhat_subscription.main()
- out, err = capfd.readouterr()
- results = json.loads(out)
- assert results['failed']
- assert 'state is present but any of the following are missing' in results['msg']
-
-
-TEST_CASES = [
- # Test the case, when the system is already registered
- [
- {
- 'state': 'present',
- 'server_hostname': 'subscription.rhsm.redhat.com',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin'
- },
- {
- 'id': 'test_already_registered_system',
- 'run_command.calls': [
- (
- # Calling of following command will be asserted
- ['/testbin/subscription-manager', 'identity'],
- # Was return code checked?
- {'check_rc': False},
- # Mock of returned code, stdout and stderr
- (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '')
- )
- ],
- 'changed': False,
- 'msg': 'System already registered.'
- }
- ],
- # Test simple registration using username and password
- [
- {
- 'state': 'present',
- 'server_hostname': 'satellite.company.com',
- 'username': 'admin',
- 'password': 'admin',
- },
- {
- 'id': 'test_registeration_username_password',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, '', '')
- ),
- (
- ['/testbin/subscription-manager', 'config', '--server.hostname=satellite.company.com'],
- {'check_rc': True},
- (0, '', '')
- ),
- (
- ['/testbin/subscription-manager', 'register',
- '--serverurl', 'satellite.company.com',
- '--username', 'admin',
- '--password', 'admin'],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'satellite.company.com'."
- }
- ],
- # Test unregistration, when system is unregistered
- [
- {
- 'state': 'absent',
- 'server_hostname': 'subscription.rhsm.redhat.com',
- 'username': 'admin',
- 'password': 'admin',
- },
- {
- 'id': 'test_unregisteration',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '')
- ),
- (
- ['/testbin/subscription-manager', 'unsubscribe', '--all'],
- {'check_rc': True},
- (0, '', '')
- ),
- (
- ['/testbin/subscription-manager', 'unregister'],
- {'check_rc': True},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully unregistered from subscription.rhsm.redhat.com."
- }
- ],
- # Test unregistration of already unregistered system
- [
- {
- 'state': 'absent',
- 'server_hostname': 'subscription.rhsm.redhat.com',
- 'username': 'admin',
- 'password': 'admin',
- },
- {
- 'id': 'test_unregisteration_of_unregistered_system',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, 'This system is not yet registered.', '')
- )
- ],
- 'changed': False,
- 'msg': "System already unregistered."
- }
- ],
- # Test registration using activation key
- [
- {
- 'state': 'present',
- 'server_hostname': 'satellite.company.com',
- 'activationkey': 'some-activation-key',
- 'org_id': 'admin'
- },
- {
- 'id': 'test_registeration_activation_key',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, 'This system is not yet registered.', '')
- ),
- (
- ['/testbin/subscription-manager', 'config', '--server.hostname=satellite.company.com'],
- {'check_rc': True},
- (0, '', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--serverurl', 'satellite.company.com',
- '--org', 'admin',
- '--activationkey', 'some-activation-key'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'satellite.company.com'."
- }
- ],
- # Test of registration using username and password with auto-attach option
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'auto_attach': 'true'
- },
- {
- 'id': 'test_registeration_username_password_auto_attach',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, 'This system is not yet registered.', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--org', 'admin',
- '--auto-attach',
- '--username', 'admin',
- '--password', 'admin'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'None'."
- }
- ],
- # Test of force registration despite the system is already registered
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'force_register': 'true'
- },
- {
- 'id': 'test_force_registeration_username_password',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (0, 'This system already registered.', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--force',
- '--org', 'admin',
- '--username', 'admin',
- '--password', 'admin'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'None'."
- }
- ],
- # Test of registration using username, password and proxy options
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'force_register': 'true',
- 'server_proxy_hostname': 'proxy.company.com',
- 'server_proxy_port': '12345',
- 'server_proxy_user': 'proxy_user',
- 'server_proxy_password': 'secret_proxy_password'
- },
- {
- 'id': 'test_registeration_username_password_proxy_options',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (0, 'This system already registered.', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'config',
- '--server.proxy_hostname=proxy.company.com',
- '--server.proxy_password=secret_proxy_password',
- '--server.proxy_port=12345',
- '--server.proxy_user=proxy_user'
- ],
- {'check_rc': True},
- (0, '', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--force',
- '--org', 'admin',
- '--proxy', 'proxy.company.com:12345',
- '--proxyuser', 'proxy_user',
- '--proxypassword', 'secret_proxy_password',
- '--username', 'admin',
- '--password', 'admin'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'None'."
- }
- ],
- # Test of registration using username and password and attach to pool
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'pool': 'ff8080816b8e967f016b8e99632804a6'
- },
- {
- 'id': 'test_registeration_username_password_pool',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, 'This system is not yet registered.', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--org', 'admin',
- '--username', 'admin',
- '--password', 'admin'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- ),
- (
- [
- 'subscription-manager list --available',
- {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}},
- (0,
- '''
-+-------------------------------------------+
- Available Subscriptions
-+-------------------------------------------+
-Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server)
-Provides: SP Server Bits
-SKU: sp-server-prem-prod
-Contract: 0
-Pool ID: ff8080816b8e967f016b8e99632804a6
-Provides Management: Yes
-Available: 5
-Suggested: 1
-Service Type: L1-L3
-Roles: SP Server
-Service Level: Premium
-Usage: Production
-Add-ons:
-Subscription Type: Standard
-Starts: 06/25/19
-Ends: 06/24/20
-Entitlement Type: Physical
-''', ''),
- ]
- ),
- (
- 'subscription-manager attach --pool ff8080816b8e967f016b8e99632804a6',
- {'check_rc': True},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'None'."
- }
- ],
- # Test of registration using username and password and attach to pool ID and quantities
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'pool_ids': [{'ff8080816b8e967f016b8e99632804a6': 2}, {'ff8080816b8e967f016b8e99747107e9': 4}]
- },
- {
- 'id': 'test_registeration_username_password_pool_ids_quantities',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, 'This system is not yet registered.', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--org', 'admin',
- '--username', 'admin',
- '--password', 'admin'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- ),
- (
- [
- 'subscription-manager list --available',
- {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}},
- (0,
- '''
-+-------------------------------------------+
- Available Subscriptions
-+-------------------------------------------+
-Subscription Name: SP Smart Management (A: ADDON1)
-Provides: SP Addon 1 bits
-SKU: sp-with-addon-1
-Contract: 1
-Pool ID: ff8080816b8e967f016b8e99747107e9
-Provides Management: Yes
-Available: 10
-Suggested: 1
-Service Type:
-Roles:
-Service Level:
-Usage:
-Add-ons: ADDON1
-Subscription Type: Standard
-Starts: 25.6.2019
-Ends: 24.6.2020
-Entitlement Type: Physical
-
-Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server)
-Provides: SP Server Bits
-SKU: sp-server-prem-prod
-Contract: 0
-Pool ID: ff8080816b8e967f016b8e99632804a6
-Provides Management: Yes
-Available: 5
-Suggested: 1
-Service Type: L1-L3
-Roles: SP Server
-Service Level: Premium
-Usage: Production
-Add-ons:
-Subscription Type: Standard
-Starts: 06/25/19
-Ends: 06/24/20
-Entitlement Type: Physical
-''', '')
- ]
- ),
- (
- [
- '/testbin/subscription-manager',
- 'attach',
- '--pool', 'ff8080816b8e967f016b8e99632804a6',
- '--quantity', '2'
- ],
- {'check_rc': True},
- (0, '', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'attach',
- '--pool', 'ff8080816b8e967f016b8e99747107e9',
- '--quantity', '4'
- ],
- {'check_rc': True},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'None'."
- }
- ],
- # Test of registration using username and password and attach to pool ID without quantities
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'pool_ids': ['ff8080816b8e967f016b8e99632804a6', 'ff8080816b8e967f016b8e99747107e9']
- },
- {
- 'id': 'test_registeration_username_password_pool_ids',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, 'This system is not yet registered.', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--org', 'admin',
- '--username', 'admin',
- '--password', 'admin'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- ),
- (
- [
- 'subscription-manager list --available',
- {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}},
- (0,
- '''
-+-------------------------------------------+
- Available Subscriptions
-+-------------------------------------------+
-Subscription Name: SP Smart Management (A: ADDON1)
-Provides: SP Addon 1 bits
-SKU: sp-with-addon-1
-Contract: 1
-Pool ID: ff8080816b8e967f016b8e99747107e9
-Provides Management: Yes
-Available: 10
-Suggested: 1
-Service Type:
-Roles:
-Service Level:
-Usage:
-Add-ons: ADDON1
-Subscription Type: Standard
-Starts: 25.6.2019
-Ends: 24.6.2020
-Entitlement Type: Physical
-
-Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server)
-Provides: SP Server Bits
-SKU: sp-server-prem-prod
-Contract: 0
-Pool ID: ff8080816b8e967f016b8e99632804a6
-Provides Management: Yes
-Available: 5
-Suggested: 1
-Service Type: L1-L3
-Roles: SP Server
-Service Level: Premium
-Usage: Production
-Add-ons:
-Subscription Type: Standard
-Starts: 06/25/19
-Ends: 06/24/20
-Entitlement Type: Physical
-''', '')
- ]
- ),
- (
- [
- '/testbin/subscription-manager',
- 'attach',
- '--pool', 'ff8080816b8e967f016b8e99632804a6'
- ],
- {'check_rc': True},
- (0, '', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'attach',
- '--pool', 'ff8080816b8e967f016b8e99747107e9'
- ],
- {'check_rc': True},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'None'."
- }
- ],
- # Test of registration using username and password and attach to pool ID (one pool)
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'pool_ids': ['ff8080816b8e967f016b8e99632804a6']
- },
- {
- 'id': 'test_registeration_username_password_one_pool_id',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, 'This system is not yet registered.', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--org', 'admin',
- '--username', 'admin',
- '--password', 'admin'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- ),
- (
- [
- 'subscription-manager list --available',
- {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}},
- (0,
- '''
-+-------------------------------------------+
- Available Subscriptions
-+-------------------------------------------+
-Subscription Name: SP Smart Management (A: ADDON1)
-Provides: SP Addon 1 bits
-SKU: sp-with-addon-1
-Contract: 1
-Pool ID: ff8080816b8e967f016b8e99747107e9
-Provides Management: Yes
-Available: 10
-Suggested: 1
-Service Type:
-Roles:
-Service Level:
-Usage:
-Add-ons: ADDON1
-Subscription Type: Standard
-Starts: 25.6.2019
-Ends: 24.6.2020
-Entitlement Type: Physical
-
-Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server)
-Provides: SP Server Bits
-SKU: sp-server-prem-prod
-Contract: 0
-Pool ID: ff8080816b8e967f016b8e99632804a6
-Provides Management: Yes
-Available: 5
-Suggested: 1
-Service Type: L1-L3
-Roles: SP Server
-Service Level: Premium
-Usage: Production
-Add-ons:
-Subscription Type: Standard
-Starts: 06/25/19
-Ends: 06/24/20
-Entitlement Type: Physical
-''', '')
- ]
- ),
- (
- [
- '/testbin/subscription-manager',
- 'attach',
- '--pool', 'ff8080816b8e967f016b8e99632804a6',
- ],
- {'check_rc': True},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'None'."
- }
- ],
- # Test attaching different set of pool IDs
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'pool_ids': [{'ff8080816b8e967f016b8e99632804a6': 2}, {'ff8080816b8e967f016b8e99747107e9': 4}]
- },
- {
- 'id': 'test_attaching_different_pool_ids',
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', ''),
- ),
- (
- 'subscription-manager list --consumed',
- {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}},
- (0, '''
-+-------------------------------------------+
- Consumed Subscriptions
-+-------------------------------------------+
-Subscription Name: Multi-Attribute Stackable (4 cores, no content)
-Provides: Multi-Attribute Limited Product (no content)
-SKU: cores4-multiattr
-Contract: 1
-Account: 12331131231
-Serial: 7807912223970164816
-Pool ID: ff8080816b8e967f016b8e995f5103b5
-Provides Management: No
-Active: True
-Quantity Used: 1
-Service Type: Level 3
-Roles:
-Service Level: Premium
-Usage:
-Add-ons:
-Status Details: Subscription is current
-Subscription Type: Stackable
-Starts: 06/25/19
-Ends: 06/24/20
-Entitlement Type: Physical
-''', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'unsubscribe',
- '--serial=7807912223970164816',
- ],
- {'check_rc': True},
- (0, '', '')
- ),
- (
- [
- 'subscription-manager list --available',
- {'check_rc': True, 'environ_update': {'LANG': 'C', 'LC_ALL': 'C', 'LC_MESSAGES': 'C'}},
- (0,
- '''
-+-------------------------------------------+
- Available Subscriptions
-+-------------------------------------------+
-Subscription Name: SP Smart Management (A: ADDON1)
-Provides: SP Addon 1 bits
-SKU: sp-with-addon-1
-Contract: 1
-Pool ID: ff8080816b8e967f016b8e99747107e9
-Provides Management: Yes
-Available: 10
-Suggested: 1
-Service Type:
-Roles:
-Service Level:
-Usage:
-Add-ons: ADDON1
-Subscription Type: Standard
-Starts: 25.6.2019
-Ends: 24.6.2020
-Entitlement Type: Physical
-
-Subscription Name: SP Server Premium (S: Premium, U: Production, R: SP Server)
-Provides: SP Server Bits
-SKU: sp-server-prem-prod
-Contract: 0
-Pool ID: ff8080816b8e967f016b8e99632804a6
-Provides Management: Yes
-Available: 5
-Suggested: 1
-Service Type: L1-L3
-Roles: SP Server
-Service Level: Premium
-Usage: Production
-Add-ons:
-Subscription Type: Standard
-Starts: 06/25/19
-Ends: 06/24/20
-Entitlement Type: Physical
-
-Subscription Name: Multi-Attribute Stackable (4 cores, no content)
-Provides: Multi-Attribute Limited Product (no content)
-SKU: cores4-multiattr
-Contract: 1
-Pool ID: ff8080816b8e967f016b8e995f5103b5
-Provides Management: No
-Available: 10
-Suggested: 1
-Service Type: Level 3
-Roles:
-Service Level: Premium
-Usage:
-Add-ons:
-Subscription Type: Stackable
-Starts: 11.7.2019
-Ends: 10.7.2020
-Entitlement Type: Physical
-''', '')
- ]
- ),
- (
- [
- '/testbin/subscription-manager',
- 'attach',
- '--pool', 'ff8080816b8e967f016b8e99632804a6',
- '--quantity', '2'
- ],
- {'check_rc': True},
- (0, '', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'attach',
- '--pool', 'ff8080816b8e967f016b8e99747107e9',
- '--quantity', '4'
- ],
- {'check_rc': True},
- (0, '', '')
- )
- ],
- 'changed': True,
- }
- ]
-]
-
-
-TEST_CASES_IDS = [item[1]['id'] for item in TEST_CASES]
-
-
-@pytest.mark.parametrize('patch_ansible_module, testcase', TEST_CASES, ids=TEST_CASES_IDS, indirect=['patch_ansible_module'])
-@pytest.mark.usefixtures('patch_ansible_module')
-def test_redhat_subscribtion(mocker, capfd, patch_redhat_subscription, testcase):
- """
- Run unit tests for test cases listen in TEST_CASES
- """
-
- # Mock function used for running commands first
- call_results = [item[2] for item in testcase['run_command.calls']]
- mock_run_command = mocker.patch.object(
- basic.AnsibleModule,
- 'run_command',
- side_effect=call_results)
-
- # Try to run test case
- with pytest.raises(SystemExit):
- redhat_subscription.main()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- assert 'changed' in results
- assert results['changed'] == testcase['changed']
- if 'msg' in results:
- assert results['msg'] == testcase['msg']
-
- assert basic.AnsibleModule.run_command.call_count == len(testcase['run_command.calls'])
- if basic.AnsibleModule.run_command.call_count:
- call_args_list = [(item[0][0], item[1]) for item in basic.AnsibleModule.run_command.call_args_list]
- expected_call_args_list = [(item[0], item[1]) for item in testcase['run_command.calls']]
- assert call_args_list == expected_call_args_list
-
-
-SYSPURPOSE_TEST_CASES = [
- # Test setting syspurpose attributes (system is already registered)
- # and synchronization with candlepin server
- [
- {
- 'state': 'present',
- 'server_hostname': 'subscription.rhsm.redhat.com',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'syspurpose': {
- 'role': 'AwesomeOS',
- 'usage': 'Production',
- 'service_level_agreement': 'Premium',
- 'addons': ['ADDON1', 'ADDON2'],
- 'sync': True
- }
- },
- {
- 'id': 'test_setting_syspurpose_attributes',
- 'existing_syspurpose': {},
- 'expected_syspurpose': {
- 'role': 'AwesomeOS',
- 'usage': 'Production',
- 'service_level_agreement': 'Premium',
- 'addons': ['ADDON1', 'ADDON2'],
- },
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '')
- ),
- (
- ['/testbin/subscription-manager', 'status'],
- {'check_rc': False},
- (0, '''
-+-------------------------------------------+
- System Status Details
-+-------------------------------------------+
-Overall Status: Current
-
-System Purpose Status: Matched
-''', '')
- )
- ],
- 'changed': True,
- 'msg': 'Syspurpose attributes changed.'
- }
- ],
- # Test setting unspupported attributes
- [
- {
- 'state': 'present',
- 'server_hostname': 'subscription.rhsm.redhat.com',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'syspurpose': {
- 'foo': 'Bar',
- 'role': 'AwesomeOS',
- 'usage': 'Production',
- 'service_level_agreement': 'Premium',
- 'addons': ['ADDON1', 'ADDON2'],
- 'sync': True
- }
- },
- {
- 'id': 'test_setting_syspurpose_wrong_attributes',
- 'existing_syspurpose': {},
- 'expected_syspurpose': {},
- 'run_command.calls': [],
- 'failed': True
- }
- ],
- # Test setting addons not a list
- [
- {
- 'state': 'present',
- 'server_hostname': 'subscription.rhsm.redhat.com',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'syspurpose': {
- 'role': 'AwesomeOS',
- 'usage': 'Production',
- 'service_level_agreement': 'Premium',
- 'addons': 'ADDON1',
- 'sync': True
- }
- },
- {
- 'id': 'test_setting_syspurpose_addons_not_list',
- 'existing_syspurpose': {},
- 'expected_syspurpose': {
- 'role': 'AwesomeOS',
- 'usage': 'Production',
- 'service_level_agreement': 'Premium',
- 'addons': ['ADDON1']
- },
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '')
- ),
- (
- ['/testbin/subscription-manager', 'status'],
- {'check_rc': False},
- (0, '''
-+-------------------------------------------+
- System Status Details
-+-------------------------------------------+
-Overall Status: Current
-
-System Purpose Status: Matched
-''', '')
- )
- ],
- 'changed': True,
- 'msg': 'Syspurpose attributes changed.'
- }
- ],
- # Test setting syspurpose attributes (system is already registered)
- # without synchronization with candlepin server. Some syspurpose attributes were set
- # in the past
- [
- {
- 'state': 'present',
- 'server_hostname': 'subscription.rhsm.redhat.com',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'syspurpose': {
- 'role': 'AwesomeOS',
- 'service_level_agreement': 'Premium',
- 'addons': ['ADDON1', 'ADDON2'],
- 'sync': False
- }
- },
- {
- 'id': 'test_changing_syspurpose_attributes',
- 'existing_syspurpose': {
- 'role': 'CoolOS',
- 'usage': 'Production',
- 'service_level_agreement': 'Super',
- 'addons': [],
- 'foo': 'bar'
- },
- 'expected_syspurpose': {
- 'role': 'AwesomeOS',
- 'service_level_agreement': 'Premium',
- 'addons': ['ADDON1', 'ADDON2'],
- 'foo': 'bar'
- },
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '')
- ),
- ],
- 'changed': True,
- 'msg': 'Syspurpose attributes changed.'
- }
- ],
- # Test trying to set syspurpose attributes (system is already registered)
- # without synchronization with candlepin server. Some syspurpose attributes were set
- # in the past. Syspurpose attributes are same as before
- [
- {
- 'state': 'present',
- 'server_hostname': 'subscription.rhsm.redhat.com',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'syspurpose': {
- 'role': 'AwesomeOS',
- 'service_level_agreement': 'Premium',
- 'addons': ['ADDON1', 'ADDON2'],
- 'sync': False
- }
- },
- {
- 'id': 'test_not_changing_syspurpose_attributes',
- 'existing_syspurpose': {
- 'role': 'AwesomeOS',
- 'service_level_agreement': 'Premium',
- 'addons': ['ADDON1', 'ADDON2'],
- },
- 'expected_syspurpose': {
- 'role': 'AwesomeOS',
- 'service_level_agreement': 'Premium',
- 'addons': ['ADDON1', 'ADDON2'],
- },
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (0, 'system identity: b26df632-25ed-4452-8f89-0308bfd167cb', '')
- ),
- ],
- 'changed': False,
- 'msg': 'System already registered.'
- }
- ],
- # Test of registration using username and password with auto-attach option, when
- # syspurpose attributes are set
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'auto_attach': 'true',
- 'syspurpose': {
- 'role': 'AwesomeOS',
- 'usage': 'Testing',
- 'service_level_agreement': 'Super',
- 'addons': ['ADDON1'],
- 'sync': False
- },
- },
- {
- 'id': 'test_registeration_username_password_auto_attach_syspurpose',
- 'existing_syspurpose': None,
- 'expected_syspurpose': {
- 'role': 'AwesomeOS',
- 'usage': 'Testing',
- 'service_level_agreement': 'Super',
- 'addons': ['ADDON1'],
- },
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, 'This system is not yet registered.', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--org', 'admin',
- '--auto-attach',
- '--username', 'admin',
- '--password', 'admin'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'None'."
- }
- ],
- # Test of registration using username and password with auto-attach option, when
- # syspurpose attributes are set. Syspurpose attributes are also synchronized
- # in this case
- [
- {
- 'state': 'present',
- 'username': 'admin',
- 'password': 'admin',
- 'org_id': 'admin',
- 'auto_attach': 'true',
- 'syspurpose': {
- 'role': 'AwesomeOS',
- 'usage': 'Testing',
- 'service_level_agreement': 'Super',
- 'addons': ['ADDON1'],
- 'sync': True
- },
- },
- {
- 'id': 'test_registeration_username_password_auto_attach_syspurpose_sync',
- 'existing_syspurpose': None,
- 'expected_syspurpose': {
- 'role': 'AwesomeOS',
- 'usage': 'Testing',
- 'service_level_agreement': 'Super',
- 'addons': ['ADDON1'],
- },
- 'run_command.calls': [
- (
- ['/testbin/subscription-manager', 'identity'],
- {'check_rc': False},
- (1, 'This system is not yet registered.', '')
- ),
- (
- [
- '/testbin/subscription-manager',
- 'register',
- '--org', 'admin',
- '--auto-attach',
- '--username', 'admin',
- '--password', 'admin'
- ],
- {'check_rc': True, 'expand_user_and_vars': False},
- (0, '', '')
- ),
- (
- ['/testbin/subscription-manager', 'status'],
- {'check_rc': False},
- (0, '''
-+-------------------------------------------+
- System Status Details
-+-------------------------------------------+
-Overall Status: Current
-
-System Purpose Status: Matched
-''', '')
- )
- ],
- 'changed': True,
- 'msg': "System successfully registered to 'None'."
- }
- ],
-]
-
-
-SYSPURPOSE_TEST_CASES_IDS = [item[1]['id'] for item in SYSPURPOSE_TEST_CASES]
-
-
-@pytest.mark.parametrize('patch_ansible_module, testcase', SYSPURPOSE_TEST_CASES, ids=SYSPURPOSE_TEST_CASES_IDS, indirect=['patch_ansible_module'])
-@pytest.mark.usefixtures('patch_ansible_module')
-def test_redhat_subscribtion_syspurpose(mocker, capfd, patch_redhat_subscription, patch_ansible_module, testcase, tmpdir):
- """
- Run unit tests for test cases listen in SYSPURPOSE_TEST_CASES (syspurpose specific cases)
- """
-
- # Mock function used for running commands first
- call_results = [item[2] for item in testcase['run_command.calls']]
- mock_run_command = mocker.patch.object(
- basic.AnsibleModule,
- 'run_command',
- side_effect=call_results)
-
- mock_syspurpose_file = tmpdir.mkdir("syspurpose").join("syspurpose.json")
- # When there there are some existing syspurpose attributes specified, then
- # write them to the file first
- if testcase['existing_syspurpose'] is not None:
- mock_syspurpose_file.write(json.dumps(testcase['existing_syspurpose']))
- else:
- mock_syspurpose_file.write("{}")
-
- redhat_subscription.SysPurpose.SYSPURPOSE_FILE_PATH = str(mock_syspurpose_file)
-
- # Try to run test case
- with pytest.raises(SystemExit):
- redhat_subscription.main()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
-
- if 'failed' in testcase:
- assert results['failed'] == testcase['failed']
- else:
- assert 'changed' in results
- assert results['changed'] == testcase['changed']
- if 'msg' in results:
- assert results['msg'] == testcase['msg']
-
- mock_file_content = mock_syspurpose_file.read_text("utf-8")
- current_syspurpose = json.loads(mock_file_content)
- assert current_syspurpose == testcase['expected_syspurpose']
-
- assert basic.AnsibleModule.run_command.call_count == len(testcase['run_command.calls'])
- if basic.AnsibleModule.run_command.call_count:
- call_args_list = [(item[0][0], item[1]) for item in basic.AnsibleModule.run_command.call_args_list]
- expected_call_args_list = [(item[0], item[1]) for item in testcase['run_command.calls']]
- assert call_args_list == expected_call_args_list
diff --git a/test/units/modules/packaging/os/test_rhn_channel.py b/test/units/modules/packaging/os/test_rhn_channel.py
deleted file mode 100644
index 28ca99fa3a..0000000000
--- a/test/units/modules/packaging/os/test_rhn_channel.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2017 Pierre-Louis Bonicoli <pierre-louis@libregerbil.fr>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-import json
-
-from ansible.modules.packaging.os import rhn_channel
-
-import pytest
-
-
-pytestmark = pytest.mark.usefixtures('patch_ansible_module')
-
-
-@pytest.mark.parametrize('patch_ansible_module', [{}], indirect=['patch_ansible_module'])
-def test_without_required_parameters(capfd):
- with pytest.raises(SystemExit):
- rhn_channel.main()
- out, err = capfd.readouterr()
- results = json.loads(out)
- assert results['failed']
- assert 'missing required arguments' in results['msg']
-
-
-TESTED_MODULE = rhn_channel.__name__
-TEST_CASES = [
- [
- # add channel already added, check that result isn't changed
- {
- 'name': 'rhel-x86_64-server-6',
- 'sysname': 'server01',
- 'url': 'https://rhn.redhat.com/rpc/api',
- 'user': 'user',
- 'password': 'pass',
- },
- {
- 'calls': [
- ('auth.login', ['X' * 43]),
- ('system.listUserSystems',
- [[{'last_checkin': '2017-08-06 19:49:52.0', 'id': '0123456789', 'name': 'server01'}]]),
- ('channel.software.listSystemChannels',
- [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]),
- ('auth.logout', [1]),
- ],
- 'changed': False,
- 'msg': 'Channel rhel-x86_64-server-6 already exists',
- }
- ],
- [
- # add channel, check that result is changed
- {
- 'name': 'rhel-x86_64-server-6-debuginfo',
- 'sysname': 'server01',
- 'url': 'https://rhn.redhat.com/rpc/api',
- 'user': 'user',
- 'password': 'pass',
- },
- {
- 'calls': [
- ('auth.login', ['X' * 43]),
- ('system.listUserSystems',
- [[{'last_checkin': '2017-08-06 19:49:52.0', 'id': '0123456789', 'name': 'server01'}]]),
- ('channel.software.listSystemChannels',
- [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]),
- ('channel.software.listSystemChannels',
- [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]),
- ('system.setChildChannels', [1]),
- ('auth.logout', [1]),
- ],
- 'changed': True,
- 'msg': 'Channel rhel-x86_64-server-6-debuginfo added',
- }
- ],
- [
- # remove inexistent channel, check that result isn't changed
- {
- 'name': 'rhel-x86_64-server-6-debuginfo',
- 'state': 'absent',
- 'sysname': 'server01',
- 'url': 'https://rhn.redhat.com/rpc/api',
- 'user': 'user',
- 'password': 'pass',
- },
- {
- 'calls': [
- ('auth.login', ['X' * 43]),
- ('system.listUserSystems',
- [[{'last_checkin': '2017-08-06 19:49:52.0', 'id': '0123456789', 'name': 'server01'}]]),
- ('channel.software.listSystemChannels',
- [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]),
- ('auth.logout', [1]),
- ],
- 'changed': False,
- 'msg': 'Not subscribed to channel rhel-x86_64-server-6-debuginfo.',
- }
- ],
- [
- # remove channel, check that result is changed
- {
- 'name': 'rhel-x86_64-server-6-debuginfo',
- 'state': 'absent',
- 'sysname': 'server01',
- 'url': 'https://rhn.redhat.com/rpc/api',
- 'user': 'user',
- 'password': 'pass',
- },
- {
- 'calls': [
- ('auth.login', ['X' * 43]),
- ('system.listUserSystems',
- [[{'last_checkin': '2017-08-06 19:49:52.0', 'id': '0123456789', 'name': 'server01'}]]),
- ('channel.software.listSystemChannels', [[
- {'channel_name': 'RHEL Server Debuginfo (v.6 for x86_64)', 'channel_label': 'rhel-x86_64-server-6-debuginfo'},
- {'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}
- ]]),
- ('channel.software.listSystemChannels', [[
- {'channel_name': 'RHEL Server Debuginfo (v.6 for x86_64)', 'channel_label': 'rhel-x86_64-server-6-debuginfo'},
- {'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}
- ]]),
- ('system.setChildChannels', [1]),
- ('auth.logout', [1]),
- ],
- 'changed': True,
- 'msg': 'Channel rhel-x86_64-server-6-debuginfo removed'
- }
- ]
-]
-
-
-@pytest.mark.parametrize('patch_ansible_module, testcase', TEST_CASES, indirect=['patch_ansible_module'])
-def test_rhn_channel(capfd, mocker, testcase, mock_request):
- """Check 'msg' and 'changed' results"""
-
- with pytest.raises(SystemExit):
- rhn_channel.main()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
- assert results['changed'] == testcase['changed']
- assert results['msg'] == testcase['msg']
- assert not testcase['calls'] # all calls should have been consumed
diff --git a/test/units/modules/packaging/os/test_rhn_register.py b/test/units/modules/packaging/os/test_rhn_register.py
deleted file mode 100644
index 9d56ec8a78..0000000000
--- a/test/units/modules/packaging/os/test_rhn_register.py
+++ /dev/null
@@ -1,284 +0,0 @@
-import json
-import os
-
-from units.compat.mock import mock_open
-from ansible.module_utils import basic
-from ansible.module_utils._text import to_native
-import ansible.module_utils.six
-from ansible.module_utils.six.moves import xmlrpc_client
-from ansible.modules.packaging.os import rhn_register
-
-import pytest
-
-
-SYSTEMID = """<?xml version="1.0"?>
-<params>
-<param>
-<value><struct>
-<member>
-<name>system_id</name>
-<value><string>ID-123456789</string></value>
-</member>
-</struct></value>
-</param>
-</params>
-"""
-
-
-def skipWhenAllModulesMissing(modules):
- """Skip the decorated test unless one of modules is available."""
- for module in modules:
- try:
- __import__(module)
- return False
- except ImportError:
- continue
-
- return True
-
-
-orig_import = __import__
-
-
-@pytest.fixture
-def import_libxml(mocker):
- def mock_import(name, *args, **kwargs):
- if name in ['libxml2', 'libxml']:
- raise ImportError()
- else:
- return orig_import(name, *args, **kwargs)
-
- if ansible.module_utils.six.PY3:
- mocker.patch('builtins.__import__', side_effect=mock_import)
- else:
- mocker.patch('__builtin__.__import__', side_effect=mock_import)
-
-
-@pytest.fixture
-def patch_rhn(mocker):
- load_config_return = {
- 'serverURL': 'https://xmlrpc.rhn.redhat.com/XMLRPC',
- 'systemIdPath': '/etc/sysconfig/rhn/systemid'
- }
-
- mocker.patch.object(rhn_register.Rhn, 'load_config', return_value=load_config_return)
- mocker.patch.object(rhn_register, 'HAS_UP2DATE_CLIENT', mocker.PropertyMock(return_value=True))
-
-
-@pytest.mark.skipif(skipWhenAllModulesMissing(['libxml2', 'libxml']), reason='none are available: libxml2, libxml')
-def test_systemid_with_requirements(capfd, mocker, patch_rhn):
- """Check 'msg' and 'changed' results"""
-
- mocker.patch.object(rhn_register.Rhn, 'enable')
- mock_isfile = mocker.patch('os.path.isfile', return_value=True)
- mocker.patch('ansible.modules.packaging.os.rhn_register.open', mock_open(read_data=SYSTEMID), create=True)
- rhn = rhn_register.Rhn()
- assert '123456789' == to_native(rhn.systemid)
-
-
-@pytest.mark.parametrize('patch_ansible_module', [{}], indirect=['patch_ansible_module'])
-@pytest.mark.usefixtures('patch_ansible_module')
-def test_systemid_requirements_missing(capfd, mocker, patch_rhn, import_libxml):
- """Check that missing dependencies are detected"""
-
- mocker.patch('os.path.isfile', return_value=True)
- mocker.patch('ansible.modules.packaging.os.rhn_register.open', mock_open(read_data=SYSTEMID), create=True)
-
- with pytest.raises(SystemExit):
- rhn_register.main()
-
- out, err = capfd.readouterr()
- results = json.loads(out)
- assert results['failed']
- assert 'Missing arguments' in results['msg']
-
-
-@pytest.mark.parametrize('patch_ansible_module', [{}], indirect=['patch_ansible_module'])
-@pytest.mark.usefixtures('patch_ansible_module')
-def test_without_required_parameters(capfd, patch_rhn):
- """Failure must occurs when all parameters are missing"""
-
- with pytest.raises(SystemExit):
- rhn_register.main()
- out, err = capfd.readouterr()
- results = json.loads(out)
- assert results['failed']
- assert 'Missing arguments' in results['msg']
-
-
-TESTED_MODULE = rhn_register.__name__
-TEST_CASES = [
- [
- # Registering an unregistered host with channels
- {
- 'channels': 'rhel-x86_64-server-6',
- 'username': 'user',
- 'password': 'pass',
- },
- {
- 'calls': [
- ('auth.login', ['X' * 43]),
- ('channel.software.listSystemChannels',
- [[{'channel_name': 'Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64)', 'channel_label': 'rhel-x86_64-server-6'}]]),
- ('channel.software.setSystemChannels', [1]),
- ('auth.logout', [1]),
- ],
- 'is_registered': False,
- 'is_registered.call_count': 1,
- 'enable.call_count': 1,
- 'systemid.call_count': 2,
- 'changed': True,
- 'msg': "System successfully registered to 'rhn.redhat.com'.",
- 'run_command.call_count': 1,
- 'run_command.call_args': '/usr/sbin/rhnreg_ks',
- 'request_called': True,
- 'unlink.call_count': 0,
- }
- ],
- [
- # Registering an unregistered host without channels
- {
- 'activationkey': 'key',
- 'username': 'user',
- 'password': 'pass',
- },
- {
- 'calls': [
- ],
- 'is_registered': False,
- 'is_registered.call_count': 1,
- 'enable.call_count': 1,
- 'systemid.call_count': 0,
- 'changed': True,
- 'msg': "System successfully registered to 'rhn.redhat.com'.",
- 'run_command.call_count': 1,
- 'run_command.call_args': '/usr/sbin/rhnreg_ks',
- 'request_called': False,
- 'unlink.call_count': 0,
- }
- ],
- [
- # Register an host already registered, check that result is unchanged
- {
- 'activationkey': 'key',
- 'username': 'user',
- 'password': 'pass',
- },
- {
- 'calls': [
- ],
- 'is_registered': True,
- 'is_registered.call_count': 1,
- 'enable.call_count': 0,
- 'systemid.call_count': 0,
- 'changed': False,
- 'msg': 'System already registered.',
- 'run_command.call_count': 0,
- 'request_called': False,
- 'unlink.call_count': 0,
- },
- ],
- [
- # Unregister an host, check that result is changed
- {
- 'activationkey': 'key',
- 'username': 'user',
- 'password': 'pass',
- 'state': 'absent',
- },
- {
- 'calls': [
- ('auth.login', ['X' * 43]),
- ('system.deleteSystems', [1]),
- ('auth.logout', [1]),
- ],
- 'is_registered': True,
- 'is_registered.call_count': 1,
- 'enable.call_count': 0,
- 'systemid.call_count': 1,
- 'changed': True,
- 'msg': 'System successfully unregistered from rhn.redhat.com.',
- 'run_command.call_count': 0,
- 'request_called': True,
- 'unlink.call_count': 1,
- }
- ],
- [
- # Unregister a unregistered host (systemid missing) locally, check that result is unchanged
- {
- 'activationkey': 'key',
- 'username': 'user',
- 'password': 'pass',
- 'state': 'absent',
- },
- {
- 'calls': [],
- 'is_registered': False,
- 'is_registered.call_count': 1,
- 'enable.call_count': 0,
- 'systemid.call_count': 0,
- 'changed': False,
- 'msg': 'System already unregistered.',
- 'run_command.call_count': 0,
- 'request_called': False,
- 'unlink.call_count': 0,
- }
-
- ],
- [
- # Unregister an unknown host (an host with a systemid available locally, check that result contains failed
- {
- 'activationkey': 'key',
- 'username': 'user',
- 'password': 'pass',
- 'state': 'absent',
- },
- {
- 'calls': [
- ('auth.login', ['X' * 43]),
- ('system.deleteSystems', xmlrpc_client.Fault(1003, 'The following systems were NOT deleted: 123456789')),
- ('auth.logout', [1]),
- ],
- 'is_registered': True,
- 'is_registered.call_count': 1,
- 'enable.call_count': 0,
- 'systemid.call_count': 1,
- 'failed': True,
- 'msg': "Failed to unregister: <Fault 1003: 'The following systems were NOT deleted: 123456789'>",
- 'run_command.call_count': 0,
- 'request_called': True,
- 'unlink.call_count': 0,
- }
- ],
-]
-
-
-@pytest.mark.parametrize('patch_ansible_module, testcase', TEST_CASES, indirect=['patch_ansible_module'])
-@pytest.mark.usefixtures('patch_ansible_module')
-def test_register_parameters(mocker, capfd, mock_request, patch_rhn, testcase):
- # successful execution, no output
- mocker.patch.object(basic.AnsibleModule, 'run_command', return_value=(0, '', ''))
- mock_is_registered = mocker.patch.object(rhn_register.Rhn, 'is_registered', mocker.PropertyMock(return_value=testcase['is_registered']))
- mocker.patch.object(rhn_register.Rhn, 'enable')
- mock_systemid = mocker.patch.object(rhn_register.Rhn, 'systemid', mocker.PropertyMock(return_value=12345))
- mocker.patch('os.unlink', return_value=True)
-
- with pytest.raises(SystemExit):
- rhn_register.main()
-
- assert basic.AnsibleModule.run_command.call_count == testcase['run_command.call_count']
- if basic.AnsibleModule.run_command.call_count:
- assert basic.AnsibleModule.run_command.call_args[0][0][0] == testcase['run_command.call_args']
-
- assert mock_is_registered.call_count == testcase['is_registered.call_count']
- assert rhn_register.Rhn.enable.call_count == testcase['enable.call_count']
- assert mock_systemid.call_count == testcase['systemid.call_count']
- assert xmlrpc_client.Transport.request.called == testcase['request_called']
- assert os.unlink.call_count == testcase['unlink.call_count']
-
- out, err = capfd.readouterr()
- results = json.loads(out)
- assert results.get('changed') == testcase.get('changed')
- assert results.get('failed') == testcase.get('failed')
- assert results['msg'] == testcase['msg']
- assert not testcase['calls'] # all calls should have been consumed
diff --git a/test/units/modules/packaging/os/test_rhsm_release.py b/test/units/modules/packaging/os/test_rhsm_release.py
deleted file mode 100644
index f652bfa64d..0000000000
--- a/test/units/modules/packaging/os/test_rhsm_release.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# (c) 2018, Sean Myers <sean.myers@redhat.com>
-# 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
-
-from units.compat.mock import call, patch
-from ansible.modules.packaging.os import rhsm_release
-from units.modules.utils import (
- AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args)
-
-
-class RhsmRepositoryReleaseModuleTestCase(ModuleTestCase):
- module = rhsm_release
-
- def setUp(self):
- super(RhsmRepositoryReleaseModuleTestCase, self).setUp()
-
- # Mainly interested that the subscription-manager calls are right
- # based on the module args, so patch out run_command in the module.
- # returns (rc, out, err) structure
- self.mock_run_command = patch('ansible.modules.packaging.os.rhsm_release.'
- 'AnsibleModule.run_command')
- self.module_main_command = self.mock_run_command.start()
-
- # Module does a get_bin_path check before every run_command call
- self.mock_get_bin_path = patch('ansible.modules.packaging.os.rhsm_release.'
- 'AnsibleModule.get_bin_path')
- self.get_bin_path = self.mock_get_bin_path.start()
- self.get_bin_path.return_value = '/testbin/subscription-manager'
-
- def tearDown(self):
- self.mock_run_command.stop()
- self.mock_get_bin_path.stop()
- super(RhsmRepositoryReleaseModuleTestCase, self).tearDown()
-
- def module_main(self, exit_exc):
- with self.assertRaises(exit_exc) as exc:
- self.module.main()
- return exc.exception.args[0]
-
- def test_release_set(self):
- # test that the module attempts to change the release when the current
- # release is not the same as the user-specific target release
- set_module_args({'release': '7.5'})
- self.module_main_command.side_effect = [
- # first call, get_release: returns different version so set_release is called
- (0, '7.4', ''),
- # second call, set_release: just needs to exit with 0 rc
- (0, '', ''),
- ]
-
- result = self.module_main(AnsibleExitJson)
-
- self.assertTrue(result['changed'])
- self.assertEqual('7.5', result['current_release'])
- self.module_main_command.assert_has_calls([
- call('/testbin/subscription-manager release --show', check_rc=True),
- call('/testbin/subscription-manager release --set 7.5', check_rc=True),
- ])
-
- def test_release_set_idempotent(self):
- # test that the module does not attempt to change the release when
- # the current release matches the user-specified target release
- set_module_args({'release': '7.5'})
- self.module_main_command.side_effect = [
- # first call, get_release: returns same version, set_release is not called
- (0, '7.5', ''),
- ]
-
- result = self.module_main(AnsibleExitJson)
-
- self.assertFalse(result['changed'])
- self.assertEqual('7.5', result['current_release'])
- self.module_main_command.assert_has_calls([
- call('/testbin/subscription-manager release --show', check_rc=True),
- ])
-
- def test_release_unset(self):
- # test that the module attempts to change the release when the current
- # release is not the same as the user-specific target release
- set_module_args({'release': None})
- self.module_main_command.side_effect = [
- # first call, get_release: returns version so set_release is called
- (0, '7.5', ''),
- # second call, set_release: just needs to exit with 0 rc
- (0, '', ''),
- ]
-
- result = self.module_main(AnsibleExitJson)
-
- self.assertTrue(result['changed'])
- self.assertIsNone(result['current_release'])
- self.module_main_command.assert_has_calls([
- call('/testbin/subscription-manager release --show', check_rc=True),
- call('/testbin/subscription-manager release --unset', check_rc=True),
- ])
-
- def test_release_unset_idempotent(self):
- # test that the module attempts to change the release when the current
- # release is not the same as the user-specific target release
- set_module_args({'release': None})
- self.module_main_command.side_effect = [
- # first call, get_release: returns no version, set_release is not called
- (0, 'Release not set', ''),
- ]
-
- result = self.module_main(AnsibleExitJson)
-
- self.assertFalse(result['changed'])
- self.assertIsNone(result['current_release'])
- self.module_main_command.assert_has_calls([
- call('/testbin/subscription-manager release --show', check_rc=True),
- ])
-
- def test_release_insane(self):
- # test that insane values for release trigger fail_json
- insane_value = 'this is an insane release value'
- set_module_args({'release': insane_value})
-
- result = self.module_main(AnsibleFailJson)
-
- # also ensure that the fail msg includes the insane value
- self.assertIn(insane_value, result['msg'])
-
- def test_release_matcher(self):
- # throw a few values at the release matcher -- only sane_values should match
- sane_values = ['1Server', '10Server', '1.10', '10.0']
- insane_values = [
- '6server', # lowercase 's'
- '100Server', # excessively long 'x' component
- '100.0', # excessively long 'x' component
- '6.100', # excessively long 'y' component
- '100.100', # excessively long 'x' and 'y' components
- ]
-
- matches = self.module.release_matcher.findall(' '.join(sane_values + insane_values))
-
- # matches should be returned in the same order they were parsed,
- # so sorting shouldn't be necessary here
- self.assertEqual(matches, sane_values)
diff --git a/test/units/modules/remote_management/dellemc/test_ome_device_info.py b/test/units/modules/remote_management/dellemc/test_ome_device_info.py
deleted file mode 100644
index a0b470bce3..0000000000
--- a/test/units/modules/remote_management/dellemc/test_ome_device_info.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# -*- coding: utf-8 -*-
-
-#
-# Dell EMC OpenManage Ansible Modules
-# Version 2.0
-# Copyright (C) 2019 Dell Inc.
-
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# All rights reserved. Dell, EMC, and other trademarks are trademarks of Dell Inc. or its subsidiaries.
-# Other trademarks may be trademarks of their respective owners.
-#
-
-from __future__ import absolute_import
-
-import pytest
-from units.modules.utils import set_module_args, exit_json, \
- fail_json, AnsibleFailJson, AnsibleExitJson
-from ansible.module_utils import basic
-from ansible.modules.remote_management.dellemc import ome_device_info
-from ansible.module_utils.six.moves.urllib.error import HTTPError
-
-default_args = {'hostname': '192.168.0.1', 'username': 'username', 'password': 'password'}
-resource_basic_inventory = {"basic_inventory": "DeviceService/Devices"}
-resource_detailed_inventory = {"detailed_inventory:": {"device_id": {1234: None},
- "device_service_tag": {1345: "MXL1234"}}}
-
-
-class TestOmeDeviceInfo(object):
- module = ome_device_info
-
- @pytest.fixture(autouse=True)
- def module_mock(self, mocker):
- return mocker.patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json)
-
- @pytest.fixture
- def connection_mock(self, mocker):
- connection_class_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info.RestOME')
- return connection_class_mock.return_value
-
- @pytest.fixture
- def response_mock(self, mocker):
- response_class_mock = mocker.patch('ansible.module_utils.remote_management.dellemc.ome.OpenURLResponse')
- return response_class_mock
-
- @pytest.fixture
- def validate_inputs_mock(self, mocker):
- response_class_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info._validate_inputs')
- response_class_mock.return_value = None
-
- @pytest.fixture
- def get_device_identifier_map_mock(self, mocker):
- response_class_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info._get_device_identifier_map')
- response_class_mock.return_value = resource_detailed_inventory
- return response_class_mock.return_value
-
- @pytest.fixture
- def get_resource_parameters_mock(self, mocker):
- response_class_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info._get_resource_parameters')
- return response_class_mock
-
- def test_main_basic_inventory_success_case(self, module_mock, validate_inputs_mock, connection_mock, get_resource_parameters_mock, response_mock):
- get_resource_parameters_mock.return_value = resource_basic_inventory
- connection_mock.__enter__.return_value = connection_mock
- connection_mock.invoke_request.return_value = response_mock
- response_mock.json_data = {"value": [{"device_id1": "details", "device_id2": "details"}]}
- response_mock.status_code = 200
- result = self._run_module(default_args)
- assert result['changed'] is False
- assert 'device_info' in result
-
- def test_main_basic_inventory_failure_case(self, module_mock, validate_inputs_mock, connection_mock, get_resource_parameters_mock, response_mock):
- get_resource_parameters_mock.return_value = resource_basic_inventory
- connection_mock.__enter__.return_value = connection_mock
- connection_mock.invoke_request.return_value = response_mock
- response_mock.status_code = 500
- result = self._run_module_with_fail_json(default_args)
- assert result['msg'] == 'Failed to fetch the device information'
-
- def test_main_detailed_inventory_success_case(self, module_mock, validate_inputs_mock, connection_mock, get_resource_parameters_mock, response_mock):
- default_args.update({"fact_subset": "detailed_inventory", "system_query_options": {"device_id": [1234], "device_service_tag": ["MXL1234"]}})
- detailed_inventory = {"detailed_inventory:": {"device_id": {1234: "DeviceService/Devices(1234)/InventoryDetails"},
- "device_service_tag": {"MXL1234": "DeviceService/Devices(4321)/InventoryDetails"}}}
- get_resource_parameters_mock.return_value = detailed_inventory
- connection_mock.__enter__.return_value = connection_mock
- connection_mock.invoke_request.return_value = response_mock
- response_mock.json_data = {"value": [{"device_id": {"1234": "details"}}, {"device_service_tag": {"MXL1234": "details"}}]}
- response_mock.status_code = 200
- result = self._run_module(default_args)
- assert result['changed'] is False
- assert 'device_info' in result
-
- def test_main_HTTPError_error_case(self, module_mock, validate_inputs_mock, connection_mock, get_resource_parameters_mock, response_mock):
- get_resource_parameters_mock.return_value = resource_basic_inventory
- connection_mock.__enter__.return_value = connection_mock
- connection_mock.invoke_request.side_effect = HTTPError('http://testhost.com', 400, '', {}, None)
- response_mock.json_data = {"value": [{"device_id1": "details", "device_id2": "details"}]}
- response_mock.status_code = 400
- result = self._run_module_with_fail_json(default_args)
- assert 'device_info' not in result
- assert result['failed'] is True
-
- @pytest.mark.parametrize("fact_subset, mutually_exclusive_call", [("basic_inventory", False), ("detailed_inventory", True)])
- def test_validate_inputs(self, fact_subset, mutually_exclusive_call, mocker):
- module_params = {"fact_subset": fact_subset}
- check_mutually_inclusive_arguments_mock = mocker.patch(
- 'ansible.modules.remote_management.dellemc.ome_device_info._check_mutually_inclusive_arguments')
- check_mutually_inclusive_arguments_mock.return_value = None
- self.module._validate_inputs(module_params)
- if mutually_exclusive_call:
- check_mutually_inclusive_arguments_mock.assert_called()
- else:
- check_mutually_inclusive_arguments_mock.assert_not_called()
- check_mutually_inclusive_arguments_mock.reset_mock()
-
- system_query_options_params = [{"system_query_options": None}, {"system_query_options": {"device_id": None}},
- {"system_query_options": {"device_service_tag": None}}]
-
- @pytest.mark.parametrize("system_query_options_params", system_query_options_params)
- def test_check_mutually_inclusive_arguments(self, system_query_options_params):
- module_params = {"fact_subset": "subsystem_health"}
- required_args = ["device_id", "device_service_tag"]
- module_params.update(system_query_options_params)
- with pytest.raises(ValueError) as ex:
- self.module._check_mutually_inclusive_arguments(module_params["fact_subset"], module_params, ["device_id", "device_service_tag"])
- assert "One of the following {0} is required for {1}".format(required_args, module_params["fact_subset"]) == str(ex.value)
-
- params = [{"fact_subset": "basic_inventory", "system_query_options": {"device_id": [1234]}},
- {"fact_subset": "subsystem_health", "system_query_options": {"device_service_tag": ["MXL1234"]}},
- {"fact_subset": "detailed_inventory", "system_query_options": {"device_id": [1234], "inventory_type": "serverDeviceCards"}}]
-
- @pytest.mark.parametrize("module_params", params)
- def test_get_resource_parameters(self, module_params, connection_mock):
- self.module._get_resource_parameters(module_params, connection_mock)
-
- @pytest.mark.parametrize("module_params,data", [({"system_query_options": None}, None), ({"system_query_options": {"fileter": None}}, None),
- ({"system_query_options": {"filter": "abc"}}, "$filter")])
- def test_get_query_parameters(self, module_params, data):
- res = self.module._get_query_parameters(module_params)
- if data is not None:
- assert data in res
- else:
- assert res is None
-
- @pytest.mark.parametrize("module_params", params)
- def test_get_device_identifier_map(self, module_params, connection_mock, mocker):
- get_device_id_from_service_tags_mock = mocker.patch('ansible.modules.remote_management.dellemc.ome_device_info._get_device_id_from_service_tags')
- get_device_id_from_service_tags_mock.return_value = None
- res = self.module._get_device_identifier_map(module_params, connection_mock)
- assert isinstance(res, dict)
-
- def test_check_duplicate_device_id(self):
- self.module._check_duplicate_device_id([1234], {1234: "MX1234"})
- assert self.module.device_fact_error_report["MX1234"] == "Duplicate report of device_id: 1234"
-
- @pytest.mark.parametrize("val,expected_res", [(123, True), ("abc", False)])
- def test_is_int(self, val, expected_res):
- actual_res = self.module.is_int(val)
- assert actual_res == expected_res
-
- def test_get_device_id_from_service_tags(self, connection_mock, response_mock):
- connection_mock.__enter__.return_value = connection_mock
- connection_mock.invoke_request.return_value = response_mock
- response_mock.json_data = {"value": [{"DeviceServiceTag": "MX1234", "Id": 1234}]}
- response_mock.status_code = 200
- response_mock.success = True
- self.module._get_device_id_from_service_tags(["MX1234", "INVALID"], connection_mock)
-
- def test_get_device_id_from_service_tags_error_case(self, connection_mock, response_mock):
- connection_mock.__enter__.return_value = connection_mock
- connection_mock.invoke_request.side_effect = HTTPError('http://testhost.com',
- 400, '', {}, None)
- response_mock.json_data = {"value": [{"DeviceServiceTag": "MX1234", "Id": 1234}]}
- response_mock.status_code = 200
- response_mock.success = True
- with pytest.raises(HTTPError) as ex:
- self.module._get_device_id_from_service_tags(["INVALID"], connection_mock)
-
- def _run_module(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleExitJson) as ex:
- self.module.main()
- return ex.value.args[0]
-
- def _run_module_with_fail_json(self, module_args):
- set_module_args(module_args)
- with pytest.raises(AnsibleFailJson) as exc:
- self.module.main()
- result = exc.value.args[0]
- return result
diff --git a/test/units/modules/remote_management/lxca/test_lxca_cmms.py b/test/units/modules/remote_management/lxca/test_lxca_cmms.py
deleted file mode 100644
index 6f14bdebd1..0000000000
--- a/test/units/modules/remote_management/lxca/test_lxca_cmms.py
+++ /dev/null
@@ -1,94 +0,0 @@
-import json
-
-import pytest
-from units.compat import mock
-from ansible.modules.remote_management.lxca import lxca_cmms
-
-
-@pytest.fixture(scope='module')
-@mock.patch("ansible.module_utils.remote_management.lxca.common.close_conn", autospec=True)
-def setup_module(close_conn):
- close_conn.return_value = True
-
-
-class TestMyModule():
- @pytest.mark.parametrize('patch_ansible_module',
- [
- {},
- {
- "auth_url": "https://10.240.14.195",
- "login_user": "USERID",
- },
- {
- "auth_url": "https://10.240.14.195",
- "login_password": "Password",
- },
- {
- "login_user": "USERID",
- "login_password": "Password",
- },
- ],
- indirect=['patch_ansible_module'])
- @pytest.mark.usefixtures('patch_ansible_module')
- @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms.execute_module", autospec=True)
- def test_without_required_parameters(self, _setup_conn, _execute_module,
- mocker, capfd, setup_module):
- """Failure must occurs when all parameters are missing"""
- with pytest.raises(SystemExit):
- _setup_conn.return_value = "Fake connection"
- _execute_module.return_value = "Fake execution"
- lxca_cmms.main()
- out, err = capfd.readouterr()
- results = json.loads(out)
- assert results['failed']
- assert 'missing required arguments' in results['msg']
-
- @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms.execute_module", autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms.AnsibleModule", autospec=True)
- def test__argument_spec(self, ansible_mod_cls, _execute_module, _setup_conn, setup_module):
- expected_arguments_spec = dict(
- login_user=dict(required=True),
- login_password=dict(required=True, no_log=True),
- command_options=dict(default='cmms', choices=['cmms', 'cmms_by_uuid',
- 'cmms_by_chassis_uuid']),
- auth_url=dict(required=True),
- uuid=dict(default=None),
- chassis=dict(default=None),
- )
- _setup_conn.return_value = "Fake connection"
- _execute_module.return_value = []
- mod_obj = ansible_mod_cls.return_value
- args = {
- "auth_url": "https://10.243.30.195",
- "login_user": "USERID",
- "login_password": "password",
- "command_options": "cmms",
- }
- mod_obj.params = args
- lxca_cmms.main()
- assert(mock.call(argument_spec=expected_arguments_spec,
- supports_check_mode=False) == ansible_mod_cls.call_args)
-
- @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms._cmms_by_uuid",
- autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_cmms.AnsibleModule",
- autospec=True)
- def test__cmms_empty_list(self, ansible_mod_cls, _get_cmms, _setup_conn, setup_module):
- mod_obj = ansible_mod_cls.return_value
- args = {
- "auth_url": "https://10.243.30.195",
- "login_user": "USERID",
- "login_password": "password",
- "uuid": "3C737AA5E31640CE949B10C129A8B01F",
- "command_options": "cmms_by_uuid",
- }
- mod_obj.params = args
- _setup_conn.return_value = "Fake connection"
- empty_nodes_list = []
- _get_cmms.return_value = empty_nodes_list
- ret_cmms = _get_cmms(mod_obj, args)
- assert mock.call(mod_obj, mod_obj.params) == _get_cmms.call_args
- assert _get_cmms.return_value == ret_cmms
diff --git a/test/units/modules/remote_management/lxca/test_lxca_nodes.py b/test/units/modules/remote_management/lxca/test_lxca_nodes.py
deleted file mode 100644
index 152967d531..0000000000
--- a/test/units/modules/remote_management/lxca/test_lxca_nodes.py
+++ /dev/null
@@ -1,98 +0,0 @@
-import json
-
-import pytest
-from units.compat import mock
-from ansible.modules.remote_management.lxca import lxca_nodes
-from ansible.module_utils.remote_management.lxca.common import setup_conn
-from ansible.module_utils.remote_management.lxca.common import close_conn
-
-
-@pytest.fixture(scope='module')
-@mock.patch("ansible.module_utils.remote_management.lxca.common.close_conn", autospec=True)
-def setup_module(close_conn):
- close_conn.return_value = True
-
-
-class TestMyModule():
- @pytest.mark.parametrize('patch_ansible_module',
- [
- {},
- {
- "auth_url": "https://10.240.14.195",
- "login_user": "USERID",
- },
- {
- "auth_url": "https://10.240.14.195",
- "login_password": "Password",
- },
- {
- "login_user": "USERID",
- "login_password": "Password",
- },
- ],
- indirect=['patch_ansible_module'])
- @pytest.mark.usefixtures('patch_ansible_module')
- @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes.execute_module", autospec=True)
- def test_without_required_parameters(self, _setup_conn, _execute_module,
- mocker, capfd, setup_module):
- """Failure must occurs when all parameters are missing"""
- with pytest.raises(SystemExit):
- _setup_conn.return_value = "Fake connection"
- _execute_module.return_value = "Fake execution"
- lxca_nodes.main()
- out, err = capfd.readouterr()
- results = json.loads(out)
- assert results['failed']
- assert 'missing required arguments' in results['msg']
-
- @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes.execute_module", autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes.AnsibleModule", autospec=True)
- def test__argument_spec(self, ansible_mod_cls, _execute_module, _setup_conn, setup_module):
- expected_arguments_spec = dict(
- login_user=dict(required=True),
- login_password=dict(required=True, no_log=True),
- command_options=dict(default='nodes', choices=['nodes', 'nodes_by_uuid',
- 'nodes_by_chassis_uuid',
- 'nodes_status_managed',
- 'nodes_status_unmanaged']),
- auth_url=dict(required=True),
- uuid=dict(default=None),
- chassis=dict(default=None),
- )
- _setup_conn.return_value = "Fake connection"
- _execute_module.return_value = []
- mod_obj = ansible_mod_cls.return_value
- args = {
- "auth_url": "https://10.243.30.195",
- "login_user": "USERID",
- "login_password": "password",
- "command_options": "nodes",
- }
- mod_obj.params = args
- lxca_nodes.main()
- assert(mock.call(argument_spec=expected_arguments_spec,
- supports_check_mode=False) == ansible_mod_cls.call_args)
-
- @mock.patch("ansible.module_utils.remote_management.lxca.common.setup_conn", autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes._nodes_by_uuid",
- autospec=True)
- @mock.patch("ansible.modules.remote_management.lxca.lxca_nodes.AnsibleModule",
- autospec=True)
- def test__nodes_empty_list(self, ansible_mod_cls, _get_nodes, _setup_conn, setup_module):
- mod_obj = ansible_mod_cls.return_value
- args = {
- "auth_url": "https://10.243.30.195",
- "login_user": "USERID",
- "login_password": "password",
- "uuid": "3C737AA5E31640CE949B10C129A8B01F",
- "command_options": "nodes_by_uuid",
- }
- mod_obj.params = args
- _setup_conn.return_value = "Fake connection"
- empty_nodes_list = []
- _get_nodes.return_value = empty_nodes_list
- ret_nodes = _get_nodes(mod_obj, args)
- assert mock.call(mod_obj, mod_obj.params) == _get_nodes.call_args
- assert _get_nodes.return_value == ret_nodes
diff --git a/test/units/modules/remote_management/oneview/hpe_test_utils.py b/test/units/modules/remote_management/oneview/hpe_test_utils.py
deleted file mode 100644
index d6660b6b13..0000000000
--- a/test/units/modules/remote_management/oneview/hpe_test_utils.py
+++ /dev/null
@@ -1,214 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (2016-2017) Hewlett Packard Enterprise Development LP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import pytest
-import re
-import yaml
-
-from mock import Mock, patch
-from oneview_module_loader import ONEVIEW_MODULE_UTILS_PATH
-from hpOneView.oneview_client import OneViewClient
-
-
-class OneViewBaseTest(object):
- @pytest.fixture(autouse=True)
- def setUp(self, mock_ansible_module, mock_ov_client, request):
- marker = request.node.get_marker('resource')
- self.resource = getattr(mock_ov_client, "%s" % (marker.args))
- self.mock_ov_client = mock_ov_client
- self.mock_ansible_module = mock_ansible_module
-
- @pytest.fixture
- def testing_module(self):
- resource_name = type(self).__name__.replace('Test', '')
- resource_module_path_name = resource_name.replace('Module', '')
- resource_module_path_name = re.findall('[A-Z][^A-Z]*', resource_module_path_name)
- resource_module_path_name = 'oneview_' + str.join('_', resource_module_path_name).lower()
-
- ansible = __import__('ansible')
- oneview_module = ansible.modules.remote_management.oneview
- resource_module = getattr(oneview_module, resource_module_path_name)
- self.testing_class = getattr(resource_module, resource_name)
- testing_module = self.testing_class.__module__.split('.')[-1]
- testing_module = getattr(oneview_module, testing_module)
- try:
- # Load scenarios from module examples (Also checks if it is a valid yaml)
- EXAMPLES = yaml.load(testing_module.EXAMPLES, yaml.SafeLoader)
-
- except yaml.scanner.ScannerError:
- message = "Something went wrong while parsing yaml from {0}.EXAMPLES".format(self.testing_class.__module__)
- raise Exception(message)
- return testing_module
-
- def test_main_function_should_call_run_method(self, testing_module, mock_ansible_module):
- mock_ansible_module.params = {'config': 'config.json'}
-
- main_func = getattr(testing_module, 'main')
-
- with patch.object(self.testing_class, "run") as mock_run:
- main_func()
- mock_run.assert_called_once()
-
-
-class FactsParamsTest(OneViewBaseTest):
- def test_should_get_all_using_filters(self, testing_module):
- self.resource.get_all.return_value = []
-
- params_get_all_with_filters = dict(
- config='config.json',
- name=None,
- params={
- 'start': 1,
- 'count': 3,
- 'sort': 'name:descending',
- 'filter': 'purpose=General',
- 'query': 'imported eq true'
- })
- self.mock_ansible_module.params = params_get_all_with_filters
-
- self.testing_class().run()
-
- self.resource.get_all.assert_called_once_with(start=1, count=3, sort='name:descending', filter='purpose=General', query='imported eq true')
-
- def test_should_get_all_without_params(self, testing_module):
- self.resource.get_all.return_value = []
-
- params_get_all_with_filters = dict(
- config='config.json',
- name=None
- )
- self.mock_ansible_module.params = params_get_all_with_filters
-
- self.testing_class().run()
-
- self.resource.get_all.assert_called_once_with()
-
-
-class OneViewBaseTestCase(object):
- mock_ov_client_from_json_file = None
- testing_class = None
- mock_ansible_module = None
- mock_ov_client = None
- testing_module = None
- EXAMPLES = None
-
- def configure_mocks(self, test_case, testing_class):
- """
- Preload mocked OneViewClient instance and AnsibleModule
- Args:
- test_case (object): class instance (self) that are inheriting from OneViewBaseTestCase
- testing_class (object): class being tested
- """
- self.testing_class = testing_class
-
- # Define OneView Client Mock (FILE)
- patcher_json_file = patch.object(OneViewClient, 'from_json_file')
- test_case.addCleanup(patcher_json_file.stop)
- self.mock_ov_client_from_json_file = patcher_json_file.start()
-
- # Define OneView Client Mock
- self.mock_ov_client = self.mock_ov_client_from_json_file.return_value
-
- # Define Ansible Module Mock
- patcher_ansible = patch(ONEVIEW_MODULE_UTILS_PATH + '.AnsibleModule')
- test_case.addCleanup(patcher_ansible.stop)
- mock_ansible_module = patcher_ansible.start()
- self.mock_ansible_module = Mock()
- mock_ansible_module.return_value = self.mock_ansible_module
-
- self.__set_module_examples()
-
- def test_main_function_should_call_run_method(self):
- self.mock_ansible_module.params = {'config': 'config.json'}
-
- main_func = getattr(self.testing_module, 'main')
-
- with patch.object(self.testing_class, "run") as mock_run:
- main_func()
- mock_run.assert_called_once()
-
- def __set_module_examples(self):
- # Load scenarios from module examples (Also checks if it is a valid yaml)
- ansible = __import__('ansible')
- testing_module = self.testing_class.__module__.split('.')[-1]
- self.testing_module = getattr(ansible.modules.remote_management.oneview, testing_module)
-
- try:
- # Load scenarios from module examples (Also checks if it is a valid yaml)
- self.EXAMPLES = yaml.load(self.testing_module.EXAMPLES, yaml.SafeLoader)
-
- except yaml.scanner.ScannerError:
- message = "Something went wrong while parsing yaml from {0}.EXAMPLES".format(self.testing_class.__module__)
- raise Exception(message)
-
-
-class FactsParamsTestCase(OneViewBaseTestCase):
- """
- FactsParamsTestCase has common test for classes that support pass additional
- parameters when retrieving all resources.
- """
-
- def configure_client_mock(self, resorce_client):
- """
- Args:
- resorce_client: Resource client that is being called
- """
- self.resource_client = resorce_client
-
- def __validations(self):
- if not self.testing_class:
- raise Exception("Mocks are not configured, you must call 'configure_mocks' before running this test.")
-
- if not self.resource_client:
- raise Exception(
- "Mock for the client not configured, you must call 'configure_client_mock' before running this test.")
-
- def test_should_get_all_using_filters(self):
- self.__validations()
- self.resource_client.get_all.return_value = []
-
- params_get_all_with_filters = dict(
- config='config.json',
- name=None,
- params={
- 'start': 1,
- 'count': 3,
- 'sort': 'name:descending',
- 'filter': 'purpose=General',
- 'query': 'imported eq true'
- })
- self.mock_ansible_module.params = params_get_all_with_filters
-
- self.testing_class().run()
-
- self.resource_client.get_all.assert_called_once_with(start=1, count=3, sort='name:descending',
- filter='purpose=General',
- query='imported eq true')
-
- def test_should_get_all_without_params(self):
- self.__validations()
- self.resource_client.get_all.return_value = []
-
- params_get_all_with_filters = dict(
- config='config.json',
- name=None
- )
- self.mock_ansible_module.params = params_get_all_with_filters
-
- self.testing_class().run()
-
- self.resource_client.get_all.assert_called_once_with()
diff --git a/test/units/modules/remote_management/oneview/oneview_module_loader.py b/test/units/modules/remote_management/oneview/oneview_module_loader.py
deleted file mode 100644
index 5e7eb498d6..0000000000
--- a/test/units/modules/remote_management/oneview/oneview_module_loader.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-import sys
-from units.compat.mock import Mock
-
-# FIXME: These should be done inside of a fixture so that they're only mocked during
-# these unittests
-sys.modules['hpOneView'] = Mock()
-sys.modules['hpOneView.oneview_client'] = Mock()
-
-ONEVIEW_MODULE_UTILS_PATH = 'ansible.module_utils.oneview'
-from ansible.module_utils.oneview import (OneViewModuleException,
- OneViewModuleTaskError,
- OneViewModuleResourceNotFound,
- OneViewModuleBase)
-
-from ansible.modules.remote_management.oneview.oneview_ethernet_network import EthernetNetworkModule
-from ansible.modules.remote_management.oneview.oneview_ethernet_network_info import EthernetNetworkInfoModule
-from ansible.modules.remote_management.oneview.oneview_fc_network import FcNetworkModule
-from ansible.modules.remote_management.oneview.oneview_fc_network_info import FcNetworkInfoModule
-from ansible.modules.remote_management.oneview.oneview_fcoe_network import FcoeNetworkModule
-from ansible.modules.remote_management.oneview.oneview_fcoe_network_info import FcoeNetworkInfoModule
-from ansible.modules.remote_management.oneview.oneview_network_set import NetworkSetModule
-from ansible.modules.remote_management.oneview.oneview_network_set_info import NetworkSetInfoModule
-from ansible.modules.remote_management.oneview.oneview_san_manager import SanManagerModule
-from ansible.modules.remote_management.oneview.oneview_san_manager_info import SanManagerInfoModule
diff --git a/test/units/modules/remote_management/oneview/test_oneview_datacenter_info.py b/test/units/modules/remote_management/oneview/test_oneview_datacenter_info.py
deleted file mode 100644
index 9e538d962c..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_datacenter_info.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-import pytest
-
-from ansible.modules.remote_management.oneview.oneview_datacenter_info import DatacenterInfoModule
-from hpe_test_utils import FactsParamsTest
-
-PARAMS_GET_CONNECTED = dict(
- config='config.json',
- name="MyDatacenter",
- options=['visualContent']
-)
-
-
-class TestDatacenterInfoModule(FactsParamsTest):
- @pytest.fixture(autouse=True)
- def setUp(self, mock_ansible_module, mock_ov_client):
- self.resource = mock_ov_client.datacenters
- self.mock_ansible_module = mock_ansible_module
- self.mock_ov_client = mock_ov_client
-
- def test_should_get_all_datacenters(self):
- self.resource.get_all.return_value = {"name": "Data Center Name"}
-
- self.mock_ansible_module.params = dict(config='config.json',)
-
- DatacenterInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- datacenters=({"name": "Data Center Name"})
- )
-
- def test_should_get_datacenter_by_name(self):
- self.resource.get_by.return_value = [{"name": "Data Center Name"}]
-
- self.mock_ansible_module.params = dict(config='config.json', name="MyDatacenter")
-
- DatacenterInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- datacenters=([{"name": "Data Center Name"}])
- )
-
- def test_should_get_datacenter_visual_content(self):
- self.resource.get_by.return_value = [{"name": "Data Center Name", "uri": "/rest/datacenter/id"}]
-
- self.resource.get_visual_content.return_value = {
- "name": "Visual Content"}
-
- self.mock_ansible_module.params = PARAMS_GET_CONNECTED
-
- DatacenterInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- datacenter_visual_content={'name': 'Visual Content'},
- datacenters=[{'name': 'Data Center Name', 'uri': '/rest/datacenter/id'}]
- )
-
- def test_should_get_none_datacenter_visual_content(self):
- self.resource.get_by.return_value = []
-
- self.mock_ansible_module.params = PARAMS_GET_CONNECTED
-
- DatacenterInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- datacenter_visual_content=None,
- datacenters=[]
- )
diff --git a/test/units/modules/remote_management/oneview/test_oneview_enclosure_info.py b/test/units/modules/remote_management/oneview/test_oneview_enclosure_info.py
deleted file mode 100644
index f3100e6e89..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_enclosure_info.py
+++ /dev/null
@@ -1,132 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from units.compat import unittest
-from ansible.modules.remote_management.oneview.oneview_enclosure_info import EnclosureInfoModule
-from hpe_test_utils import FactsParamsTestCase
-
-
-ERROR_MSG = 'Fake message error'
-
-PARAMS_GET_ALL = dict(
- config='config.json',
- name=None
-)
-
-PARAMS_GET_BY_NAME = dict(
- config='config.json',
- name="Test-Enclosure",
- options=[]
-)
-
-PARAMS_GET_BY_NAME_WITH_OPTIONS = dict(
- config='config.json',
- name="Test-Enclosure",
- options=['utilization', 'environmentalConfiguration', 'script']
-)
-
-PARAMS_GET_UTILIZATION_WITH_PARAMS = dict(
- config='config.json',
- name="Test-Enclosure",
- options=[dict(utilization=dict(fields='AveragePower',
- filter=['startDate=2016-06-30T03:29:42.000Z',
- 'endDate=2016-07-01T03:29:42.000Z'],
- view='day',
- refresh=True))]
-)
-
-PRESENT_ENCLOSURES = [{
- "name": "Test-Enclosure",
- "uri": "/rest/enclosures/c6bf9af9-48e7-4236-b08a-77684dc258a5"
-}]
-
-ENCLOSURE_SCRIPT = '# script content'
-
-ENCLOSURE_UTILIZATION = {
- "isFresh": "True"
-}
-
-ENCLOSURE_ENVIRONMENTAL_CONFIG = {
- "calibratedMaxPower": "2500"
-}
-
-
-class EnclosureInfoSpec(unittest.TestCase,
- FactsParamsTestCase):
- def setUp(self):
- self.configure_mocks(self, EnclosureInfoModule)
- self.enclosures = self.mock_ov_client.enclosures
- FactsParamsTestCase.configure_client_mock(self, self.enclosures)
-
- def test_should_get_all_enclosures(self):
- self.enclosures.get_all.return_value = PRESENT_ENCLOSURES
- self.mock_ansible_module.params = PARAMS_GET_ALL
-
- EnclosureInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- enclosures=(PRESENT_ENCLOSURES)
- )
-
- def test_should_get_enclosure_by_name(self):
- self.enclosures.get_by.return_value = PRESENT_ENCLOSURES
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME
-
- EnclosureInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- enclosures=(PRESENT_ENCLOSURES)
-
- )
-
- def test_should_get_enclosure_by_name_with_options(self):
- self.enclosures.get_by.return_value = PRESENT_ENCLOSURES
- self.enclosures.get_script.return_value = ENCLOSURE_SCRIPT
- self.enclosures.get_utilization.return_value = ENCLOSURE_UTILIZATION
- self.enclosures.get_environmental_configuration.return_value = ENCLOSURE_ENVIRONMENTAL_CONFIG
-
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME_WITH_OPTIONS
-
- EnclosureInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- enclosures=PRESENT_ENCLOSURES,
- enclosure_script=ENCLOSURE_SCRIPT,
- enclosure_environmental_configuration=ENCLOSURE_ENVIRONMENTAL_CONFIG,
- enclosure_utilization=ENCLOSURE_UTILIZATION
- )
-
- def test_should_get_all_utilization_data(self):
- self.enclosures.get_by.return_value = PRESENT_ENCLOSURES
- self.enclosures.get_script.return_value = ENCLOSURE_SCRIPT
- self.enclosures.get_utilization.return_value = ENCLOSURE_UTILIZATION
- self.enclosures.get_environmental_configuration.return_value = ENCLOSURE_ENVIRONMENTAL_CONFIG
-
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME_WITH_OPTIONS
-
- EnclosureInfoModule().run()
-
- self.enclosures.get_utilization.assert_called_once_with(PRESENT_ENCLOSURES[0]['uri'], fields='', filter='',
- view='', refresh='')
-
- def test_should_get_utilization_with_parameters(self):
- self.enclosures.get_by.return_value = PRESENT_ENCLOSURES
- self.enclosures.get_script.return_value = ENCLOSURE_SCRIPT
- self.enclosures.get_utilization.return_value = ENCLOSURE_UTILIZATION
- self.enclosures.get_environmental_configuration.return_value = ENCLOSURE_ENVIRONMENTAL_CONFIG
-
- self.mock_ansible_module.params = PARAMS_GET_UTILIZATION_WITH_PARAMS
-
- EnclosureInfoModule().run()
-
- date_filter = ["startDate=2016-06-30T03:29:42.000Z", "endDate=2016-07-01T03:29:42.000Z"]
-
- self.enclosures.get_utilization.assert_called_once_with(
- PRESENT_ENCLOSURES[0]['uri'], fields='AveragePower', filter=date_filter, view='day', refresh=True)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_ethernet_network.py b/test/units/modules/remote_management/oneview/test_oneview_ethernet_network.py
deleted file mode 100644
index fa89e22f08..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_ethernet_network.py
+++ /dev/null
@@ -1,400 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (2016-2017) Hewlett Packard Enterprise Development LP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import yaml
-
-from units.compat import unittest, mock
-from oneview_module_loader import EthernetNetworkModule
-from hpe_test_utils import OneViewBaseTestCase
-
-FAKE_MSG_ERROR = 'Fake message error'
-DEFAULT_ETHERNET_NAME = 'Test Ethernet Network'
-RENAMED_ETHERNET = 'Renamed Ethernet Network'
-
-DEFAULT_ENET_TEMPLATE = dict(
- name=DEFAULT_ETHERNET_NAME,
- vlanId=200,
- ethernetNetworkType="Tagged",
- purpose="General",
- smartLink=False,
- privateNetwork=False,
- connectionTemplateUri=None
-)
-
-PARAMS_FOR_PRESENT = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_ETHERNET_NAME)
-)
-
-PARAMS_TO_RENAME = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_ETHERNET_NAME,
- newName=RENAMED_ETHERNET)
-)
-
-YAML_PARAMS_WITH_CHANGES = """
- config: "config.json"
- state: present
- data:
- name: 'Test Ethernet Network'
- purpose: Management
- connectionTemplateUri: ~
- bandwidth:
- maximumBandwidth: 3000
- typicalBandwidth: 2000
-"""
-
-YAML_RESET_CONNECTION_TEMPLATE = """
- config: "{{ config }}"
- state: default_bandwidth_reset
- data:
- name: 'network name'
-"""
-
-PARAMS_FOR_SCOPES_SET = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_ETHERNET_NAME)
-)
-
-PARAMS_FOR_ABSENT = dict(
- config='config.json',
- state='absent',
- data=dict(name=DEFAULT_ETHERNET_NAME)
-)
-
-PARAMS_FOR_BULK_CREATED = dict(
- config='config.json',
- state='present',
- data=dict(namePrefix="TestNetwork", vlanIdRange="1-2,5,9-10")
-)
-
-DEFAULT_BULK_ENET_TEMPLATE = [
- {'name': 'TestNetwork_1', 'vlanId': 1},
- {'name': 'TestNetwork_2', 'vlanId': 2},
- {'name': 'TestNetwork_5', 'vlanId': 5},
- {'name': 'TestNetwork_9', 'vlanId': 9},
- {'name': 'TestNetwork_10', 'vlanId': 10},
-]
-
-DICT_PARAMS_WITH_CHANGES = yaml.safe_load(YAML_PARAMS_WITH_CHANGES)["data"]
-
-
-class EthernetNetworkModuleSpec(unittest.TestCase,
- OneViewBaseTestCase):
- """
- OneViewBaseTestCase provides the mocks used in this test case
- """
-
- def setUp(self):
- self.configure_mocks(self, EthernetNetworkModule)
- self.resource = self.mock_ov_client.ethernet_networks
-
- def test_should_create_new_ethernet_network(self):
- self.resource.get_by.return_value = []
- self.resource.create.return_value = DEFAULT_ENET_TEMPLATE
-
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=EthernetNetworkModule.MSG_CREATED,
- ansible_facts=dict(ethernet_network=DEFAULT_ENET_TEMPLATE)
- )
-
- def test_should_not_update_when_data_is_equals(self):
- self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE]
-
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=EthernetNetworkModule.MSG_ALREADY_PRESENT,
- ansible_facts=dict(ethernet_network=DEFAULT_ENET_TEMPLATE)
- )
-
- def test_update_when_data_has_modified_attributes(self):
- data_merged = DEFAULT_ENET_TEMPLATE.copy()
- data_merged['purpose'] = 'Management'
-
- self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE]
- self.resource.update.return_value = data_merged
- self.mock_ov_client.connection_templates.get.return_value = {"uri": "uri"}
-
- self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES)
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=EthernetNetworkModule.MSG_UPDATED,
- ansible_facts=dict(ethernet_network=data_merged)
- )
-
- def test_update_when_only_bandwidth_has_modified_attributes(self):
- self.resource.get_by.return_value = [DICT_PARAMS_WITH_CHANGES]
- self.mock_ov_client.connection_templates.get.return_value = {"uri": "uri"}
-
- self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES)
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=EthernetNetworkModule.MSG_UPDATED,
- ansible_facts=dict(ethernet_network=DICT_PARAMS_WITH_CHANGES)
- )
-
- def test_update_when_data_has_modified_attributes_but_bandwidth_is_equal(self):
- data_merged = DEFAULT_ENET_TEMPLATE.copy()
- data_merged['purpose'] = 'Management'
-
- self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE]
- self.resource.update.return_value = data_merged
- self.mock_ov_client.connection_templates.get.return_value = {
- "bandwidth": DICT_PARAMS_WITH_CHANGES['bandwidth']}
-
- self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES)
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=EthernetNetworkModule.MSG_UPDATED,
- ansible_facts=dict(ethernet_network=data_merged)
- )
-
- def test_update_successfully_even_when_connection_template_uri_not_exists(self):
- data_merged = DEFAULT_ENET_TEMPLATE.copy()
- del data_merged['connectionTemplateUri']
-
- self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE]
- self.resource.update.return_value = data_merged
-
- self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES)
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=EthernetNetworkModule.MSG_UPDATED,
- ansible_facts=dict(ethernet_network=data_merged)
- )
-
- def test_rename_when_resource_exists(self):
- data_merged = DEFAULT_ENET_TEMPLATE.copy()
- data_merged['name'] = RENAMED_ETHERNET
- params_to_rename = PARAMS_TO_RENAME.copy()
-
- self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE]
- self.resource.update.return_value = data_merged
-
- self.mock_ansible_module.params = params_to_rename
-
- EthernetNetworkModule().run()
-
- self.resource.update.assert_called_once_with(data_merged)
-
- def test_create_with_new_name_when_resource_not_exists(self):
- data_merged = DEFAULT_ENET_TEMPLATE.copy()
- data_merged['name'] = RENAMED_ETHERNET
- params_to_rename = PARAMS_TO_RENAME.copy()
-
- self.resource.get_by.return_value = []
- self.resource.create.return_value = DEFAULT_ENET_TEMPLATE
-
- self.mock_ansible_module.params = params_to_rename
-
- EthernetNetworkModule().run()
-
- self.resource.create.assert_called_once_with(PARAMS_TO_RENAME['data'])
-
- def test_should_remove_ethernet_network(self):
- self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE]
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=EthernetNetworkModule.MSG_DELETED
- )
-
- def test_should_do_nothing_when_ethernet_network_not_exist(self):
- self.resource.get_by.return_value = []
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=EthernetNetworkModule.MSG_ALREADY_ABSENT
- )
-
- def test_should_create_all_ethernet_networks(self):
- self.resource.get_range.side_effect = [[], DEFAULT_BULK_ENET_TEMPLATE]
- self.resource.create_bulk.return_value = DEFAULT_BULK_ENET_TEMPLATE
-
- self.mock_ansible_module.params = PARAMS_FOR_BULK_CREATED
-
- EthernetNetworkModule().run()
-
- self.resource.create_bulk.assert_called_once_with(
- dict(namePrefix="TestNetwork", vlanIdRange="1-2,5,9-10"))
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=EthernetNetworkModule.MSG_BULK_CREATED,
- ansible_facts=dict(ethernet_network_bulk=DEFAULT_BULK_ENET_TEMPLATE))
-
- def test_should_create_missing_ethernet_networks(self):
- enet_get_range_return = [
- {'name': 'TestNetwork_1', 'vlanId': 1},
- {'name': 'TestNetwork_2', 'vlanId': 2},
- ]
-
- self.resource.get_range.side_effect = [enet_get_range_return, DEFAULT_BULK_ENET_TEMPLATE]
- self.resource.dissociate_values_or_ranges.return_value = [1, 2, 5, 9, 10]
-
- self.mock_ansible_module.params = PARAMS_FOR_BULK_CREATED
-
- EthernetNetworkModule().run()
-
- self.resource.create_bulk.assert_called_once_with(
- dict(namePrefix="TestNetwork", vlanIdRange="5,9,10"))
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True, msg=EthernetNetworkModule.MSG_MISSING_BULK_CREATED,
- ansible_facts=dict(ethernet_network_bulk=DEFAULT_BULK_ENET_TEMPLATE))
-
- def test_should_create_missing_ethernet_networks_with_just_one_difference(self):
- enet_get_range_return = [
- {'name': 'TestNetwork_1', 'vlanId': 1},
- {'name': 'TestNetwork_2', 'vlanId': 2},
- ]
-
- self.resource.get_range.side_effect = [enet_get_range_return, DEFAULT_BULK_ENET_TEMPLATE]
- self.resource.dissociate_values_or_ranges.return_value = [1, 2, 5]
-
- self.mock_ansible_module.params = PARAMS_FOR_BULK_CREATED
-
- EthernetNetworkModule().run()
-
- self.resource.create_bulk.assert_called_once_with({'vlanIdRange': '5-5', 'namePrefix': 'TestNetwork'})
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=EthernetNetworkModule.MSG_MISSING_BULK_CREATED,
- ansible_facts=dict(ethernet_network_bulk=DEFAULT_BULK_ENET_TEMPLATE))
-
- def test_should_do_nothing_when_ethernet_networks_already_exist(self):
- self.resource.get_range.return_value = DEFAULT_BULK_ENET_TEMPLATE
- self.resource.dissociate_values_or_ranges.return_value = [1, 2, 5, 9, 10]
-
- self.mock_ansible_module.params = PARAMS_FOR_BULK_CREATED
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False, msg=EthernetNetworkModule.MSG_BULK_ALREADY_EXIST,
- ansible_facts=dict(ethernet_network_bulk=DEFAULT_BULK_ENET_TEMPLATE))
-
- def test_reset_successfully(self):
- self.resource.get_by.return_value = [DICT_PARAMS_WITH_CHANGES]
- self.mock_ov_client.connection_templates.update.return_value = {'result': 'success'}
- self.mock_ov_client.connection_templates.get.return_value = {
- "bandwidth": DICT_PARAMS_WITH_CHANGES['bandwidth']}
-
- self.mock_ov_client.connection_templates.get_default.return_value = {"bandwidth": {
- "max": 1
- }}
-
- self.mock_ansible_module.params = yaml.load(YAML_RESET_CONNECTION_TEMPLATE)
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True, msg=EthernetNetworkModule.MSG_CONNECTION_TEMPLATE_RESET,
- ansible_facts=dict(ethernet_network_connection_template={'result': 'success'}))
-
- def test_should_fail_when_reset_not_existing_ethernet_network(self):
- self.resource.get_by.return_value = [None]
-
- self.mock_ansible_module.params = yaml.load(YAML_RESET_CONNECTION_TEMPLATE)
-
- EthernetNetworkModule().run()
-
- self.mock_ansible_module.fail_json.assert_called_once_with(
- exception=mock.ANY,
- msg=EthernetNetworkModule.MSG_ETHERNET_NETWORK_NOT_FOUND
- )
-
- def test_update_scopes_when_different(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = DEFAULT_ENET_TEMPLATE.copy()
- resource_data['scopeUris'] = ['fake']
- resource_data['uri'] = 'rest/ethernet/fake'
- self.resource.get_by.return_value = [resource_data]
-
- patch_return = resource_data.copy()
- patch_return['scopeUris'] = ['test']
- self.resource.patch.return_value = patch_return
-
- EthernetNetworkModule().run()
-
- self.resource.patch.assert_called_once_with('rest/ethernet/fake',
- operation='replace',
- path='/scopeUris',
- value=['test'])
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- ansible_facts=dict(ethernet_network=patch_return),
- msg=EthernetNetworkModule.MSG_UPDATED
- )
-
- def test_should_do_nothing_when_scopes_are_the_same(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = DEFAULT_ENET_TEMPLATE.copy()
- resource_data['scopeUris'] = ['test']
- self.resource.get_by.return_value = [resource_data]
-
- EthernetNetworkModule().run()
-
- self.resource.patch.not_been_called()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- ansible_facts=dict(ethernet_network=resource_data),
- msg=EthernetNetworkModule.MSG_ALREADY_PRESENT
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_ethernet_network_info.py b/test/units/modules/remote_management/oneview/test_oneview_ethernet_network_info.py
deleted file mode 100644
index 6339e29773..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_ethernet_network_info.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from units.compat import unittest
-
-from oneview_module_loader import EthernetNetworkInfoModule
-from hpe_test_utils import FactsParamsTestCase
-
-ERROR_MSG = 'Fake message error'
-
-PARAMS_GET_ALL = dict(
- config='config.json',
- name=None
-)
-
-PARAMS_GET_BY_NAME = dict(
- config='config.json',
- name="Test Ethernet Network",
- options=[]
-)
-
-PARAMS_GET_BY_NAME_WITH_OPTIONS = dict(
- config='config.json',
- name="Test Ethernet Network",
- options=['associatedProfiles', 'associatedUplinkGroups']
-)
-
-PRESENT_ENETS = [{
- "name": "Test Ethernet Network",
- "uri": "/rest/ethernet-networks/d34dcf5e-0d8e-441c-b00d-e1dd6a067188"
-}]
-
-ENET_ASSOCIATED_UPLINK_GROUP_URIS = [
- "/rest/uplink-sets/c6bf9af9-48e7-4236-b08a-77684dc258a5",
- "/rest/uplink-sets/e2f0031b-52bd-4223-9ac1-d91cb519d548"
-]
-
-ENET_ASSOCIATED_PROFILE_URIS = [
- "/rest/server-profiles/83e2e117-59dc-4e33-9f24-462af951cbbe",
- "/rest/server-profiles/57d3af2a-b6d2-4446-8645-f38dd808ea4d"
-]
-
-ENET_ASSOCIATED_UPLINK_GROUPS = [dict(uri=ENET_ASSOCIATED_UPLINK_GROUP_URIS[0], name='Uplink Set 1'),
- dict(uri=ENET_ASSOCIATED_UPLINK_GROUP_URIS[1], name='Uplink Set 2')]
-
-ENET_ASSOCIATED_PROFILES = [dict(uri=ENET_ASSOCIATED_PROFILE_URIS[0], name='Server Profile 1'),
- dict(uri=ENET_ASSOCIATED_PROFILE_URIS[1], name='Server Profile 2')]
-
-
-class EthernetNetworkInfoSpec(unittest.TestCase,
- FactsParamsTestCase
- ):
- def setUp(self):
- self.configure_mocks(self, EthernetNetworkInfoModule)
- self.ethernet_networks = self.mock_ov_client.ethernet_networks
- FactsParamsTestCase.configure_client_mock(self, self.ethernet_networks)
-
- def test_should_get_all_enets(self):
- self.ethernet_networks.get_all.return_value = PRESENT_ENETS
- self.mock_ansible_module.params = PARAMS_GET_ALL
-
- EthernetNetworkInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- ethernet_networks=(PRESENT_ENETS)
- )
-
- def test_should_get_enet_by_name(self):
- self.ethernet_networks.get_by.return_value = PRESENT_ENETS
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME
-
- EthernetNetworkInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- ethernet_networks=(PRESENT_ENETS)
- )
-
- def test_should_get_enet_by_name_with_options(self):
- self.ethernet_networks.get_by.return_value = PRESENT_ENETS
- self.ethernet_networks.get_associated_profiles.return_value = ENET_ASSOCIATED_PROFILE_URIS
- self.ethernet_networks.get_associated_uplink_groups.return_value = ENET_ASSOCIATED_UPLINK_GROUP_URIS
- self.mock_ov_client.server_profiles.get.side_effect = ENET_ASSOCIATED_PROFILES
- self.mock_ov_client.uplink_sets.get.side_effect = ENET_ASSOCIATED_UPLINK_GROUPS
-
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME_WITH_OPTIONS
-
- EthernetNetworkInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- ethernet_networks=PRESENT_ENETS,
- enet_associated_profiles=ENET_ASSOCIATED_PROFILES,
- enet_associated_uplink_groups=ENET_ASSOCIATED_UPLINK_GROUPS
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_fc_network.py b/test/units/modules/remote_management/oneview/test_oneview_fc_network.py
deleted file mode 100644
index ad85a5b5c4..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_fc_network.py
+++ /dev/null
@@ -1,178 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (2016-2017) Hewlett Packard Enterprise Development LP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-from units.compat import unittest
-from oneview_module_loader import FcNetworkModule
-from hpe_test_utils import OneViewBaseTestCase
-
-FAKE_MSG_ERROR = 'Fake message error'
-
-DEFAULT_FC_NETWORK_TEMPLATE = dict(
- name='New FC Network 2',
- autoLoginRedistribution=True,
- fabricType='FabricAttach'
-)
-
-PARAMS_FOR_PRESENT = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_FC_NETWORK_TEMPLATE['name'])
-)
-
-PARAMS_WITH_CHANGES = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_FC_NETWORK_TEMPLATE['name'],
- newName="New Name",
- fabricType='DirectAttach')
-)
-
-PARAMS_FOR_ABSENT = dict(
- config='config.json',
- state='absent',
- data=dict(name=DEFAULT_FC_NETWORK_TEMPLATE['name'])
-)
-
-
-class FcNetworkModuleSpec(unittest.TestCase,
- OneViewBaseTestCase):
- """
- OneViewBaseTestCase provides the mocks used in this test case
- """
-
- def setUp(self):
- self.configure_mocks(self, FcNetworkModule)
- self.resource = self.mock_ov_client.fc_networks
-
- def test_should_create_new_fc_network(self):
- self.resource.get_by.return_value = []
- self.resource.create.return_value = DEFAULT_FC_NETWORK_TEMPLATE
-
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT
-
- FcNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=FcNetworkModule.MSG_CREATED,
- ansible_facts=dict(fc_network=DEFAULT_FC_NETWORK_TEMPLATE)
- )
-
- def test_should_not_update_when_data_is_equals(self):
- self.resource.get_by.return_value = [DEFAULT_FC_NETWORK_TEMPLATE]
-
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT
-
- FcNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=FcNetworkModule.MSG_ALREADY_PRESENT,
- ansible_facts=dict(fc_network=DEFAULT_FC_NETWORK_TEMPLATE)
- )
-
- def test_update_when_data_has_modified_attributes(self):
- data_merged = DEFAULT_FC_NETWORK_TEMPLATE.copy()
-
- data_merged['fabricType'] = 'DirectAttach'
-
- self.resource.get_by.return_value = [DEFAULT_FC_NETWORK_TEMPLATE]
- self.resource.update.return_value = data_merged
-
- self.mock_ansible_module.params = PARAMS_WITH_CHANGES
-
- FcNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=FcNetworkModule.MSG_UPDATED,
- ansible_facts=dict(fc_network=data_merged)
- )
-
- def test_should_remove_fc_network(self):
- self.resource.get_by.return_value = [DEFAULT_FC_NETWORK_TEMPLATE]
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- FcNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=FcNetworkModule.MSG_DELETED
- )
-
- def test_should_do_nothing_when_fc_network_not_exist(self):
- self.resource.get_by.return_value = []
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- FcNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=FcNetworkModule.MSG_ALREADY_ABSENT
- )
-
- def test_update_scopes_when_different(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = DEFAULT_FC_NETWORK_TEMPLATE.copy()
- resource_data['scopeUris'] = ['fake']
- resource_data['uri'] = 'rest/fc/fake'
- self.resource.get_by.return_value = [resource_data]
-
- patch_return = resource_data.copy()
- patch_return['scopeUris'] = ['test']
- self.resource.patch.return_value = patch_return
-
- FcNetworkModule().run()
-
- self.resource.patch.assert_called_once_with('rest/fc/fake',
- operation='replace',
- path='/scopeUris',
- value=['test'])
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- ansible_facts=dict(fc_network=patch_return),
- msg=FcNetworkModule.MSG_UPDATED
- )
-
- def test_should_do_nothing_when_scopes_are_the_same(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = DEFAULT_FC_NETWORK_TEMPLATE.copy()
- resource_data['scopeUris'] = ['test']
- self.resource.get_by.return_value = [resource_data]
-
- FcNetworkModule().run()
-
- self.resource.patch.not_been_called()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- ansible_facts=dict(fc_network=resource_data),
- msg=FcNetworkModule.MSG_ALREADY_PRESENT
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_fc_network_info.py b/test/units/modules/remote_management/oneview/test_oneview_fc_network_info.py
deleted file mode 100644
index e0318d98ad..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_fc_network_info.py
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from units.compat import unittest
-from oneview_module_loader import FcNetworkInfoModule
-from hpe_test_utils import FactsParamsTestCase
-
-ERROR_MSG = 'Fake message error'
-
-PARAMS_GET_ALL = dict(
- config='config.json',
- name=None
-)
-
-PARAMS_GET_BY_NAME = dict(
- config='config.json',
- name="Test FC Network"
-)
-
-PRESENT_NETWORKS = [{
- "name": "Test FC Network",
- "uri": "/rest/fc-networks/c6bf9af9-48e7-4236-b08a-77684dc258a5"
-}]
-
-
-class FcNetworkInfoSpec(unittest.TestCase,
- FactsParamsTestCase):
- def setUp(self):
- self.configure_mocks(self, FcNetworkInfoModule)
- self.fc_networks = self.mock_ov_client.fc_networks
- FactsParamsTestCase.configure_client_mock(self, self.fc_networks)
-
- def test_should_get_all_fc_networks(self):
- self.fc_networks.get_all.return_value = PRESENT_NETWORKS
- self.mock_ansible_module.params = PARAMS_GET_ALL
-
- FcNetworkInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- fc_networks=PRESENT_NETWORKS
- )
-
- def test_should_get_fc_network_by_name(self):
- self.fc_networks.get_by.return_value = PRESENT_NETWORKS
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME
-
- FcNetworkInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- fc_networks=PRESENT_NETWORKS
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_fcoe_network.py b/test/units/modules/remote_management/oneview/test_oneview_fcoe_network.py
deleted file mode 100644
index 98ace0e866..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_fcoe_network.py
+++ /dev/null
@@ -1,176 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (2016-2017) Hewlett Packard Enterprise Development LP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-from units.compat import unittest
-from oneview_module_loader import FcoeNetworkModule
-from hpe_test_utils import OneViewBaseTestCase
-
-FAKE_MSG_ERROR = 'Fake message error'
-
-DEFAULT_FCOE_NETWORK_TEMPLATE = dict(
- name='New FCoE Network 2',
- vlanId="201",
- connectionTemplateUri=None
-)
-
-PARAMS_FOR_PRESENT = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_FCOE_NETWORK_TEMPLATE['name'])
-)
-
-PARAMS_WITH_CHANGES = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_FCOE_NETWORK_TEMPLATE['name'],
- fabricType='DirectAttach',
- newName='New Name')
-)
-
-PARAMS_FOR_ABSENT = dict(
- config='config.json',
- state='absent',
- data=dict(name=DEFAULT_FCOE_NETWORK_TEMPLATE['name'])
-)
-
-
-class FcoeNetworkSpec(unittest.TestCase,
- OneViewBaseTestCase):
- """
- OneViewBaseTestCase provides the mocks used in this test case
- """
-
- def setUp(self):
- self.configure_mocks(self, FcoeNetworkModule)
- self.resource = self.mock_ov_client.fcoe_networks
-
- def test_should_create_new_fcoe_network(self):
- self.resource.get_by.return_value = []
- self.resource.create.return_value = DEFAULT_FCOE_NETWORK_TEMPLATE
-
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT
-
- FcoeNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=FcoeNetworkModule.MSG_CREATED,
- ansible_facts=dict(fcoe_network=DEFAULT_FCOE_NETWORK_TEMPLATE)
- )
-
- def test_should_not_update_when_data_is_equals(self):
- self.resource.get_by.return_value = [DEFAULT_FCOE_NETWORK_TEMPLATE]
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT.copy()
-
- FcoeNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=FcoeNetworkModule.MSG_ALREADY_PRESENT,
- ansible_facts=dict(fcoe_network=DEFAULT_FCOE_NETWORK_TEMPLATE)
- )
-
- def test_update_when_data_has_modified_attributes(self):
- data_merged = DEFAULT_FCOE_NETWORK_TEMPLATE.copy()
- data_merged['fabricType'] = 'DirectAttach'
-
- self.resource.get_by.return_value = [DEFAULT_FCOE_NETWORK_TEMPLATE]
- self.resource.update.return_value = data_merged
-
- self.mock_ansible_module.params = PARAMS_WITH_CHANGES
-
- FcoeNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=FcoeNetworkModule.MSG_UPDATED,
- ansible_facts=dict(fcoe_network=data_merged)
- )
-
- def test_should_remove_fcoe_network(self):
- self.resource.get_by.return_value = [DEFAULT_FCOE_NETWORK_TEMPLATE]
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- FcoeNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=FcoeNetworkModule.MSG_DELETED
- )
-
- def test_should_do_nothing_when_fcoe_network_not_exist(self):
- self.resource.get_by.return_value = []
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- FcoeNetworkModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=FcoeNetworkModule.MSG_ALREADY_ABSENT
- )
-
- def test_update_scopes_when_different(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = DEFAULT_FCOE_NETWORK_TEMPLATE.copy()
- resource_data['scopeUris'] = ['fake']
- resource_data['uri'] = 'rest/fcoe/fake'
- self.resource.get_by.return_value = [resource_data]
-
- patch_return = resource_data.copy()
- patch_return['scopeUris'] = ['test']
- self.resource.patch.return_value = patch_return
-
- FcoeNetworkModule().run()
-
- self.resource.patch.assert_called_once_with('rest/fcoe/fake',
- operation='replace',
- path='/scopeUris',
- value=['test'])
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- ansible_facts=dict(fcoe_network=patch_return),
- msg=FcoeNetworkModule.MSG_UPDATED
- )
-
- def test_should_do_nothing_when_scopes_are_the_same(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = DEFAULT_FCOE_NETWORK_TEMPLATE.copy()
- resource_data['scopeUris'] = ['test']
- self.resource.get_by.return_value = [resource_data]
-
- FcoeNetworkModule().run()
-
- self.resource.patch.not_been_called()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- ansible_facts=dict(fcoe_network=resource_data),
- msg=FcoeNetworkModule.MSG_ALREADY_PRESENT
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_fcoe_network_info.py b/test/units/modules/remote_management/oneview/test_oneview_fcoe_network_info.py
deleted file mode 100644
index 5977bd1ead..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_fcoe_network_info.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from units.compat import unittest
-
-from oneview_module_loader import FcoeNetworkInfoModule
-
-from hpe_test_utils import FactsParamsTestCase
-
-ERROR_MSG = 'Fake message error'
-
-PARAMS_GET_ALL = dict(
- config='config.json',
- name=None
-)
-
-PARAMS_GET_BY_NAME = dict(
- config='config.json',
- name="Test FCoE Networks"
-)
-
-PRESENT_NETWORKS = [{
- "name": "Test FCoE Networks",
- "uri": "/rest/fcoe-networks/c6bf9af9-48e7-4236-b08a-77684dc258a5"
-}]
-
-
-class FcoeNetworkInfoSpec(unittest.TestCase,
- FactsParamsTestCase
- ):
- def setUp(self):
- self.configure_mocks(self, FcoeNetworkInfoModule)
- self.fcoe_networks = self.mock_ov_client.fcoe_networks
- FactsParamsTestCase.configure_client_mock(self, self.fcoe_networks)
-
- def test_should_get_all_fcoe_network(self):
- self.fcoe_networks.get_all.return_value = PRESENT_NETWORKS
- self.mock_ansible_module.params = PARAMS_GET_ALL
-
- FcoeNetworkInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- fcoe_networks=PRESENT_NETWORKS
- )
-
- def test_should_get_fcoe_network_by_name(self):
- self.fcoe_networks.get_by.return_value = PRESENT_NETWORKS
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME
-
- FcoeNetworkInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- fcoe_networks=PRESENT_NETWORKS
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group.py b/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group.py
deleted file mode 100644
index 913828c1f4..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group.py
+++ /dev/null
@@ -1,257 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from copy import deepcopy
-
-from units.compat import unittest, mock
-from ansible.modules.remote_management.oneview.oneview_logical_interconnect_group import LogicalInterconnectGroupModule
-from hpe_test_utils import OneViewBaseTestCase
-
-
-FAKE_MSG_ERROR = 'Fake message error'
-
-DEFAULT_LIG_NAME = 'Test Logical Interconnect Group'
-RENAMED_LIG = 'Renamed Logical Interconnect Group'
-
-DEFAULT_LIG_TEMPLATE = dict(
- name=DEFAULT_LIG_NAME,
- uplinkSets=[],
- enclosureType='C7000',
- interconnectMapTemplate=dict(
- interconnectMapEntryTemplates=[]
- )
-)
-
-PARAMS_LIG_TEMPLATE_WITH_MAP = dict(
- config='config.json',
- state='present',
- data=dict(
- name=DEFAULT_LIG_NAME,
- uplinkSets=[],
- enclosureType='C7000',
- interconnectMapTemplate=dict(
- interconnectMapEntryTemplates=[
- {
- "logicalDownlinkUri": None,
- "logicalLocation": {
- "locationEntries": [
- {
- "relativeValue": "1",
- "type": "Bay"
- },
- {
- "relativeValue": 1,
- "type": "Enclosure"
- }
- ]
- },
- "permittedInterconnectTypeName": "HP VC Flex-10/10D Module"
- }]
- )
- ))
-
-PARAMS_FOR_PRESENT = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_LIG_NAME)
-)
-
-PARAMS_TO_RENAME = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_LIG_NAME,
- newName=RENAMED_LIG)
-)
-
-PARAMS_WITH_CHANGES = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_LIG_NAME,
- description='It is an example')
-)
-
-PARAMS_FOR_ABSENT = dict(
- config='config.json',
- state='absent',
- data=dict(name=DEFAULT_LIG_NAME)
-)
-
-
-class LogicalInterconnectGroupGeneralSpec(unittest.TestCase,
- OneViewBaseTestCase):
- def setUp(self):
- self.configure_mocks(self, LogicalInterconnectGroupModule)
- self.resource = self.mock_ov_client.logical_interconnect_groups
-
- def test_should_create_new_lig(self):
- self.resource.get_by.return_value = []
- self.resource.create.return_value = DEFAULT_LIG_TEMPLATE
-
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT
-
- LogicalInterconnectGroupModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=LogicalInterconnectGroupModule.MSG_CREATED,
- ansible_facts=dict(logical_interconnect_group=DEFAULT_LIG_TEMPLATE)
- )
-
- def test_should_create_new_with_named_permitted_interconnect_type(self):
- self.resource.get_by.return_value = []
- self.resource.create.return_value = PARAMS_FOR_PRESENT
-
- self.mock_ansible_module.params = deepcopy(PARAMS_LIG_TEMPLATE_WITH_MAP)
-
- LogicalInterconnectGroupModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=LogicalInterconnectGroupModule.MSG_CREATED,
- ansible_facts=dict(logical_interconnect_group=PARAMS_FOR_PRESENT.copy())
- )
-
- def test_should_fail_when_permitted_interconnect_type_name_not_exists(self):
- self.resource.get_by.return_value = []
- self.resource.create.return_value = PARAMS_FOR_PRESENT
- self.mock_ov_client.interconnect_types.get_by.return_value = []
-
- self.mock_ansible_module.params = deepcopy(PARAMS_LIG_TEMPLATE_WITH_MAP)
-
- LogicalInterconnectGroupModule().run()
-
- self.mock_ansible_module.fail_json.assert_called_once_with(
- exception=mock.ANY,
- msg=LogicalInterconnectGroupModule.MSG_INTERCONNECT_TYPE_NOT_FOUND)
-
- def test_should_not_update_when_data_is_equals(self):
- self.resource.get_by.return_value = [DEFAULT_LIG_TEMPLATE]
-
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT
-
- LogicalInterconnectGroupModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=LogicalInterconnectGroupModule.MSG_ALREADY_PRESENT,
- ansible_facts=dict(logical_interconnect_group=DEFAULT_LIG_TEMPLATE)
- )
-
- def test_update_when_data_has_modified_attributes(self):
- data_merged = DEFAULT_LIG_TEMPLATE.copy()
- data_merged['description'] = 'New description'
-
- self.resource.get_by.return_value = [DEFAULT_LIG_TEMPLATE]
- self.resource.update.return_value = data_merged
-
- self.mock_ansible_module.params = PARAMS_WITH_CHANGES
-
- LogicalInterconnectGroupModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=LogicalInterconnectGroupModule.MSG_UPDATED,
- ansible_facts=dict(logical_interconnect_group=data_merged)
- )
-
- def test_rename_when_resource_exists(self):
- data_merged = DEFAULT_LIG_TEMPLATE.copy()
- data_merged['name'] = RENAMED_LIG
- params_to_rename = PARAMS_TO_RENAME.copy()
-
- self.resource.get_by.return_value = [DEFAULT_LIG_TEMPLATE]
- self.resource.update.return_value = data_merged
-
- self.mock_ansible_module.params = params_to_rename
-
- LogicalInterconnectGroupModule().run()
-
- self.resource.update.assert_called_once_with(data_merged)
-
- def test_create_with_newName_when_resource_not_exists(self):
- data_merged = DEFAULT_LIG_TEMPLATE.copy()
- data_merged['name'] = RENAMED_LIG
- params_to_rename = PARAMS_TO_RENAME.copy()
-
- self.resource.get_by.return_value = []
- self.resource.create.return_value = DEFAULT_LIG_TEMPLATE
-
- self.mock_ansible_module.params = params_to_rename
-
- LogicalInterconnectGroupModule().run()
-
- self.resource.create.assert_called_once_with(PARAMS_TO_RENAME['data'])
-
- def test_should_remove_lig(self):
- self.resource.get_by.return_value = [DEFAULT_LIG_TEMPLATE]
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- LogicalInterconnectGroupModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=LogicalInterconnectGroupModule.MSG_DELETED
- )
-
- def test_should_do_nothing_when_lig_not_exist(self):
- self.resource.get_by.return_value = []
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- LogicalInterconnectGroupModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=LogicalInterconnectGroupModule.MSG_ALREADY_ABSENT
- )
-
- def test_update_scopes_when_different(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = DEFAULT_LIG_TEMPLATE.copy()
- resource_data['scopeUris'] = ['fake']
- resource_data['uri'] = 'rest/lig/fake'
- self.resource.get_by.return_value = [resource_data]
-
- patch_return = resource_data.copy()
- patch_return['scopeUris'] = ['test']
- self.resource.patch.return_value = patch_return
-
- LogicalInterconnectGroupModule().run()
-
- self.resource.patch.assert_called_once_with('rest/lig/fake',
- operation='replace',
- path='/scopeUris',
- value=['test'])
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- ansible_facts=dict(logical_interconnect_group=patch_return),
- msg=LogicalInterconnectGroupModule.MSG_UPDATED
- )
-
- def test_should_do_nothing_when_scopes_are_the_same(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = DEFAULT_LIG_TEMPLATE.copy()
- resource_data['scopeUris'] = ['test']
- self.resource.get_by.return_value = [resource_data]
-
- LogicalInterconnectGroupModule().run()
-
- self.resource.patch.not_been_called()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- ansible_facts=dict(logical_interconnect_group=resource_data),
- msg=LogicalInterconnectGroupModule.MSG_ALREADY_PRESENT
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_info.py b/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_info.py
deleted file mode 100644
index b86e1ae16e..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_logical_interconnect_group_info.py
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from units.compat import unittest
-from ansible.modules.remote_management.oneview.oneview_logical_interconnect_group_info import LogicalInterconnectGroupInfoModule
-from hpe_test_utils import FactsParamsTestCase
-
-
-ERROR_MSG = 'Fake message error'
-
-PARAMS_GET_ALL = dict(
- config='config.json',
- name=None
-)
-
-PARAMS_GET_BY_NAME = dict(
- config='config.json',
- name="Test Logical Interconnect Group"
-)
-
-PRESENT_LIGS = [{
- "name": "Test Logical Interconnect Group",
- "uri": "/rest/logical-interconnect-groups/ebb4ada8-08df-400e-8fac-9ff987ac5140"
-}]
-
-
-class LogicalInterconnectGroupInfoSpec(unittest.TestCase, FactsParamsTestCase):
- def setUp(self):
- self.configure_mocks(self, LogicalInterconnectGroupInfoModule)
- self.logical_interconnect_groups = self.mock_ov_client.logical_interconnect_groups
- FactsParamsTestCase.configure_client_mock(self, self.logical_interconnect_groups)
-
- def test_should_get_all_ligs(self):
- self.logical_interconnect_groups.get_all.return_value = PRESENT_LIGS
- self.mock_ansible_module.params = PARAMS_GET_ALL
-
- LogicalInterconnectGroupInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- logical_interconnect_groups=(PRESENT_LIGS)
- )
-
- def test_should_get_lig_by_name(self):
- self.logical_interconnect_groups.get_by.return_value = PRESENT_LIGS
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME
-
- LogicalInterconnectGroupInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- logical_interconnect_groups=(PRESENT_LIGS)
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_network_set.py b/test/units/modules/remote_management/oneview/test_oneview_network_set.py
deleted file mode 100644
index 97e31504b2..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_network_set.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from units.compat import unittest, mock
-from hpe_test_utils import OneViewBaseTestCase
-from oneview_module_loader import NetworkSetModule
-
-FAKE_MSG_ERROR = 'Fake message error'
-
-NETWORK_SET = dict(
- name='OneViewSDK Test Network Set',
- networkUris=['/rest/ethernet-networks/aaa-bbb-ccc']
-)
-
-NETWORK_SET_WITH_NEW_NAME = dict(name='OneViewSDK Test Network Set - Renamed')
-
-PARAMS_FOR_PRESENT = dict(
- config='config.json',
- state='present',
- data=dict(name=NETWORK_SET['name'],
- networkUris=['/rest/ethernet-networks/aaa-bbb-ccc'])
-)
-
-PARAMS_WITH_CHANGES = dict(
- config='config.json',
- state='present',
- data=dict(name=NETWORK_SET['name'],
- newName=NETWORK_SET['name'] + " - Renamed",
- networkUris=['/rest/ethernet-networks/aaa-bbb-ccc', 'Name of a Network'])
-)
-
-PARAMS_FOR_ABSENT = dict(
- config='config.json',
- state='absent',
- data=dict(name=NETWORK_SET['name'])
-)
-
-
-class NetworkSetModuleSpec(unittest.TestCase,
- OneViewBaseTestCase):
- """
- OneViewBaseTestCase has common tests for class constructor and main function,
- also provides the mocks used in this test case.
- """
-
- def setUp(self):
- self.configure_mocks(self, NetworkSetModule)
- self.resource = self.mock_ov_client.network_sets
- self.ethernet_network_client = self.mock_ov_client.ethernet_networks
-
- def test_should_create_new_network_set(self):
- self.resource.get_by.return_value = []
- self.resource.create.return_value = NETWORK_SET
-
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT
-
- NetworkSetModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=NetworkSetModule.MSG_CREATED,
- ansible_facts=dict(network_set=NETWORK_SET)
- )
-
- def test_should_not_update_when_data_is_equals(self):
- self.resource.get_by.return_value = [NETWORK_SET]
-
- self.mock_ansible_module.params = PARAMS_FOR_PRESENT
-
- NetworkSetModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=NetworkSetModule.MSG_ALREADY_PRESENT,
- ansible_facts=dict(network_set=NETWORK_SET)
- )
-
- def test_update_when_data_has_modified_attributes(self):
- data_merged = dict(name=NETWORK_SET['name'] + " - Renamed",
- networkUris=['/rest/ethernet-networks/aaa-bbb-ccc',
- '/rest/ethernet-networks/ddd-eee-fff']
- )
-
- self.resource.get_by.side_effect = [NETWORK_SET], []
- self.resource.update.return_value = data_merged
- self.ethernet_network_client.get_by.return_value = [{'uri': '/rest/ethernet-networks/ddd-eee-fff'}]
-
- self.mock_ansible_module.params = PARAMS_WITH_CHANGES
-
- NetworkSetModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=NetworkSetModule.MSG_UPDATED,
- ansible_facts=dict(network_set=data_merged)
- )
-
- def test_should_raise_exception_when_ethernet_network_not_found(self):
- self.resource.get_by.side_effect = [NETWORK_SET], []
- self.ethernet_network_client.get_by.return_value = []
-
- self.mock_ansible_module.params = PARAMS_WITH_CHANGES
-
- NetworkSetModule().run()
-
- self.mock_ansible_module.fail_json.assert_called_once_with(
- exception=mock.ANY,
- msg=NetworkSetModule.MSG_ETHERNET_NETWORK_NOT_FOUND + "Name of a Network"
- )
-
- def test_should_remove_network(self):
- self.resource.get_by.return_value = [NETWORK_SET]
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- NetworkSetModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=NetworkSetModule.MSG_DELETED
- )
-
- def test_should_do_nothing_when_network_set_not_exist(self):
- self.resource.get_by.return_value = []
-
- self.mock_ansible_module.params = PARAMS_FOR_ABSENT
-
- NetworkSetModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=NetworkSetModule.MSG_ALREADY_ABSENT
- )
-
- def test_update_scopes_when_different(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = NETWORK_SET.copy()
- resource_data['scopeUris'] = ['fake']
- resource_data['uri'] = 'rest/network-sets/fake'
- self.resource.get_by.return_value = [resource_data]
-
- patch_return = resource_data.copy()
- patch_return['scopeUris'] = ['test']
- self.resource.patch.return_value = patch_return
-
- NetworkSetModule().run()
-
- self.resource.patch.assert_called_once_with('rest/network-sets/fake',
- operation='replace',
- path='/scopeUris',
- value=['test'])
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- ansible_facts=dict(network_set=patch_return),
- msg=NetworkSetModule.MSG_UPDATED
- )
-
- def test_should_do_nothing_when_scopes_are_the_same(self):
- params_to_scope = PARAMS_FOR_PRESENT.copy()
- params_to_scope['data']['scopeUris'] = ['test']
- self.mock_ansible_module.params = params_to_scope
-
- resource_data = NETWORK_SET.copy()
- resource_data['scopeUris'] = ['test']
- self.resource.get_by.return_value = [resource_data]
-
- NetworkSetModule().run()
-
- self.resource.patch.not_been_called()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- ansible_facts=dict(network_set=resource_data),
- msg=NetworkSetModule.MSG_ALREADY_PRESENT
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_network_set_info.py b/test/units/modules/remote_management/oneview/test_oneview_network_set_info.py
deleted file mode 100644
index 5c4d989243..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_network_set_info.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from units.compat import unittest
-from oneview_module_loader import NetworkSetInfoModule
-from hpe_test_utils import FactsParamsTestCase
-
-ERROR_MSG = 'Fake message error'
-
-PARAMS_GET_ALL = dict(
- config='config.json',
- name=None
-)
-
-PARAMS_GET_ALL_WITHOUT_ETHERNET = dict(
- config='config.json',
- name=None,
- options=['withoutEthernet']
-)
-
-PARAMS_GET_BY_NAME = dict(
- config='config.json',
- name='Network Set 1'
-)
-
-PARAMS_GET_BY_NAME_WITHOUT_ETHERNET = dict(
- config='config.json',
- name='Network Set 1',
- options=['withoutEthernet']
-)
-
-
-class NetworkSetInfoSpec(unittest.TestCase,
- FactsParamsTestCase):
- def setUp(self):
- self.configure_mocks(self, NetworkSetInfoModule)
- self.network_sets = self.mock_ov_client.network_sets
- FactsParamsTestCase.configure_client_mock(self, self.network_sets)
-
- def test_should_get_all_network_sets(self):
- network_sets = [{
- "name": "Network Set 1",
- "networkUris": ['/rest/ethernet-networks/aaa-bbb-ccc']
- }, {
- "name": "Network Set 2",
- "networkUris": ['/rest/ethernet-networks/ddd-eee-fff', '/rest/ethernet-networks/ggg-hhh-fff']
- }]
-
- self.network_sets.get_all.return_value = network_sets
- self.mock_ansible_module.params = PARAMS_GET_ALL
-
- NetworkSetInfoModule().run()
-
- self.network_sets.get_all.assert_called_once_with()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- network_sets=network_sets)
-
- def test_should_get_all_network_sets_without_ethernet(self):
- network_sets = [{
- "name": "Network Set 1",
- "networkUris": []
- }, {
- "name": "Network Set 2",
- "networkUris": []
- }]
-
- self.network_sets.get_all.return_value = network_sets
- self.mock_ansible_module.params = PARAMS_GET_ALL
-
- NetworkSetInfoModule().run()
-
- self.network_sets.get_all.assert_called_once_with()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- network_sets=network_sets)
-
- def test_should_get_network_set_by_name(self):
- network_sets = [{
- "name": "Network Set 1",
- "networkUris": ['/rest/ethernet-networks/aaa-bbb-ccc']
- }]
-
- self.network_sets.get_by.return_value = network_sets
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME
-
- NetworkSetInfoModule().run()
-
- self.network_sets.get_by.assert_called_once_with('name', 'Network Set 1')
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- network_sets=network_sets)
-
- def test_should_get_network_set_by_name_without_ethernet(self):
- network_sets = [{
- "name": "Network Set 1",
- "networkUris": []
- }]
-
- self.network_sets.get_all_without_ethernet.return_value = network_sets
- self.mock_ansible_module.params = PARAMS_GET_BY_NAME_WITHOUT_ETHERNET
-
- NetworkSetInfoModule().run()
-
- expected_filter = "\"'name'='Network Set 1'\""
- self.network_sets.get_all_without_ethernet.assert_called_once_with(filter=expected_filter)
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- network_sets=network_sets)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_san_manager.py b/test/units/modules/remote_management/oneview/test_oneview_san_manager.py
deleted file mode 100644
index 3ab32651d7..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_san_manager.py
+++ /dev/null
@@ -1,239 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from units.compat import unittest, mock
-from oneview_module_loader import SanManagerModule
-from hpe_test_utils import OneViewBaseTestCase
-from copy import deepcopy
-
-FAKE_MSG_ERROR = 'Fake message error'
-
-DEFAULT_SAN_MANAGER_TEMPLATE = dict(
- name='172.18.15.1',
- providerDisplayName='Brocade Network Advisor',
- uri='/rest/fc-sans/device-managers/UUU-AAA-BBB',
- refreshState='OK',
- connectionInfo=[
- {
- 'valueFormat': 'IPAddressOrHostname',
- 'displayName': 'Host',
- 'name': 'Host',
- 'valueType': 'String',
- 'required': False,
- 'value': '172.18.15.1'
- }]
-)
-
-
-class SanManagerModuleSpec(unittest.TestCase,
- OneViewBaseTestCase):
- PARAMS_FOR_PRESENT = dict(
- config='config.json',
- state='present',
- data=DEFAULT_SAN_MANAGER_TEMPLATE
- )
-
- PARAMS_FOR_CONNECTION_INFORMATION_SET = dict(
- config='config.json',
- state='connection_information_set',
- data=DEFAULT_SAN_MANAGER_TEMPLATE.copy()
- )
-
- PARAMS_WITH_CHANGES = dict(
- config='config.json',
- state='present',
- data=dict(name=DEFAULT_SAN_MANAGER_TEMPLATE['name'],
- refreshState='RefreshPending')
- )
-
- PARAMS_FOR_ABSENT = dict(
- config='config.json',
- state='absent',
- data=dict(name=DEFAULT_SAN_MANAGER_TEMPLATE['name'])
- )
-
- def setUp(self):
- self.configure_mocks(self, SanManagerModule)
- self.resource = self.mock_ov_client.san_managers
-
- def test_should_add_new_san_manager(self):
- self.resource.get_by_name.return_value = []
- self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
- self.resource.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE
-
- self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT
-
- SanManagerModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=SanManagerModule.MSG_CREATED,
- ansible_facts=dict(san_manager=DEFAULT_SAN_MANAGER_TEMPLATE)
- )
-
- def test_should_find_provider_uri_to_add(self):
- self.resource.get_by_name.return_value = []
- self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
- self.resource.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE
-
- self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT
-
- SanManagerModule().run()
-
- provider_display_name = DEFAULT_SAN_MANAGER_TEMPLATE['providerDisplayName']
- self.resource.get_provider_uri.assert_called_once_with(provider_display_name)
-
- def test_should_not_update_when_data_is_equals(self):
- output_data = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE)
- output_data.pop('connectionInfo')
- self.resource.get_by_name.return_value = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE)
- self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
-
- self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT
-
- SanManagerModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=SanManagerModule.MSG_ALREADY_PRESENT,
- ansible_facts=dict(san_manager=output_data)
- )
-
- def test_update_when_data_has_modified_attributes(self):
- data_merged = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE)
- data_merged['fabricType'] = 'DirectAttach'
-
- self.resource.get_by_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE
- self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
-
- self.resource.update.return_value = data_merged
- self.mock_ansible_module.params = self.PARAMS_WITH_CHANGES
-
- SanManagerModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=SanManagerModule.MSG_UPDATED,
- ansible_facts=dict(san_manager=data_merged)
- )
-
- def test_update_should_not_send_connection_info_when_not_informed_on_data(self):
- merged_data = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE)
- merged_data['refreshState'] = 'RefreshPending'
- output_data = deepcopy(merged_data)
- output_data.pop('connectionInfo')
-
- self.resource.get_by_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE
- self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
-
- self.resource.update.return_value = merged_data
- self.mock_ansible_module.params = self.PARAMS_WITH_CHANGES
-
- SanManagerModule().run()
-
- self.resource.update.assert_called_once_with(resource=output_data, id_or_uri=output_data['uri'])
-
- def test_should_remove_san_manager(self):
- self.resource.get_by_name.return_value = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE)
- self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
-
- self.mock_ansible_module.params = self.PARAMS_FOR_ABSENT.copy()
-
- SanManagerModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=SanManagerModule.MSG_DELETED
- )
-
- def test_should_do_nothing_when_san_manager_not_exist(self):
- self.resource.get_by_name.return_value = []
-
- self.mock_ansible_module.params = self.PARAMS_FOR_ABSENT.copy()
-
- SanManagerModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- msg=SanManagerModule.MSG_ALREADY_ABSENT
- )
-
- def test_should_fail_when_name_not_found(self):
- self.resource.get_by_name.return_value = []
- self.resource.get_provider_uri.return_value = None
-
- self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT
-
- SanManagerModule().run()
-
- self.mock_ansible_module.fail_json.assert_called_once_with(
- exception=mock.ANY,
- msg="The provider 'Brocade Network Advisor' was not found."
- )
-
- def test_should_fail_when_name_and_hosts_in_connectionInfo_missing(self):
- bad_params = deepcopy(self.PARAMS_FOR_PRESENT)
- bad_params['data'].pop('name')
- bad_params['data'].pop('connectionInfo')
-
- self.mock_ansible_module.params = bad_params
-
- SanManagerModule().run()
-
- msg = 'A "name" or "connectionInfo" must be provided inside the "data" field for this operation. '
- msg += 'If a "connectionInfo" is provided, the "Host" name is considered as the "name" for the resource.'
-
- self.mock_ansible_module.fail_json.assert_called_once_with(exception=mock.ANY, msg=msg)
-
- def test_connection_information_set_should_set_the_connection_information(self):
- data_merged = deepcopy(DEFAULT_SAN_MANAGER_TEMPLATE)
- data_merged['fabricType'] = 'DirectAttach'
-
- self.resource.get_by_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE
- self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
-
- self.resource.update.return_value = data_merged
- self.mock_ansible_module.params = self.PARAMS_FOR_CONNECTION_INFORMATION_SET
-
- SanManagerModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=SanManagerModule.MSG_UPDATED,
- ansible_facts=dict(san_manager=data_merged)
- )
-
- def test_should_add_new_san_manager_when_connection_information_set_called_without_resource(self):
- self.resource.get_by_name.return_value = []
- self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
- self.resource.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE
-
- self.mock_ansible_module.params = self.PARAMS_FOR_CONNECTION_INFORMATION_SET
-
- SanManagerModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=True,
- msg=SanManagerModule.MSG_CREATED,
- ansible_facts=dict(san_manager=DEFAULT_SAN_MANAGER_TEMPLATE)
- )
-
- def test_should_fail_when_required_attribute_missing(self):
- bad_params = deepcopy(self.PARAMS_FOR_CONNECTION_INFORMATION_SET)
- bad_params['data'] = self.PARAMS_FOR_CONNECTION_INFORMATION_SET['data'].copy()
- bad_params['data'].pop('connectionInfo')
-
- self.resource.get_by_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE
- self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
-
- self.mock_ansible_module.params = bad_params
-
- SanManagerModule().run()
-
- msg = 'A connectionInfo field is required for this operation.'
-
- self.mock_ansible_module.fail_json.assert_called_once_with(exception=mock.ANY, msg=msg)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/remote_management/oneview/test_oneview_san_manager_info.py b/test/units/modules/remote_management/oneview/test_oneview_san_manager_info.py
deleted file mode 100644
index 58770f53f1..0000000000
--- a/test/units/modules/remote_management/oneview/test_oneview_san_manager_info.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2016-2017 Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from units.compat import unittest
-from oneview_module_loader import SanManagerInfoModule
-from hpe_test_utils import FactsParamsTestCase
-
-
-class SanManagerInfoSpec(unittest.TestCase, FactsParamsTestCase):
- ERROR_MSG = 'Fake message error'
-
- PARAMS_GET_ALL = dict(
- config='config.json',
- provider_display_name=None
- )
-
- PARAMS_GET_BY_PROVIDER_DISPLAY_NAME = dict(
- config='config.json',
- provider_display_name="Brocade Network Advisor"
- )
-
- PRESENT_SAN_MANAGERS = [{
- "providerDisplayName": "Brocade Network Advisor",
- "uri": "/rest/fc-sans/device-managers//d60efc8a-15b8-470c-8470-738d16d6b319"
- }]
-
- def setUp(self):
- self.configure_mocks(self, SanManagerInfoModule)
- self.san_managers = self.mock_ov_client.san_managers
-
- FactsParamsTestCase.configure_client_mock(self, self.san_managers)
-
- def test_should_get_all(self):
- self.san_managers.get_all.return_value = self.PRESENT_SAN_MANAGERS
- self.mock_ansible_module.params = self.PARAMS_GET_ALL
-
- SanManagerInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- san_managers=self.PRESENT_SAN_MANAGERS
- )
-
- def test_should_get_by_display_name(self):
- self.san_managers.get_by_provider_display_name.return_value = self.PRESENT_SAN_MANAGERS[0]
- self.mock_ansible_module.params = self.PARAMS_GET_BY_PROVIDER_DISPLAY_NAME
-
- SanManagerInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- san_managers=self.PRESENT_SAN_MANAGERS
- )
-
- def test_should_return_empty_list_when_get_by_display_name_is_null(self):
- self.san_managers.get_by_provider_display_name.return_value = None
- self.mock_ansible_module.params = self.PARAMS_GET_BY_PROVIDER_DISPLAY_NAME
-
- SanManagerInfoModule().run()
-
- self.mock_ansible_module.exit_json.assert_called_once_with(
- changed=False,
- san_managers=[]
- )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/source_control/bitbucket/test_bitbucket_access_key.py b/test/units/modules/source_control/bitbucket/test_bitbucket_access_key.py
deleted file mode 100644
index f1cb4fe71b..0000000000
--- a/test/units/modules/source_control/bitbucket/test_bitbucket_access_key.py
+++ /dev/null
@@ -1,337 +0,0 @@
-from ansible.module_utils.source_control.bitbucket import BitbucketHelper
-from ansible.modules.source_control.bitbucket import bitbucket_access_key
-from units.compat import unittest
-from units.compat.mock import patch
-from units.modules.utils import AnsibleFailJson, AnsibleExitJson, ModuleTestCase, set_module_args
-
-
-class TestBucketAccessKeyModule(ModuleTestCase):
- def setUp(self):
- super(TestBucketAccessKeyModule, self).setUp()
- self.module = bitbucket_access_key
-
- def test_missing_key_with_present_state(self):
- with self.assertRaises(AnsibleFailJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'label': 'key name',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(exec_info.exception.args[0]['msg'], self.module.error_messages['required_key'])
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value=None)
- def test_create_deploy_key(self, *args):
- with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'key': 'public_key',
- 'label': 'key name',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(create_deploy_key_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value=None)
- def test_create_deploy_key_check_mode(self, *args):
- with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'key': 'public_key',
- 'label': 'key name',
- 'state': 'present',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(create_deploy_key_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
- "id": 123,
- "label": "mykey",
- "created_on": "2019-03-23T10:15:21.517377+00:00",
- "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5",
- "type": "deploy_key",
- "comment": "",
- "last_used": None,
- "repository": {
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
- },
- "html": {
- "href": "https://bitbucket.org/mleu/test"
- },
- "avatar": {
- "href": "..."
- }
- },
- "type": "repository",
- "name": "test",
- "full_name": "mleu/test",
- "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
- },
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
- }
- },
- })
- def test_update_deploy_key(self, *args):
- with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
- with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'key': 'new public key',
- 'label': 'mykey',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(delete_deploy_key_mock.call_count, 1)
- self.assertEqual(create_deploy_key_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
- "id": 123,
- "label": "mykey",
- "created_on": "2019-03-23T10:15:21.517377+00:00",
- "key": "new public key",
- "type": "deploy_key",
- "comment": "",
- "last_used": None,
- "repository": {
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
- },
- "html": {
- "href": "https://bitbucket.org/mleu/test"
- },
- "avatar": {
- "href": "..."
- }
- },
- "type": "repository",
- "name": "test",
- "full_name": "mleu/test",
- "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
- },
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
- }
- },
- })
- def test_dont_update_same_value(self, *args):
- with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
- with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'key': 'new public key',
- 'label': 'mykey',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(delete_deploy_key_mock.call_count, 0)
- self.assertEqual(create_deploy_key_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], False)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
- "id": 123,
- "label": "mykey",
- "created_on": "2019-03-23T10:15:21.517377+00:00",
- "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5",
- "type": "deploy_key",
- "comment": "",
- "last_used": None,
- "repository": {
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
- },
- "html": {
- "href": "https://bitbucket.org/mleu/test"
- },
- "avatar": {
- "href": "..."
- }
- },
- "type": "repository",
- "name": "test",
- "full_name": "mleu/test",
- "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
- },
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
- }
- },
- })
- def test_update_deploy_key_check_mode(self, *args):
- with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
- with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'key': 'new public key',
- 'label': 'mykey',
- 'state': 'present',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(delete_deploy_key_mock.call_count, 0)
- self.assertEqual(create_deploy_key_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
- "id": 123,
- "label": "mykey",
- "created_on": "2019-03-23T10:15:21.517377+00:00",
- "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5",
- "type": "deploy_key",
- "comment": "",
- "last_used": None,
- "repository": {
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
- },
- "html": {
- "href": "https://bitbucket.org/mleu/test"
- },
- "avatar": {
- "href": "..."
- }
- },
- "type": "repository",
- "name": "test",
- "full_name": "mleu/test",
- "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
- },
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
- }
- },
- })
- def test_delete_deploy_key(self, *args):
- with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'label': 'mykey',
- 'state': 'absent',
- })
- self.module.main()
-
- self.assertEqual(delete_deploy_key_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value=None)
- def test_delete_absent_deploy_key(self, *args):
- with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'label': 'mykey',
- 'state': 'absent',
- })
- self.module.main()
-
- self.assertEqual(delete_deploy_key_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], False)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
- "id": 123,
- "label": "mykey",
- "created_on": "2019-03-23T10:15:21.517377+00:00",
- "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5",
- "type": "deploy_key",
- "comment": "",
- "last_used": None,
- "repository": {
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
- },
- "html": {
- "href": "https://bitbucket.org/mleu/test"
- },
- "avatar": {
- "href": "..."
- }
- },
- "type": "repository",
- "name": "test",
- "full_name": "mleu/test",
- "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
- },
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
- }
- },
- })
- def test_delete_deploy_key_check_mode(self, *args):
- with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'label': 'mykey',
- 'state': 'absent',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(delete_deploy_key_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_key_pair.py b/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_key_pair.py
deleted file mode 100644
index 44e7c31ea7..0000000000
--- a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_key_pair.py
+++ /dev/null
@@ -1,192 +0,0 @@
-from ansible.module_utils.source_control.bitbucket import BitbucketHelper
-from ansible.modules.source_control.bitbucket import bitbucket_pipeline_key_pair
-from units.compat import unittest
-from units.compat.mock import patch
-from units.modules.utils import AnsibleFailJson, AnsibleExitJson, ModuleTestCase, set_module_args
-
-
-class TestBucketPipelineKeyPairModule(ModuleTestCase):
- def setUp(self):
- super(TestBucketPipelineKeyPairModule, self).setUp()
- self.module = bitbucket_pipeline_key_pair
-
- def test_missing_keys_with_present_state(self):
- with self.assertRaises(AnsibleFailJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(exec_info.exception.args[0]['msg'], self.module.error_messages['required_keys'])
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value=None)
- def test_create_keys(self, *args):
- with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'public_key': 'public',
- 'private_key': 'PRIVATE',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(update_ssh_key_pair_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value=None)
- def test_create_keys_check_mode(self, *args):
- with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'public_key': 'public',
- 'private_key': 'PRIVATE',
- 'state': 'present',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(update_ssh_key_pair_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={
- 'public_key': 'unknown',
- 'type': 'pipeline_ssh_key_pair',
- })
- def test_update_keys(self, *args):
- with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'public_key': 'public',
- 'private_key': 'PRIVATE',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(update_ssh_key_pair_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={
- 'public_key': 'public',
- 'type': 'pipeline_ssh_key_pair',
- })
- def test_dont_update_same_key(self, *args):
- with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'public_key': 'public',
- 'private_key': 'PRIVATE',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(update_ssh_key_pair_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], False)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={
- 'public_key': 'unknown',
- 'type': 'pipeline_ssh_key_pair',
- })
- def test_update_keys_check_mode(self, *args):
- with patch.object(self.module, 'update_ssh_key_pair') as update_ssh_key_pair_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'public_key': 'public',
- 'private_key': 'PRIVATE',
- 'state': 'present',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(update_ssh_key_pair_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={
- 'public_key': 'public',
- 'type': 'pipeline_ssh_key_pair',
- })
- def test_delete_keys(self, *args):
- with patch.object(self.module, 'delete_ssh_key_pair') as delete_ssh_key_pair_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'state': 'absent',
- })
- self.module.main()
-
- self.assertEqual(delete_ssh_key_pair_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value=None)
- def test_delete_absent_keys(self, *args):
- with patch.object(self.module, 'delete_ssh_key_pair') as delete_ssh_key_pair_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'state': 'absent',
- })
- self.module.main()
-
- self.assertEqual(delete_ssh_key_pair_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], False)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_key_pair, 'get_existing_ssh_key_pair', return_value={
- 'public_key': 'public',
- 'type': 'pipeline_ssh_key_pair',
- })
- def test_delete_keys_check_mode(self, *args):
- with patch.object(self.module, 'delete_ssh_key_pair') as delete_ssh_key_pair_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'state': 'absent',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(delete_ssh_key_pair_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_known_host.py b/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_known_host.py
deleted file mode 100644
index 99bd663957..0000000000
--- a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_known_host.py
+++ /dev/null
@@ -1,187 +0,0 @@
-import pytest
-
-from ansible.module_utils.source_control.bitbucket import BitbucketHelper
-from ansible.modules.source_control.bitbucket import bitbucket_pipeline_known_host
-from ansible.modules.source_control.bitbucket.bitbucket_pipeline_known_host import HAS_PARAMIKO
-from units.compat import unittest
-from units.compat.mock import patch
-from units.modules.utils import AnsibleExitJson, ModuleTestCase, set_module_args
-
-
-class TestBucketPipelineKnownHostModule(ModuleTestCase):
- def setUp(self):
- super(TestBucketPipelineKnownHostModule, self).setUp()
- self.module = bitbucket_pipeline_known_host
-
- @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation')
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value=None)
- def test_create_known_host(self, *args):
- with patch.object(self.module, 'create_known_host') as create_known_host_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'bitbucket.org',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(create_known_host_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(BitbucketHelper, 'request', return_value=(dict(status=201), dict()))
- @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value=None)
- def test_create_known_host_with_key(self, *args):
- with patch.object(self.module, 'get_host_key') as get_host_key_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'bitbucket.org',
- 'key': 'ssh-rsa public',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(get_host_key_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation')
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value={
- 'type': 'pipeline_known_host',
- 'uuid': '{21cc0590-bebe-4fae-8baf-03722704119a7}',
- 'hostname': 'bitbucket.org',
- 'public_key': {
- 'type': 'pipeline_ssh_public_key',
- 'md5_fingerprint': 'md5:97:8c:1b:f2:6f:14:6b:4b:3b:ec:aa:46:46:74:7c:40',
- 'sha256_fingerprint': 'SHA256:zzXQOXSFBEiUtuE8AikoYKwbHaxvSc0ojez9YXaGp1A',
- 'key_type': 'ssh-rsa',
- 'key': 'AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kN...seeFVBoGqzHM9yXw=='
- }
- })
- def test_dont_create_same_value(self, *args):
- with patch.object(self.module, 'create_known_host') as create_known_host_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'bitbucket.org',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(create_known_host_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], False)
-
- @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation')
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value=None)
- def test_create_known_host_check_mode(self, *args):
- with patch.object(self.module, 'create_known_host') as create_known_host_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'bitbucket.org',
- 'state': 'present',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(create_known_host_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation')
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value={
- 'type': 'pipeline_known_host',
- 'uuid': '{21cc0590-bebe-4fae-8baf-03722704119a7}',
- 'hostname': 'bitbucket.org',
- 'public_key': {
- 'type': 'pipeline_ssh_public_key',
- 'md5_fingerprint': 'md5:97:8c:1b:f2:6f:14:6b:4b:3b:ec:aa:46:46:74:7c:40',
- 'sha256_fingerprint': 'SHA256:zzXQOXSFBEiUtuE8AikoYKwbHaxvSc0ojez9YXaGp1A',
- 'key_type': 'ssh-rsa',
- 'key': 'AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kN...seeFVBoGqzHM9yXw=='
- }
- })
- def test_delete_known_host(self, *args):
- with patch.object(self.module, 'delete_known_host') as delete_known_host_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'bitbucket.org',
- 'state': 'absent',
- })
- self.module.main()
-
- self.assertEqual(delete_known_host_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation')
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value=None)
- def test_delete_absent_known_host(self, *args):
- with patch.object(self.module, 'delete_known_host') as delete_known_host_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'bitbucket.org',
- 'state': 'absent',
- })
- self.module.main()
-
- self.assertEqual(delete_known_host_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], False)
-
- @pytest.mark.skipif(not HAS_PARAMIKO, reason='paramiko must be installed to test key creation')
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_known_host, 'get_existing_known_host', return_value={
- 'type': 'pipeline_known_host',
- 'uuid': '{21cc0590-bebe-4fae-8baf-03722704119a7}',
- 'hostname': 'bitbucket.org',
- 'public_key': {
- 'type': 'pipeline_ssh_public_key',
- 'md5_fingerprint': 'md5:97:8c:1b:f2:6f:14:6b:4b:3b:ec:aa:46:46:74:7c:40',
- 'sha256_fingerprint': 'SHA256:zzXQOXSFBEiUtuE8AikoYKwbHaxvSc0ojez9YXaGp1A',
- 'key_type': 'ssh-rsa',
- 'key': 'AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kN...seeFVBoGqzHM9yXw=='
- }
- })
- def test_delete_known_host_check_mode(self, *args):
- with patch.object(self.module, 'delete_known_host') as delete_known_host_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'bitbucket.org',
- 'state': 'absent',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(delete_known_host_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_variable.py b/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_variable.py
deleted file mode 100644
index 0cb87d0c5e..0000000000
--- a/test/units/modules/source_control/bitbucket/test_bitbucket_pipeline_variable.py
+++ /dev/null
@@ -1,290 +0,0 @@
-from ansible.module_utils.source_control.bitbucket import BitbucketHelper
-from ansible.modules.source_control.bitbucket import bitbucket_pipeline_variable
-from units.compat import unittest
-from units.compat.mock import patch
-from units.modules.utils import AnsibleFailJson, AnsibleExitJson, ModuleTestCase, set_module_args
-
-
-class TestBucketPipelineVariableModule(ModuleTestCase):
- def setUp(self):
- super(TestBucketPipelineVariableModule, self).setUp()
- self.module = bitbucket_pipeline_variable
-
- def test_without_required_parameters(self):
- with self.assertRaises(AnsibleFailJson) as exec_info:
- set_module_args({
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'state': 'absent',
- })
- self.module.main()
-
- self.assertEqual(exec_info.exception.args[0]['msg'], BitbucketHelper.error_messages['required_client_id'])
-
- def test_missing_value_with_present_state(self):
- with self.assertRaises(AnsibleFailJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(exec_info.exception.args[0]['msg'], self.module.error_messages['required_value'])
-
- @patch.dict('os.environ', {
- 'BITBUCKET_CLIENT_ID': 'ABC',
- 'BITBUCKET_CLIENT_SECRET': 'XXX',
- })
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value=None)
- def test_env_vars_params(self, *args):
- with self.assertRaises(AnsibleExitJson):
- set_module_args({
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'state': 'absent',
- })
- self.module.main()
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value=None)
- def test_create_variable(self, *args):
- with patch.object(self.module, 'create_pipeline_variable') as create_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'value': '42',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(create_pipeline_variable_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value=None)
- def test_create_variable_check_mode(self, *args):
- with patch.object(self.module, 'create_pipeline_variable') as create_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'value': '42',
- 'state': 'present',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(create_pipeline_variable_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={
- 'name': 'PIPELINE_VAR_NAME',
- 'value': 'Im alive',
- 'type': 'pipeline_variable',
- 'secured': False,
- 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}'
- })
- def test_update_variable(self, *args):
- with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'value': '42',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(update_pipeline_variable_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={
- 'name': 'PIPELINE_VAR_NAME',
- 'type': 'pipeline_variable',
- 'secured': True,
- 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}'
- })
- def test_update_secured_variable(self, *args):
- with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'value': '42',
- 'secured': True,
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(update_pipeline_variable_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={
- 'name': 'PIPELINE_VAR_NAME',
- 'value': '42',
- 'type': 'pipeline_variable',
- 'secured': False,
- 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}'
- })
- def test_update_secured_state(self, *args):
- with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'value': '42',
- 'secured': True,
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(update_pipeline_variable_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={
- 'name': 'PIPELINE_VAR_NAME',
- 'value': '42',
- 'type': 'pipeline_variable',
- 'secured': False,
- 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}'
- })
- def test_dont_update_same_value(self, *args):
- with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'value': '42',
- 'state': 'present',
- })
- self.module.main()
-
- self.assertEqual(update_pipeline_variable_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], False)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={
- 'name': 'PIPELINE_VAR_NAME',
- 'value': 'Im alive',
- 'type': 'pipeline_variable',
- 'secured': False,
- 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}'
- })
- def test_update_variable_check_mode(self, *args):
- with patch.object(self.module, 'update_pipeline_variable') as update_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'value': '42',
- 'state': 'present',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(update_pipeline_variable_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={
- 'name': 'PIPELINE_VAR_NAME',
- 'value': 'Im alive',
- 'type': 'pipeline_variable',
- 'secured': False,
- 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}'
- })
- def test_delete_variable(self, *args):
- with patch.object(self.module, 'delete_pipeline_variable') as delete_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'state': 'absent',
- })
- self.module.main()
-
- self.assertEqual(delete_pipeline_variable_mock.call_count, 1)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value=None)
- def test_delete_absent_variable(self, *args):
- with patch.object(self.module, 'delete_pipeline_variable') as delete_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'state': 'absent',
- })
- self.module.main()
-
- self.assertEqual(delete_pipeline_variable_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], False)
-
- @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
- @patch.object(bitbucket_pipeline_variable, 'get_existing_pipeline_variable', return_value={
- 'name': 'PIPELINE_VAR_NAME',
- 'value': 'Im alive',
- 'type': 'pipeline_variable',
- 'secured': False,
- 'uuid': '{9ddb0507-439a-495a- 99f3 - 564f15138127}'
- })
- def test_delete_variable_check_mode(self, *args):
- with patch.object(self.module, 'delete_pipeline_variable') as delete_pipeline_variable_mock:
- with self.assertRaises(AnsibleExitJson) as exec_info:
- set_module_args({
- 'client_id': 'ABC',
- 'client_secret': 'XXX',
- 'username': 'name',
- 'repository': 'repo',
- 'name': 'PIPELINE_VAR_NAME',
- 'state': 'absent',
- '_ansible_check_mode': True,
- })
- self.module.main()
-
- self.assertEqual(delete_pipeline_variable_mock.call_count, 0)
- self.assertEqual(exec_info.exception.args[0]['changed'], True)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/test/units/modules/source_control/gitlab/gitlab.py b/test/units/modules/source_control/gitlab/gitlab.py
deleted file mode 100644
index aacada058e..0000000000
--- a/test/units/modules/source_control/gitlab/gitlab.py
+++ /dev/null
@@ -1,580 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr)
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import
-
-import sys
-
-from httmock import response # noqa
-from httmock import urlmatch # noqa
-
-from units.compat import unittest
-
-from gitlab import Gitlab
-
-
-class FakeAnsibleModule(object):
- def __init__(self):
- self.check_mode = False
-
- def fail_json(self, **args):
- pass
-
- def exit_json(self, **args):
- pass
-
-
-class GitlabModuleTestCase(unittest.TestCase):
- def setUp(self):
- unitest_python_version_check_requirement(self)
-
- self.mock_module = FakeAnsibleModule()
-
- self.gitlab_instance = Gitlab("http://localhost", private_token="private_token", api_version=4)
-
-
-# Python 2.7+ is needed for python-gitlab
-GITLAB_MINIMUM_PYTHON_VERSION = (2, 7)
-
-
-# Verify if the current Python version is higher than GITLAB_MINIMUM_PYTHON_VERSION
-def python_version_match_requirement():
- return sys.version_info >= GITLAB_MINIMUM_PYTHON_VERSION
-
-
-# Skip unittest test case if python version don't match requirement
-def unitest_python_version_check_requirement(unittest_testcase):
- if not python_version_match_requirement():
- unittest_testcase.skipTest("Python %s+ is needed for python-gitlab" % ",".join(map(str, GITLAB_MINIMUM_PYTHON_VERSION)))
-
-
-'''
-USER API
-'''
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users", method="get")
-def resp_find_user(url, request):
- headers = {'content-type': 'application/json'}
- content = ('[{"id": 1, "username": "john_smith", "name": "John Smith", "state": "active",'
- '"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",'
- '"web_url": "http://localhost:3000/john_smith"}, {"id": 2,'
- '"username": "jack_smith", "name": "Jack Smith", "state": "blocked",'
- '"avatar_url": "http://gravatar.com/../e32131cd8.jpeg",'
- '"web_url": "http://localhost:3000/jack_smith"}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users", method="post")
-def resp_create_user(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1, "username": "john_smith", "name": "John Smith", "state": "active",'
- '"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",'
- '"web_url": "http://localhost:3000/john_smith","created_at": "2012-05-23T08:00:58Z",'
- '"bio": null, "location": null, "public_email": "john@example.com", "skype": "",'
- '"linkedin": "", "twitter": "", "website_url": "", "organization": ""}')
- content = content.encode("utf-8")
- return response(201, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="get")
-def resp_get_user(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1, "username": "john_smith", "name": "John Smith",'
- '"state": "active",'
- '"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",'
- '"web_url": "http://localhost:3000/john_smith",'
- '"created_at": "2012-05-23T08:00:58Z", "bio": null, "location": null,'
- '"public_email": "john@example.com", "skype": "", "linkedin": "",'
- '"twitter": "", "website_url": "", "organization": "", "is_admin": false}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="get")
-def resp_get_missing_user(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{}')
- content = content.encode("utf-8")
- return response(404, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="delete")
-def resp_delete_user(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{}')
- content = content.encode("utf-8")
- return response(204, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="delete")
-def resp_delete_missing_user(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{}')
- content = content.encode("utf-8")
- return response(404, content, headers, None, 5, request)
-
-
-'''
-USER SSHKEY API
-'''
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1/keys", method="get")
-def resp_get_user_keys(url, request):
- headers = {'content-type': 'application/json'}
- content = ('[{"id": 1, "title": "Public key",'
- '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596'
- 'k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQa'
- 'SeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",'
- '"created_at": "2014-08-01T14:47:39.080Z"},{"id": 3,'
- '"title": "Another Public key",'
- '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596'
- 'k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaS'
- 'eP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",'
- '"created_at": "2014-08-01T14:47:39.080Z"}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1/keys", method="post")
-def resp_create_user_keys(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1, "title": "Private key",'
- '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA1YotVDm2mAyk2tPt4E7AHm01sS6JZmcUdRuSuA5z'
- 'szUJzYPPUSRAX3BCgTqLqYx//UuVncK7YqLVSbbwjKR2Ez5lISgCnVfLVEXzwhv+xawxKWmI7hJ5S0tOv6MJ+Ixy'
- 'Ta4xcKwJTwB86z22n9fVOQeJTR2dSOH1WJrf0PvRk+KVNY2jTiGHTi9AIjLnyD/jWRpOgtdfkLRc8EzAWrWlgNmH'
- '2WOKBw6za0az6XoG75obUdFVdW3qcD0xc809OHLi7FDf+E7U4wiZJCFuUizMeXyuK/SkaE1aee4Qp5R4dxTR4TP9'
- 'M1XAYkf+kF0W9srZ+mhF069XD/zhUPJsvwEF",'
- '"created_at": "2014-08-01T14:47:39.080Z"}')
- content = content.encode("utf-8")
- return response(201, content, headers, None, 5, request)
-
-
-'''
-GROUP API
-'''
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups", method="get")
-def resp_find_group(url, request):
- headers = {'content-type': 'application/json'}
- content = ('[{"id": 1, "name": "Foobar Group", "path": "foo-bar",'
- '"description": "An interesting group", "visibility": "public",'
- '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",'
- '"web_url": "http://localhost:3000/groups/foo-bar", "request_access_enabled": false,'
- '"full_name": "Foobar Group", "full_path": "foo-bar",'
- '"file_template_project_id": 1, "parent_id": null, "projects": []}, {"id": 2, "name": "BarFoo Group", "path": "bar-foor",'
- '"description": "An interesting group", "visibility": "public",'
- '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/2/bar.jpg",'
- '"web_url": "http://localhost:3000/groups/bar-foo", "request_access_enabled": false,'
- '"full_name": "BarFoo Group", "full_path": "bar-foo",'
- '"file_template_project_id": 1, "parent_id": null, "projects": []}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1", method="get")
-def resp_get_group(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1, "name": "Foobar Group", "path": "foo-bar",'
- '"description": "An interesting group", "visibility": "public",'
- '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",'
- '"web_url": "http://localhost:3000/groups/foo-bar", "request_access_enabled": false,'
- '"full_name": "Foobar Group", "full_path": "foo-bar",'
- '"file_template_project_id": 1, "parent_id": null, "projects": [{"id": 1,"description": null, "default_branch": "master",'
- '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",'
- '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",'
- '"web_url": "http://example.com/diaspora/diaspora-client",'
- '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",'
- '"tag_list": ["example","disapora client"],"name": "Diaspora Client",'
- '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",'
- '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",'
- '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,'
- '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",'
- '"star_count": 0}]}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1", method="get")
-def resp_get_missing_group(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{}')
- content = content.encode("utf-8")
- return response(404, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups", method="post")
-def resp_create_group(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1, "name": "Foobar Group", "path": "foo-bar",'
- '"description": "An interesting group", "visibility": "public",'
- '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",'
- '"web_url": "http://localhost:3000/groups/foo-bar", "request_access_enabled": false,'
- '"full_name": "Foobar Group", "full_path": "foo-bar",'
- '"file_template_project_id": 1, "parent_id": null}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups", method="post")
-def resp_create_subgroup(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 2, "name": "BarFoo Group", "path": "bar-foor",'
- '"description": "An interesting group", "visibility": "public",'
- '"lfs_enabled": true, "avatar_url": "http://localhost:3000/uploads/group/avatar/2/bar.jpg",'
- '"web_url": "http://localhost:3000/groups/foo-bar/bar-foo", "request_access_enabled": false,'
- '"full_name": "BarFoo Group", "full_path": "foo-bar/bar-foo",'
- '"file_template_project_id": 1, "parent_id": 1}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/users/1", method="delete")
-def resp_delete_group(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{}')
- content = content.encode("utf-8")
- return response(204, content, headers, None, 5, request)
-
-
-'''
-GROUP MEMBER API
-'''
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/members/1", method="get")
-def resp_get_member(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1, "username": "raymond_smith", "name": "Raymond Smith", "state": "active",'
- '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",'
- '"web_url": "http://192.168.1.8:3000/root", "expires_at": "2012-10-22T14:13:35Z", "access_level": 30}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/members", method="get")
-def resp_find_member(url, request):
- headers = {'content-type': 'application/json'}
- content = ('[{"id": 1, "username": "raymond_smith", "name": "Raymond Smith", "state": "active",'
- '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",'
- '"web_url": "http://192.168.1.8:3000/root", "expires_at": "2012-10-22T14:13:35Z", "access_level": 30},{'
- '"id": 2, "username": "john_doe", "name": "John Doe","state": "active",'
- '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",'
- '"web_url": "http://192.168.1.8:3000/root","expires_at": "2012-10-22T14:13:35Z",'
- '"access_level": 30}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/members", method="post")
-def resp_add_member(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1, "username": "raymond_smith", "name": "Raymond Smith",'
- '"state": "active",'
- '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",'
- '"web_url": "http://192.168.1.8:3000/root", "expires_at": "2012-10-22T14:13:35Z",'
- '"access_level": 30}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/members/1", method="put")
-def resp_update_member(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1, "username": "raymond_smith", "name": "Raymond Smith",'
- '"state": "active",'
- '"avatar_url": "https://www.gravatar.com/avatar/c2525a7f58ae3776070e44c106c48e15?s=80&d=identicon",'
- '"web_url": "http://192.168.1.8:3000/root", "expires_at": "2012-10-22T14:13:35Z",'
- '"access_level": 10}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-'''
-DEPLOY KEY API
-'''
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/deploy_keys", method="get")
-def resp_find_project_deploy_key(url, request):
- headers = {'content-type': 'application/json'}
- content = ('[{"id": 1,"title": "Public key",'
- '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc'
- 'KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",'
- '"created_at": "2013-10-02T10:12:29Z"},{"id": 3,"title": "Another Public key",'
- '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc'
- 'KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",'
- '"created_at": "2013-10-02T11:12:29Z"}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/deploy_keys/1", method="get")
-def resp_get_project_deploy_key(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1,"title": "Public key",'
- '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc'
- 'KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",'
- '"created_at": "2013-10-02T10:12:29Z"}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/deploy_keys", method="post")
-def resp_create_project_deploy_key(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1,"title": "Public key",'
- '"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc'
- 'KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",'
- '"created_at": "2013-10-02T10:12:29Z"}')
- content = content.encode("utf-8")
- return response(201, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/deploy_keys/1", method="delete")
-def resp_delete_project_deploy_key(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{}')
- content = content.encode("utf-8")
- return response(204, content, headers, None, 5, request)
-
-
-'''
-PROJECT API
-'''
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="get")
-def resp_find_project(url, request):
- headers = {'content-type': 'application/json'}
- content = ('[{"id": 1,"description": null, "default_branch": "master",'
- '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",'
- '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",'
- '"web_url": "http://example.com/diaspora/diaspora-client",'
- '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",'
- '"tag_list": ["example","disapora client"],"name": "Diaspora Client",'
- '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",'
- '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",'
- '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,'
- '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",'
- '"star_count": 0}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1", method="get")
-def resp_get_project(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1,"description": null, "default_branch": "master",'
- '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",'
- '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",'
- '"web_url": "http://example.com/diaspora/diaspora-client",'
- '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",'
- '"tag_list": ["example","disapora client"],"name": "Diaspora Client",'
- '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",'
- '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",'
- '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,'
- '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",'
- '"star_count": 0}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/foo-bar%2Fdiaspora-client", method="get")
-def resp_get_project_by_name(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1,"description": null, "default_branch": "master",'
- '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",'
- '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",'
- '"web_url": "http://example.com/diaspora/diaspora-client",'
- '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",'
- '"tag_list": ["example","disapora client"],"name": "Diaspora Client",'
- '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",'
- '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",'
- '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,'
- '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",'
- '"star_count": 0}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/projects", method="get")
-def resp_find_group_project(url, request):
- headers = {'content-type': 'application/json'}
- content = ('[{"id": 1,"description": null, "default_branch": "master",'
- '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",'
- '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",'
- '"web_url": "http://example.com/diaspora/diaspora-client",'
- '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",'
- '"tag_list": ["example","disapora client"],"name": "Diaspora Client",'
- '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",'
- '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",'
- '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,'
- '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",'
- '"star_count": 0}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1/projects/1", method="get")
-def resp_get_group_project(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1,"description": null, "default_branch": "master",'
- '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",'
- '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",'
- '"web_url": "http://example.com/diaspora/diaspora-client",'
- '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",'
- '"tag_list": ["example","disapora client"],"name": "Diaspora Client",'
- '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",'
- '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",'
- '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,'
- '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",'
- '"star_count": 0}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects", method="post")
-def resp_create_project(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1,"description": null, "default_branch": "master",'
- '"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",'
- '"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",'
- '"web_url": "http://example.com/diaspora/diaspora-client",'
- '"readme_url": "http://example.com/diaspora/diaspora-client/blob/master/README.md",'
- '"tag_list": ["example","disapora client"],"name": "Diaspora Client",'
- '"name_with_namespace": "Diaspora / Diaspora Client","path": "diaspora-client",'
- '"path_with_namespace": "diaspora/diaspora-client","created_at": "2013-09-30T13:46:02Z",'
- '"last_activity_at": "2013-09-30T13:46:02Z","forks_count": 0,'
- '"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",'
- '"star_count": 0}')
- content = content.encode("utf-8")
- return response(201, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1", method="delete")
-def resp_delete_project(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{}')
- content = content.encode("utf-8")
-
- return response(204, content, headers, None, 5, request)
-
-
-'''
-HOOK API
-'''
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/hooks", method="get")
-def resp_find_project_hook(url, request):
- headers = {'content-type': 'application/json'}
- content = ('[{"id": 1,"url": "http://example.com/hook","project_id": 3,'
- '"push_events": true,"push_events_branch_filter": "","issues_events": true,'
- '"confidential_issues_events": true,"merge_requests_events": true,'
- '"tag_push_events": true,"note_events": true,"job_events": true,'
- '"pipeline_events": true,"wiki_page_events": true,"enable_ssl_verification": true,'
- '"created_at": "2012-10-12T17:04:47Z"}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/hooks/1", method="get")
-def resp_get_project_hook(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1,"url": "http://example.com/hook","project_id": 3,'
- '"push_events": true,"push_events_branch_filter": "","issues_events": true,'
- '"confidential_issues_events": true,"merge_requests_events": true,'
- '"tag_push_events": true,"note_events": true,"job_events": true,'
- '"pipeline_events": true,"wiki_page_events": true,"enable_ssl_verification": true,'
- '"created_at": "2012-10-12T17:04:47Z"}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/hooks", method="post")
-def resp_create_project_hook(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"id": 1,"url": "http://example.com/hook","project_id": 3,'
- '"push_events": true,"push_events_branch_filter": "","issues_events": true,'
- '"confidential_issues_events": true,"merge_requests_events": true,'
- '"tag_push_events": true,"note_events": true,"job_events": true,'
- '"pipeline_events": true,"wiki_page_events": true,"enable_ssl_verification": true,'
- '"created_at": "2012-10-12T17:04:47Z"}')
- content = content.encode("utf-8")
- return response(201, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/projects/1/hooks/1", method="delete")
-def resp_delete_project_hook(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{}')
- content = content.encode("utf-8")
- return response(204, content, headers, None, 5, request)
-
-
-'''
-RUNNER API
-'''
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners/all", method="get")
-def resp_find_runners_all(url, request):
- headers = {'content-type': 'application/json'}
- content = ('[{"active": true,"description": "test-1-20150125","id": 1,'
- '"is_shared": false,"ip_address": "127.0.0.1","name": null,'
- '"online": true,"status": "online"},{"active": true,'
- '"description": "test-2-20150125","id": 2,"ip_address": "127.0.0.1",'
- '"is_shared": false,"name": null,"online": false,"status": "offline"}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners", method="get")
-def resp_find_runners_list(url, request):
- headers = {'content-type': 'application/json',
- "X-Page": 1,
- "X-Next-Page": 2,
- "X-Per-Page": 1,
- "X-Total-Pages": 1,
- "X-Total": 2}
- content = ('[{"active": true,"description": "test-1-20150125","id": 1,'
- '"is_shared": false,"ip_address": "127.0.0.1","name": null,'
- '"online": true,"status": "online"},{"active": true,'
- '"description": "test-2-20150125","id": 2,"ip_address": "127.0.0.1",'
- '"is_shared": false,"name": null,"online": false,"status": "offline"}]')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners/1", method="get")
-def resp_get_runner(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"active": true,"description": "test-1-20150125","id": 1,'
- '"is_shared": false,"ip_address": "127.0.0.1","name": null,'
- '"online": true,"status": "online"}')
- content = content.encode("utf-8")
- return response(200, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners", method="post")
-def resp_create_runner(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{"active": true,"description": "test-1-20150125","id": 1,'
- '"is_shared": false,"ip_address": "127.0.0.1","name": null,'
- '"online": true,"status": "online"}')
- content = content.encode("utf-8")
- return response(201, content, headers, None, 5, request)
-
-
-@urlmatch(scheme="http", netloc="localhost", path="/api/v4/runners/1", method="delete")
-def resp_delete_runner(url, request):
- headers = {'content-type': 'application/json'}
- content = ('{}')
- content = content.encode("utf-8")
- return response(204, content, headers, None, 5, request)
diff --git a/test/units/modules/source_control/gitlab/test_gitlab_deploy_key.py b/test/units/modules/source_control/gitlab/test_gitlab_deploy_key.py
deleted file mode 100644
index 24578524a3..0000000000
--- a/test/units/modules/source_control/gitlab/test_gitlab_deploy_key.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr)
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import
-
-import pytest
-
-from ansible.modules.source_control.gitlab.gitlab_deploy_key import GitLabDeployKey
-
-
-def _dummy(x):
- """Dummy function. Only used as a placeholder for toplevel definitions when the test is going
- to be skipped anyway"""
- return x
-
-
-pytestmark = []
-try:
- from .gitlab import (GitlabModuleTestCase,
- python_version_match_requirement,
- resp_get_project, resp_find_project_deploy_key,
- resp_create_project_deploy_key, resp_delete_project_deploy_key)
-
- # GitLab module requirements
- if python_version_match_requirement():
- from gitlab.v4.objects import ProjectKey
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing"))
- # Need to set these to something so that we don't fail when parsing
- GitlabModuleTestCase = object
- resp_get_project = _dummy
- resp_find_project_deploy_key = _dummy
- resp_create_project_deploy_key = _dummy
- resp_delete_project_deploy_key = _dummy
-
-# Unit tests requirements
-try:
- from httmock import with_httmock # noqa
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing"))
- with_httmock = _dummy
-
-
-class TestGitlabDeployKey(GitlabModuleTestCase):
- def setUp(self):
- super(TestGitlabDeployKey, self).setUp()
-
- self.moduleUtil = GitLabDeployKey(module=self.mock_module, gitlab_instance=self.gitlab_instance)
-
- @with_httmock(resp_get_project)
- @with_httmock(resp_find_project_deploy_key)
- def test_deploy_key_exist(self):
- project = self.gitlab_instance.projects.get(1)
-
- rvalue = self.moduleUtil.existsDeployKey(project, "Public key")
-
- self.assertEqual(rvalue, True)
-
- rvalue = self.moduleUtil.existsDeployKey(project, "Private key")
-
- self.assertEqual(rvalue, False)
-
- @with_httmock(resp_get_project)
- @with_httmock(resp_create_project_deploy_key)
- def test_create_deploy_key(self):
- project = self.gitlab_instance.projects.get(1)
-
- deploy_key = self.moduleUtil.createDeployKey(project, {"title": "Public key",
- "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM"
- "4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxc"
- "KDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfD"
- "zpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="})
-
- self.assertEqual(type(deploy_key), ProjectKey)
- self.assertEqual(deploy_key.title, "Public key")
-
- @with_httmock(resp_get_project)
- @with_httmock(resp_find_project_deploy_key)
- @with_httmock(resp_create_project_deploy_key)
- def test_update_deploy_key(self):
- project = self.gitlab_instance.projects.get(1)
- deployKey = self.moduleUtil.findDeployKey(project, "Public key")
-
- changed, newDeploy_key = self.moduleUtil.updateDeployKey(deployKey, {"title": "Private key"})
-
- self.assertEqual(changed, True)
- self.assertEqual(type(newDeploy_key), ProjectKey)
- self.assertEqual(newDeploy_key.title, "Private key")
-
- changed, newDeploy_key = self.moduleUtil.updateDeployKey(deployKey, {"title": "Private key"})
-
- self.assertEqual(changed, False)
- self.assertEqual(newDeploy_key.title, "Private key")
-
- @with_httmock(resp_get_project)
- @with_httmock(resp_find_project_deploy_key)
- @with_httmock(resp_delete_project_deploy_key)
- def test_delete_deploy_key(self):
- project = self.gitlab_instance.projects.get(1)
-
- self.moduleUtil.existsDeployKey(project, "Public key")
-
- rvalue = self.moduleUtil.deleteDeployKey()
-
- self.assertEqual(rvalue, None)
diff --git a/test/units/modules/source_control/gitlab/test_gitlab_group.py b/test/units/modules/source_control/gitlab/test_gitlab_group.py
deleted file mode 100644
index e43e92f162..0000000000
--- a/test/units/modules/source_control/gitlab/test_gitlab_group.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr)
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import
-
-import pytest
-
-from ansible.modules.source_control.gitlab.gitlab_group import GitLabGroup
-
-
-def _dummy(x):
- """Dummy function. Only used as a placeholder for toplevel definitions when the test is going
- to be skipped anyway"""
- return x
-
-
-pytestmark = []
-try:
- from .gitlab import (GitlabModuleTestCase,
- python_version_match_requirement,
- resp_get_group, resp_get_missing_group, resp_create_group,
- resp_create_subgroup, resp_delete_group, resp_find_group_project)
-
- # GitLab module requirements
- if python_version_match_requirement():
- from gitlab.v4.objects import Group
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing"))
- # Need to set these to something so that we don't fail when parsing
- GitlabModuleTestCase = object
- resp_get_group = _dummy
- resp_get_missing_group = _dummy
- resp_create_group = _dummy
- resp_create_subgroup = _dummy
- resp_delete_group = _dummy
- resp_find_group_project = _dummy
-
-# Unit tests requirements
-try:
- from httmock import with_httmock # noqa
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing"))
- with_httmock = _dummy
-
-
-class TestGitlabGroup(GitlabModuleTestCase):
- def setUp(self):
- super(TestGitlabGroup, self).setUp()
-
- self.moduleUtil = GitLabGroup(module=self.mock_module, gitlab_instance=self.gitlab_instance)
-
- @with_httmock(resp_get_group)
- def test_exist_group(self):
- rvalue = self.moduleUtil.existsGroup(1)
-
- self.assertEqual(rvalue, True)
-
- @with_httmock(resp_get_missing_group)
- def test_exist_group(self):
- rvalue = self.moduleUtil.existsGroup(1)
-
- self.assertEqual(rvalue, False)
-
- @with_httmock(resp_create_group)
- def test_create_group(self):
- group = self.moduleUtil.createGroup({'name': "Foobar Group", 'path': "foo-bar"})
-
- self.assertEqual(type(group), Group)
- self.assertEqual(group.name, "Foobar Group")
- self.assertEqual(group.path, "foo-bar")
- self.assertEqual(group.id, 1)
-
- @with_httmock(resp_create_subgroup)
- def test_create_subgroup(self):
- group = self.moduleUtil.createGroup({'name': "BarFoo Group", 'path': "bar-foo", "parent_id": 1})
-
- self.assertEqual(type(group), Group)
- self.assertEqual(group.name, "BarFoo Group")
- self.assertEqual(group.full_path, "foo-bar/bar-foo")
- self.assertEqual(group.id, 2)
- self.assertEqual(group.parent_id, 1)
-
- @with_httmock(resp_get_group)
- def test_update_group(self):
- group = self.gitlab_instance.groups.get(1)
- changed, newGroup = self.moduleUtil.updateGroup(group, {'name': "BarFoo Group", "visibility": "private"})
-
- self.assertEqual(changed, True)
- self.assertEqual(newGroup.name, "BarFoo Group")
- self.assertEqual(newGroup.visibility, "private")
-
- changed, newGroup = self.moduleUtil.updateGroup(group, {'name': "BarFoo Group"})
-
- self.assertEqual(changed, False)
-
- @with_httmock(resp_get_group)
- @with_httmock(resp_find_group_project)
- @with_httmock(resp_delete_group)
- def test_delete_group(self):
- self.moduleUtil.existsGroup(1)
-
- print(self.moduleUtil.groupObject.projects)
-
- rvalue = self.moduleUtil.deleteGroup()
-
- self.assertEqual(rvalue, None)
diff --git a/test/units/modules/source_control/gitlab/test_gitlab_hook.py b/test/units/modules/source_control/gitlab/test_gitlab_hook.py
deleted file mode 100644
index 29401ee53c..0000000000
--- a/test/units/modules/source_control/gitlab/test_gitlab_hook.py
+++ /dev/null
@@ -1,101 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr)
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import
-import pytest
-
-from ansible.modules.source_control.gitlab.gitlab_hook import GitLabHook
-
-
-def _dummy(x):
- """Dummy function. Only used as a placeholder for toplevel definitions when the test is going
- to be skipped anyway"""
- return x
-
-
-pytestmark = []
-try:
- from .gitlab import (GitlabModuleTestCase,
- python_version_match_requirement,
- resp_get_project, resp_find_project_hook,
- resp_create_project_hook, resp_delete_project_hook)
-
- # GitLab module requirements
- if python_version_match_requirement():
- from gitlab.v4.objects import ProjectHook
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing"))
- # Need to set these to something so that we don't fail when parsing
- GitlabModuleTestCase = object
- resp_get_project = _dummy
- resp_find_project_hook = _dummy
- resp_create_project_hook = _dummy
- resp_delete_project_hook = _dummy
-
-# Unit tests requirements
-try:
- from httmock import with_httmock # noqa
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing"))
- with_httmock = _dummy
-
-
-class TestGitlabHook(GitlabModuleTestCase):
- def setUp(self):
- super(TestGitlabHook, self).setUp()
-
- self.moduleUtil = GitLabHook(module=self.mock_module, gitlab_instance=self.gitlab_instance)
-
- @with_httmock(resp_get_project)
- @with_httmock(resp_find_project_hook)
- def test_hook_exist(self):
- project = self.gitlab_instance.projects.get(1)
-
- rvalue = self.moduleUtil.existsHook(project, "http://example.com/hook")
-
- self.assertEqual(rvalue, True)
-
- rvalue = self.moduleUtil.existsHook(project, "http://gitlab.com/hook")
-
- self.assertEqual(rvalue, False)
-
- @with_httmock(resp_get_project)
- @with_httmock(resp_create_project_hook)
- def test_create_hook(self):
- project = self.gitlab_instance.projects.get(1)
-
- hook = self.moduleUtil.createHook(project, {"url": "http://example.com/hook"})
-
- self.assertEqual(type(hook), ProjectHook)
- self.assertEqual(hook.url, "http://example.com/hook")
-
- @with_httmock(resp_get_project)
- @with_httmock(resp_find_project_hook)
- def test_update_hook(self):
- project = self.gitlab_instance.projects.get(1)
- hook = self.moduleUtil.findHook(project, "http://example.com/hook")
-
- changed, newHook = self.moduleUtil.updateHook(hook, {"url": "http://gitlab.com/hook"})
-
- self.assertEqual(changed, True)
- self.assertEqual(type(newHook), ProjectHook)
- self.assertEqual(newHook.url, "http://gitlab.com/hook")
-
- changed, newHook = self.moduleUtil.updateHook(hook, {"url": "http://gitlab.com/hook"})
-
- self.assertEqual(changed, False)
- self.assertEqual(newHook.url, "http://gitlab.com/hook")
-
- @with_httmock(resp_get_project)
- @with_httmock(resp_find_project_hook)
- @with_httmock(resp_delete_project_hook)
- def test_delete_hook(self):
- project = self.gitlab_instance.projects.get(1)
-
- self.moduleUtil.existsHook(project, "http://example.com/hook")
-
- rvalue = self.moduleUtil.deleteHook()
-
- self.assertEqual(rvalue, None)
diff --git a/test/units/modules/source_control/gitlab/test_gitlab_project.py b/test/units/modules/source_control/gitlab/test_gitlab_project.py
deleted file mode 100644
index 31b773f9cb..0000000000
--- a/test/units/modules/source_control/gitlab/test_gitlab_project.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr)
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import
-
-import pytest
-
-from ansible.modules.source_control.gitlab.gitlab_project import GitLabProject
-
-
-def _dummy(x):
- """Dummy function. Only used as a placeholder for toplevel definitions when the test is going
- to be skipped anyway"""
- return x
-
-
-pytestmark = []
-try:
- from .gitlab import (GitlabModuleTestCase,
- python_version_match_requirement,
- resp_get_group, resp_get_project_by_name, resp_create_project,
- resp_get_project, resp_delete_project, resp_get_user)
-
- # GitLab module requirements
- if python_version_match_requirement():
- from gitlab.v4.objects import Project
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing"))
- # Need to set these to something so that we don't fail when parsing
- GitlabModuleTestCase = object
- resp_get_group = _dummy
- resp_get_project_by_name = _dummy
- resp_create_project = _dummy
- resp_get_project = _dummy
- resp_delete_project = _dummy
- resp_get_user = _dummy
-
-# Unit tests requirements
-try:
- from httmock import with_httmock # noqa
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing"))
- with_httmock = _dummy
-
-
-class TestGitlabProject(GitlabModuleTestCase):
- @with_httmock(resp_get_user)
- def setUp(self):
- super(TestGitlabProject, self).setUp()
-
- self.gitlab_instance.user = self.gitlab_instance.users.get(1)
- self.moduleUtil = GitLabProject(module=self.mock_module, gitlab_instance=self.gitlab_instance)
-
- @with_httmock(resp_get_group)
- @with_httmock(resp_get_project_by_name)
- def test_project_exist(self):
- group = self.gitlab_instance.groups.get(1)
-
- rvalue = self.moduleUtil.existsProject(group, "diaspora-client")
-
- self.assertEqual(rvalue, True)
-
- rvalue = self.moduleUtil.existsProject(group, "missing-project")
-
- self.assertEqual(rvalue, False)
-
- @with_httmock(resp_get_group)
- @with_httmock(resp_create_project)
- def test_create_project(self):
- group = self.gitlab_instance.groups.get(1)
- project = self.moduleUtil.createProject(group, {"name": "Diaspora Client", "path": "diaspora-client", "namespace_id": group.id})
-
- self.assertEqual(type(project), Project)
- self.assertEqual(project.name, "Diaspora Client")
-
- @with_httmock(resp_get_project)
- def test_update_project(self):
- project = self.gitlab_instance.projects.get(1)
-
- changed, newProject = self.moduleUtil.updateProject(project, {"name": "New Name"})
-
- self.assertEqual(changed, True)
- self.assertEqual(type(newProject), Project)
- self.assertEqual(newProject.name, "New Name")
-
- changed, newProject = self.moduleUtil.updateProject(project, {"name": "New Name"})
-
- self.assertEqual(changed, False)
- self.assertEqual(newProject.name, "New Name")
-
- @with_httmock(resp_get_group)
- @with_httmock(resp_get_project_by_name)
- @with_httmock(resp_delete_project)
- def test_delete_project(self):
- group = self.gitlab_instance.groups.get(1)
-
- self.moduleUtil.existsProject(group, "diaspora-client")
-
- rvalue = self.moduleUtil.deleteProject()
-
- self.assertEqual(rvalue, None)
diff --git a/test/units/modules/source_control/gitlab/test_gitlab_runner.py b/test/units/modules/source_control/gitlab/test_gitlab_runner.py
deleted file mode 100644
index 57f3f2411f..0000000000
--- a/test/units/modules/source_control/gitlab/test_gitlab_runner.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr)
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import
-
-import pytest
-
-from ansible.modules.source_control.gitlab.gitlab_runner import GitLabRunner
-
-
-def _dummy(x):
- """Dummy function. Only used as a placeholder for toplevel definitions when the test is going
- to be skipped anyway"""
- return x
-
-
-pytestmark = []
-try:
- from .gitlab import (GitlabModuleTestCase,
- python_version_match_requirement,
- resp_find_runners_list, resp_get_runner,
- resp_create_runner, resp_delete_runner)
-
- # GitLab module requirements
- if python_version_match_requirement():
- from gitlab.v4.objects import Runner
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing"))
- # Need to set these to something so that we don't fail when parsing
- GitlabModuleTestCase = object
- resp_find_runners_list = _dummy
- resp_get_runner = _dummy
- resp_create_runner = _dummy
- resp_delete_runner = _dummy
-
-# Unit tests requirements
-try:
- from httmock import with_httmock # noqa
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing"))
- with_httmock = _dummy
-
-
-class TestGitlabRunner(GitlabModuleTestCase):
- def setUp(self):
- super(TestGitlabRunner, self).setUp()
-
- self.moduleUtil = GitLabRunner(module=self.mock_module, gitlab_instance=self.gitlab_instance)
-
- @with_httmock(resp_find_runners_list)
- @with_httmock(resp_get_runner)
- def test_runner_exist(self):
- rvalue = self.moduleUtil.existsRunner("test-1-20150125")
-
- self.assertEqual(rvalue, True)
-
- rvalue = self.moduleUtil.existsRunner("test-3-00000000")
-
- self.assertEqual(rvalue, False)
-
- @with_httmock(resp_create_runner)
- def test_create_runner(self):
- runner = self.moduleUtil.createRunner({"token": "token", "description": "test-1-20150125"})
-
- self.assertEqual(type(runner), Runner)
- self.assertEqual(runner.description, "test-1-20150125")
-
- @with_httmock(resp_find_runners_list)
- @with_httmock(resp_get_runner)
- def test_update_runner(self):
- runner = self.moduleUtil.findRunner("test-1-20150125")
-
- changed, newRunner = self.moduleUtil.updateRunner(runner, {"description": "Runner description"})
-
- self.assertEqual(changed, True)
- self.assertEqual(type(newRunner), Runner)
- self.assertEqual(newRunner.description, "Runner description")
-
- changed, newRunner = self.moduleUtil.updateRunner(runner, {"description": "Runner description"})
-
- self.assertEqual(changed, False)
- self.assertEqual(newRunner.description, "Runner description")
-
- @with_httmock(resp_find_runners_list)
- @with_httmock(resp_get_runner)
- @with_httmock(resp_delete_runner)
- def test_delete_runner(self):
- self.moduleUtil.existsRunner("test-1-20150125")
-
- rvalue = self.moduleUtil.deleteRunner()
-
- self.assertEqual(rvalue, None)
diff --git a/test/units/modules/source_control/gitlab/test_gitlab_user.py b/test/units/modules/source_control/gitlab/test_gitlab_user.py
deleted file mode 100644
index e7ac926ed8..0000000000
--- a/test/units/modules/source_control/gitlab/test_gitlab_user.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2019, Guillaume Martinez (lunik@tiwabbit.fr)
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import
-
-import pytest
-
-from ansible.modules.source_control.gitlab.gitlab_user import GitLabUser
-
-
-def _dummy(x):
- """Dummy function. Only used as a placeholder for toplevel definitions when the test is going
- to be skipped anyway"""
- return x
-
-
-pytestmark = []
-try:
- from .gitlab import (GitlabModuleTestCase,
- python_version_match_requirement,
- resp_find_user, resp_get_user, resp_get_user_keys,
- resp_create_user_keys, resp_create_user, resp_delete_user,
- resp_get_member, resp_get_group, resp_add_member,
- resp_update_member, resp_get_member)
-
- # GitLab module requirements
- if python_version_match_requirement():
- from gitlab.v4.objects import User
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load gitlab module required for testing"))
- # Need to set these to something so that we don't fail when parsing
- GitlabModuleTestCase = object
- resp_find_user = _dummy
- resp_get_user = _dummy
- resp_get_user_keys = _dummy
- resp_create_user_keys = _dummy
- resp_create_user = _dummy
- resp_delete_user = _dummy
- resp_get_member = _dummy
- resp_get_group = _dummy
- resp_add_member = _dummy
- resp_update_member = _dummy
- resp_get_member = _dummy
-
-# Unit tests requirements
-try:
- from httmock import with_httmock # noqa
-except ImportError:
- pytestmark.append(pytest.mark.skip("Could not load httmock module required for testing"))
- with_httmock = _dummy
-
-
-class TestGitlabUser(GitlabModuleTestCase):
- def setUp(self):
- super(TestGitlabUser, self).setUp()
-
- self.moduleUtil = GitLabUser(module=self.mock_module, gitlab_instance=self.gitlab_instance)
-
- @with_httmock(resp_find_user)
- def test_exist_user(self):
- rvalue = self.moduleUtil.existsUser("john_smith")
-
- self.assertEqual(rvalue, True)
-
- rvalue = self.moduleUtil.existsUser("paul_smith")
-
- self.assertEqual(rvalue, False)
-
- @with_httmock(resp_find_user)
- def test_find_user(self):
- user = self.moduleUtil.findUser("john_smith")
-
- self.assertEqual(type(user), User)
- self.assertEqual(user.name, "John Smith")
- self.assertEqual(user.id, 1)
-
- @with_httmock(resp_create_user)
- def test_create_user(self):
- user = self.moduleUtil.createUser({'email': 'john@example.com', 'password': 's3cur3s3cr3T',
- 'username': 'john_smith', 'name': 'John Smith'})
- self.assertEqual(type(user), User)
- self.assertEqual(user.name, "John Smith")
- self.assertEqual(user.id, 1)
-
- @with_httmock(resp_get_user)
- def test_update_user(self):
- user = self.gitlab_instance.users.get(1)
- changed, newUser = self.moduleUtil.updateUser(user, {'name': "Jack Smith", "is_admin": "true"})
-
- self.assertEqual(changed, True)
- self.assertEqual(newUser.name, "Jack Smith")
- self.assertEqual(newUser.is_admin, "true")
-
- changed, newUser = self.moduleUtil.updateUser(user, {'name': "Jack Smith"})
-
- self.assertEqual(changed, False)
-
- @with_httmock(resp_find_user)
- @with_httmock(resp_delete_user)
- def test_delete_user(self):
- self.moduleUtil.existsUser("john_smith")
- rvalue = self.moduleUtil.deleteUser()
-
- self.assertEqual(rvalue, None)
-
- @with_httmock(resp_get_user)
- @with_httmock(resp_get_user_keys)
- def test_sshkey_exist(self):
- user = self.gitlab_instance.users.get(1)
-
- exist = self.moduleUtil.sshKeyExists(user, "Public key")
- self.assertEqual(exist, True)
-
- notExist = self.moduleUtil.sshKeyExists(user, "Private key")
- self.assertEqual(notExist, False)
-
- @with_httmock(resp_get_user)
- @with_httmock(resp_create_user_keys)
- @with_httmock(resp_get_user_keys)
- def test_create_sshkey(self):
- user = self.gitlab_instance.users.get(1)
-
- rvalue = self.moduleUtil.addSshKeyToUser(user, {
- 'name': "Public key",
- 'file': "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJe"
- "jgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4"
- "soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="})
- self.assertEqual(rvalue, False)
-
- rvalue = self.moduleUtil.addSshKeyToUser(user, {
- 'name': "Private key",
- 'file': "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA1YotVDm2mAyk2tPt4E7AHm01sS6JZmcU"
- "dRuSuA5zszUJzYPPUSRAX3BCgTqLqYx//UuVncK7YqLVSbbwjKR2Ez5lISgCnVfLVEXzwhv+"
- "xawxKWmI7hJ5S0tOv6MJ+IxyTa4xcKwJTwB86z22n9fVOQeJTR2dSOH1WJrf0PvRk+KVNY2j"
- "TiGHTi9AIjLnyD/jWRpOgtdfkLRc8EzAWrWlgNmH2WOKBw6za0az6XoG75obUdFVdW3qcD0x"
- "c809OHLi7FDf+E7U4wiZJCFuUizMeXyuK/SkaE1aee4Qp5R4dxTR4TP9M1XAYkf+kF0W9srZ+mhF069XD/zhUPJsvwEF"})
- self.assertEqual(rvalue, True)
-
- @with_httmock(resp_get_group)
- @with_httmock(resp_get_member)
- def test_find_member(self):
- group = self.gitlab_instance.groups.get(1)
-
- user = self.moduleUtil.findMember(group, 1)
- self.assertEqual(user.username, "raymond_smith")
-
- @with_httmock(resp_get_user)
- @with_httmock(resp_get_group)
- @with_httmock(resp_get_group)
- @with_httmock(resp_get_member)
- @with_httmock(resp_add_member)
- @with_httmock(resp_update_member)
- def test_assign_user_to_group(self):
- group = self.gitlab_instance.groups.get(1)
- user = self.gitlab_instance.users.get(1)
-
- rvalue = self.moduleUtil.assignUserToGroup(user, group.id, "developer")
- self.assertEqual(rvalue, False)
-
- rvalue = self.moduleUtil.assignUserToGroup(user, group.id, "guest")
- self.assertEqual(rvalue, True)
diff --git a/test/units/modules/storage/hpe3par/test_ss_3par_cpg.py b/test/units/modules/storage/hpe3par/test_ss_3par_cpg.py
deleted file mode 100644
index fa2844615e..0000000000
--- a/test/units/modules/storage/hpe3par/test_ss_3par_cpg.py
+++ /dev/null
@@ -1,246 +0,0 @@
-# Copyright: (c) 2018, Hewlett Packard Enterprise Development LP
-# GNU General Public License v3.0+
-# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-
-import mock
-import sys
-sys.modules['hpe3par_sdk'] = mock.Mock()
-sys.modules['hpe3par_sdk.client'] = mock.Mock()
-sys.modules['hpe3parclient'] = mock.Mock()
-sys.modules['hpe3parclient.exceptions'] = mock.Mock()
-from ansible.modules.storage.hpe3par import ss_3par_cpg
-from ansible.module_utils.storage.hpe3par import hpe3par
-
-
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client')
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.AnsibleModule')
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.create_cpg')
-def test_module_args(mock_create_cpg, mock_module, mock_client):
- """
- hpe3par CPG - test module arguments
- """
-
- PARAMS_FOR_PRESENT = {
- 'storage_system_ip': '192.168.0.1',
- 'storage_system_username': 'USER',
- 'storage_system_password': 'PASS',
- 'cpg_name': 'test_cpg',
- 'domain': 'test_domain',
- 'growth_increment': 32768,
- 'growth_increment_unit': 'MiB',
- 'growth_limit': 32768,
- 'growth_limit_unit': 'MiB',
- 'growth_warning': 32768,
- 'growth_warning_unit': 'MiB',
- 'raid_type': 'R6',
- 'set_size': 8,
- 'high_availability': 'MAG',
- 'disk_type': 'FC',
- 'state': 'present',
- 'secure': False
- }
- mock_module.params = PARAMS_FOR_PRESENT
- mock_module.return_value = mock_module
- mock_client.HPE3ParClient.login.return_value = True
- mock_create_cpg.return_value = (True, True, "Created CPG successfully.")
- ss_3par_cpg.main()
- mock_module.assert_called_with(
- argument_spec=hpe3par.cpg_argument_spec(),
- required_together=[['raid_type', 'set_size']])
-
-
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client')
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.AnsibleModule')
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.create_cpg')
-def test_main_exit_functionality_present_success_without_issue_attr_dict(mock_create_cpg, mock_module, mock_client):
- """
- hpe3par flash cache - success check
- """
- PARAMS_FOR_PRESENT = {
- 'storage_system_ip': '192.168.0.1',
- 'storage_system_name': '3PAR',
- 'storage_system_username': 'USER',
- 'storage_system_password': 'PASS',
- 'cpg_name': 'test_cpg',
- 'domain': 'test_domain',
- 'growth_increment': 32768,
- 'growth_increment_unit': 'MiB',
- 'growth_limit': 32768,
- 'growth_limit_unit': 'MiB',
- 'growth_warning': 32768,
- 'growth_warning_unit': 'MiB',
- 'raid_type': 'R6',
- 'set_size': 8,
- 'high_availability': 'MAG',
- 'disk_type': 'FC',
- 'state': 'present',
- 'secure': False
- }
- # This creates a instance of the AnsibleModule mock.
- mock_module.params = PARAMS_FOR_PRESENT
- mock_module.return_value = mock_module
- instance = mock_module.return_value
- mock_client.HPE3ParClient.login.return_value = True
- mock_create_cpg.return_value = (
- True, True, "Created CPG successfully.")
- ss_3par_cpg.main()
- # AnsibleModule.exit_json should be called
- instance.exit_json.assert_called_with(
- changed=True, msg="Created CPG successfully.")
- # AnsibleModule.fail_json should not be called
- assert instance.fail_json.call_count == 0
-
-
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client')
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.AnsibleModule')
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.delete_cpg')
-def test_main_exit_functionality_absent_success_without_issue_attr_dict(mock_delete_cpg, mock_module, mock_client):
- """
- hpe3par flash cache - success check
- """
- PARAMS_FOR_DELETE = {
- 'storage_system_ip': '192.168.0.1',
- 'storage_system_name': '3PAR',
- 'storage_system_username': 'USER',
- 'storage_system_password': 'PASS',
- 'cpg_name': 'test_cpg',
- 'domain': None,
- 'growth_increment': None,
- 'growth_increment_unit': None,
- 'growth_limit': None,
- 'growth_limit_unit': None,
- 'growth_warning': None,
- 'growth_warning_unit': None,
- 'raid_type': None,
- 'set_size': None,
- 'high_availability': None,
- 'disk_type': None,
- 'state': 'absent',
- 'secure': False
- }
- # This creates a instance of the AnsibleModule mock.
- mock_module.params = PARAMS_FOR_DELETE
- mock_module.return_value = mock_module
- instance = mock_module.return_value
- mock_delete_cpg.return_value = (
- True, True, "Deleted CPG test_cpg successfully.")
- mock_client.HPE3ParClient.login.return_value = True
- ss_3par_cpg.main()
- # AnsibleModule.exit_json should be called
- instance.exit_json.assert_called_with(
- changed=True, msg="Deleted CPG test_cpg successfully.")
- # AnsibleModule.fail_json should not be called
- assert instance.fail_json.call_count == 0
-
-
-def test_convert_to_binary_multiple():
- assert hpe3par.convert_to_binary_multiple(None) == -1
- assert hpe3par.convert_to_binary_multiple('-1.0 MiB') == -1
- assert hpe3par.convert_to_binary_multiple('-1.0GiB') == -1
- assert hpe3par.convert_to_binary_multiple('1.0 MiB') == 1
- assert hpe3par.convert_to_binary_multiple('1.5GiB') == 1.5 * 1024
- assert hpe3par.convert_to_binary_multiple('1.5 TiB') == 1.5 * 1024 * 1024
- assert hpe3par.convert_to_binary_multiple(' 1.5 TiB ') == 1.5 * 1024 * 1024
-
-
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client')
-def test_validate_set_size(mock_client):
- mock_client.HPE3ParClient.RAID_MAP = {'R0': {'raid_value': 1, 'set_sizes': [1]},
- 'R1': {'raid_value': 2, 'set_sizes': [2, 3, 4]},
- 'R5': {'raid_value': 3, 'set_sizes': [3, 4, 5, 6, 7, 8, 9]},
- 'R6': {'raid_value': 4, 'set_sizes': [6, 8, 10, 12, 16]}
- }
- raid_type = 'R0'
- set_size = 1
- assert ss_3par_cpg.validate_set_size(raid_type, set_size)
-
- set_size = 2
- assert not ss_3par_cpg.validate_set_size(raid_type, set_size)
-
- raid_type = None
- assert not ss_3par_cpg.validate_set_size(raid_type, set_size)
-
-
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client')
-def test_cpg_ldlayout_map(mock_client):
- mock_client.HPE3ParClient.PORT = 1
- mock_client.HPE3ParClient.RAID_MAP = {'R0': {'raid_value': 1, 'set_sizes': [1]},
- 'R1': {'raid_value': 2, 'set_sizes': [2, 3, 4]},
- 'R5': {'raid_value': 3, 'set_sizes': [3, 4, 5, 6, 7, 8, 9]},
- 'R6': {'raid_value': 4, 'set_sizes': [6, 8, 10, 12, 16]}
- }
- ldlayout_dict = {'RAIDType': 'R6', 'HA': 'PORT'}
- assert ss_3par_cpg.cpg_ldlayout_map(ldlayout_dict) == {
- 'RAIDType': 4, 'HA': 1}
-
-
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client')
-def test_create_cpg(mock_client):
- ss_3par_cpg.validate_set_size = mock.Mock(return_value=True)
- ss_3par_cpg.cpg_ldlayout_map = mock.Mock(
- return_value={'RAIDType': 4, 'HA': 1})
-
- mock_client.HPE3ParClient.login.return_value = True
- mock_client.HPE3ParClient.cpgExists.return_value = False
- mock_client.HPE3ParClient.FC = 1
- mock_client.HPE3ParClient.createCPG.return_value = True
-
- assert ss_3par_cpg.create_cpg(mock_client.HPE3ParClient,
- 'test_cpg',
- 'test_domain',
- '32768 MiB',
- '32768 MiB',
- '32768 MiB',
- 'R6',
- 8,
- 'MAG',
- 'FC'
- ) == (True, True, "Created CPG %s successfully." % 'test_cpg')
-
- mock_client.HPE3ParClient.cpgExists.return_value = True
- assert ss_3par_cpg.create_cpg(mock_client.HPE3ParClient,
- 'test_cpg',
- 'test_domain',
- '32768.0 MiB',
- '32768.0 MiB',
- '32768.0 MiB',
- 'R6',
- 8,
- 'MAG',
- 'FC'
- ) == (True, False, 'CPG already present')
-
- ss_3par_cpg.validate_set_size = mock.Mock(return_value=False)
- assert ss_3par_cpg.create_cpg(mock_client.HPE3ParClient,
- 'test_cpg',
- 'test_domain',
- '32768.0 MiB',
- '32768 MiB',
- '32768.0 MiB',
- 'R6',
- 3,
- 'MAG',
- 'FC'
- ) == (False, False, 'Set size 3 not part of RAID set R6')
-
-
-@mock.patch('ansible.modules.storage.hpe3par.ss_3par_cpg.client')
-def test_delete_cpg(mock_client):
- mock_client.HPE3ParClient.login.return_value = True
- mock_client.HPE3ParClient.cpgExists.return_value = True
- mock_client.HPE3ParClient.FC = 1
- mock_client.HPE3ParClient.deleteCPG.return_value = True
-
- assert ss_3par_cpg.delete_cpg(mock_client.HPE3ParClient,
- 'test_cpg'
- ) == (True, True, "Deleted CPG %s successfully." % 'test_cpg')
-
- mock_client.HPE3ParClient.cpgExists.return_value = False
-
- assert ss_3par_cpg.delete_cpg(mock_client.HPE3ParClient,
- 'test_cpg'
- ) == (True, False, "CPG does not exist")
- assert ss_3par_cpg.delete_cpg(mock_client.HPE3ParClient,
- None
- ) == (True, False, "CPG does not exist")
diff --git a/test/units/modules/storage/netapp/test_netapp_e_alerts.py b/test/units/modules/storage/netapp/test_netapp_e_alerts.py
deleted file mode 100644
index 762e457646..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_alerts.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from ansible.modules.storage.netapp.netapp_e_alerts import Alerts
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-__metaclass__ = type
-from units.compat import mock
-
-
-class AlertsTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- 'api_username': 'rw',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1',
- 'state': 'disabled'
- }
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_alerts.request'
-
- def _set_args(self, **kwargs):
- module_args = self.REQUIRED_PARAMS.copy()
- if kwargs is not None:
- module_args.update(kwargs)
- set_module_args(module_args)
-
- def _validate_args(self, **kwargs):
- self._set_args(**kwargs)
- Alerts()
-
- def test_validation_disable(self):
- """Ensure a default configuration succeeds"""
- self._validate_args()
-
- def test_validation_enable(self):
- """Ensure a typical, default configuration succeeds"""
- self._validate_args(state='enabled', server='localhost', sender='x@y.z', recipients=['a@b.c'])
-
- def test_validation_fail_required(self):
- """Ensure we fail on missing configuration"""
-
- # Missing recipients
- with self.assertRaises(AnsibleFailJson):
- self._validate_args(state='enabled', server='localhost', sender='x@y.z')
- Alerts()
-
- # Missing sender
- with self.assertRaises(AnsibleFailJson):
- self._validate_args(state='enabled', server='localhost', recipients=['a@b.c'])
- Alerts()
-
- # Missing server
- with self.assertRaises(AnsibleFailJson):
- self._validate_args(state='enabled', sender='x@y.z', recipients=['a@b.c'])
-
- def test_validation_fail(self):
- # Empty recipients
- with self.assertRaises(AnsibleFailJson):
- self._validate_args(state='enabled', server='localhost', sender='x@y.z', recipients=[])
-
- # Bad sender
- with self.assertRaises(AnsibleFailJson):
- self._validate_args(state='enabled', server='localhost', sender='y.z', recipients=['a@b.c'])
-
- def test_get_configuration(self):
- """Validate retrieving the current configuration"""
- self._set_args(state='enabled', server='localhost', sender='x@y.z', recipients=['a@b.c'])
-
- expected = 'result'
- alerts = Alerts()
- # Expecting an update
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- actual = alerts.get_configuration()
- self.assertEqual(expected, actual)
- self.assertEqual(req.call_count, 1)
-
- def test_update_configuration(self):
- """Validate updating the configuration"""
- initial = dict(alertingEnabled=True,
- emailServerAddress='localhost',
- sendAdditionalContactInformation=True,
- additionalContactInformation='None',
- emailSenderAddress='x@y.z',
- recipientEmailAddresses=['x@y.z']
- )
-
- args = dict(state='enabled', server=initial['emailServerAddress'], sender=initial['emailSenderAddress'],
- contact=initial['additionalContactInformation'], recipients=initial['recipientEmailAddresses'])
-
- self._set_args(**args)
-
- alerts = Alerts()
-
- # Ensure when trigger updates when each relevant field is changed
- with mock.patch(self.REQ_FUNC, return_value=(200, None)) as req:
- with mock.patch.object(alerts, 'get_configuration', return_value=initial):
- update = alerts.update_configuration()
- self.assertFalse(update)
-
- alerts.sender = 'a@b.c'
- update = alerts.update_configuration()
- self.assertTrue(update)
- self._set_args(**args)
-
- alerts.recipients = ['a@b.c']
- update = alerts.update_configuration()
- self.assertTrue(update)
- self._set_args(**args)
-
- alerts.contact = 'abc'
- update = alerts.update_configuration()
- self.assertTrue(update)
- self._set_args(**args)
-
- alerts.server = 'abc'
- update = alerts.update_configuration()
- self.assertTrue(update)
-
- def test_send_test_email_check(self):
- """Ensure we handle check_mode correctly"""
- self._set_args(test=True)
- alerts = Alerts()
- alerts.check_mode = True
- with mock.patch(self.REQ_FUNC) as req:
- with mock.patch.object(alerts, 'update_configuration', return_value=True):
- alerts.send_test_email()
- self.assertFalse(req.called)
-
- def test_send_test_email(self):
- """Ensure we send a test email if test=True"""
- self._set_args(test=True)
- alerts = Alerts()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, dict(response='emailSentOK'))) as req:
- alerts.send_test_email()
- self.assertTrue(req.called)
-
- def test_send_test_email_fail(self):
- """Ensure we fail if the test returned a failure status"""
- self._set_args(test=True)
- alerts = Alerts()
-
- ret_msg = 'fail'
- with self.assertRaisesRegexp(AnsibleFailJson, ret_msg):
- with mock.patch(self.REQ_FUNC, return_value=(200, dict(response=ret_msg))) as req:
- alerts.send_test_email()
- self.assertTrue(req.called)
-
- def test_send_test_email_fail_connection(self):
- """Ensure we fail cleanly if we hit a connection failure"""
- self._set_args(test=True)
- alerts = Alerts()
-
- with self.assertRaisesRegexp(AnsibleFailJson, r"failed to send"):
- with mock.patch(self.REQ_FUNC, side_effect=Exception) as req:
- alerts.send_test_email()
- self.assertTrue(req.called)
-
- def test_update(self):
- # Ensure that when test is enabled and alerting is enabled, we run the test
- self._set_args(state='enabled', server='localhost', sender='x@y.z', recipients=['a@b.c'], test=True)
- alerts = Alerts()
- with self.assertRaisesRegexp(AnsibleExitJson, r"enabled"):
- with mock.patch.object(alerts, 'update_configuration', return_value=True):
- with mock.patch.object(alerts, 'send_test_email') as test:
- alerts.update()
- self.assertTrue(test.called)
-
- # Ensure we don't run a test when changed=False
- with self.assertRaisesRegexp(AnsibleExitJson, r"enabled"):
- with mock.patch.object(alerts, 'update_configuration', return_value=False):
- with mock.patch.object(alerts, 'send_test_email') as test:
- alerts.update()
- self.assertFalse(test.called)
-
- # Ensure that test is not called when we have alerting disabled
- self._set_args(state='disabled')
- alerts = Alerts()
- with self.assertRaisesRegexp(AnsibleExitJson, r"disabled"):
- with mock.patch.object(alerts, 'update_configuration', return_value=True):
- with mock.patch.object(alerts, 'send_test_email') as test:
- alerts.update()
- self.assertFalse(test.called)
diff --git a/test/units/modules/storage/netapp/test_netapp_e_asup.py b/test/units/modules/storage/netapp/test_netapp_e_asup.py
deleted file mode 100644
index 8f7d823def..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_asup.py
+++ /dev/null
@@ -1,181 +0,0 @@
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-import json
-
-from ansible.modules.storage.netapp.netapp_e_asup import Asup
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-__metaclass__ = type
-from units.compat import mock
-
-
-class AsupTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- 'api_username': 'rw',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1',
- }
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_asup.request'
-
- def _set_args(self, args=None):
- module_args = self.REQUIRED_PARAMS.copy()
- if args is not None:
- module_args.update(args)
- set_module_args(module_args)
-
- def test_get_config_asup_capable_false(self):
- """Ensure we fail correctly if ASUP is not available on this platform"""
- self._set_args()
-
- expected = dict(asupCapable=False, onDemandCapable=True)
- asup = Asup()
- # Expecting an update
- with self.assertRaisesRegexp(AnsibleFailJson, r"not supported"):
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)):
- asup.get_configuration()
-
- def test_get_config_on_demand_capable_false(self):
- """Ensure we fail correctly if ASUP is not available on this platform"""
- self._set_args()
-
- expected = dict(asupCapable=True, onDemandCapable=False)
- asup = Asup()
- # Expecting an update
- with self.assertRaisesRegexp(AnsibleFailJson, r"not supported"):
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)):
- asup.get_configuration()
-
- def test_get_config(self):
- """Validate retrieving the ASUP configuration"""
- self._set_args()
-
- expected = dict(asupCapable=True, onDemandCapable=True)
- asup = Asup()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)):
- config = asup.get_configuration()
- self.assertEqual(config, expected)
-
- def test_update_configuration(self):
- """Validate retrieving the ASUP configuration"""
- self._set_args(dict(asup='enabled'))
-
- expected = dict()
- initial = dict(asupCapable=True,
- asupEnabled=True,
- onDemandEnabled=False,
- remoteDiagsEnabled=False,
- schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24))
- asup = Asup()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- with mock.patch.object(asup, 'get_configuration', return_value=initial):
- updated = asup.update_configuration()
- self.assertTrue(req.called)
- self.assertTrue(updated)
-
- def test_update_configuration_asup_disable(self):
- """Validate retrieving the ASUP configuration"""
- self._set_args(dict(asup='disabled'))
-
- expected = dict()
- initial = dict(asupCapable=True,
- asupEnabled=True,
- onDemandEnabled=False,
- remoteDiagsEnabled=False,
- schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24))
- asup = Asup()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- with mock.patch.object(asup, 'get_configuration', return_value=initial):
- updated = asup.update_configuration()
- self.assertTrue(updated)
-
- self.assertTrue(req.called)
-
- # Ensure it was called with the right arguments
- called_with = req.call_args
- body = json.loads(called_with[1]['data'])
- self.assertFalse(body['asupEnabled'])
-
- def test_update_configuration_enable(self):
- """Validate retrieving the ASUP configuration"""
- self._set_args(dict(asup='enabled'))
-
- expected = dict()
- initial = dict(asupCapable=False,
- asupEnabled=False,
- onDemandEnabled=False,
- remoteDiagsEnabled=False,
- schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24))
- asup = Asup()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- with mock.patch.object(asup, 'get_configuration', return_value=initial):
- updated = asup.update_configuration()
- self.assertTrue(updated)
-
- self.assertTrue(req.called)
-
- # Ensure it was called with the right arguments
- called_with = req.call_args
- body = json.loads(called_with[1]['data'])
- self.assertTrue(body['asupEnabled'])
- self.assertTrue(body['onDemandEnabled'])
- self.assertTrue(body['remoteDiagsEnabled'])
-
- def test_update_configuration_request_exception(self):
- """Validate exception handling when request throws an exception."""
- config_response = dict(asupEnabled=True,
- onDemandEnabled=True,
- remoteDiagsEnabled=True,
- schedule=dict(daysOfWeek=[],
- dailyMinTime=0,
- weeklyMinTime=0,
- dailyMaxTime=24,
- weeklyMaxTime=24))
-
- self._set_args(dict(state="enabled"))
- asup = Asup()
- with self.assertRaises(Exception):
- with mock.patch.object(asup, 'get_configuration', return_value=config_response):
- with mock.patch(self.REQ_FUNC, side_effect=Exception):
- asup.update_configuration()
-
- def test_init_schedule(self):
- """Validate schedule correct schedule initialization"""
- self._set_args(dict(state="enabled", active=True, days=["sunday", "monday", "tuesday"], start=20, end=24))
- asup = Asup()
-
- self.assertTrue(asup.asup)
- self.assertEqual(asup.days, ["sunday", "monday", "tuesday"]),
- self.assertEqual(asup.start, 1200)
- self.assertEqual(asup.end, 1439)
-
- def test_init_schedule_invalid(self):
- """Validate updating ASUP with invalid schedule fails test."""
- self._set_args(dict(state="enabled", active=True, start=22, end=20))
- with self.assertRaisesRegexp(AnsibleFailJson, r"start time is invalid"):
- Asup()
-
- def test_init_schedule_days_invalid(self):
- """Validate updating ASUP with invalid schedule fails test."""
- self._set_args(dict(state="enabled", active=True, days=["someday", "thataday", "nonday"]))
- with self.assertRaises(AnsibleFailJson):
- Asup()
-
- def test_update(self):
- """Validate updating ASUP with valid schedule passes"""
- initial = dict(asupCapable=True,
- onDemandCapable=True,
- asupEnabled=True,
- onDemandEnabled=False,
- remoteDiagsEnabled=False,
- schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24))
- self._set_args(dict(state="enabled", active=True, days=["sunday", "monday", "tuesday"], start=10, end=20))
- asup = Asup()
- with self.assertRaisesRegexp(AnsibleExitJson, r"ASUP settings have been updated"):
- with mock.patch(self.REQ_FUNC, return_value=(200, dict(asupCapable=True))):
- with mock.patch.object(asup, "get_configuration", return_value=initial):
- asup.update()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_auditlog.py b/test/units/modules/storage/netapp/test_netapp_e_auditlog.py
deleted file mode 100644
index d7f370aab4..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_auditlog.py
+++ /dev/null
@@ -1,234 +0,0 @@
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from ansible.modules.storage.netapp.netapp_e_auditlog import AuditLog
-from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args
-
-__metaclass__ = type
-from units.compat import mock
-
-
-class AuditLogTests(ModuleTestCase):
- REQUIRED_PARAMS = {'api_username': 'rw',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1'}
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_auditlog.request'
- MAX_RECORDS_MAXIMUM = 50000
- MAX_RECORDS_MINIMUM = 100
-
- def _set_args(self, **kwargs):
- module_args = self.REQUIRED_PARAMS.copy()
- if kwargs is not None:
- module_args.update(kwargs)
- set_module_args(module_args)
-
- def test_max_records_argument_pass(self):
- """Verify AuditLog arument's max_records and threshold upper and lower boundaries."""
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90}
- max_records_set = (self.MAX_RECORDS_MINIMUM, 25000, self.MAX_RECORDS_MAXIMUM)
-
- for max_records in max_records_set:
- initial["max_records"] = max_records
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": False})):
- audit_log = AuditLog()
- self.assertTrue(audit_log.max_records == max_records)
-
- def test_max_records_argument_fail(self):
- """Verify AuditLog arument's max_records and threshold upper and lower boundaries."""
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90}
- max_records_set = (self.MAX_RECORDS_MINIMUM - 1, self.MAX_RECORDS_MAXIMUM + 1)
-
- for max_records in max_records_set:
- with self.assertRaisesRegexp(AnsibleFailJson, r"Audit-log max_records count must be between 100 and 50000"):
- initial["max_records"] = max_records
- self._set_args(**initial)
- AuditLog()
-
- def test_threshold_argument_pass(self):
- """Verify AuditLog arument's max_records and threshold upper and lower boundaries."""
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90}
- threshold_set = (60, 75, 90)
-
- for threshold in threshold_set:
- initial["threshold"] = threshold
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": False})):
- audit_log = AuditLog()
- self.assertTrue(audit_log.threshold == threshold)
-
- def test_threshold_argument_fail(self):
- """Verify AuditLog arument's max_records and threshold upper and lower boundaries."""
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90}
- threshold_set = (59, 91)
-
- for threshold in threshold_set:
- with self.assertRaisesRegexp(AnsibleFailJson, r"Audit-log percent threshold must be between 60 and 90"):
- initial["threshold"] = threshold
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": False})):
- AuditLog()
-
- def test_is_proxy_pass(self):
- """Verify that True is returned when proxy is used to communicate with storage."""
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90,
- "api_url": "https://10.1.1.10/devmgr/v2"}
-
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})):
- audit_log = AuditLog()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})):
- self.assertTrue(audit_log.is_proxy())
-
- def test_is_proxy_fail(self):
- """Verify that AnsibleJsonFail exception is thrown when exception occurs."""
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90}
-
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})):
- audit_log = AuditLog()
-
- with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to retrieve the webservices about information"):
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- audit_log.is_proxy()
-
- def test_get_configuration_pass(self):
- """Validate get configuration does not throw exception when normal request is returned."""
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90}
- expected = {"auditLogMaxRecords": 1000,
- "auditLogLevel": "writeOnly",
- "auditLogFullPolicy": "overWrite",
- "auditLogWarningThresholdPct": 90}
-
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})):
- audit_log = AuditLog()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)):
- body = audit_log.get_configuration()
- self.assertTrue(body == expected)
-
- def test_get_configuration_fail(self):
- """Verify AnsibleJsonFail exception is thrown."""
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90}
-
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})):
- audit_log = AuditLog()
-
- with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to retrieve the audit-log configuration!"):
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- audit_log.get_configuration()
-
- def test_build_configuration_pass(self):
- """Validate configuration changes will force an update."""
- response = {"auditLogMaxRecords": 1000,
- "auditLogLevel": "writeOnly",
- "auditLogFullPolicy": "overWrite",
- "auditLogWarningThresholdPct": 90}
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90}
- changes = [{"max_records": 50000},
- {"log_level": "all"},
- {"full_policy": "preventSystemAccess"},
- {"threshold": 75}]
-
- for change in changes:
- initial_with_changes = initial.copy()
- initial_with_changes.update(change)
- self._set_args(**initial_with_changes)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})):
- audit_log = AuditLog()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, response)):
- update = audit_log.build_configuration()
- self.assertTrue(update)
-
- def test_delete_log_messages_fail(self):
- """Verify AnsibleJsonFail exception is thrown."""
- initial = {"max_records": 1000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90}
-
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})):
- audit_log = AuditLog()
-
- with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to delete audit-log messages!"):
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- audit_log.delete_log_messages()
-
- def test_update_configuration_delete_pass(self):
- """Verify 422 and force successfully returns True."""
- body = {"auditLogMaxRecords": 1000,
- "auditLogLevel": "writeOnly",
- "auditLogFullPolicy": "overWrite",
- "auditLogWarningThresholdPct": 90}
- initial = {"max_records": 2000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90,
- "force": True}
-
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})):
- audit_log = AuditLog()
- with mock.patch(self.REQ_FUNC, side_effect=[(200, body),
- (422, {u"invalidFieldsIfKnown": None,
- u"errorMessage": u"Configuration change...",
- u"localizedMessage": u"Configuration change...",
- u"retcode": u"auditLogImmediateFullCondition",
- u"codeType": u"devicemgrerror"}),
- (200, None),
- (200, None)]):
- self.assertTrue(audit_log.update_configuration())
-
- def test_update_configuration_delete_skip_fail(self):
- """Verify 422 and no force results in AnsibleJsonFail exception."""
- body = {"auditLogMaxRecords": 1000,
- "auditLogLevel": "writeOnly",
- "auditLogFullPolicy": "overWrite",
- "auditLogWarningThresholdPct": 90}
- initial = {"max_records": 2000,
- "log_level": "writeOnly",
- "full_policy": "overWrite",
- "threshold": 90,
- "force": False}
-
- self._set_args(**initial)
- with mock.patch(self.REQ_FUNC, return_value=(200, {"runningAsProxy": True})):
- audit_log = AuditLog()
-
- with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to update audit-log configuration!"):
- with mock.patch(self.REQ_FUNC, side_effect=[(200, body), Exception(422, {"errorMessage": "error"}),
- (200, None), (200, None)]):
- audit_log.update_configuration()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_drive_firmware.py b/test/units/modules/storage/netapp/test_netapp_e_drive_firmware.py
deleted file mode 100644
index cf5db6635b..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_drive_firmware.py
+++ /dev/null
@@ -1,216 +0,0 @@
-# (c) 2018, NetApp 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
-
-try:
- from unittest import mock
-except ImportError:
- import mock
-
-from ansible.modules.storage.netapp.netapp_e_drive_firmware import NetAppESeriesDriveFirmware
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-
-class HostTest(ModuleTestCase):
- REQUIRED_PARAMS = {"api_username": "rw",
- "api_password": "password",
- "api_url": "http://localhost",
- "ssid": "1"}
-
- REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_drive_firmware.NetAppESeriesDriveFirmware.request"
- CREATE_MULTIPART_FORMDATA_FUNC = "ansible.modules.storage.netapp.netapp_e_drive_firmware.create_multipart_formdata"
- SLEEP_FUNC = "ansible.modules.storage.netapp.netapp_e_drive_firmware.sleep"
- UPGRADE_LIST_RESPONSE = ({"filename": "test_drive_firmware_1",
- "driveRefList": ["010000005000C5007EDE4ECF0000000000000000",
- "010000005000C5007EDF9AAB0000000000000000",
- "010000005000C5007EDBE3C70000000000000000"]},
- {"filename": "test_drive_firmware_2",
- "driveRefList": ["010000005000C5007EDE4ECF0000000000000001",
- "010000005000C5007EDF9AAB0000000000000001",
- "010000005000C5007EDBE3C70000000000000001"]})
-
- FIRMWARE_DRIVES_RESPONSE = {"compatibilities": [
- {"filename": "test_drive_firmware_1",
- "firmwareVersion": "MS02",
- "supportedFirmwareVersions": ["MSB6", "MSB8", "MS00", "MS02"],
- "compatibleDrives": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "onlineUpgradeCapable": True},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "onlineUpgradeCapable": True},
- {"driveRef": "010000005000C5007EDBE3C70000000000000000", "onlineUpgradeCapable": True}]},
- {"filename": "test_drive_firmware_2",
- "firmwareVersion": "MS01",
- "supportedFirmwareVersions": ["MSB8", "MS00", "MS01"],
- "compatibleDrives": [{"driveRef": "010000005000C5007EDE4ECF0000000000000001", "onlineUpgradeCapable": True},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "onlineUpgradeCapable": False},
- {"driveRef": "010000005000C5007EDBE3C70000000000000001", "onlineUpgradeCapable": True}]}]}
-
- def _set_args(self, args):
- module_args = self.REQUIRED_PARAMS.copy()
- module_args.update(args)
- set_module_args(module_args)
-
- def test_upload_firmware(self):
- """Verify exception is thrown"""
- self._set_args({"firmware": ["path_to_test_drive_firmware_1", "path_to_test_drive_firmware_2"]})
- firmware_object = NetAppESeriesDriveFirmware()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upload drive firmware"):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- with mock.patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- firmware_object.upload_firmware()
-
- def test_upgrade_list_pass(self):
- """Verify upgrade_list method pass"""
- side_effects = [(200, self.FIRMWARE_DRIVES_RESPONSE),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS00"}),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS01"}),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS02"})]
- self._set_args({"firmware": ["path/to/test_drive_firmware_1"]})
- firmware_object = NetAppESeriesDriveFirmware()
- with mock.patch(self.REQUEST_FUNC, side_effect=side_effects):
- self.assertEqual(firmware_object.upgrade_list(), [{"driveRefList": ["010000005000C5007EDE4ECF0000000000000000",
- "010000005000C5007EDF9AAB0000000000000000"],
- "filename": "test_drive_firmware_1"}])
-
- side_effects = [(200, self.FIRMWARE_DRIVES_RESPONSE),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS02"}),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS02"}),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS02"})]
- self._set_args({"firmware": ["path/to/test_drive_firmware_1"]})
- firmware_object = NetAppESeriesDriveFirmware()
- with mock.patch(self.REQUEST_FUNC, side_effect=side_effects):
- self.assertEqual(firmware_object.upgrade_list(), [])
-
- def test_upgrade_list_fail(self):
- """Verify upgrade_list method throws expected exceptions."""
- self._set_args({"firmware": ["path_to_test_drive_firmware_1"]})
- firmware_object = NetAppESeriesDriveFirmware()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to complete compatibility and health check."):
- with mock.patch(self.REQUEST_FUNC, response=Exception()):
- firmware_object.upgrade_list()
-
- side_effects = [(200, self.FIRMWARE_DRIVES_RESPONSE),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS01"}),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS00"}),
- Exception()]
- self._set_args({"firmware": ["path/to/test_drive_firmware_1"]})
- firmware_object = NetAppESeriesDriveFirmware()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve drive information."):
- with mock.patch(self.REQUEST_FUNC, side_effect=side_effects):
- firmware_object.upgrade_list()
-
- side_effects = [(200, self.FIRMWARE_DRIVES_RESPONSE),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS01"}),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS00"}),
- (200, {"offline": False, "available": True, "firmwareVersion": "MS00"})]
- self._set_args({"firmware": ["path/to/test_drive_firmware_2"], "upgrade_drives_online": True})
- firmware_object = NetAppESeriesDriveFirmware()
- with self.assertRaisesRegexp(AnsibleFailJson, "Drive is not capable of online upgrade."):
- with mock.patch(self.REQUEST_FUNC, side_effect=side_effects):
- firmware_object.upgrade_list()
-
- def test_wait_for_upgrade_completion_pass(self):
- """Verify function waits for okay status."""
- self._set_args({"firmware": ["path/to/test_drive_firmware_1", "path/to/test_drive_firmware_2"], "wait_for_completion": True})
- firmware_object = NetAppESeriesDriveFirmware()
- firmware_object.upgrade_drives_online = True
- firmware_object.upgrade_list = lambda: self.UPGRADE_LIST_RESPONSE
- with mock.patch(self.SLEEP_FUNC, return_value=None):
- with mock.patch(self.REQUEST_FUNC, side_effect=[
- (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "inProgress"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}),
- (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "inProgressRecon"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}),
- (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "pending"},
- {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}),
- (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "notAttempted"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]}),
- (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]})]):
- firmware_object.wait_for_upgrade_completion()
-
- def test_wait_for_upgrade_completion_fail(self):
- """Verify wait for upgrade completion exceptions."""
- self._set_args({"firmware": ["path/to/test_drive_firmware_1", "path/to/test_drive_firmware_2"], "wait_for_completion": True})
- firmware_object = NetAppESeriesDriveFirmware()
- firmware_object.upgrade_drives_online = True
- firmware_object.upgrade_list = lambda: self.UPGRADE_LIST_RESPONSE
- firmware_object.WAIT_TIMEOUT_SEC = 5
- response = (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "inProgress"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "inProgressRecon"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "pending"},
- {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "notAttempted"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]})
- with self.assertRaisesRegexp(AnsibleFailJson, "Timed out waiting for drive firmware upgrade."):
- with mock.patch(self.SLEEP_FUNC, return_value=None):
- with mock.patch(self.REQUEST_FUNC, return_value=response):
- firmware_object.wait_for_upgrade_completion()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve drive status."):
- with mock.patch(self.SLEEP_FUNC, return_value=None):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware_object.wait_for_upgrade_completion()
-
- response = (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "_UNDEFINED"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "inProgressRecon"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "pending"},
- {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "notAttempted"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]})
- with self.assertRaisesRegexp(AnsibleFailJson, "Drive firmware upgrade failed."):
- with mock.patch(self.SLEEP_FUNC, return_value=None):
- with mock.patch(self.REQUEST_FUNC, return_value=response):
- firmware_object.wait_for_upgrade_completion()
-
- def test_upgrade_pass(self):
- """Verify upgrade upgrade in progress variable properly reports."""
- self._set_args({"firmware": ["path/to/test_drive_firmware_1", "path/to/test_drive_firmware_2"], "wait_for_completion": False})
- firmware_object = NetAppESeriesDriveFirmware()
- firmware_object.upgrade_drives_online = True
- firmware_object.upgrade_list = lambda: {}
- with mock.patch(self.REQUEST_FUNC, return_value=(200, {})):
- firmware_object.upgrade()
- self.assertTrue(firmware_object.upgrade_in_progress)
-
- self._set_args({"firmware": ["path_to_test_drive_firmware_1", "path_to_test_drive_firmware_2"], "wait_for_completion": True})
- firmware_object = NetAppESeriesDriveFirmware()
- firmware_object.upgrade_drives_online = True
- firmware_object.upgrade_list = lambda: self.UPGRADE_LIST_RESPONSE
- with mock.patch(self.REQUEST_FUNC, side_effect=[(200, {}),
- (200, {"driveStatus": [{"driveRef": "010000005000C5007EDE4ECF0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000000", "status": "okay"},
- {"driveRef": "010000005000C5007EDE4ECF0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDF9AAB0000000000000001", "status": "okay"},
- {"driveRef": "010000005000C5007EDBE3C70000000000000001", "status": "okay"}]})]):
- firmware_object.upgrade()
- self.assertFalse(firmware_object.upgrade_in_progress)
-
- def test_upgrade_fail(self):
- """Verify upgrade method exceptions."""
- self._set_args({"firmware": ["path_to_test_drive_firmware_1", "path_to_test_drive_firmware_2"]})
- firmware_object = NetAppESeriesDriveFirmware()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upgrade drive firmware."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware_object.upgrade()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_facts.py b/test/units/modules/storage/netapp/test_netapp_e_facts.py
deleted file mode 100644
index eba930d0c8..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_facts.py
+++ /dev/null
@@ -1,455 +0,0 @@
-# (c) 2018, NetApp 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
-
-from ansible.modules.storage.netapp.netapp_e_facts import Facts
-from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args
-
-from units.compat import mock
-
-
-class FactsTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- 'api_username': 'rw',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1'
- }
- REQUEST_FUNC = 'ansible.modules.storage.netapp.netapp_e_facts.Facts.request'
- GET_CONTROLLERS_FUNC = 'ansible.modules.storage.netapp.netapp_e_facts.Facts.get_controllers'
- WORKLOAD_RESPONSE = [{"id": "4200000001000000000000000000000000000000", "name": "beegfs_metadata",
- "workloadAttributes": [{"key": "profileId", "value": "ansible_workload_1"}]},
- {"id": "4200000002000000000000000000000000000000", "name": "other_workload_1",
- "workloadAttributes": [{"key": "profileId", "value": "Other_1"}]}]
- GRAPH_RESPONSE = {
- "sa": {"saData": {"storageArrayLabel": "ictm0718s01c1", "saId": {"worldWideName": "600A098000A4B28D000000005CF10481"}, "fwVersion": "08.42.30.05",
- "chassisSerialNumber": "021633035190"},
- "featureParameters": {"cacheBlockSizes": [4096, 8192, 16384, 32768],
- "supportedSegSizes": [32768, 65536, 131072, 262144, 524288, 495616, 655360, 1982464]},
- "capabilities": ["autoCodeSync", "autoLunTransfer", "subLunsAllowed", "stagedDownload", "mixedDriveTypes", "bundleMigration", "raid6",
- "performanceTier", "secureVolume", "protectionInformation", "ssdSupport", "driveSlotLimit", "flashReadCache",
- "storagePoolsType2", "totalNumberOfArvmMirrorsPerArray", "totalNumberOfPitsPerArray", "totalNumberOfThinVolumesPerArray"],
- "premiumFeatures": [],
- "hostSpecificVals": [{"hostType": "FactoryDefault", "index": 0}, {"hostType": "W2KNETNCL", "index": 1}, {"hostPortType": "W2KNETCL", "index": 8},
- {"hostType": "LnxTPGSALUA_SF", "index": 27}, {"hostType": "LnxDHALUA", "index": 28}]}, "controller": [
- {"active": True, "quiesced": False, "status": "optimal", "controllerRef": "070000000000000000000001",
- "physicalLocation": {"trayRef": "0E00000000000000000000000000000000000000", "slot": 1,
- "locationParent": {"refType": "generic", "controllerRef": None, "symbolRef": "0000000000000000000000000000000000000000",
- "typedReference": None}, "locationPosition": 1, "label": "A"}, "manufacturer": "NETAPP ",
- "manufacturerDate": "1474675200", "appVersion": "08.42.30.05", "bootVersion": "08.42.30.05", "productID": "INF-01-00 ",
- "productRevLevel": "0842", "serialNumber": "021619039162 ", "boardID": "2806", "cacheMemorySize": 3328, "processorMemorySize": 1278,
- "hostInterfaces": [{"interfaceType": "iscsi", "fibre": None, "ib": None,
- "iscsi": {"channel": 1, "channelPortRef": "1F00010001010000000000000000000000000000", "tcpListenPort": 3260,
- "ipv4Enabled": True, "ipv4Data": {"ipv4Address": "0.0.0.0", "ipv4AddressConfigMethod": "configStatic",
- "ipv4OutboundPacketPriority": {"isEnabled": False, "value": 1},
- "ipv4VlanId": {"isEnabled": False, "value": 1},
- "ipv4AddressData": {"configState": "configured", "ipv4Address": "10.10.11.110",
- "ipv4SubnetMask": "255.255.255.0",
- "ipv4GatewayAddress": "0.0.0.0"}},
- "interfaceData": {"type": "ethernet", "ethernetData": {
- "partData": {"vendorName": "QLogic Corporation", "partNumber": "83xx", "revisionNumber": "5.5.31.511",
- "serialNumber": "00a098a4b28f"}, "macAddress": "00A098A4B293", "fullDuplex": True,
- "maximumFramePayloadSize": 9000, "currentInterfaceSpeed": "speed10gig", "maximumInterfaceSpeed": "speed10gig",
- "linkStatus": "up", "supportedInterfaceSpeeds": ["speed1gig", "speed10gig"], "autoconfigSupport": False,
- "copperCableDiagnosticsSupport": False}, "infinibandData": None},
- "interfaceRef": "2201020000000000000000000000000000000000", "ipv6Enabled": True,
- "ipv6Data": {"ipv6LocalAddresses": [
- {"address": "FE8000000000000002A098FFFEA4B293",
- "addressState": {"addressType": "typeInterface", "interfaceAddressState": "configured",
- "routerAddressState": "__UNDEFINED"}}], "ipv6RoutableAddresses": [
- {"address": "00000000000000000000000000000000",
- "addressState": {"addressType": "typeInterface", "interfaceAddressState": "unconfigured",
- "routerAddressState": "__UNDEFINED"}},
- {"address": "00000000000000000000000000000000",
- "addressState": {"addressType": "typeInterface", "interfaceAddressState": "unconfigured",
- "routerAddressState": "__UNDEFINED"}}],
- "ipv6PortRouterAddress": {"address": "00000000000000000000000000000000",
- "addressState": {"addressType": "typeRouter", "interfaceAddressState": "__UNDEFINED",
- "routerAddressState": "unknown"}},
- "ipv6AddressConfigMethod": "configStateless", "ipv6OutboundPacketPriority": {"isEnabled": False, "value": 1},
- "ipv6VlanId": {"isEnabled": False, "value": 1}, "ipv6HopLimit": 64, "ipv6NdReachableTime": 30000,
- "ipv6NdRetransmitTime": 1000, "ipv6NdStaleTimeout": 30000, "ipv6DuplicateAddressDetectionAttempts": 1},
- "physicalLocation": {"trayRef": "0000000000000000000000000000000000000000", "slot": 0,
- "locationParent": {"refType": "generic", "controllerRef": None,
- "symbolRef": "0000000000000000000000000000000000000000",
- "typedReference": None}, "locationPosition": 0, "label": ""},
- "protectionInformationCapable": True, "isIPv6Capable": True, "oneWayMaxRate": "1230000000",
- "bidirectionalMaxRate": "2120000000", "iqn": "iqn.1992-08.com.netapp:2806.600a098000a4b28d000000005cf10481",
- "controllerId": "070000000000000000000001",
- "addressId": "iqn.1992-08.com.netapp:2806.600a098000a4b28d000000005cf10481",
- "niceAddressId": "iqn.1992-08.com.netapp:2806.600a098000a4b28d000000005cf10481",
- "interfaceId": "2201020000000000000000000000000000000000", "id": "2201020000000000000000000000000000000000"},
- "sas": None, "sata": None, "scsi": None}],
- "driveInterfaces": [
- {"interfaceType": "sas", "fibre": None, "ib": None, "iscsi": None,
- "sas": {"channel": 1, "currentInterfaceSpeed": "speed12gig", "maximumInterfaceSpeed": "speed12gig", "part": "LSISAS3008",
- "revision": 172688896, "isDegraded": False,
- "iocPort": {
- "parent": {"type": "controller", "controller": "070000000000000000000001", "drive": None, "expander": None, "hostBoardRef": None},
- "attachedDevice": {"channel": 1, "channelType": "driveside",
- "sasAttachedDeviceData": {"type": "expander", "alternateController": None, "drive": None,
- "expander": "2000000000000000000000630001000000000000",
- "remoteHostPortAddress": None,
- "localController": None, "physicalLocation": None}}, "state": "optimal",
- "miswireType": "None", "channelPortRef": "1F01000001010000000000000000000000000000",
- "sasPhys": [{"phyIdentifier": 4, "isOperational": True}, {"phyIdentifier": 5, "isOperational": True},
- {"phyIdentifier": 6, "isOperational": True}, {"phyIdentifier": 7, "isOperational": True}],
- "portTypeData": {"portType": "endDevice", "portIdentifier": "500A098A4B28D004", "routingType": "__UNDEFINED"},
- "portMode": "internal",
- "domainNumber": 1, "attachedChannelPortRef": "0000000000000000000000000000000000000000", "discoveryStatus": 0},
- "interfaceRef": "2201000000000000000000000000000000000000",
- "physicalLocation": {"trayRef": "0000000000000000000000000000000000000000", "slot": 0,
- "locationParent": {"refType": "generic", "controllerRef": None,
- "symbolRef": "0000000000000000000000000000000000000000", "typedReference": None},
- "locationPosition": 0, "label": ""}, "protectionInformationCapable": True, "oneWayMaxRate": "4400000000",
- "bidirectionalMaxRate": "8400000000", "controllerId": None, "addressId": "500A098A4B28D004", "niceAddressId": "500A098A4B28D004",
- "interfaceId": "2201000000000000000000000000000000000000", "basePortAddress": "500A098A4B28D00",
- "id": "2201000000000000000000000000000000000000"}, "sata": None, "scsi": None}],
- "netInterfaces": [{"interfaceType": "ethernet",
- "ethernet": {"interfaceName": "wan0", "channel": 1, "speed": 1000, "ip": 175178176, "alias": "ictm0718s01c1-a",
- "macAddr": "00A098A4B28D", "gatewayIp": 175177985, "subnetMask": -256, "bootpUsed": False, "rloginEnabled": True,
- "reserved1": "0000000000000000", "setupError": False, "reserved2": "",
- "interfaceRef": "2800070000000000000000000001000000000000", "linkStatus": "up", "ipv4Enabled": True,
- "ipv4Address": "10.113.1.192", "ipv4SubnetMask": "255.255.255.0", "ipv4AddressConfigMethod": "configStatic",
- "ipv6Enabled": False, "ipv6LocalAddress": {"address": "00000000000000000000000000000000",
- "addressState": {"addressType": "typeInterface",
- "interfaceAddressState": "configured",
- "routerAddressState": "__UNDEFINED"}},
- "ipv6PortStaticRoutableAddress": {"address": "00000000000000000000000000000000",
- "addressState": {"addressType": "typeInterface",
- "interfaceAddressState": "__UNDEFINED",
- "routerAddressState": "__UNDEFINED"}},
- "ipv6PortRoutableAddresses": [], "ipv6AddressConfigMethod": "configStatic", "fullDuplex": True,
- "supportedSpeedSettings": ["speedAutoNegotiated", "speed10MbitHalfDuplex", "speed10MbitFullDuplex",
- "speed100MbitHalfDuplex", "speed100MbitFullDuplex", "speed1000MbitFullDuplex"],
- "configuredSpeedSetting": "speedAutoNegotiated", "currentSpeed": "speed1gig",
- "physicalLocation": {"trayRef": "0E00000000000000000000000000000000000000", "slot": 0,
- "locationParent": {"refType": "controller", "controllerRef": "070000000000000000000001",
- "symbolRef": None, "typedReference": None}, "locationPosition": 1,
- "label": "P1"}, "ipv4GatewayAddress": "10.113.1.1",
- "controllerRef": "070000000000000000000001", "controllerSlot": 1,
- "dnsProperties": {
- "acquisitionProperties": {"dnsAcquisitionType": "stat",
- "dnsServers": [
- {"addressType": "ipv4", "ipv4Address": "10.193.0.250", "ipv6Address": None},
- {"addressType": "ipv4", "ipv4Address": "10.192.0.250", "ipv6Address": None}]},
- "dhcpAcquiredDnsServers": []},
- "ntpProperties": {
- "acquisitionProperties": {"ntpAcquisitionType": "stat", "ntpServers": [
- {"addrType": "ipvx", "domainName": None,
- "ipvxAddress": {"addressType": "ipv4", "ipv4Address": "216.239.35.0", "ipv6Address": None}},
- {"addrType": "ipvx", "domainName": None,
- "ipvxAddress": {"addressType": "ipv4", "ipv4Address": "216.239.35.4", "ipv6Address": None}}]},
- "dhcpAcquiredNtpServers": []},
- "id": "2800070000000000000000000001000000000000"}}],
- "inventory": [], "reserved1": "000000000000000000000000", "reserved2": "", "hostBoardID": "None", "physicalCacheMemorySize": 4864,
- "readyToRemove": False, "boardSubmodelID": "319", "submodelSupported": True, "oemPartNumber": "E2800A-8GB", "partNumber": "111-02829+C0 ",
- "rtrAttributes": {"cruType": "dedicated", "parentCru": None, "rtrAttributeData": {"hasReadyToRemoveIndicator": False, "readyToRemove": False}},
- "bootTime": "1563988406", "modelName": "2806",
- "networkSettings": {"ipv4DefaultRouterAddress": "10.113.1.1",
- "ipv6DefaultRouterAddress": {"address": "00000000000000000000000000000000",
- "addressState": {"addressType": "typeInterface",
- "interfaceAddressState": "__UNDEFINED", "routerAddressState": "__UNDEFINED"}},
- "ipv6CandidateDefaultRouterAddresses": [],
- "remoteAccessEnabled": True,
- "dnsProperties": {"acquisitionProperties": {"dnsAcquisitionType": "stat",
- "dnsServers": [
- {"addressType": "ipv4", "ipv4Address": "10.193.0.250", "ipv6Address": None},
- {"addressType": "ipv4", "ipv4Address": "10.192.0.250", "ipv6Address": None}]},
- "dhcpAcquiredDnsServers": []},
- "ntpProperties": {
- "acquisitionProperties": {
- "ntpAcquisitionType": "stat", "ntpServers": [
- {"addrType": "ipvx", "domainName": None,
- "ipvxAddress": {"addressType": "ipv4", "ipv4Address": "216.239.35.0", "ipv6Address": None}},
- {"addrType": "ipvx", "domainName": None,
- "ipvxAddress": {"addressType": "ipv4", "ipv4Address": "216.239.35.4", "ipv6Address": None}}]},
- "dhcpAcquiredNtpServers": []}},
- "repairPolicy": {"removalData": {"removalMethod": "__UNDEFINED", "rtrAttributes": None}, "replacementMethod": "__UNDEFINED"},
- "flashCacheMemorySize": 419430400, "ctrlIocDumpData": {"iocDumpNeedsRetrieved": False, "iocDumpTag": 0, "timeStamp": "0"},
- "locateInProgress": False, "hasTrayIdentityIndicator": False, "controllerErrorMode": "notInErrorMode",
- "codeVersions": [{"codeModule": "raid", "versionString": "08.42.30.05"}, {"codeModule": "hypervisor", "versionString": "08.42.30.05"},
- {"codeModule": "management", "versionString": "11.42.0000.0026"}, {"codeModule": "iom", "versionString": "11.42.0G00.0001"},
- {"codeModule": "bundle", "versionString": "08.42.30.05"}, {"codeModule": "bundleDisplay", "versionString": "11.40.3R2"}],
- "id": "070000000000000000000001"}],
- "drive": [{"offline": False, "hotSpare": False, "invalidDriveData": False, "available": True, "pfa": False,
- "driveRef": "0100000050000396AC882ED10000000000000000", "status": "optimal", "cause": "None",
- "interfaceType": {"driveType": "sas", "fibre": None,
- "sas": {"deviceName": "50000396AC882ED1",
- "drivePortAddresses": [{"channel": 2, "portIdentifier": "50000396AC882ED3"},
- {"channel": 1, "portIdentifier": "50000396AC882ED2"}]},
- "scsi": None},
- "physicalLocation": {"trayRef": "0E00000000000000000000000000000000000000", "slot": 6,
- "locationParent": {"refType": "genericTyped", "controllerRef": None, "symbolRef": None,
- "typedReference": {"componentType": "tray",
- "symbolRef": "0E00000000000000000000000000000000000000"}},
- "locationPosition": 6, "label": "5"}, "manufacturer": "TOSHIBA ",
- "manufacturerDate": "1447200000", "productID": "PX04SVQ160 ", "serialNumber": "Y530A001T5MD", "softwareVersion": "MSB6", "blkSize": 512,
- "usableCapacity": "1599784443904", "rawCapacity": "1600321314816", "worldWideName": "50000396AC882ED10000000000000000",
- "currentVolumeGroupRef": "0000000000000000000000000000000000000000", "sparedForDriveRef": "0000000000000000000000000000000000000000",
- "mirrorDrive": "0000000000000000000000000000000000000000", "nonRedundantAccess": False, "workingChannel": -1, "volumeGroupIndex": -1,
- "currentSpeed": "speed12gig", "maxSpeed": "speed12gig", "uncertified": False, "hasDegradedChannel": False, "degradedChannels": [],
- "phyDriveType": "sas", "spindleSpeed": 0, "rtrAttributes": {"cruType": "dedicated", "parentCru": None,
- "rtrAttributeData": {"hasReadyToRemoveIndicator": False,
- "readyToRemove": False}}, "reserved": "",
- "phyDriveTypeData": {"phyDriveType": "sas", "sataDriveAttributes": None}, "pfaReason": "None", "bypassSource": [],
- "repairPolicy": {"removalData": {"removalMethod": "self", "rtrAttributes": {"hasReadyToRemoveIndicator": False, "readyToRemove": False}},
- "replacementMethod": "self"}, "fdeCapable": True, "fdeEnabled": False, "fdeLocked": False,
- "lockKeyID": "0000000000000000000000000000000000000000",
- "ssdWearLife": {"averageEraseCountPercent": 18, "spareBlocksRemainingPercent": 91, "isWearLifeMonitoringSupported": True,
- "percentEnduranceUsed": 18}, "driveMediaType": "ssd", "fpgaVersion": "",
- "protectionInformationCapabilities": {"protectionInformationCapable": True, "protectionType": "type2Protection"},
- "protectionInformationCapable": False, "protectionType": "type0Protection", "interposerPresent": False,
- "interposerRef": "0000000000000000000000000000000000000000", "currentCommandAgingTimeout": 6, "defaultCommandAgingTimeout": 6,
- "driveTemperature": {"currentTemp": 25, "refTemp": 64}, "blkSizePhysical": 4096, "lowestAlignedLBA": "0", "removed": False,
- "locateInProgress": False, "fipsCapable": False, "firmwareVersion": "MSB6", "lockKeyIDValue": None,
- "id": "0100000050000396AC882ED10000000000000000"},
- {"offline": False, "hotSpare": False, "invalidDriveData": False, "available": True, "pfa": False,
- "driveRef": "0100000050000396AC882EDD0000000000000000", "status": "optimal", "cause": "None",
- "interfaceType": {"driveType": "sas", "fibre": None,
- "sas": {"deviceName": "50000396AC882EDD",
- "drivePortAddresses": [{"channel": 2, "portIdentifier": "50000396AC882EDF"},
- {"channel": 1, "portIdentifier": "50000396AC882EDE"}]},
- "scsi": None},
- "physicalLocation": {"trayRef": "0E00000000000000000000000000000000000000", "slot": 8,
- "locationParent": {"refType": "genericTyped", "controllerRef": None, "symbolRef": None,
- "typedReference": {"componentType": "tray",
- "symbolRef": "0E00000000000000000000000000000000000000"}},
- "locationPosition": 8, "label": "7"}, "manufacturer": "TOSHIBA ",
- "manufacturerDate": "1447200000", "productID": "PX04SVQ160 ", "serialNumber": "Y530A004T5MD", "softwareVersion": "MSB6", "blkSize": 512,
- "usableCapacity": "1599784443904", "rawCapacity": "1600321314816", "worldWideName": "50000396AC882EDD0000000000000000",
- "currentVolumeGroupRef": "0000000000000000000000000000000000000000", "sparedForDriveRef": "0000000000000000000000000000000000000000",
- "mirrorDrive": "0000000000000000000000000000000000000000", "nonRedundantAccess": False, "workingChannel": -1, "volumeGroupIndex": -1,
- "currentSpeed": "speed12gig", "maxSpeed": "speed12gig", "uncertified": False, "hasDegradedChannel": False, "degradedChannels": [],
- "phyDriveType": "sas", "spindleSpeed": 0, "rtrAttributes": {"cruType": "dedicated", "parentCru": None,
- "rtrAttributeData": {"hasReadyToRemoveIndicator": False,
- "readyToRemove": False}}, "reserved": "",
- "phyDriveTypeData": {"phyDriveType": "sas", "sataDriveAttributes": None}, "pfaReason": "None", "bypassSource": [],
- "repairPolicy": {"removalData": {"removalMethod": "self", "rtrAttributes": {"hasReadyToRemoveIndicator": False, "readyToRemove": False}},
- "replacementMethod": "self"}, "fdeCapable": True, "fdeEnabled": False, "fdeLocked": False,
- "lockKeyID": "0000000000000000000000000000000000000000",
- "ssdWearLife": {"averageEraseCountPercent": 18, "spareBlocksRemainingPercent": 91, "isWearLifeMonitoringSupported": True,
- "percentEnduranceUsed": 18}, "driveMediaType": "ssd", "fpgaVersion": "",
- "protectionInformationCapabilities": {"protectionInformationCapable": True, "protectionType": "type2Protection"},
- "protectionInformationCapable": False, "protectionType": "type0Protection", "interposerPresent": False,
- "interposerRef": "0000000000000000000000000000000000000000", "currentCommandAgingTimeout": 6, "defaultCommandAgingTimeout": 6,
- "driveTemperature": {"currentTemp": 25, "refTemp": 64}, "blkSizePhysical": 4096, "lowestAlignedLBA": "0", "removed": False,
- "locateInProgress": False, "fipsCapable": False, "firmwareVersion": "MSB6", "lockKeyIDValue": None,
- "id": "0100000050000396AC882EDD0000000000000000"}],
- "volumeGroup": [
- {"sequenceNum": 1, "offline": False, "raidLevel": "raid6", "worldWideName": "600A098000A4B9D10000380A5D4AAC3C",
- "volumeGroupRef": "04000000600A098000A4B9D10000380A5D4AAC3C", "reserved1": "000000000000000000000000", "reserved2": "",
- "trayLossProtection": False, "label": "beegfs_storage_vg", "state": "complete", "spindleSpeedMatch": True, "spindleSpeed": 10500,
- "isInaccessible": False, "securityType": "capable", "drawerLossProtection": False, "protectionInformationCapable": False,
- "protectionInformationCapabilities": {"protectionInformationCapable": True, "protectionType": "type2Protection"},
- "volumeGroupData": {"type": "unknown", "diskPoolData": None},
- "usage": "standard", "driveBlockFormat": "allNative", "reservedSpaceAllocated": False, "securityLevel": "fde", "usedSpace": "1099511627776",
- "totalRaidedSpace": "9597654597632",
- "extents": [{"sectorOffset": "268435456", "rawCapacity": "8498142969856", "raidLevel": "raid6",
- "volumeGroupRef": "04000000600A098000A4B9D10000380A5D4AAC3C", "freeExtentRef": "03000000600A098000A4B9D10000380A5D4AAC3C",
- "reserved1": "000000000000000000000000", "reserved2": ""}],
- "largestFreeExtentSize": "8498142969856", "raidStatus": "optimal", "freeSpace": "8498142969856", "drivePhysicalType": "sas",
- "driveMediaType": "hdd", "normalizedSpindleSpeed": "spindleSpeed10k", "diskPool": False,
- "id": "04000000600A098000A4B9D10000380A5D4AAC3C", "name": "beegfs_storage_vg"}], "volume": [
- {"offline": False, "extremeProtection": False, "volumeHandle": 0, "raidLevel": "raid6", "sectorOffset": "0",
- "worldWideName": "600A098000A4B28D00003E435D4AAC54", "label": "beegfs_storage_01_1", "blkSize": 512, "capacity": "1099511627776",
- "reconPriority": 1, "segmentSize": 131072, "action": "None",
- "cache": {"cwob": False, "enterpriseCacheDump": False, "mirrorActive": True, "mirrorEnable": True, "readCacheActive": False,
- "readCacheEnable": False, "writeCacheActive": True, "writeCacheEnable": True, "cacheFlushModifier": "flush10Sec",
- "readAheadMultiplier": 1}, "mediaScan": {"enable": True, "parityValidationEnable": True},
- "volumeRef": "02000000600A098000A4B28D00003E435D4AAC54", "status": "optimal", "volumeGroupRef": "04000000600A098000A4B9D10000380A5D4AAC3C",
- "currentManager": "070000000000000000000001", "preferredManager": "070000000000000000000001",
- "perms": {"mapToLUN": True, "snapShot": True, "format": True, "reconfigure": True, "mirrorPrimary": True, "mirrorSecondary": True,
- "copySource": True, "copyTarget": True, "readable": True, "writable": True, "rollback": True, "mirrorSync": True, "newImage": True,
- "allowDVE": True, "allowDSS": True, "concatVolumeMember": False, "flashReadCache": True, "asyncMirrorPrimary": True,
- "asyncMirrorSecondary": True, "pitGroup": True, "cacheParametersChangeable": True, "allowThinManualExpansion": False,
- "allowThinGrowthParametersChange": False},
- "mgmtClientAttribute": 0, "dssPreallocEnabled": False, "dssMaxSegmentSize": 0, "preReadRedundancyCheckEnabled": False,
- "protectionInformationCapable": False, "protectionType": "type0Protection", "applicationTagOwned": True,
- "repairedBlockCount": 0, "extendedUniqueIdentifier": "", "cacheMirroringValidateProtectionInformation": False,
- "expectedProtectionInformationAppTag": 0, "volumeUse": "standardVolume", "volumeFull": False, "volumeCopyTarget": False, "volumeCopySource": False,
- "pitBaseVolume": False, "asyncMirrorTarget": False, "asyncMirrorSource": False, "remoteMirrorSource": False, "remoteMirrorTarget": False,
- "diskPool": False, "flashCached": False, "increasingBy": "0", "metadata": [], "dataAssurance": False, "objectType": "volume",
- "listOfMappings": [
- {"lunMappingRef": "88000000A1010000000000000000000000000000", "lun": 1, "ssid": 0, "perms": 15,
- "volumeRef": "02000000600A098000A4B28D00003E435D4AAC54", "type": "host", "mapRef": "84000000600A098000A4B28D00303D065D430118",
- "id": "88000000A1010000000000000000000000000000"}],
- "mapped": True, "currentControllerId": "070000000000000000000001",
- "cacheSettings": {"cwob": False, "enterpriseCacheDump": False, "mirrorActive": True, "mirrorEnable": True, "readCacheActive": False,
- "readCacheEnable": False, "writeCacheActive": True, "writeCacheEnable": True, "cacheFlushModifier": "flush10Sec",
- "readAheadMultiplier": 1},
- "thinProvisioned": False, "preferredControllerId": "070000000000000000000001", "totalSizeInBytes": "1099511627776", "onlineVolumeCopy": False,
- "wwn": "600A098000A4B28D00003E435D4AAC54", "name": "beegfs_storage_01_1", "id": "02000000600A098000A4B28D00003E435D4AAC54"}],
- "storagePoolBundle": {"cluster": [], "host": [
- {"hostRef": "84000000600A098000A4B28D00303D005D430107", "clusterRef": "0000000000000000000000000000000000000000", "label": "test",
- "isSAControlled": False, "confirmLUNMappingCreation": False, "hostTypeIndex": 28, "protectionInformationCapableAccessMethod": True,
- "isLargeBlockFormatHost": False, "isLun0Restricted": False, "ports": [],
- "initiators": [
- {"initiatorRef": "89000000600A098000A4B9D1003037005D4300F5",
- "nodeName": {"ioInterfaceType": "iscsi", "iscsiNodeName": "iqn.iscsi_tests1", "remoteNodeWWN": None, "nvmeNodeName": None},
- "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "iscsi_test1",
- "configuredAuthMethods": {"authMethodData": [{"authMethod": "None", "chapSecret": None}]},
- "hostRef": "84000000600A098000A4B28D00303D005D430107", "initiatorInactive": False, "id": "89000000600A098000A4B9D1003037005D4300F5"}],
- "hostSidePorts": [{"type": "iscsi", "address": "iqn.iscsi_tests1", "label": "iscsi_test1"}],
- "id": "84000000600A098000A4B28D00303D005D430107", "name": "test"},
- {"hostRef": "84000000600A098000A4B9D1003037035D4300F8", "clusterRef": "0000000000000000000000000000000000000000", "label": "test2",
- "isSAControlled": True, "confirmLUNMappingCreation": False, "hostTypeIndex": 28, "protectionInformationCapableAccessMethod": True,
- "isLargeBlockFormatHost": False, "isLun0Restricted": False, "ports": [],
- "initiators": [
- {"initiatorRef": "89000000600A098000A4B9D1003037075D4300F9",
- "nodeName": {"ioInterfaceType": "iscsi", "iscsiNodeName": "iqn.iscsi_tests2", "remoteNodeWWN": None, "nvmeNodeName": None},
- "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "iscsi_test2",
- "configuredAuthMethods": {"authMethodData": [{"authMethod": "None", "chapSecret": None}]},
- "hostRef": "84000000600A098000A4B9D1003037035D4300F8", "initiatorInactive": False, "id": "89000000600A098000A4B9D1003037075D4300F9"}],
- "hostSidePorts": [{"type": "iscsi", "address": "iqn.iscsi_tests2", "label": "iscsi_test2"}],
- "id": "84000000600A098000A4B9D1003037035D4300F8", "name": "test2"},
- {"hostRef": "84000000600A098000A4B28D00303D065D430118", "clusterRef": "0000000000000000000000000000000000000000", "label": "beegfs_storage1",
- "isSAControlled": False, "confirmLUNMappingCreation": False, "hostTypeIndex": 28, "protectionInformationCapableAccessMethod": True,
- "isLargeBlockFormatHost": False, "isLun0Restricted": False, "ports": [],
- "initiators": [
- {"initiatorRef": "89000000600A098000A4B28D00303CF55D4300E3",
- "nodeName": {"ioInterfaceType": "iscsi", "iscsiNodeName": "iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818", "remoteNodeWWN": None,
- "nvmeNodeName": None}, "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_storage1_iscsi_0",
- "configuredAuthMethods": {"authMethodData": [{"authMethod": "None", "chapSecret": None}]},
- "hostRef": "84000000600A098000A4B28D00303D065D430118", "initiatorInactive": False, "id": "89000000600A098000A4B28D00303CF55D4300E3"}],
- "hostSidePorts": [{"type": "iscsi", "address": "iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818", "label": "beegfs_storage1_iscsi_0"}],
- "id": "84000000600A098000A4B28D00303D065D430118", "name": "beegfs_storage1"},
- {"hostRef": "84000000600A098000A4B9D10030370B5D430109", "clusterRef": "0000000000000000000000000000000000000000", "label": "beegfs_metadata1",
- "isSAControlled": False, "confirmLUNMappingCreation": False, "hostTypeIndex": 28, "protectionInformationCapableAccessMethod": True,
- "isLargeBlockFormatHost": False, "isLun0Restricted": False, "ports": [],
- "initiators": [
- {"initiatorRef": "89000000600A098000A4B28D00303CFC5D4300F7",
- "nodeName": {"ioInterfaceType": "iscsi", "iscsiNodeName": "iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8", "remoteNodeWWN": None,
- "nvmeNodeName": None}, "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_metadata1_iscsi_0",
- "configuredAuthMethods": {"authMethodData": [{"authMethod": "None", "chapSecret": None}]},
- "hostRef": "84000000600A098000A4B9D10030370B5D430109", "initiatorInactive": False, "id": "89000000600A098000A4B28D00303CFC5D4300F7"}],
- "hostSidePorts": [{"type": "iscsi", "address": "iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8", "label": "beegfs_metadata1_iscsi_0"}],
- "id": "84000000600A098000A4B9D10030370B5D430109", "name": "beegfs_metadata1"}], "lunMapping": [
- {"lunMappingRef": "8800000000000000000000000000000000000000", "lun": 7, "ssid": 16384, "perms": 15,
- "volumeRef": "21000000600A098000A4B28D000027EC5CF10481", "type": "all", "mapRef": "0000000000000000000000000000000000000000",
- "id": "8800000000000000000000000000000000000000"},
- {"lunMappingRef": "880000008B010000000000000000000000000000", "lun": 7, "ssid": 16384, "perms": 15,
- "volumeRef": "21000000600A098000A4B28D000027EC5CF10481", "type": "host", "mapRef": "84000000600A098000A4B28D00303D065D430118",
- "id": "880000008B010000000000000000000000000000"},
- {"lunMappingRef": "8800000090010000000000000000000000000000", "lun": 7, "ssid": 16384, "perms": 15,
- "volumeRef": "21000000600A098000A4B28D000027EC5CF10481", "type": "host", "mapRef": "84000000600A098000A4B9D10030370B5D430109",
- "id": "8800000090010000000000000000000000000000"},
- {"lunMappingRef": "8800000092010000000000000000000000000000", "lun": 7, "ssid": 16384, "perms": 15,
- "volumeRef": "21000000600A098000A4B28D000027EC5CF10481", "type": "host", "mapRef": "84000000600A098000A4B28D00303D005D430107",
- "id": "8800000092010000000000000000000000000000"}, {"lunMappingRef": "88000000A1010000000000000000000000000000", "lun": 1, "ssid": 0, "perms": 15,
- "volumeRef": "02000000600A098000A4B28D00003E435D4AAC54", "type": "host",
- "mapRef": "84000000600A098000A4B28D00303D065D430118",
- "id": "88000000A1010000000000000000000000000000"}]}, "highLevelVolBundle": {"pit": []}}
-
- EXPECTED_GET_ARRAY_FACTS = {'facts_from_proxy': False, 'netapp_controllers': [{'name': 'A', 'serial': '021619039162', 'status': 'optimal'}],
- 'netapp_disks': [
- {'available': True, 'firmware_version': 'MSB6', 'id': '0100000050000396AC882ED10000000000000000', 'media_type': 'ssd',
- 'product_id': 'PX04SVQ160 ', 'serial_number': 'Y530A001T5MD', 'status': 'optimal',
- 'tray_ref': '0E00000000000000000000000000000000000000', 'usable_bytes': '1599784443904'},
- {'available': True, 'firmware_version': 'MSB6', 'id': '0100000050000396AC882EDD0000000000000000', 'media_type': 'ssd',
- 'product_id': 'PX04SVQ160 ', 'serial_number': 'Y530A004T5MD', 'status': 'optimal',
- 'tray_ref': '0E00000000000000000000000000000000000000', 'usable_bytes': '1599784443904'}],
- 'netapp_driveside_interfaces': [{'controller': 'A', 'interface_speed': '12g', 'interface_type': 'sas'}],
- 'netapp_enabled_features': ['autoCodeSync', 'autoLunTransfer', 'bundleMigration', 'driveSlotLimit', 'flashReadCache',
- 'mixedDriveTypes', 'performanceTier', 'protectionInformation', 'raid6', 'secureVolume',
- 'ssdSupport', 'stagedDownload', 'storagePoolsType2', 'subLunsAllowed',
- 'totalNumberOfArvmMirrorsPerArray', 'totalNumberOfPitsPerArray',
- 'totalNumberOfThinVolumesPerArray'], 'netapp_host_groups': [],
- 'netapp_host_types': [{'index': 0, 'type': 'FactoryDefault'}, {'index': 1, 'type': 'W2KNETNCL'},
- {'index': 27, 'type': 'LnxTPGSALUA_SF'}, {'index': 28, 'type': 'LnxDHALUA'}],
- 'netapp_hosts': [
- {'group_id': '0000000000000000000000000000000000000000', 'host_type_index': 28,
- 'hosts_reference': '84000000600A098000A4B28D00303D005D430107',
- 'id': '84000000600A098000A4B28D00303D005D430107', 'name': 'test',
- 'posts': [{'address': 'iqn.iscsi_tests1', 'label': 'iscsi_test1', 'type': 'iscsi'}]},
- {'group_id': '0000000000000000000000000000000000000000', 'host_type_index': 28,
- 'hosts_reference': '84000000600A098000A4B9D1003037035D4300F8',
- 'id': '84000000600A098000A4B9D1003037035D4300F8', 'name': 'test2',
- 'posts': [{'address': 'iqn.iscsi_tests2', 'label': 'iscsi_test2', 'type': 'iscsi'}]},
- {'group_id': '0000000000000000000000000000000000000000', 'host_type_index': 28,
- 'hosts_reference': '84000000600A098000A4B28D00303D065D430118',
- 'id': '84000000600A098000A4B28D00303D065D430118', 'name': 'beegfs_storage1',
- 'posts': [{'address': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818', 'label': 'beegfs_storage1_iscsi_0',
- 'type': 'iscsi'}]},
- {'group_id': '0000000000000000000000000000000000000000', 'host_type_index': 28,
- 'hosts_reference': '84000000600A098000A4B9D10030370B5D430109',
- 'id': '84000000600A098000A4B9D10030370B5D430109', 'name': 'beegfs_metadata1',
- 'posts': [{'address': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8', 'label': 'beegfs_metadata1_iscsi_0',
- 'type': 'iscsi'}]}],
- 'netapp_hostside_interfaces': [{'fc': [], 'ib': [],
- 'iscsi': [
- {'controller': 'A', 'current_interface_speed': '10g', 'ipv4_address': '10.10.11.110',
- 'ipv4_enabled': True,
- 'ipv4_gateway': '0.0.0.0', 'ipv4_subnet_mask': '255.255.255.0', 'ipv6_enabled': True,
- 'iqn': 'iqn.1992-08.com.netapp:2806.600a098000a4b28d000000005cf10481', 'link_status': 'up',
- 'mtu': 9000,
- 'supported_interface_speeds': ['1g', '10g']}], 'sas': []}],
- 'netapp_management_interfaces': [
- {'alias': 'ictm0718s01c1-a', 'channel': 1, 'controller': 'A', 'dns_config_method': 'stat',
- 'dns_servers': [{'addressType': 'ipv4', 'ipv4Address': '10.193.0.250', 'ipv6Address': None},
- {'addressType': 'ipv4', 'ipv4Address': '10.192.0.250', 'ipv6Address': None}],
- 'ipv4_address': '10.113.1.192',
- 'ipv4_address_config_method': 'static', 'ipv4_enabled': True, 'ipv4_gateway': '10.113.1.1',
- 'ipv4_subnet_mask': '255.255.255.0', 'ipv6_enabled': False, 'link_status': 'up',
- 'mac_address': '00A098A4B28D', 'name': 'wan0', 'ntp_config_method': 'stat',
- 'ntp_servers': [
- {'addrType': 'ipvx', 'domainName': None,
- 'ipvxAddress': {'addressType': 'ipv4', 'ipv4Address': '216.239.35.0', 'ipv6Address': None}},
- {'addrType': 'ipvx', 'domainName': None,
- 'ipvxAddress': {'addressType': 'ipv4', 'ipv4Address': '216.239.35.4', 'ipv6Address': None}}],
- 'remote_ssh_access': True}],
- 'netapp_storage_array': {'cache_block_sizes': [4096, 8192, 16384, 32768], 'chassis_serial': '021633035190',
- 'firmware': '08.42.30.05', 'name': 'ictm0718s01c1',
- 'segment_sizes': [32768, 65536, 131072, 262144, 524288, 495616, 655360, 1982464],
- 'wwn': '600A098000A4B28D000000005CF10481'},
- 'netapp_storage_pools': [
- {'available_capacity': '8498142969856', 'id': '04000000600A098000A4B9D10000380A5D4AAC3C', 'name': 'beegfs_storage_vg',
- 'total_capacity': '9597654597632', 'used_capacity': '1099511627776'}],
- 'netapp_volumes': [
- {'capacity': '1099511627776', 'id': '02000000600A098000A4B28D00003E435D4AAC54', 'is_thin_provisioned': False,
- 'name': 'beegfs_storage_01_1', 'parent_storage_pool_id': '04000000600A098000A4B9D10000380A5D4AAC3C', 'workload': []}],
- 'netapp_volumes_by_initiators': {'beegfs_metadata1': [],
- 'beegfs_storage1': [{
- 'id': '02000000600A098000A4B28D00003E435D4AAC54',
- 'meta_data': {},
- 'name': 'beegfs_storage_01_1',
- 'workload_name': '',
- 'wwn': '600A098000A4B28D00003E435D4AAC54'}],
- 'test': [], 'test2': []},
- 'netapp_workload_tags': [
- {'attributes': [{'key': 'profileId', 'value': 'ansible_workload_1'}], 'id': '4200000001000000000000000000000000000000',
- 'name': 'beegfs_metadata'},
- {'attributes': [{'key': 'profileId', 'value': 'Other_1'}], 'id': '4200000002000000000000000000000000000000',
- 'name': 'other_workload_1'}], 'snapshot_images': [], 'ssid': '1'}
-
- def _set_args(self, **kwargs):
- module_args = self.REQUIRED_PARAMS.copy()
- if kwargs is not None:
- module_args.update(kwargs)
- set_module_args(module_args)
-
- def test_get_controllers_pass(self):
- """Verify get_controllers returns the expected results."""
- self._set_args()
- facts = Facts()
- with mock.patch(self.REQUEST_FUNC, return_value=(200, ["070000000000000000000002", "070000000000000000000001"])):
- self.assertEqual(facts.get_controllers(), {"070000000000000000000001": "A", "070000000000000000000002": "B"})
-
- def test_get_controllers_fail(self):
- """Verify get_controllers throws the expected exceptions."""
- self._set_args()
- facts = Facts()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve controller list!"):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- facts.get_controllers()
-
- def test_get_array_facts_pass(self):
- """Verify get_array_facts method returns expected results."""
- self._set_args()
- facts = Facts()
- facts.is_embedded = lambda: True
- with mock.patch(self.GET_CONTROLLERS_FUNC, return_value={"070000000000000000000001": "A", "070000000000000000000002": "B"}):
- with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.GRAPH_RESPONSE), (200, self.WORKLOAD_RESPONSE)]):
- self.assertEqual(facts.get_array_facts(), self.EXPECTED_GET_ARRAY_FACTS)
diff --git a/test/units/modules/storage/netapp/test_netapp_e_firmware.py b/test/units/modules/storage/netapp/test_netapp_e_firmware.py
deleted file mode 100644
index f1f4caac37..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_firmware.py
+++ /dev/null
@@ -1,555 +0,0 @@
-# (c) 2018, NetApp 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
-
-try:
- from unittest.mock import patch, mock_open
-except ImportError:
- from mock import patch, mock_open
-
-from ansible.module_utils import six
-from ansible.modules.storage.netapp.netapp_e_firmware import NetAppESeriesFirmware
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-if six.PY2:
- builtin_path = "__builtin__.open"
-else:
- builtin_path = "builtins.open"
-
-
-def mock_open_with_iter(*args, **kwargs):
- mock = mock_open(*args, **kwargs)
-
- if six.PY2:
- mock.return_value.__iter__ = lambda x: iter(x.readline, "")
- else:
- mock.return_value.__iter__ = lambda x: x
- mock.return_value.__next__ = lambda x: iter(x.readline, "")
- return mock
-
-
-class FirmwareTest(ModuleTestCase):
- REQUIRED_PARAMS = {"api_username": "username",
- "api_password": "password",
- "api_url": "http://localhost/devmgr/v2",
- "ssid": "1",
- "validate_certs": "no"}
- REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_firmware.NetAppESeriesFirmware.request"
- BASE_REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_firmware.request"
- CREATE_MULTIPART_FORMDATA_FUNC = "ansible.modules.storage.netapp.netapp_e_firmware.create_multipart_formdata"
- SLEEP_FUNC = "ansible.modules.storage.netapp.netapp_e_firmware.sleep"
- BUNDLE_HEADER = b'combined_content\x00\x00\x00\x04\x00\x00\x07\xf8#Engenio Downloadable Package\n#Tue Jun 04 11:46:48 CDT 2019\ncheckList=compatibleBoard' \
- b'Map,compatibleSubmodelMap,compatibleFirmwareMap,fileManifest\ncompatibleSubmodelMap=261|true,262|true,263|true,264|true,276|true,277|t' \
- b'rue,278|true,282|true,300|true,301|true,302|true,318|true,319|true,320|true,321|true,322|true,323|true,324|true,325|true,326|true,328|t' \
- b'rue,329|true,330|true,331|true,332|true,333|true,338|true,339|true,340|true,341|true,342|true,343|true,344|true,345|true,346|true,347|t' \
- b'rue,356|true,357|true,390|true\nnonDisplayableAttributeList=512\ndisplayableAttributeList=FILENAME|RCB_11.40.5_280x_5ceef00e.dlp,VERSI' \
- b'ON|11.40.5\ndacStoreLimit=512\nfileManifest=metadata.tar|metadata|08.42.50.00.000|c04275f98fc2f07bd63126fc57cb0569|bundle|10240,084250' \
- b'00_m3_e30_842_root.img|linux|08.42.50.00|367c5216e5c4b15b904a025bff69f039|linux|1342177280,RC_08425000_m3_e30_842_280x.img|linux_cfw|0' \
- b'8.42.50.00|e6589b0a50b29ff34b34d3ced8ae3ccb|eos|1073741824,msw.img|sam|11.42.0000.0028|ef3ee5589ab4a019a3e6f83768364aa1|linux|41943040' \
- b'0,iom.img|iom|11.42.0G00.0003|9bb740f8d3a4e62a0f2da2ec83c254c4|linux|8177664\nmanagementVersionList=devmgr.v1142api8.Manager\ncompatib' \
- b'leFirmwareMap=08.30.*.*|true,08.30.*.30|false,08.30.*.31|false,08.30.*.32|false,08.30.*.33|false,08.30.*.34|false,08.30.*.35|false,08.' \
- b'30.*.36|false,08.30.*.37|false,08.30.*.38|false,08.30.*.39|false,08.40.*.*|true,08.40.*.30|false,08.40.*.31|false,08.40.*.32|false,08.4' \
- b'0.*.33|false,08.40.*.34|false,08.40.*.35|false,08.40.*.36|false,08.40.*.37|false,08.40.*.38|false,08.40.*.39|false,08.41.*.*|true,08.4' \
- b'1.*.30|false,08.41.*.31|false,08.41.*.32|false,08.41.*.33|false,08.41.*.34|false,08.41.*.35|false,08.41.*.36|false,08.41.*.37|false,08' \
- b'.41.*.38|false,08.41.*.39|false,08.42.*.*|true,08.42.*.30|false,08.42.*.31|false,08.42.*.32|false,08.42.*.33|false,08.42.*.34|false,08' \
- b'.42.*.35|false,08.42.*.36|false,08.42.*.37|false,08.42.*.38|false,08.42.*.39|false\nversion=08.42.50.00.000\ntype=tar\nversionTag=comb' \
- b'ined_content\n'
-
- NVSRAM_HEADER = b'nvsram \x00\x00\x00\x01\x00\x00\x00\xa0\x00\x00\x00\x04280X\x00\x00\x00\x00\x00\x00\x00\x032801 2804 2806 \x00\x00' \
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x1bArapaho controller, 8.52 FW\x00\x00\x001dual controller configuration, with cac' \
- b'he battery\x07\x81A\x08Config\x00\x00\x0008.52.00.00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\xdc\xaf\x00\x00' \
- b'\x94\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00 2801 2804 2806 \x00\x00\x00\x00\x00' \
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
- b'\x00\x00\x00\x00\x00\x00Board\n .Board Name = "NetApp RAID Controller"\n .NVSRAM Configuration Number' \
- b' = "N280X-852834-D02"\n\nUserCfg\n .Enable Synchronous Negotiation = 0x00 \n'
-
- def _set_args(self, args=None):
- module_args = self.REQUIRED_PARAMS.copy()
- if args is not None:
- module_args.update(args)
- set_module_args(module_args)
-
- def test_is_firmware_bundled_pass(self):
- """Determine whether firmware file is bundled."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- with patch(builtin_path, mock_open(read_data=b"firmwarexxxxxxxx")) as mock_file:
- firmware = NetAppESeriesFirmware()
- self.assertEqual(firmware.is_firmware_bundled(), False)
-
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- with patch(builtin_path, mock_open(read_data=self.BUNDLE_HEADER[:16])) as mock_file:
- firmware = NetAppESeriesFirmware()
- self.assertEqual(firmware.is_firmware_bundled(), True)
-
- def test_is_firmware_bundles_fail(self):
- """Verify non-firmware fails."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- with patch(builtin_path, mock_open(read_data=b"xxxxxxxxxxxxxxxx")) as mock_file:
- firmware = NetAppESeriesFirmware()
- with self.assertRaisesRegexp(AnsibleFailJson, "Firmware file is invalid."):
- firmware.is_firmware_bundled()
-
- def test_firmware_version(self):
- """Verify correct firmware version is returned."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
- firmware.is_firmware_bundled = lambda: True
- with patch(builtin_path, mock_open_with_iter(read_data=self.BUNDLE_HEADER)) as mock_file:
- self.assertEqual(firmware.firmware_version(), b"11.40.5")
-
- def test_nvsram_version(self):
- """Verify correct nvsram version is returned."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
-
- with patch(builtin_path, mock_open_with_iter(read_data=self.NVSRAM_HEADER)) as mock_file:
- self.assertEqual(firmware.nvsram_version(), b"N280X-852834-D02")
-
- def test_check_system_health_pass(self):
- """Validate check_system_health method."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": "1"}),
- (200, {"healthCheckRunning": True,
- "results": [{"processingTimeMS": 0}]}),
- (200, {"healthCheckRunning": False,
- "results": [{"successful": True}]})]):
- firmware.check_system_health()
-
- def test_check_system_health_fail(self):
- """Validate check_system_health method throws proper exceptions."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
- with patch("time.sleep", return_value=None):
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to initiate health check."):
- with patch(self.REQUEST_FUNC, return_value=(404, Exception())):
- firmware.check_system_health()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve health check status."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": "1"}),
- (404, Exception())]):
- firmware.check_system_health()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Health check failed to complete."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": "1"}),
- (200, {"healthCheckRunning": True,
- "results": [{"processingTimeMS": 120001}]})]):
- firmware.check_system_health()
-
- def test_embedded_check_nvsram_compatibility_pass(self):
- """Verify embedded nvsram compatibility."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with patch(self.REQUEST_FUNC, return_value=(200, {"signatureTestingPassed": True,
- "fileCompatible": True,
- "versionContents": [{"module": "nvsram",
- "bundledVersion": "N280X-842834-D02",
- "onboardVersion": "N280X-842834-D02"}]})):
- firmware.embedded_check_nvsram_compatibility()
-
- def test_embedded_check_nvsram_compatibility_fail(self):
- """Verify embedded nvsram compatibility fails with expected exceptions."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
-
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve NVSRAM compatibility results."):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.embedded_check_nvsram_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Invalid NVSRAM file."):
- with patch(self.REQUEST_FUNC, return_value=(200, {"signatureTestingPassed": False,
- "fileCompatible": False,
- "versionContents": [{"module": "nvsram",
- "bundledVersion": "N280X-842834-D02",
- "onboardVersion": "N280X-842834-D02"}]})):
- firmware.embedded_check_nvsram_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Incompatible NVSRAM file."):
- with patch(self.REQUEST_FUNC, return_value=(200, {"signatureTestingPassed": True,
- "fileCompatible": False,
- "versionContents": [{"module": "nvsram",
- "bundledVersion": "N280X-842834-D02",
- "onboardVersion": "N280X-842834-D02"}]})):
- firmware.embedded_check_nvsram_compatibility()
-
- def test_embedded_check_firmware_compatibility_pass(self):
- """Verify embedded firmware compatibility."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
-
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with patch(self.REQUEST_FUNC, return_value=(200, {
- "signatureTestingPassed": True,
- "fileCompatible": True,
- "versionContents": [
- {"module": "bundle", "bundledVersion": "08.42.50.00.000", "onboardVersion": "08.42.30.05"},
- {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"},
- {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"},
- {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})):
- firmware.embedded_check_bundle_compatibility()
-
- def test_embedded_check_firmware_compatibility_fail(self):
- """Verify embedded firmware compatibility fails with expected exceptions."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve bundle compatibility results."):
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.embedded_check_bundle_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Invalid firmware bundle file."):
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with patch(self.REQUEST_FUNC, return_value=(200, {
- "signatureTestingPassed": False,
- "fileCompatible": True,
- "versionContents": [
- {"module": "bundle", "bundledVersion": "08.42.50.00.000", "onboardVersion": "08.42.30.05"},
- {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"},
- {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"},
- {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})):
- firmware.embedded_check_bundle_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Incompatible firmware bundle file."):
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with patch(self.REQUEST_FUNC, return_value=(200, {
- "signatureTestingPassed": True,
- "fileCompatible": False,
- "versionContents": [
- {"module": "bundle", "bundledVersion": "08.42.50.00.000", "onboardVersion": "08.42.30.05"},
- {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"},
- {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"},
- {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})):
- firmware.embedded_check_bundle_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Downgrades are not permitted."):
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with patch(self.REQUEST_FUNC, return_value=(200, {
- "signatureTestingPassed": True,
- "fileCompatible": True,
- "versionContents": [
- {"module": "bundle", "bundledVersion": "08.42.00.00.000", "onboardVersion": "08.50.30.05"},
- {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"},
- {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"},
- {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})):
- firmware.embedded_check_bundle_compatibility()
- with self.assertRaisesRegexp(AnsibleFailJson, "Downgrades are not permitted."):
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with patch(self.REQUEST_FUNC, return_value=(200, {
- "signatureTestingPassed": True,
- "fileCompatible": True,
- "versionContents": [
- {"module": "bundle", "bundledVersion": "08.42.00.00.000", "onboardVersion": "09.20.30.05"},
- {"module": "bundleDisplay", "bundledVersion": "11.40.5", "onboardVersion": "11.40.3R2"},
- {"module": "hypervisor", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "raid", "bundledVersion": "08.42.50.00", "onboardVersion": "08.42.30.05"},
- {"module": "management", "bundledVersion": "11.42.0000.0028", "onboardVersion": "11.42.0000.0026"},
- {"module": "iom", "bundledVersion": "11.42.0G00.0003", "onboardVersion": "11.42.0G00.0001"}]})):
- firmware.embedded_check_bundle_compatibility()
-
- def test_embedded_wait_for_upgrade_pass(self):
- """Verify controller reboot wait succeeds."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
- firmware.firmware_version = lambda: b"11.40.3R2"
- firmware.nvsram_version = lambda: b"N280X-842834-D02"
- with patch(self.SLEEP_FUNC, return_value=None):
- with patch(self.REQUEST_FUNC, return_value=(200, [{"fwVersion": "08.42.30.05", "nvsramVersion": "N280X-842834-D02",
- "extendedSAData": {"codeVersions": [{"codeModule": "bundleDisplay",
- "versionString": "11.40.3R2"}]}}])):
- firmware.embedded_wait_for_upgrade()
-
- def test_embedded_wait_for_upgrade_fail(self):
- """Verify controller reboot wait throws expected exceptions"""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
- with self.assertRaisesRegexp(AnsibleFailJson, "Timeout waiting for Santricity Web Services Embedded."):
- with patch(self.SLEEP_FUNC, return_value=None):
- with patch(self.BASE_REQUEST_FUNC, return_value=Exception()):
- firmware.embedded_wait_for_upgrade()
-
- def test_embedded_upgrade_pass(self):
- """Verify embedded upgrade function."""
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with patch(self.SLEEP_FUNC, return_value=None):
-
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
- with patch(self.REQUEST_FUNC, return_value=(200, "")):
- with patch(self.BASE_REQUEST_FUNC, side_effect=[Exception(), Exception(), (200, "")]):
- firmware.embedded_upgrade()
- self.assertTrue(firmware.upgrade_in_progress)
-
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp", "wait_for_completion": True})
- firmware = NetAppESeriesFirmware()
- firmware.firmware_version = lambda: b"11.40.3R2"
- firmware.nvsram_version = lambda: b"N280X-842834-D02"
- with patch(self.REQUEST_FUNC, return_value=(200, [{"fwVersion": "08.42.30.05", "nvsramVersion": "N280X-842834-D02",
- "extendedSAData": {"codeVersions": [{"codeModule": "bundleDisplay",
- "versionString": "11.40.3R2"}]}}])):
- firmware.embedded_upgrade()
- self.assertFalse(firmware.upgrade_in_progress)
-
- def test_embedded_upgrade_fail(self):
- """Verify embedded upgrade throws expected exception."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test.dlp"})
- firmware = NetAppESeriesFirmware()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upload and activate firmware."):
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("", {})):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.embedded_upgrade()
-
- def test_check_nvsram_compatibility_pass(self):
- """Verify proxy nvsram compatibility."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
- with patch(self.SLEEP_FUNC, return_value=None):
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}),
- (200, {"checkRunning": True}),
- (200, {"checkRunning": False,
- "results": [{"nvsramFiles": [{"filename": "test_nvsram.dlp"}]}]})]):
- firmware.proxy_check_nvsram_compatibility()
-
- def test_check_nvsram_compatibility_fail(self):
- """Verify proxy nvsram compatibility throws expected exceptions."""
- self._set_args({"firmware": "test.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
- with patch(self.SLEEP_FUNC, return_value=None):
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to receive NVSRAM compatibility information."):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.proxy_check_nvsram_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve NVSRAM status update from proxy."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}), Exception()]):
- firmware.proxy_check_nvsram_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "NVSRAM is not compatible."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}),
- (200, {"checkRunning": True}),
- (200, {"checkRunning": False,
- "results": [{"nvsramFiles": [{"filename": "not_test_nvsram.dlp"}]}]})]):
- firmware.proxy_check_nvsram_compatibility()
-
- def test_check_firmware_compatibility_pass(self):
- """Verify proxy firmware compatibility."""
- self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
- with patch(self.SLEEP_FUNC, return_value=None):
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}),
- (200, {"checkRunning": True}),
- (200, {"checkRunning": False,
- "results": [{"cfwFiles": [{"filename": "test_firmware.dlp"}]}]})]):
- firmware.proxy_check_firmware_compatibility()
-
- def test_check_firmware_compatibility_fail(self):
- """Verify proxy firmware compatibility throws expected exceptions."""
- self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
-
- with patch(self.SLEEP_FUNC, return_value=None):
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to receive firmware compatibility information."):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.proxy_check_firmware_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve firmware status update from proxy."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}), Exception()]):
- firmware.proxy_check_firmware_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Firmware bundle is not compatible."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"requestId": 1}),
- (200, {"checkRunning": True}),
- (200, {"checkRunning": False,
- "results": [{"cfwFiles": [{"filename": "not_test_firmware.dlp"}]}]})]):
- firmware.proxy_check_firmware_compatibility()
-
- def test_proxy_upload_and_check_compatibility_pass(self):
- """Verify proxy_upload_and_check_compatibility"""
- self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
- firmware.proxy_check_nvsram_compatibility = lambda: None
- firmware.proxy_check_firmware_compatibility = lambda: None
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("headers", "data")):
- with patch(self.REQUEST_FUNC, side_effect=[(200, [{"version": "XX.XX.XX.XX", "filename": "test"},
- {"version": "XXXXXXXXXX", "filename": "test.dlp"}]),
- (200, None), (200, None)]):
- firmware.proxy_upload_and_check_compatibility()
-
- with patch(self.REQUEST_FUNC, return_value=(200, [{"version": "XX.XX.XX.XX", "filename": "test"},
- {"version": "test_nvsram", "filename": "test_nvsram.dlp"},
- {"version": "test", "filename": "test.dlp"},
- {"filename": "test_firmware.dlp", "version": "test_firmware"}])):
- firmware.proxy_upload_and_check_compatibility()
-
- def test_proxy_upload_and_check_compatibility_fail(self):
- """Verify proxy_upload_and_check_compatibility throws expected exceptions."""
- self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
- firmware.proxy_check_nvsram_compatibility = lambda: None
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve existing existing firmware files."):
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("headers", "data")):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.proxy_upload_and_check_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upload NVSRAM file."):
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("headers", "data")):
- with patch(self.REQUEST_FUNC, side_effect=[(200, [{"version": "XX.XX.XX.XX", "filename": "test"},
- {"version": "XXXXXXXXXX", "filename": "test.dlp"}]),
- Exception()]):
- firmware.proxy_upload_and_check_compatibility()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to upload firmware bundle file."):
- with patch(self.CREATE_MULTIPART_FORMDATA_FUNC, return_value=("headers", "data")):
- with patch(self.REQUEST_FUNC, side_effect=[(200, [{"version": "XX.XX.XX.XX", "filename": "test"},
- {"version": "XXXXXXXXXX", "filename": "test.dlp"}]),
- (200, None), Exception()]):
- firmware.proxy_upload_and_check_compatibility()
-
- def test_proxy_check_upgrade_required_pass(self):
- """Verify proxy_check_upgrade_required."""
- self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
-
- firmware.firmware_version = lambda: b"08.42.50.00"
- firmware.nvsram_version = lambda: b"nvsram_version"
- with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]):
- firmware.is_firmware_bundled = lambda: True
- firmware.proxy_check_upgrade_required()
- self.assertFalse(firmware.upgrade_required)
-
- with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]):
- firmware.is_firmware_bundled = lambda: False
- firmware.proxy_check_upgrade_required()
- self.assertFalse(firmware.upgrade_required)
-
- firmware.firmware_version = lambda: b"08.42.50.00"
- firmware.nvsram_version = lambda: b"not_nvsram_version"
- with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]):
- firmware.is_firmware_bundled = lambda: True
- firmware.proxy_check_upgrade_required()
- self.assertTrue(firmware.upgrade_required)
-
- with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]):
- firmware.is_firmware_bundled = lambda: False
- firmware.proxy_check_upgrade_required()
- self.assertTrue(firmware.upgrade_required)
-
- firmware.firmware_version = lambda: b"08.52.00.00"
- firmware.nvsram_version = lambda: b"nvsram_version"
- with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]):
- firmware.is_firmware_bundled = lambda: True
- firmware.proxy_check_upgrade_required()
- self.assertTrue(firmware.upgrade_required)
-
- with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]):
- firmware.is_firmware_bundled = lambda: False
- firmware.proxy_check_upgrade_required()
- self.assertTrue(firmware.upgrade_required)
-
- firmware.firmware_version = lambda: b"08.52.00.00"
- firmware.nvsram_version = lambda: b"not_nvsram_version"
- with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]):
- firmware.is_firmware_bundled = lambda: True
- firmware.proxy_check_upgrade_required()
- self.assertTrue(firmware.upgrade_required)
-
- with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]):
- firmware.is_firmware_bundled = lambda: False
- firmware.proxy_check_upgrade_required()
- self.assertTrue(firmware.upgrade_required)
-
- def test_proxy_check_upgrade_required_fail(self):
- """Verify proxy_check_upgrade_required throws expected exceptions."""
- self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
-
- firmware.firmware_version = lambda: b"08.42.50.00"
- firmware.nvsram_version = lambda: b"not_nvsram_version"
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve controller firmware information."):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.proxy_check_upgrade_required()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve storage system's NVSRAM version."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), Exception()]):
- firmware.is_firmware_bundled = lambda: True
- firmware.proxy_check_upgrade_required()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve storage system's NVSRAM version."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), Exception()]):
- firmware.is_firmware_bundled = lambda: False
- firmware.proxy_check_upgrade_required()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Downgrades are not permitted."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, [{"versionString": "08.42.50.00"}]), (200, ["nvsram_version"])]):
- firmware.firmware_version = lambda: b"08.40.00.00"
- firmware.nvsram_version = lambda: "nvsram_version"
- firmware.is_firmware_bundled = lambda: True
- firmware.proxy_check_upgrade_required()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Downgrades are not permitted."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.42.50.00"]), (200, ["nvsram_version"])]):
- firmware.is_firmware_bundled = lambda: False
- firmware.proxy_check_upgrade_required()
-
- def test_proxy_wait_for_upgrade_pass(self):
- """Verify proxy_wait_for_upgrade."""
- with patch(self.SLEEP_FUNC, return_value=None):
- self._set_args({"firmware": "test_firmware.dlp", "nvsram": "expected_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
-
- firmware.is_firmware_bundled = lambda: True
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"status": "not_done"}), (200, {"status": "complete"})]):
- firmware.proxy_wait_for_upgrade("1")
-
- firmware.is_firmware_bundled = lambda: False
- firmware.firmware_version = lambda: b"08.50.00.00"
- firmware.nvsram_version = lambda: b"expected_nvsram"
- with patch(self.REQUEST_FUNC, side_effect=[(200, ["08.40.00.00"]), (200, ["not_expected_nvsram"]),
- (200, ["08.50.00.00"]), (200, ["expected_nvsram"])]):
- firmware.proxy_wait_for_upgrade("1")
-
- def test_proxy_wait_for_upgrade_fail(self):
- """Verify proxy_wait_for_upgrade throws expected exceptions."""
- with patch(self.SLEEP_FUNC, return_value=None):
- self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
-
- firmware.is_firmware_bundled = lambda: True
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve firmware upgrade status."):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.proxy_wait_for_upgrade("1")
-
- firmware.is_firmware_bundled = lambda: False
- with self.assertRaisesRegexp(AnsibleFailJson, "Timed out waiting for firmware upgrade to complete."):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.proxy_wait_for_upgrade("1")
-
- firmware.is_firmware_bundled = lambda: True
- with self.assertRaisesRegexp(AnsibleFailJson, "Firmware upgrade failed to complete."):
- with patch(self.REQUEST_FUNC, side_effect=[(200, {"status": "not_done"}), (200, {"status": "failed"})]):
- firmware.proxy_wait_for_upgrade("1")
-
- def test_proxy_upgrade_fail(self):
- """Verify proxy_upgrade throws expected exceptions."""
- self._set_args({"firmware": "test_firmware.dlp", "nvsram": "test_nvsram.dlp"})
- firmware = NetAppESeriesFirmware()
-
- firmware.is_firmware_bundled = lambda: True
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to initiate firmware upgrade."):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.proxy_upgrade()
-
- firmware.is_firmware_bundled = lambda: False
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to initiate firmware upgrade."):
- with patch(self.REQUEST_FUNC, return_value=Exception()):
- firmware.proxy_upgrade()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_global.py b/test/units/modules/storage/netapp/test_netapp_e_global.py
deleted file mode 100644
index e944f8e851..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_global.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-
-from ansible.modules.storage.netapp.netapp_e_global import GlobalSettings
-from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args
-
-__metaclass__ = type
-from units.compat import mock
-
-
-class GlobalSettingsTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- 'api_username': 'rw',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1',
- }
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_global.request'
-
- def _set_args(self, args=None):
- module_args = self.REQUIRED_PARAMS.copy()
- if args is not None:
- module_args.update(args)
- set_module_args(module_args)
-
- def test_set_name(self):
- """Ensure we can successfully set the name"""
- self._set_args(dict(name="x"))
-
- expected = dict(name='y', status='online')
- namer = GlobalSettings()
- # Expecting an update
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- with mock.patch.object(namer, 'get_name', return_value='y'):
- update = namer.update_name()
- self.assertTrue(update)
- # Expecting no update
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- with mock.patch.object(namer, 'get_name', return_value='x'):
- update = namer.update_name()
- self.assertFalse(update)
-
- # Expecting an update, but no actual calls, since we're using check_mode=True
- namer.check_mode = True
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- with mock.patch.object(namer, 'get_name', return_value='y'):
- update = namer.update_name()
- self.assertEqual(0, req.called)
- self.assertTrue(update)
-
- def test_get_name(self):
- """Ensure we can successfully set the name"""
- self._set_args()
-
- expected = dict(name='y', status='online')
- namer = GlobalSettings()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- name = namer.get_name()
- self.assertEqual(name, expected['name'])
-
- def test_get_name_fail(self):
- """Ensure we can successfully set the name"""
- self._set_args()
-
- expected = dict(name='y', status='offline')
- namer = GlobalSettings()
-
- with self.assertRaises(AnsibleFailJson):
- with mock.patch(self.REQ_FUNC, side_effect=Exception()) as req:
- name = namer.get_name()
-
- with self.assertRaises(AnsibleFailJson):
- with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- update = namer.update_name()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_host.py b/test/units/modules/storage/netapp/test_netapp_e_host.py
deleted file mode 100644
index db10b85205..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_host.py
+++ /dev/null
@@ -1,489 +0,0 @@
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from ansible.modules.storage.netapp.netapp_e_host import Host
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-__metaclass__ = type
-
-try:
- from unittest import mock
-except ImportError:
- import mock
-
-
-class HostTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- 'api_username': 'rw',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1',
- 'name': '1',
- }
- HOST = {
- 'name': '1',
- 'hostRef': '123',
- 'label': '1',
- 'id': '0' * 30,
- 'clusterRef': 40 * '0',
- 'hostTypeIndex': 28,
- 'hostSidePorts': [],
- 'initiators': [],
- 'ports': [],
- }
- HOST_ALT = {
- 'name': '2',
- 'label': '2',
- 'id': '1' * 30,
- 'clusterRef': '1',
- 'hostSidePorts': [],
- 'initiators': [],
- 'ports': [],
- }
- EXISTING_HOSTS = [
- {"hostRef": "84000000600A098000A4B28D00303D065D430118", "clusterRef": "0000000000000000000000000000000000000000", "label": "beegfs_storage1",
- "hostTypeIndex": 28, "ports": [], "initiators": [{"initiatorRef": "89000000600A098000A4B28D00303CF55D4300E3",
- "nodeName": {"ioInterfaceType": "iscsi",
- "iscsiNodeName": "iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818",
- "remoteNodeWWN": None, "nvmeNodeName": None},
- "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_storage1_iscsi_0",
- "hostRef": "84000000600A098000A4B28D00303D065D430118",
- "id": "89000000600A098000A4B28D00303CF55D4300E3"}],
- "hostSidePorts": [{"type": "iscsi", "address": "iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818", "label": "beegfs_storage1_iscsi_0"}],
- "id": "84000000600A098000A4B28D00303D065D430118", "name": "beegfs_storage1"},
- {"hostRef": "84000000600A098000A4B9D10030370B5D430109", "clusterRef": "0000000000000000000000000000000000000000", "label": "beegfs_metadata1",
- "hostTypeIndex": 28, "ports": [], "initiators": [{"initiatorRef": "89000000600A098000A4B28D00303CFC5D4300F7",
- "nodeName": {"ioInterfaceType": "iscsi",
- "iscsiNodeName": "iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8",
- "remoteNodeWWN": None, "nvmeNodeName": None},
- "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_metadata1_iscsi_0",
- "hostRef": "84000000600A098000A4B9D10030370B5D430109",
- "id": "89000000600A098000A4B28D00303CFC5D4300F7"}],
- "hostSidePorts": [{"type": "iscsi", "address": "iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8", "label": "beegfs_metadata1_iscsi_0"}],
- "id": "84000000600A098000A4B9D10030370B5D430109", "name": "beegfs_metadata1"},
- {"hostRef": "84000000600A098000A4B9D10030370B5D430109", "clusterRef": "85000000600A098000A4B9D1003637135D483DEB", "label": "beegfs_metadata2",
- "hostTypeIndex": 28, "ports": [], "initiators": [{"initiatorRef": "89000000600A098000A4B28D00303CFC5D4300F7",
- "nodeName": {"ioInterfaceType": "iscsi",
- "iscsiNodeName": "iqn.used_elsewhere",
- "remoteNodeWWN": None, "nvmeNodeName": None},
- "alias": {"ioInterfaceType": "iscsi", "iscsiAlias": ""}, "label": "beegfs_metadata2_iscsi_0",
- "hostRef": "84000000600A098000A4B9D10030370B5D430109",
- "id": "89000000600A098000A4B28D00303CFC5D4300F7"}],
- "hostSidePorts": [{"type": "iscsi", "address": "iqn.used_elsewhere", "label": "beegfs_metadata2_iscsi_0"}],
- "id": "84000000600A098000A4B9D10030370B5D430120", "name": "beegfs_metadata2"}]
- HOST_GROUPS = [{"clusterRef": "85000000600A098000A4B9D1003637135D483DEB", "label": "test_group", "isSAControlled": False,
- "confirmLUNMappingCreation": False, "protectionInformationCapableAccessMethod": True, "isLun0Restricted": False,
- "id": "85000000600A098000A4B9D1003637135D483DEB", "name": "test_group"}]
- HOST_TYPES = [{"name": "FactoryDefault", "index": 0, "code": "FactoryDefault"},
- {"name": "Windows 2000/Server 2003/Server 2008 Non-Clustered", "index": 1, "code": "W2KNETNCL"},
- {"name": "Solaris", "index": 2, "code": "SOL"},
- {"name": "Linux", "index": 6, "code": "LNX"},
- {"name": "LnxALUA", "index": 7, "code": "LnxALUA"},
- {"name": "Windows 2000/Server 2003/Server 2008 Clustered", "index": 8, "code": "W2KNETCL"},
- {"name": "LnxTPGSALUA_SF", "index": 27, "code": "LnxTPGSALUA_SF"},
- {"name": "LnxDHALUA", "index": 28, "code": "LnxDHALUA"}]
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_host.request'
-
- def _set_args(self, args):
- module_args = self.REQUIRED_PARAMS.copy()
- module_args.update(args)
- set_module_args(module_args)
-
- def test_host_exists_pass(self):
- """Verify host_exists produces expected results."""
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'new_host', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'new_host_port_1', 'type': 'fc', 'port': '0x08ef08ef08ef08ef'}]})
- host = Host()
- self.assertFalse(host.host_exists())
-
- self._set_args({'state': 'present', 'name': 'does_not_exist', 'host_type': 'linux dm-mp',
- 'ports': [{'label': 'beegfs_storage1_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
- host = Host()
- self.assertFalse(host.host_exists())
-
- self._set_args({'state': 'present', 'name': 'beegfs_storage1', 'host_type': 'linux dm-mp',
- 'ports': [{'label': 'beegfs_storage1_iscsi_0', 'type': 'iscsi', 'port': 'iqn.differentiqn.org'}]})
- host = Host()
- self.assertTrue(host.host_exists())
-
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
- host = Host()
- self.assertTrue(host.host_exists())
-
- def test_host_exists_fail(self):
- """Verify host_exists produces expected exceptions."""
- self._set_args({'state': 'present', 'host_type': 'linux dm-mp', 'ports': [{'label': 'abc', 'type': 'iscsi', 'port': 'iqn:0'}]})
- host = Host()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to determine host existence."):
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- host.host_exists()
-
- def test_needs_update_pass(self):
- """Verify needs_update produces expected results."""
- # No changes
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp',
- 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.host_exists()
- self.assertFalse(host.needs_update())
-
- # Change host type
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
-
- # Add port to host
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
-
- # Change port name
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_2', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
-
- # take port from another host by force
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True,
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
-
- def test_needs_update_fail(self):
- """Verify needs_update produces expected exceptions."""
- with self.assertRaisesRegexp(AnsibleFailJson, "is associated with a different host."):
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.host_exists()
- host.needs_update()
-
- def test_valid_host_type_pass(self):
- """Validate the available host types."""
- with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_TYPES)):
- self._set_args({'state': 'present', 'host_type': '0'})
- host = Host()
- self.assertTrue(host.valid_host_type())
- self._set_args({'state': 'present', 'host_type': '28'})
- host = Host()
- self.assertTrue(host.valid_host_type())
- self._set_args({'state': 'present', 'host_type': 'windows'})
- host = Host()
- self.assertTrue(host.valid_host_type())
- self._set_args({'state': 'present', 'host_type': 'linux dm-mp'})
- host = Host()
- self.assertTrue(host.valid_host_type())
-
- def test_valid_host_type_fail(self):
- """Validate the available host types."""
- with self.assertRaisesRegexp(AnsibleFailJson, "host_type must be either a host type name or host type index found integer the documentation"):
- self._set_args({'state': 'present', 'host_type': 'non-host-type'})
- host = Host()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_TYPES)):
- with self.assertRaisesRegexp(AnsibleFailJson, "There is no host type with index"):
- self._set_args({'state': 'present', 'host_type': '4'})
- host = Host()
- host.valid_host_type()
-
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to get host types."):
- self._set_args({'state': 'present', 'host_type': '4'})
- host = Host()
- host.valid_host_type()
-
- def test_group_id_pass(self):
- """Verify group_id produces expected results."""
- with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_GROUPS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- self.assertEqual(host.group_id(), "0000000000000000000000000000000000000000")
-
- self._set_args({'state': 'present', 'name': 'beegfs_metadata2', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group',
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- self.assertEqual(host.group_id(), "85000000600A098000A4B9D1003637135D483DEB")
-
- def test_group_id_fail(self):
- """Verify group_id produces expected exceptions."""
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to get host groups."):
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata2', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group2',
- 'ports': [
- {'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.group_id()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "No group with the name:"):
- with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_GROUPS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata2', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group2',
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.group_id()
-
- def test_assigned_host_ports_pass(self):
- """Verify assigned_host_ports gives expected results."""
-
- # Add an unused port to host
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
- self.assertEqual(host.assigned_host_ports(), {})
-
- # Change port name (force)
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_2', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
- self.assertEqual(host.assigned_host_ports(), {'84000000600A098000A4B9D10030370B5D430109': ['89000000600A098000A4B28D00303CFC5D4300F7']})
-
- # Change port type
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'fc', 'port': '08:ef:7e:24:52:a0'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
- self.assertEqual(host.assigned_host_ports(), {})
-
- # take port from another host by force
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True,
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
- self.assertEqual(host.assigned_host_ports(), {'84000000600A098000A4B9D10030370B5D430109': ['89000000600A098000A4B28D00303CFC5D4300F7']})
-
- # take port from another host by force
- with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS), (200, {})]):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True,
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
- self.assertEqual(host.assigned_host_ports(apply_unassigning=True),
- {'84000000600A098000A4B9D10030370B5D430109': ['89000000600A098000A4B28D00303CFC5D4300F7']})
-
- def test_assigned_host_ports_fail(self):
- """Verify assigned_host_ports gives expected exceptions."""
- # take port from another
- with self.assertRaisesRegexp(AnsibleFailJson, "There are no host ports available OR there are not enough unassigned host ports"):
- with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS)]):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_2', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
- host.assigned_host_ports(apply_unassigning=True)
-
- # take port from another host and fail because force == False
- with self.assertRaisesRegexp(AnsibleFailJson, "There are no host ports available OR there are not enough unassigned host ports"):
- with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS)]):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
- host.assigned_host_ports(apply_unassigning=True)
-
- # take port from another host and fail because force == False
- with self.assertRaisesRegexp(AnsibleFailJson, "There are no host ports available OR there are not enough unassigned host ports"):
- with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS)]):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata3', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
- host = Host()
- host.host_exists()
- host.assigned_host_ports(apply_unassigning=True)
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to unassign host port."):
- with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS), Exception()]):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True,
- 'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
- host = Host()
- host.host_exists()
- self.assertTrue(host.needs_update())
- host.assigned_host_ports(apply_unassigning=True)
-
- def test_update_host_pass(self):
- """Verify update_host produces expected results."""
- # Change host type
- with self.assertRaises(AnsibleExitJson):
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
- host = Host()
- host.build_success_payload = lambda x: {}
- host.host_exists()
- self.assertTrue(host.needs_update())
- host.update_host()
-
- # Change port iqn
- with self.assertRaises(AnsibleExitJson):
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]})
- host = Host()
- host.build_success_payload = lambda x: {}
- host.host_exists()
- self.assertTrue(host.needs_update())
- host.update_host()
-
- # Change port type to fc
- with self.assertRaises(AnsibleExitJson):
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'fc', 'port': '0x08ef08ef08ef08ef'}]})
- host = Host()
- host.build_success_payload = lambda x: {}
- host.host_exists()
- self.assertTrue(host.needs_update())
- host.update_host()
-
- # Change port name
- with self.assertRaises(AnsibleExitJson):
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True,
- 'ports': [{'label': 'beegfs_metadata1_iscsi_12', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.build_success_payload = lambda x: {}
- host.host_exists()
- self.assertTrue(host.needs_update())
- host.update_host()
-
- # Change group
- with self.assertRaises(AnsibleExitJson):
- with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': False, 'group': 'test_group',
- 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.build_success_payload = lambda x: {}
- host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB"
- host.host_exists()
- self.assertTrue(host.needs_update())
- host.update_host()
-
- def test_update_host_fail(self):
- """Verify update_host produces expected exceptions."""
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to update host."):
- with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS), Exception()]):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': False, 'group': 'test_group',
- 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.build_success_payload = lambda x: {}
- host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB"
- host.host_exists()
- self.assertTrue(host.needs_update())
- host.update_host()
-
- def test_create_host_pass(self):
- """Verify create_host produces expected results."""
- def _assigned_host_ports(apply_unassigning=False):
- return None
-
- with self.assertRaises(AnsibleExitJson):
- with mock.patch(self.REQ_FUNC, return_value=(200, {'id': '84000000600A098000A4B9D10030370B5D430109'})):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, 'group': 'test_group',
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
- host = Host()
- host.host_exists = lambda: False
- host.assigned_host_ports = _assigned_host_ports
- host.build_success_payload = lambda x: {}
- host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB"
- host.create_host()
-
- def test_create_host_fail(self):
- """Verify create_host produces expected exceptions."""
- def _assigned_host_ports(apply_unassigning=False):
- return None
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create host."):
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, 'group': 'test_group',
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
- host = Host()
- host.host_exists = lambda: False
- host.assigned_host_ports = _assigned_host_ports
- host.build_success_payload = lambda x: {}
- host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB"
- host.create_host()
-
- with self.assertRaisesRegexp(AnsibleExitJson, "Host already exists."):
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, 'group': 'test_group',
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
- host = Host()
- host.host_exists = lambda: True
- host.assigned_host_ports = _assigned_host_ports
- host.build_success_payload = lambda x: {}
- host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB"
- host.create_host()
-
- def test_remove_host_pass(self):
- """Verify remove_host produces expected results."""
- with mock.patch(self.REQ_FUNC, return_value=(200, None)):
- self._set_args({'state': 'absent', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group',
- 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.host_obj = {"id": "84000000600A098000A4B9D10030370B5D430109"}
- host.remove_host()
-
- def test_remove_host_fail(self):
- """Verify remove_host produces expected exceptions."""
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to remove host."):
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- self._set_args({'state': 'absent', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False, 'group': 'test_group',
- 'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
- 'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
- host = Host()
- host.host_obj = {"id": "84000000600A098000A4B9D10030370B5D430109"}
- host.remove_host()
-
- def test_build_success_payload(self):
- """Validate success payload."""
- def _assigned_host_ports(apply_unassigning=False):
- return None
-
- self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True, 'group': 'test_group',
- 'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
- host = Host()
- self.assertEqual(host.build_success_payload(), {'api_url': 'http://localhost/', 'ssid': '1'})
diff --git a/test/units/modules/storage/netapp/test_netapp_e_hostgroup.py b/test/units/modules/storage/netapp/test_netapp_e_hostgroup.py
deleted file mode 100644
index d9d76a3ede..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_hostgroup.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# (c) 2018, NetApp 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
-
-from ansible.modules.storage.netapp.netapp_e_hostgroup import NetAppESeriesHostGroup
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-try:
- from unittest import mock
-except ImportError:
- import mock
-
-
-class HostTest(ModuleTestCase):
- REQUIRED_PARAMS = {"api_username": "rw",
- "api_password": "password",
- "api_url": "http://localhost",
- "ssid": "1"}
- REQ_FUNC = "ansible.modules.storage.netapp.netapp_e_hostgroup.NetAppESeriesHostGroup.request"
- HOSTS_GET_RESPONSE = [
- {"hostRef": "84000000600A098000A4B28D0030102E5C3DFC0F",
- "clusterRef": "85000000600A098000A4B28D0036102C5C3DFC08", "id": "84000000600A098000A4B28D0030102E5C3DFC0F",
- "name": "host1"},
- {"hostRef": "84000000600A098000A4B28D003010315C3DFC11",
- "clusterRef": "85000000600A098000A4B9D100360F765C3DFC1C", "id": "84000000600A098000A4B28D003010315C3DFC11",
- "name": "host2"},
- {"hostRef": "84000000600A098000A4B28D003010345C3DFC14",
- "clusterRef": "85000000600A098000A4B9D100360F765C3DFC1C", "id": "84000000600A098000A4B28D003010345C3DFC14",
- "name": "host3"}]
- HOSTGROUPS_GET_RESPONSE = [
- {"clusterRef": "85000000600A098000A4B28D0036102C5C3DFC08", "id": "85000000600A098000A4B28D0036102C5C3DFC08",
- "name": "group1"},
- {"clusterRef": "85000000600A098000A4B9D100360F765C3DFC1C", "id": "85000000600A098000A4B9D100360F765C3DFC1C",
- "name": "group2"},
- {"clusterRef": "85000000600A098000A4B9D100360F775C3DFC1E", "id": "85000000600A098000A4B9D100360F775C3DFC1E",
- "name": "group3"}]
-
- def _set_args(self, args):
- self.module_args = self.REQUIRED_PARAMS.copy()
- self.module_args.update(args)
- set_module_args(self.module_args)
-
- def test_hosts_fail(self):
- """Ensure that the host property method fails when self.request throws an exception."""
- self._set_args({"state": "present", "name": "hostgroup1", "hosts": ["host1", "host2"]})
- hostgroup_object = NetAppESeriesHostGroup()
- with self.assertRaises(AnsibleFailJson):
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- hosts = hostgroup_object.hosts
-
- with mock.patch(self.REQ_FUNC, return_value=(200, [])):
- with self.assertRaisesRegexp(AnsibleFailJson, "Expected host does not exist"):
- hosts = hostgroup_object.hosts
-
- def test_hosts_pass(self):
- """Evaluate hosts property method for valid returned data structure."""
- expected_host_list = ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D0030102E5C3DFC0F']
- for hostgroup_hosts in [["host1", "host2"], ["84000000600A098000A4B28D0030102E5C3DFC0F",
- "84000000600A098000A4B28D003010315C3DFC11"]]:
- self._set_args({"state": "present", "name": "hostgroup1", "hosts": hostgroup_hosts})
- hostgroup_object = NetAppESeriesHostGroup()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, self.HOSTS_GET_RESPONSE)):
- for item in hostgroup_object.hosts:
- self.assertTrue(item in expected_host_list)
-
- # Create hostgroup with no hosts
- self._set_args({"state": "present", "name": "hostgroup1"})
- hostgroup_object = NetAppESeriesHostGroup()
- with mock.patch(self.REQ_FUNC, return_value=(200, [])):
- self.assertEqual(hostgroup_object.hosts, [])
-
- def test_host_groups_fail(self):
- """Ensure that the host_groups property method fails when self.request throws an exception."""
- self._set_args({"state": "present", "name": "hostgroup1", "hosts": ["host1", "host2"]})
- hostgroup_object = NetAppESeriesHostGroup()
- with self.assertRaises(AnsibleFailJson):
- with mock.patch(self.REQ_FUNC, return_value=Exception()):
- host_groups = hostgroup_object.host_groups
-
- def test_host_groups_pass(self):
- """Evaluate host_groups property method for valid return data structure."""
- expected_groups = [
- {'hosts': ['84000000600A098000A4B28D0030102E5C3DFC0F'], 'id': '85000000600A098000A4B28D0036102C5C3DFC08',
- 'name': 'group1'},
- {'hosts': ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D003010345C3DFC14'],
- 'id': '85000000600A098000A4B9D100360F765C3DFC1C', 'name': 'group2'},
- {'hosts': [], 'id': '85000000600A098000A4B9D100360F775C3DFC1E', 'name': 'group3'}]
-
- self._set_args({"state": "present", "name": "hostgroup1", "hosts": ["host1", "host2"]})
- hostgroup_object = NetAppESeriesHostGroup()
-
- with mock.patch(self.REQ_FUNC,
- side_effect=[(200, self.HOSTGROUPS_GET_RESPONSE), (200, self.HOSTS_GET_RESPONSE)]):
- self.assertEqual(hostgroup_object.host_groups, expected_groups)
-
- @mock.patch.object(NetAppESeriesHostGroup, "host_groups")
- @mock.patch.object(NetAppESeriesHostGroup, "hosts")
- @mock.patch.object(NetAppESeriesHostGroup, "create_host_group")
- @mock.patch.object(NetAppESeriesHostGroup, "update_host_group")
- @mock.patch.object(NetAppESeriesHostGroup, "delete_host_group")
- def test_apply_pass(self, fake_delete_host_group, fake_update_host_group, fake_create_host_group, fake_hosts,
- fake_host_groups):
- """Apply desired host group state to the storage array."""
- hosts_response = ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D0030102E5C3DFC0F']
- host_groups_response = [
- {'hosts': ['84000000600A098000A4B28D0030102E5C3DFC0F'], 'id': '85000000600A098000A4B28D0036102C5C3DFC08',
- 'name': 'group1'},
- {'hosts': ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D003010345C3DFC14'],
- 'id': '85000000600A098000A4B9D100360F765C3DFC1C', 'name': 'group2'},
- {'hosts': [], 'id': '85000000600A098000A4B9D100360F775C3DFC1E', 'name': 'group3'}]
-
- fake_host_groups.return_value = host_groups_response
- fake_hosts.return_value = hosts_response
- fake_create_host_group.return_value = lambda x: "Host group created!"
- fake_update_host_group.return_value = lambda x: "Host group updated!"
- fake_delete_host_group.return_value = lambda x: "Host group deleted!"
-
- # Test create new host group
- self._set_args({"state": "present", "name": "hostgroup1", "hosts": ["host1", "host2"]})
- hostgroup_object = NetAppESeriesHostGroup()
- with self.assertRaises(AnsibleExitJson):
- hostgroup_object.apply()
-
- # Test make no changes to existing host group
- self._set_args({"state": "present", "name": "group1", "hosts": ["host1"]})
- hostgroup_object = NetAppESeriesHostGroup()
- with self.assertRaises(AnsibleExitJson):
- hostgroup_object.apply()
-
- # Test add host to existing host group
- self._set_args({"state": "present", "name": "group1", "hosts": ["host1", "host2"]})
- hostgroup_object = NetAppESeriesHostGroup()
- with self.assertRaises(AnsibleExitJson):
- hostgroup_object.apply()
-
- # Test delete existing host group
- self._set_args({"state": "absent", "name": "group1"})
- hostgroup_object = NetAppESeriesHostGroup()
- with self.assertRaises(AnsibleExitJson):
- hostgroup_object.apply()
-
- @mock.patch.object(NetAppESeriesHostGroup, "host_groups")
- @mock.patch.object(NetAppESeriesHostGroup, "hosts")
- def test_apply_fail(self, fake_hosts, fake_host_groups):
- """Apply desired host group state to the storage array."""
- hosts_response = ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D0030102E5C3DFC0F']
- host_groups_response = [
- {'hosts': ['84000000600A098000A4B28D0030102E5C3DFC0F'], 'id': '85000000600A098000A4B28D0036102C5C3DFC08',
- 'name': 'group1'},
- {'hosts': ['84000000600A098000A4B28D003010315C3DFC11', '84000000600A098000A4B28D003010345C3DFC14'],
- 'id': '85000000600A098000A4B9D100360F765C3DFC1C', 'name': 'group2'},
- {'hosts': [], 'id': '85000000600A098000A4B9D100360F775C3DFC1E', 'name': 'group3'}]
-
- fake_host_groups.return_value = host_groups_response
- fake_hosts.return_value = hosts_response
- self._set_args(
- {"state": "present", "id": "84000000600A098000A4B28D0030102E5C3DFC0F", "hosts": ["host1", "host2"]})
- hostgroup_object = NetAppESeriesHostGroup()
- with self.assertRaisesRegexp(AnsibleFailJson,
- "The option name must be supplied when creating a new host group."):
- hostgroup_object.apply()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_iscsi_interface.py b/test/units/modules/storage/netapp/test_netapp_e_iscsi_interface.py
deleted file mode 100644
index 927e5a907d..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_iscsi_interface.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from ansible.modules.storage.netapp.netapp_e_iscsi_interface import IscsiInterface
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-__metaclass__ = type
-import mock
-
-
-class IscsiInterfaceTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- 'api_username': 'rw',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1',
- 'state': 'disabled',
- 'name': 1,
- 'controller': 'A',
- }
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_iscsi_interface.request'
-
- def _set_args(self, args=None):
- module_args = self.REQUIRED_PARAMS.copy()
- if args is not None:
- module_args.update(args)
- set_module_args(module_args)
-
- def test_validate_params(self):
- """Ensure we can pass valid parameters to the module"""
- # Provide a range of valid values for each
- for controller in ['A', 'B']:
- for i in range(1, 10):
- for mtu in [1500, 2500, 9000]:
- self._set_args(dict(
- state='disabled',
- name=i,
- controller=controller,
- mtu=mtu,
- ))
- iface = IscsiInterface()
-
- def test_invalid_params(self):
- """Ensure that our input validation catches invalid parameters"""
-
- # Currently a 'C' controller is invalid
- self._set_args(dict(
- state='disabled',
- name=1,
- controller="C",
- ))
- with self.assertRaises(AnsibleFailJson) as result:
- iface = IscsiInterface()
-
- # Each of these mtu values are invalid
- for mtu in [500, 1499, 9001]:
- self._set_args({
- 'state': 'disabled',
- 'name': 1,
- 'controller': 'A',
- 'mtu': mtu
- })
- with self.assertRaises(AnsibleFailJson) as result:
- iface = IscsiInterface()
-
- def test_interfaces(self):
- """Validate that we are processing the interface list properly"""
- self._set_args()
-
- interfaces = [
- dict(interfaceType='iscsi',
- iscsi=dict()),
- dict(interfaceType='iscsi',
- iscsi=dict()),
- dict(interfaceType='fc', )
- ]
-
- # Ensure we filter out anything without an interfaceType of iscsi
- expected = [iface['iscsi'] for iface in interfaces if iface['interfaceType'] == 'iscsi']
-
- # We expect a single call to the API: retrieve the list of interfaces from the objectGraph.
- with mock.patch(self.REQ_FUNC, return_value=(200, interfaces)):
- iface = IscsiInterface()
- interfaces = iface.interfaces
- self.assertEqual(interfaces, expected)
-
- def test_interfaces_fail(self):
- """Ensure we fail gracefully on an error to retrieve the interfaces"""
- self._set_args()
-
- with self.assertRaises(AnsibleFailJson) as result:
- # Simulate a failed call to the API
- with mock.patch(self.REQ_FUNC, side_effect=Exception("Failure")):
- iface = IscsiInterface()
- interfaces = iface.interfaces
-
- def test_fetch_target_interface_bad_channel(self):
- """Ensure we fail correctly when a bad channel is provided"""
- self._set_args()
-
- interfaces = list(dict(channel=1, controllerId='1'))
-
- with self.assertRaisesRegexp(AnsibleFailJson, r".*?channels include.*"):
- with mock.patch.object(IscsiInterface, 'interfaces', return_value=interfaces):
- iface = IscsiInterface()
- interfaces = iface.fetch_target_interface()
-
- def test_make_update_body_dhcp(self):
- """Ensure the update body generates correctly for a transition from static to dhcp"""
- self._set_args(dict(state='enabled',
- config_method='dhcp')
- )
-
- iface = dict(id='1',
- ipv4Enabled=False,
- ipv4Data=dict(ipv4AddressData=dict(ipv4Address="0.0.0.0",
- ipv4SubnetMask="0.0.0.0",
- ipv4GatewayAddress="0.0.0.0", ),
- ipv4AddressConfigMethod='configStatic', ),
- interfaceData=dict(ethernetData=dict(maximumFramePayloadSize=1500, ), ),
- )
-
- # Test a transition from static to dhcp
- inst = IscsiInterface()
- update, body = inst.make_update_body(iface)
- self.assertTrue(update, msg="An update was expected!")
- self.assertEqual(body['settings']['ipv4Enabled'][0], True)
- self.assertEqual(body['settings']['ipv4AddressConfigMethod'][0], 'configDhcp')
-
- def test_make_update_body_static(self):
- """Ensure the update body generates correctly for a transition from dhcp to static"""
- iface = dict(id='1',
- ipv4Enabled=False,
- ipv4Data=dict(ipv4AddressConfigMethod='configDhcp',
- ipv4AddressData=dict(ipv4Address="0.0.0.0",
- ipv4SubnetMask="0.0.0.0",
- ipv4GatewayAddress="0.0.0.0", ), ),
- interfaceData=dict(ethernetData=dict(maximumFramePayloadSize=1500, ), ), )
-
- self._set_args(dict(state='enabled',
- config_method='static',
- address='10.10.10.10',
- subnet_mask='255.255.255.0',
- gateway='1.1.1.1'))
-
- inst = IscsiInterface()
- update, body = inst.make_update_body(iface)
- self.assertTrue(update, msg="An update was expected!")
- self.assertEqual(body['settings']['ipv4Enabled'][0], True)
- self.assertEqual(body['settings']['ipv4AddressConfigMethod'][0], 'configStatic')
- self.assertEqual(body['settings']['ipv4Address'][0], '10.10.10.10')
- self.assertEqual(body['settings']['ipv4SubnetMask'][0], '255.255.255.0')
- self.assertEqual(body['settings']['ipv4GatewayAddress'][0], '1.1.1.1')
-
- CONTROLLERS = dict(A='1', B='2')
-
- def test_update_bad_controller(self):
- """Ensure a bad controller fails gracefully"""
- self._set_args(dict(controller='B'))
-
- inst = IscsiInterface()
- with self.assertRaises(AnsibleFailJson) as result:
- with mock.patch.object(inst, 'get_controllers', return_value=dict(A='1')) as get_controllers:
- inst()
-
- @mock.patch.object(IscsiInterface, 'get_controllers', return_value=CONTROLLERS)
- def test_update(self, get_controllers):
- """Validate the good path"""
- self._set_args()
-
- inst = IscsiInterface()
- with self.assertRaises(AnsibleExitJson):
- with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request:
- with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]):
- with mock.patch.object(inst, 'make_update_body', return_value=(True, {})):
- inst()
- request.assert_called_once()
-
- @mock.patch.object(IscsiInterface, 'get_controllers', return_value=CONTROLLERS)
- def test_update_not_required(self, get_controllers):
- """Ensure we don't trigger the update if one isn't required or if check mode is enabled"""
- self._set_args()
-
- # make_update_body will report that no change is required, so we should see no call to the API.
- inst = IscsiInterface()
- with self.assertRaises(AnsibleExitJson) as result:
- with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request:
- with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]):
- with mock.patch.object(inst, 'make_update_body', return_value=(False, {})):
- inst()
- request.assert_not_called()
- self.assertFalse(result.exception.args[0]['changed'], msg="No change was expected.")
-
- # Since check_mode is enabled, we will run everything normally, but not make a request to the API
- # to perform the actual change.
- inst = IscsiInterface()
- inst.check_mode = True
- with self.assertRaises(AnsibleExitJson) as result:
- with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request:
- with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]):
- with mock.patch.object(inst, 'make_update_body', return_value=(True, {})):
- inst()
- request.assert_not_called()
- self.assertTrue(result.exception.args[0]['changed'], msg="A change was expected.")
-
- @mock.patch.object(IscsiInterface, 'get_controllers', return_value=CONTROLLERS)
- def test_update_fail_busy(self, get_controllers):
- """Ensure we fail correctly on receiving a busy response from the API."""
- self._set_args()
-
- inst = IscsiInterface()
- with self.assertRaisesRegexp(AnsibleFailJson, r".*?busy.*") as result:
- with mock.patch(self.REQ_FUNC, return_value=(422, dict(retcode="3"))) as request:
- with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]):
- with mock.patch.object(inst, 'make_update_body', return_value=(True, {})):
- inst()
- request.assert_called_once()
-
- @mock.patch.object(IscsiInterface, 'get_controllers', return_value=CONTROLLERS)
- @mock.patch.object(IscsiInterface, 'make_update_body', return_value=(True, {}))
- def test_update_fail(self, get_controllers, make_body):
- """Ensure we fail correctly on receiving a normal failure from the API."""
- self._set_args()
-
- inst = IscsiInterface()
- # Test a 422 error with a non-busy status
- with self.assertRaisesRegexp(AnsibleFailJson, r".*?Failed to modify.*") as result:
- with mock.patch(self.REQ_FUNC, return_value=(422, mock.MagicMock())) as request:
- with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]):
- inst()
- request.assert_called_once()
-
- # Test a 401 (authentication) error
- with self.assertRaisesRegexp(AnsibleFailJson, r".*?Failed to modify.*") as result:
- with mock.patch(self.REQ_FUNC, return_value=(401, mock.MagicMock())) as request:
- with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]):
- inst()
- request.assert_called_once()
-
- # Test with a connection failure
- with self.assertRaisesRegexp(AnsibleFailJson, r".*?Connection failure.*") as result:
- with mock.patch(self.REQ_FUNC, side_effect=Exception()) as request:
- with mock.patch.object(inst, 'fetch_target_interface', side_effect=[{}, mock.MagicMock()]):
- inst()
- request.assert_called_once()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_iscsi_target.py b/test/units/modules/storage/netapp/test_netapp_e_iscsi_target.py
deleted file mode 100644
index 9d800cfd13..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_iscsi_target.py
+++ /dev/null
@@ -1,132 +0,0 @@
-# coding=utf-8
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from ansible.modules.storage.netapp.netapp_e_iscsi_target import IscsiTarget
-from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args
-
-__metaclass__ = type
-
-import mock
-
-from units.compat.mock import PropertyMock
-
-
-class IscsiTargetTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- 'api_username': 'rw',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1',
- 'name': 'abc',
- }
-
- CHAP_SAMPLE = 'a' * 14
-
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_iscsi_target.request'
-
- def _set_args(self, args=None):
- module_args = self.REQUIRED_PARAMS.copy()
- if args is not None:
- module_args.update(args)
- set_module_args(module_args)
-
- def test_validate_params(self):
- """Ensure we can pass valid parameters to the module"""
- for i in range(12, 57):
- secret = 'a' * i
- self._set_args(dict(chap=secret))
- tgt = IscsiTarget()
-
- def test_invalid_chap_secret(self):
- for secret in [11 * 'a', 58 * 'a']:
- with self.assertRaisesRegexp(AnsibleFailJson, r'.*?CHAP secret is not valid.*') as result:
- self._set_args(dict(chap=secret))
- tgt = IscsiTarget()
-
- def test_apply_iscsi_settings(self):
- """Ensure that the presence of CHAP always triggers an update."""
- self._set_args(dict(chap=self.CHAP_SAMPLE))
- tgt = IscsiTarget()
-
- # CHAP is enabled
- fake = dict(alias=self.REQUIRED_PARAMS.get('name'), chap=True)
-
- # We don't care about the return here
- with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request:
- with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call:
- call.return_value = fake
- self.assertTrue(tgt.apply_iscsi_settings())
- self.assertTrue(request.called, msg="An update was expected!")
-
- # Retest with check_mode enabled
- tgt.check_mode = True
- request.reset_mock()
- self.assertTrue(tgt.apply_iscsi_settings())
- self.assertFalse(request.called, msg="No update was expected in check_mode!")
-
- def test_apply_iscsi_settings_no_change(self):
- """Ensure that we don't make unnecessary requests or updates"""
- name = 'abc'
- self._set_args(dict(alias=name))
- fake = dict(alias=name, chap=False)
- with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request:
- with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call:
- call.return_value = fake
- tgt = IscsiTarget()
- self.assertFalse(tgt.apply_iscsi_settings())
- self.assertFalse(request.called, msg="No update was expected!")
-
- def test_apply_iscsi_settings_fail(self):
- """Ensure we handle request failures cleanly"""
- self._set_args()
- fake = dict(alias='', chap=True)
- with self.assertRaisesRegexp(AnsibleFailJson, r".*?update.*"):
- with mock.patch(self.REQ_FUNC, side_effect=Exception) as request:
- with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call:
- call.return_value = fake
- tgt = IscsiTarget()
- tgt.apply_iscsi_settings()
-
- def test_apply_target_changes(self):
- """Ensure that changes trigger an update."""
- self._set_args(dict(ping=True, unnamed_discovery=True))
- tgt = IscsiTarget()
-
- # CHAP is enabled
- fake = dict(ping=False, unnamed_discovery=False)
-
- # We don't care about the return here
- with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request:
- with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call:
- call.return_value = fake
- self.assertTrue(tgt.apply_target_changes())
- self.assertTrue(request.called, msg="An update was expected!")
-
- # Retest with check_mode enabled
- tgt.check_mode = True
- request.reset_mock()
- self.assertTrue(tgt.apply_target_changes())
- self.assertFalse(request.called, msg="No update was expected in check_mode!")
-
- def test_apply_target_changes_no_change(self):
- """Ensure that we don't make unnecessary requests or updates"""
- self._set_args(dict(ping=True, unnamed_discovery=True))
- fake = dict(ping=True, unnamed_discovery=True)
- with mock.patch(self.REQ_FUNC, return_value=(200, "")) as request:
- with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call:
- call.return_value = fake
- tgt = IscsiTarget()
- self.assertFalse(tgt.apply_target_changes())
- self.assertFalse(request.called, msg="No update was expected!")
-
- def test_apply_target_changes_fail(self):
- """Ensure we handle request failures cleanly"""
- self._set_args()
- fake = dict(ping=False, unnamed_discovery=False)
- with self.assertRaisesRegexp(AnsibleFailJson, r".*?update.*"):
- with mock.patch(self.REQ_FUNC, side_effect=Exception) as request:
- with mock.patch.object(IscsiTarget, 'target', new_callable=PropertyMock) as call:
- call.return_value = fake
- tgt = IscsiTarget()
- tgt.apply_target_changes()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_ldap.py b/test/units/modules/storage/netapp/test_netapp_e_ldap.py
deleted file mode 100644
index 0e3741ce7f..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_ldap.py
+++ /dev/null
@@ -1,430 +0,0 @@
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-import os
-import shutil
-import tempfile
-
-from ansible.modules.storage.netapp.netapp_e_ldap import Ldap
-from units.modules.utils import ModuleTestCase, set_module_args, AnsibleFailJson, AnsibleExitJson
-
-__metaclass__ = type
-from units.compat import mock
-
-
-class LdapTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- 'api_username': 'admin',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1',
- 'state': 'absent',
- }
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_ldap.request'
-
- def setUp(self):
- super(LdapTest, self).setUp()
-
- self.temp_dir = tempfile.mkdtemp('ansible-test_netapp_e_ldap-')
- self.REQUIRED_PARAMS['log_path'] = os.path.join(self.temp_dir, 'debug.log')
-
- def tearDown(self):
- super(LdapTest, self).tearDown()
-
- shutil.rmtree(self.temp_dir)
-
- def _make_ldap_instance(self):
- self._set_args()
- ldap = Ldap()
- ldap.base_path = '/'
- return ldap
-
- def _set_args(self, **kwargs):
- module_args = self.REQUIRED_PARAMS.copy()
- module_args.update(kwargs)
- set_module_args(module_args)
-
- def test_init_defaults(self):
- """Validate a basic run with required arguments set."""
- self._set_args(log_path=None,
- state='present',
- username='myBindAcct',
- password='myBindPass',
- server='ldap://example.com:384',
- search_base='OU=Users,DC=example,DC=com',
- role_mappings={'.*': ['storage.monitor']},
- )
-
- ldap = Ldap()
-
- def test_init(self):
- """Validate a basic run with required arguments set."""
- self._set_args(log_path=None)
- ldap = Ldap()
-
- def test_is_embedded(self):
- """Ensure we can properly detect the type of Web Services instance we're utilizing."""
- self._set_args()
-
- result = dict(runningAsProxy=False)
-
- with mock.patch(self.REQ_FUNC, return_value=(200, result)):
- ldap = Ldap()
- embedded = ldap.is_embedded()
- self.assertTrue(embedded)
-
- result = dict(runningAsProxy=True)
-
- with mock.patch(self.REQ_FUNC, return_value=(200, result)):
- ldap = Ldap()
- embedded = ldap.is_embedded()
- self.assertFalse(embedded)
-
- def test_is_embedded_fail(self):
- """Ensure we fail gracefully when fetching the About data."""
-
- self._set_args()
- with self.assertRaises(AnsibleFailJson):
- with mock.patch(self.REQ_FUNC, side_effect=Exception):
- ldap = Ldap()
- ldap.is_embedded()
-
- def test_get_full_configuration(self):
- self._set_args()
-
- resp = dict(result=None)
-
- with mock.patch(self.REQ_FUNC, return_value=(200, resp)):
- ldap = self._make_ldap_instance()
- result = ldap.get_full_configuration()
- self.assertEqual(resp, result)
-
- def test_get_full_configuration_failure(self):
- self._set_args()
-
- resp = dict(result=None)
- with self.assertRaises(AnsibleFailJson):
- with mock.patch(self.REQ_FUNC, side_effect=Exception):
- ldap = self._make_ldap_instance()
- ldap.get_full_configuration()
-
- def test_get_configuration(self):
- self._set_args()
-
- resp = dict(result=None)
-
- with mock.patch(self.REQ_FUNC, return_value=(200, resp)):
- ldap = self._make_ldap_instance()
- result = ldap.get_configuration('')
- self.assertEqual(resp, result)
-
- with mock.patch(self.REQ_FUNC, return_value=(404, resp)):
- ldap = self._make_ldap_instance()
- result = ldap.get_configuration('')
- self.assertIsNone(result)
-
- def test_clear_configuration(self):
- self._set_args()
-
- # No changes are required if the domains are empty
- config = dict(ldapDomains=[])
-
- ldap = self._make_ldap_instance()
- with mock.patch.object(ldap, 'get_full_configuration', return_value=config):
- with mock.patch(self.REQ_FUNC, return_value=(204, None)):
- msg, result = ldap.clear_configuration()
- self.assertFalse(result)
-
- config = dict(ldapDomains=['abc'])
-
- # When domains exist, we need to clear
- ldap = self._make_ldap_instance()
- with mock.patch.object(ldap, 'get_full_configuration', return_value=config):
- with mock.patch(self.REQ_FUNC, return_value=(204, None)) as req:
- msg, result = ldap.clear_configuration()
- self.assertTrue(result)
- self.assertTrue(req.called)
-
- # Valid check_mode makes no changes
- req.reset_mock()
- ldap.check_mode = True
- msg, result = ldap.clear_configuration()
- self.assertTrue(result)
- self.assertFalse(req.called)
-
- def test_clear_single_configuration(self):
- self._set_args()
-
- # No changes are required if the domains are empty
- config = 'abc'
-
- ldap = self._make_ldap_instance()
- with mock.patch.object(ldap, 'get_configuration', return_value=config):
- with mock.patch(self.REQ_FUNC, return_value=(204, None)) as req:
- msg, result = ldap.clear_single_configuration()
- self.assertTrue(result)
-
- # Valid check_mode makes no changes
- req.reset_mock()
- ldap.check_mode = True
- msg, result = ldap.clear_single_configuration()
- self.assertTrue(result)
- self.assertFalse(req.called)
-
- # When domains exist, we need to clear
- ldap = self._make_ldap_instance()
- with mock.patch.object(ldap, 'get_configuration', return_value=None):
- with mock.patch(self.REQ_FUNC, return_value=(204, None)) as req:
- msg, result = ldap.clear_single_configuration()
- self.assertFalse(result)
- self.assertFalse(req.called)
-
- def test_update_configuration(self):
- self._set_args()
-
- config = dict(id='abc')
- body = dict(id='xyz')
-
- ldap = self._make_ldap_instance()
- with mock.patch.object(ldap, 'make_configuration', return_value=body):
- with mock.patch.object(ldap, 'get_configuration', return_value=config):
- with mock.patch(self.REQ_FUNC, return_value=(200, None)) as req:
- msg, result = ldap.update_configuration()
- self.assertTrue(result)
-
- # Valid check_mode makes no changes
- req.reset_mock()
- ldap.check_mode = True
- msg, result = ldap.update_configuration()
- self.assertTrue(result)
- self.assertFalse(req.called)
-
- def test_update(self):
- self._set_args()
-
- ldap = self._make_ldap_instance()
- with self.assertRaises(AnsibleExitJson):
- with mock.patch.object(ldap, 'get_base_path', return_value='/'):
- with mock.patch.object(ldap, 'update_configuration', return_value=('', True)) as update:
- ldap.ldap = True
- msg, result = ldap.update()
- self.assertTrue(result)
- self.assertTrue(update.called)
-
- def test_update_disable(self):
- self._set_args()
-
- ldap = self._make_ldap_instance()
- with self.assertRaises(AnsibleExitJson):
- with mock.patch.object(ldap, 'get_base_path', return_value='/'):
- with mock.patch.object(ldap, 'clear_single_configuration', return_value=('', True)) as update:
- ldap.ldap = False
- ldap.identifier = 'abc'
- msg, result = ldap.update()
- self.assertTrue(result)
- self.assertTrue(update.called)
-
- def test_update_disable_all(self):
- self._set_args()
-
- ldap = self._make_ldap_instance()
- with self.assertRaises(AnsibleExitJson):
- with mock.patch.object(ldap, 'get_base_path', return_value='/'):
- with mock.patch.object(ldap, 'clear_configuration', return_value=('', True)) as update:
- ldap.ldap = False
- msg, result = ldap.update()
- self.assertTrue(result)
- self.assertTrue(update.called)
-
- def test_get_configuration_failure(self):
- self._set_args()
-
- with self.assertRaises(AnsibleFailJson):
- with mock.patch(self.REQ_FUNC, side_effect=Exception):
- ldap = self._make_ldap_instance()
- ldap.get_configuration('')
-
- # We expect this for any code not in [200, 404]
- with self.assertRaises(AnsibleFailJson):
- with mock.patch(self.REQ_FUNC, return_value=(401, '')):
- ldap = self._make_ldap_instance()
- result = ldap.get_configuration('')
- self.assertIsNone(result)
-
- def test_make_configuration(self):
- """Validate the make_configuration method that translates Ansible params to the input body"""
- data = dict(log_path=None,
- state='present',
- username='myBindAcct',
- password='myBindPass',
- server='ldap://example.com:384',
- search_base='OU=Users,DC=example,DC=com',
- role_mappings={'.*': ['storage.monitor']},
- )
-
- self._set_args(**data)
- ldap = Ldap()
- expected = dict(id='default',
- bindLookupUser=dict(user=data['username'],
- password=data['password'], ),
- groupAttributes=['memberOf'],
- ldapUrl=data['server'],
- names=['example.com'],
- searchBase=data['search_base'],
- roleMapCollection=[{"groupRegex": ".*",
- "ignoreCase": True,
- "name": "storage.monitor"
- }
- ],
- userAttribute='sAMAccountName'
- )
-
- actual = ldap.make_configuration()
- self.maxDiff = None
- self.assertEqual(expected, actual)
-
- #
- # def test_get_config_on_demand_capable_false(self):
- # """Ensure we fail correctly if ASUP is not available on this platform"""
- # self._set_args()
- #
- # expected = dict(asupCapable=True, onDemandCapable=False)
- # asup = Asup()
- # # Expecting an update
- # with self.assertRaisesRegexp(AnsibleFailJson, r"not supported"):
- # with mock.patch(self.REQ_FUNC, return_value=(200, expected)):
- # asup.get_configuration()
- #
- # def test_get_config(self):
- # """Validate retrieving the ASUP configuration"""
- # self._set_args()
- #
- # expected = dict(asupCapable=True, onDemandCapable=True)
- # asup = Asup()
- #
- # with mock.patch(self.REQ_FUNC, return_value=(200, expected)):
- # config = asup.get_configuration()
- # self.assertEqual(config, expected)
- #
- # def test_update_configuration(self):
- # """Validate retrieving the ASUP configuration"""
- # self._set_args(dict(asup='present'))
- #
- # expected = dict()
- # initial = dict(asupCapable=True,
- # asupEnabled=True,
- # onDemandEnabled=False,
- # remoteDiagsEnabled=False,
- # schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24))
- # asup = Asup()
- #
- # with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- # with mock.patch.object(asup, 'get_configuration', return_value=initial):
- # updated = asup.update_configuration()
- # self.assertTrue(req.called)
- # self.assertTrue(updated)
- #
- # def test_update_configuration_asup_disable(self):
- # """Validate retrieving the ASUP configuration"""
- # self._set_args(dict(asup='absent'))
- #
- # expected = dict()
- # initial = dict(asupCapable=True,
- # asupEnabled=True,
- # onDemandEnabled=False,
- # remoteDiagsEnabled=False,
- # schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24))
- # asup = Asup()
- #
- # with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- # with mock.patch.object(asup, 'get_configuration', return_value=initial):
- # updated = asup.update_configuration()
- # self.assertTrue(updated)
- #
- # self.assertTrue(req.called)
- #
- # # Ensure it was called with the right arguments
- # called_with = req.call_args
- # body = json.loads(called_with[1]['data'])
- # self.assertFalse(body['asupEnabled'])
- #
- # def test_update_configuration_enable(self):
- # """Validate retrieving the ASUP configuration"""
- # self._set_args(dict(asup='enabled'))
- #
- # expected = dict()
- # initial = dict(asupCapable=False,
- # asupEnabled=False,
- # onDemandEnabled=False,
- # remoteDiagsEnabled=False,
- # schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24))
- # asup = Asup()
- #
- # with mock.patch(self.REQ_FUNC, return_value=(200, expected)) as req:
- # with mock.patch.object(asup, 'get_configuration', return_value=initial):
- # updated = asup.update_configuration()
- # self.assertTrue(updated)
- #
- # self.assertTrue(req.called)
- #
- # # Ensure it was called with the right arguments
- # called_with = req.call_args
- # body = json.loads(called_with[1]['data'])
- # self.assertTrue(body['asupEnabled'])
- # self.assertTrue(body['onDemandEnabled'])
- # self.assertTrue(body['remoteDiagsEnabled'])
- #
- # def test_update_configuration_request_exception(self):
- # """Validate exception handling when request throws an exception."""
- # config_response = dict(asupEnabled=True,
- # onDemandEnabled=True,
- # remoteDiagsEnabled=True,
- # schedule=dict(daysOfWeek=[],
- # dailyMinTime=0,
- # weeklyMinTime=0,
- # dailyMaxTime=24,
- # weeklyMaxTime=24))
- #
- # self._set_args(dict(state="enabled"))
- # asup = Asup()
- # with self.assertRaises(Exception):
- # with mock.patch.object(asup, 'get_configuration', return_value=config_response):
- # with mock.patch(self.REQ_FUNC, side_effect=Exception):
- # asup.update_configuration()
- #
- # def test_init_schedule(self):
- # """Validate schedule correct schedule initialization"""
- # self._set_args(dict(state="enabled", active=True, days=["sunday", "monday", "tuesday"], start=20, end=24))
- # asup = Asup()
- #
- # self.assertTrue(asup.asup)
- # self.assertEqual(asup.days, ["sunday", "monday", "tuesday"]),
- # self.assertEqual(asup.start, 1200)
- # self.assertEqual(asup.end, 1439)
- #
- # def test_init_schedule_invalid(self):
- # """Validate updating ASUP with invalid schedule fails test."""
- # self._set_args(dict(state="enabled", active=True, start=22, end=20))
- # with self.assertRaisesRegexp(AnsibleFailJson, r"start time is invalid"):
- # Asup()
- #
- # def test_init_schedule_days_invalid(self):
- # """Validate updating ASUP with invalid schedule fails test."""
- # self._set_args(dict(state="enabled", active=True, days=["someday", "thataday", "nonday"]))
- # with self.assertRaises(AnsibleFailJson):
- # Asup()
- #
- # def test_update(self):
- # """Validate updating ASUP with valid schedule passes"""
- # initial = dict(asupCapable=True,
- # onDemandCapable=True,
- # asupEnabled=True,
- # onDemandEnabled=False,
- # remoteDiagsEnabled=False,
- # schedule=dict(daysOfWeek=[], dailyMinTime=0, weeklyMinTime=0, dailyMaxTime=24, weeklyMaxTime=24))
- # self._set_args(dict(state="enabled", active=True, days=["sunday", "monday", "tuesday"], start=10, end=20))
- # asup = Asup()
- # with self.assertRaisesRegexp(AnsibleExitJson, r"ASUP settings have been updated"):
- # with mock.patch(self.REQ_FUNC, return_value=(200, dict(asupCapable=True))):
- # with mock.patch.object(asup, "get_configuration", return_value=initial):
- # asup.update()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_mgmt_interface.py b/test/units/modules/storage/netapp/test_netapp_e_mgmt_interface.py
deleted file mode 100644
index 7901dcee99..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_mgmt_interface.py
+++ /dev/null
@@ -1,682 +0,0 @@
-# coding=utf-8
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from ansible.modules.storage.netapp.netapp_e_mgmt_interface import MgmtInterface
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-__metaclass__ = type
-
-import mock
-from units.compat.mock import PropertyMock
-
-
-class MgmtInterfaceTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- 'api_username': 'rw',
- 'api_password': 'password',
- 'api_url': 'http://localhost',
- 'ssid': '1',
- }
-
- TEST_DATA = [
- {
- "controllerRef": "070000000000000000000001",
- "controllerSlot": 1,
- "interfaceName": "wan0",
- "interfaceRef": "2800070000000000000000000001000000000000",
- "channel": 1,
- "alias": "creG1g-AP-a",
- "ipv4Enabled": True,
- "ipv4Address": "10.1.1.10",
- "linkStatus": "up",
- "ipv4SubnetMask": "255.255.255.0",
- "ipv4AddressConfigMethod": "configStatic",
- "ipv4GatewayAddress": "10.1.1.1",
- "ipv6Enabled": False,
- "physicalLocation": {
- "slot": 0,
- },
- "dnsProperties": {
- "acquisitionProperties": {
- "dnsAcquisitionType": "stat",
- "dnsServers": [
- {
- "addressType": "ipv4",
- "ipv4Address": "10.1.0.250",
- },
- {
- "addressType": "ipv4",
- "ipv4Address": "10.10.0.20",
- }
- ]
- },
- "dhcpAcquiredDnsServers": []
- },
- "ntpProperties": {
- "acquisitionProperties": {
- "ntpAcquisitionType": "disabled",
- "ntpServers": None
- },
- "dhcpAcquiredNtpServers": []
- },
- },
- {
- "controllerRef": "070000000000000000000001",
- "controllerSlot": 1,
- "interfaceName": "wan1",
- "interfaceRef": "2800070000000000000000000001000000000000",
- "channel": 2,
- "alias": "creG1g-AP-a",
- "ipv4Enabled": True,
- "ipv4Address": "0.0.0.0",
- "ipv4SubnetMask": "0.0.0.0",
- "ipv4AddressConfigMethod": "configDhcp",
- "ipv4GatewayAddress": "10.1.1.1",
- "ipv6Enabled": False,
- "physicalLocation": {
- "slot": 1,
- },
- "dnsProperties": {
- "acquisitionProperties": {
- "dnsAcquisitionType": "stat",
- "dnsServers": [
- {
- "addressType": "ipv4",
- "ipv4Address": "10.1.0.250",
- "ipv6Address": None
- },
- {
- "addressType": "ipv4",
- "ipv4Address": "10.10.0.20",
- "ipv6Address": None
- }
- ]
- },
- "dhcpAcquiredDnsServers": []
- },
- "ntpProperties": {
- "acquisitionProperties": {
- "ntpAcquisitionType": "disabled",
- "ntpServers": None
- },
- "dhcpAcquiredNtpServers": []
- },
- },
- {
- "controllerRef": "070000000000000000000002",
- "controllerSlot": 2,
- "interfaceName": "wan0",
- "interfaceRef": "2800070000000000000000000001000000000000",
- "channel": 1,
- "alias": "creG1g-AP-b",
- "ipv4Enabled": True,
- "ipv4Address": "0.0.0.0",
- "ipv4SubnetMask": "0.0.0.0",
- "ipv4AddressConfigMethod": "configDhcp",
- "ipv4GatewayAddress": "10.1.1.1",
- "ipv6Enabled": False,
- "physicalLocation": {
- "slot": 0,
- },
- "dnsProperties": {
- "acquisitionProperties": {
- "dnsAcquisitionType": "stat",
- "dnsServers": [
- {
- "addressType": "ipv4",
- "ipv4Address": "10.1.0.250",
- "ipv6Address": None
- }
- ]
- },
- "dhcpAcquiredDnsServers": []
- },
- "ntpProperties": {
- "acquisitionProperties": {
- "ntpAcquisitionType": "stat",
- "ntpServers": [
- {
- "addrType": "ipvx",
- "domainName": None,
- "ipvxAddress": {
- "addressType": "ipv4",
- "ipv4Address": "10.13.1.5",
- "ipv6Address": None
- }
- },
- {
- "addrType": "ipvx",
- "domainName": None,
- "ipvxAddress": {
- "addressType": "ipv4",
- "ipv4Address": "10.15.1.8",
- "ipv6Address": None
- }
- }
- ]
- },
- "dhcpAcquiredNtpServers": []
- },
- },
- {
- "controllerRef": "070000000000000000000002",
- "controllerSlot": 2,
- "interfaceName": "wan1",
- "interfaceRef": "2801070000000000000000000001000000000000",
- "channel": 2,
- "alias": "creG1g-AP-b",
- "ipv4Enabled": True,
- "ipv4Address": "0.0.0.0",
- "ipv4SubnetMask": "0.0.0.0",
- "ipv4AddressConfigMethod": "configDhcp",
- "ipv4GatewayAddress": "10.1.1.1",
- "ipv6Enabled": False,
- "physicalLocation": {
- "slot": 1,
- },
- "dnsProperties": {
- "acquisitionProperties": {
- "dnsAcquisitionType": "stat",
- "dnsServers": [
- {
- "addressType": "ipv4",
- "ipv4Address": "10.19.1.2",
- "ipv6Address": None
- }
- ]
- },
- "dhcpAcquiredDnsServers": []
- },
- "ntpProperties": {
- "acquisitionProperties": {
- "ntpAcquisitionType": "stat",
- "ntpServers": [
- {
- "addrType": "ipvx",
- "domainName": None,
- "ipvxAddress": {
- "addressType": "ipv4",
- "ipv4Address": "10.13.1.5",
- "ipv6Address": None
- }
- },
- {
- "addrType": "ipvx",
- "domainName": None,
- "ipvxAddress": {
- "addressType": "ipv4",
- "ipv4Address": "10.15.1.18",
- "ipv6Address": None
- }
- }
- ]
- },
- "dhcpAcquiredNtpServers": []
- },
- },
- ]
-
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_mgmt_interface.request'
-
- def _set_args(self, args=None):
- module_args = self.REQUIRED_PARAMS.copy()
- if args is not None:
- module_args.update(args)
- set_module_args(module_args)
-
- def test_controller_property_pass(self):
- """Verify dictionary return from controller property."""
- initial = {
- "state": "enable",
- "controller": "A",
- "channel": "1",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static"}
- controller_request = [
- {"physicalLocation": {"slot": 2},
- "controllerRef": "070000000000000000000002",
- "networkSettings": {"remoteAccessEnabled": True}},
- {"physicalLocation": {"slot": 1},
- "controllerRef": "070000000000000000000001",
- "networkSettings": {"remoteAccessEnabled": False}}]
- expected = {
- 'A': {'controllerRef': '070000000000000000000001',
- 'controllerSlot': 1, 'ssh': False},
- 'B': {'controllerRef': '070000000000000000000002',
- 'controllerSlot': 2, 'ssh': True}}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, controller_request)):
- response = mgmt_interface.controllers
- self.assertTrue(response == expected)
-
- def test_controller_property_fail(self):
- """Verify controllers endpoint request failure causes AnsibleFailJson exception."""
- initial = {
- "state": "enable",
- "controller": "A",
- "channel": "1",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static"}
- controller_request = [
- {"physicalLocation": {"slot": 2},
- "controllerRef": "070000000000000000000002",
- "networkSettings": {"remoteAccessEnabled": True}},
- {"physicalLocation": {"slot": 1},
- "controllerRef": "070000000000000000000001",
- "networkSettings": {"remoteAccessEnabled": False}}]
- expected = {
- 'A': {'controllerRef': '070000000000000000000001',
- 'controllerSlot': 1, 'ssh': False},
- 'B': {'controllerRef': '070000000000000000000002',
- 'controllerSlot': 2, 'ssh': True}}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
- with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to retrieve the controller settings."):
- with mock.patch(self.REQ_FUNC, return_value=Exception):
- response = mgmt_interface.controllers
-
- def test_interface_property_match_pass(self):
- """Verify return value from interface property."""
- initial = {
- "state": "enable",
- "controller": "A",
- "channel": "1",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.0",
- "config_method": "static"}
- controller_request = [
- {"physicalLocation": {"slot": 2},
- "controllerRef": "070000000000000000000002",
- "networkSettings": {"remoteAccessEnabled": True}},
- {"physicalLocation": {"slot": 1},
- "controllerRef": "070000000000000000000001",
- "networkSettings": {"remoteAccessEnabled": False}}]
- expected = {
- "dns_servers": [{"ipv4Address": "10.1.0.250", "addressType": "ipv4"},
- {"ipv4Address": "10.10.0.20", "addressType": "ipv4"}],
- "subnet_mask": "255.255.255.0",
- "link_status": "up",
- "ntp_servers": None,
- "ntp_config_method": "disabled",
- "controllerRef": "070000000000000000000001",
- "config_method": "configStatic",
- "enabled": True,
- "gateway": "10.1.1.1",
- "alias": "creG1g-AP-a",
- "controllerSlot": 1,
- "dns_config_method": "stat",
- "id": "2800070000000000000000000001000000000000",
- "address": "10.1.1.10",
- "ipv6Enabled": False,
- "channel": 1}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with mock.patch(self.REQ_FUNC, side_effect=[(200, self.TEST_DATA), (200, controller_request)]):
- iface = mgmt_interface.interface
- self.assertTrue(iface == expected)
-
- def test_interface_property_request_exception_fail(self):
- """Verify ethernet-interfaces endpoint request failure results in AnsibleFailJson exception."""
- initial = {
- "state": "enable",
- "controller": "A",
- "channel": "1",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static"}
- controller_request = [
- {"physicalLocation": {"slot": 2},
- "controllerRef": "070000000000000000000002",
- "networkSettings": {"remoteAccessEnabled": True}},
- {"physicalLocation": {"slot": 1},
- "controllerRef": "070000000000000000000001",
- "networkSettings": {"remoteAccessEnabled": False}}]
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with self.assertRaisesRegexp(AnsibleFailJson, r"Failed to retrieve defined management interfaces."):
- with mock.patch(self.REQ_FUNC, side_effect=[Exception, (200, controller_request)]):
- iface = mgmt_interface.interface
-
- def test_interface_property_no_match_fail(self):
- """Verify return value from interface property."""
- initial = {
- "state": "enable",
- "controller": "A",
- "name": "wrong_name",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static"}
- controller_request = [
- {"physicalLocation": {"slot": 2},
- "controllerRef": "070000000000000000000002",
- "networkSettings": {"remoteAccessEnabled": True}},
- {"physicalLocation": {"slot": 1},
- "controllerRef": "070000000000000000000001",
- "networkSettings": {"remoteAccessEnabled": False}}]
- expected = {
- "dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"},
- {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}],
- "subnet_mask": "255.255.255.0",
- "ntp_servers": None,
- "ntp_config_method": "disabled",
- "controllerRef": "070000000000000000000001",
- "config_method": "configStatic",
- "enabled": True,
- "gateway": "10.1.1.1",
- "alias": "creG1g-AP-a",
- "controllerSlot": 1,
- "dns_config_method": "stat",
- "id": "2800070000000000000000000001000000000000",
- "address": "10.1.1.111",
- "ipv6Enabled": False,
- "channel": 1}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
- with self.assertRaisesRegexp(AnsibleFailJson, r"We could not find an interface matching"):
- with mock.patch(self.REQ_FUNC, side_effect=[(200, self.TEST_DATA), (200, controller_request)]):
- iface = mgmt_interface.interface
-
- def test_get_enable_interface_settings_enabled_pass(self):
- """Validate get_enable_interface_settings updates properly."""
- initial = {
- "state": "enable",
- "controller": "A",
- "name": "wrong_name",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static"}
- iface = {"enabled": False}
- expected_iface = {}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- update, expected_iface, body = mgmt_interface.get_enable_interface_settings(iface, expected_iface, False, {})
- self.assertTrue(update and expected_iface["enabled"] and body["ipv4Enabled"])
-
- def test_get_enable_interface_settings_disabled_pass(self):
- """Validate get_enable_interface_settings updates properly."""
- initial = {
- "state": "disable",
- "controller": "A",
- "name": "wan0",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static"}
- iface = {"enabled": True}
- expected_iface = {}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- update, expected_iface, body = mgmt_interface.get_enable_interface_settings(iface, expected_iface, False, {})
- self.assertTrue(update and not expected_iface["enabled"] and not body["ipv4Enabled"])
-
- def test_update_array_interface_ssh_pass(self):
- """Verify get_interface_settings gives the right static configuration response."""
- initial = {
- "state": "enable",
- "controller": "A",
- "name": "wan0",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static",
- "ssh": True}
- iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"},
- {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}],
- "subnet_mask": "255.255.255.0",
- "link_status": "up",
- "ntp_servers": None,
- "ntp_config_method": "disabled",
- "controllerRef": "070000000000000000000001",
- "config_method": "configStatic",
- "enabled": True,
- "gateway": "10.1.1.1",
- "alias": "creG1g-AP-a",
- "controllerSlot": 1,
- "dns_config_method": "stat",
- "id": "2800070000000000000000000001000000000000",
- "address": "10.1.1.111",
- "ipv6Enabled": False,
- "channel": 1}
- settings = {"controllerRef": "070000000000000000000001",
- "ssh": False}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, None)):
- update = mgmt_interface.update_array(settings, iface)
- self.assertTrue(update)
-
- def test_update_array_dns_static_ntp_disable_pass(self):
- """Verify get_interface_settings gives the right static configuration response."""
- initial = {
- "controller": "A",
- "name": "wan0",
- "dns_config_method": "static",
- "dns_address": "192.168.1.1",
- "dns_address_backup": "192.168.1.100",
- "ntp_config_method": "disable"}
- iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"},
- {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}],
- "subnet_mask": "255.255.255.0",
- "link_status": "up",
- "ntp_servers": None,
- "ntp_config_method": "disabled",
- "controllerRef": "070000000000000000000001",
- "config_method": "configStatic",
- "enabled": True,
- "gateway": "10.1.1.1",
- "alias": "creG1g-AP-a",
- "controllerSlot": 1,
- "dns_config_method": "configDhcp",
- "id": "2800070000000000000000000001000000000000",
- "address": "10.1.1.111",
- "ipv6Enabled": False,
- "channel": 1}
- settings = {"controllerRef": "070000000000000000000001",
- "ssh": False}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, None)):
- update = mgmt_interface.update_array(settings, iface)
- self.assertTrue(update)
-
- def test_update_array_dns_dhcp_ntp_static_pass(self):
- """Verify get_interface_settings gives the right static configuration response."""
- initial = {
- "controller": "A",
- "name": "wan0",
- "ntp_config_method": "static",
- "ntp_address": "192.168.1.1",
- "ntp_address_backup": "192.168.1.100",
- "dns_config_method": "dhcp"}
- iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"},
- {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}],
- "subnet_mask": "255.255.255.0",
- "link_status": "up",
- "ntp_servers": None,
- "ntp_config_method": "disabled",
- "controllerRef": "070000000000000000000001",
- "config_method": "configStatic",
- "enabled": True,
- "gateway": "10.1.1.1",
- "alias": "creG1g-AP-a",
- "controllerSlot": 1,
- "dns_config_method": "configStatic",
- "id": "2800070000000000000000000001000000000000",
- "address": "10.1.1.111",
- "ipv6Enabled": False,
- "channel": 1}
- settings = {"controllerRef": "070000000000000000000001",
- "ssh": False}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, None)):
- update = mgmt_interface.update_array(settings, iface)
- self.assertTrue(update)
-
- def test_update_array_dns_dhcp_ntp_static_no_change_pass(self):
- """Verify get_interface_settings gives the right static configuration response."""
- initial = {
- "controller": "A",
- "name": "wan0",
- "ntp_config_method": "dhcp",
- "dns_config_method": "dhcp"}
- iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"},
- {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}],
- "subnet_mask": "255.255.255.0",
- "ntp_servers": None,
- "ntp_config_method": "dhcp",
- "controllerRef": "070000000000000000000001",
- "config_method": "static",
- "enabled": True,
- "gateway": "10.1.1.1",
- "alias": "creG1g-AP-a",
- "controllerSlot": 1,
- "dns_config_method": "dhcp",
- "id": "2800070000000000000000000001000000000000",
- "address": "10.1.1.11",
- "ipv6Enabled": False,
- "channel": 1}
- settings = {"controllerRef": "070000000000000000000001",
- "ssh": False}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with mock.patch(self.REQ_FUNC, return_value=(200, None)):
- update = mgmt_interface.update_array(settings, iface)
- self.assertFalse(update)
-
- def test_update_array_ipv4_ipv6_disabled_fail(self):
- """Verify exception is thrown when both ipv4 and ipv6 would be disabled at the same time."""
- initial = {
- "state": "disable",
- "controller": "A",
- "name": "wan0",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static",
- "ssh": True}
- iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"},
- {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}],
- "subnet_mask": "255.255.255.0",
- "ntp_servers": None,
- "ntp_config_method": "disabled",
- "controllerRef": "070000000000000000000001",
- "config_method": "configStatic",
- "enabled": True,
- "gateway": "10.1.1.1",
- "alias": "creG1g-AP-a",
- "controllerSlot": 1,
- "dns_config_method": "stat",
- "id": "2800070000000000000000000001000000000000",
- "address": "10.1.1.11",
- "ipv6Enabled": False,
- "channel": 1}
- settings = {"controllerRef": "070000000000000000000001",
- "ssh": False}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with self.assertRaisesRegexp(AnsibleFailJson, r"This storage-system already has IPv6 connectivity disabled."):
- with mock.patch(self.REQ_FUNC, return_value=(422, dict(ipv4Enabled=False, retcode="4", errorMessage=""))):
- mgmt_interface.update_array(settings, iface)
-
- def test_update_array_request_error_fail(self):
- """Verify exception is thrown when request results in an error."""
- initial = {
- "state": "disable",
- "controller": "A",
- "name": "wan0",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static",
- "ssh": True}
- iface = {"dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"},
- {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}],
- "subnet_mask": "255.255.255.0",
- "ntp_servers": None,
- "ntp_config_method": "disabled",
- "controllerRef": "070000000000000000000001",
- "config_method": "configStatic",
- "enabled": True,
- "gateway": "10.1.1.1",
- "alias": "creG1g-AP-a",
- "controllerSlot": 1,
- "dns_config_method": "stat",
- "id": "2800070000000000000000000001000000000000",
- "address": "10.1.1.111",
- "ipv6Enabled": False,
- "channel": 1}
- settings = {"controllerRef": "070000000000000000000001",
- "ssh": False}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with self.assertRaisesRegexp(AnsibleFailJson, r"We failed to configure the management interface."):
- with mock.patch(self.REQ_FUNC, return_value=(300, dict(ipv4Enabled=False, retcode="4", errorMessage=""))):
- mgmt_interface.update_array(settings, iface)
-
- def test_update_pass(self):
- """Validate update method completes."""
- initial = {
- "state": "enable",
- "controller": "A",
- "channel": "1",
- "address": "192.168.1.1",
- "subnet_mask": "255.255.255.1",
- "config_method": "static",
- "ssh": "yes"}
- controller_request = [
- {"physicalLocation": {"slot": 2},
- "controllerRef": "070000000000000000000002",
- "networkSettings": {"remoteAccessEnabled": True}},
- {"physicalLocation": {"slot": 1},
- "controllerRef": "070000000000000000000001",
- "networkSettings": {"remoteAccessEnabled": False}}]
- expected = {
- "dns_servers": [{"ipv4Address": "10.1.0.20", "addressType": "ipv4"},
- {"ipv4Address": "10.1.0.50", "addressType": "ipv4"}],
- "subnet_mask": "255.255.255.0",
- "ntp_servers": None,
- "ntp_config_method": "disabled",
- "controllerRef": "070000000000000000000001",
- "config_method": "configStatic",
- "enabled": True,
- "gateway": "10.1.1.1",
- "alias": "creG1g-AP-a",
- "controllerSlot": 1,
- "dns_config_method": "stat",
- "id": "2800070000000000000000000001000000000000",
- "address": "10.1.1.111",
- "ipv6Enabled": False,
- "channel": 1}
-
- self._set_args(initial)
- mgmt_interface = MgmtInterface()
-
- with self.assertRaisesRegexp(AnsibleExitJson, r"The interface settings have been updated."):
- with mock.patch(self.REQ_FUNC, side_effect=[(200, None), (200, controller_request), (200, self.TEST_DATA),
- (200, controller_request), (200, self.TEST_DATA)]):
- mgmt_interface.update()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_storagepool.py b/test/units/modules/storage/netapp/test_netapp_e_storagepool.py
deleted file mode 100644
index 1ce48bddb6..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_storagepool.py
+++ /dev/null
@@ -1,724 +0,0 @@
-# coding=utf-8
-# (c) 2018, NetApp 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
-
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-from ansible.modules.storage.netapp.netapp_e_storagepool import NetAppESeriesStoragePool
-
-try:
- from unittest.mock import patch, PropertyMock
-except ImportError:
- from mock import patch, PropertyMock
-
-
-class StoragePoolTest(ModuleTestCase):
- REQUIRED_PARAMS = {"api_username": "username",
- "api_password": "password",
- "api_url": "http://localhost/devmgr/v2",
- "ssid": "1",
- "validate_certs": "no"}
-
- STORAGE_POOL_DATA = [{"raidLevel": "raidDiskPool", "volumeGroupRef": "04000000600A098000A4B28D000017805C7BD4D8",
- "securityType": "capable",
- "protectionInformationCapabilities": {"protectionInformationCapable": True,
- "protectionType": "type2Protection"},
- "volumeGroupData": {"diskPoolData": {"reconstructionReservedDriveCount": 2}},
- "totalRaidedSpace": "2735894167552", "name": "pool",
- "id": "04000000600A098000A4B28D000017805C7BD4D8", "driveMediaType": "hdd"}]
- DRIVES_DATA = [{'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551ED1FF0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EB1930000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EAAE30000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551ECB1F0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EB2930000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551ECB0B0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EC6C70000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551E9BA70000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551ED7CF0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551ECB0F0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551E72870000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551E9DBB0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EAC230000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EA0BB0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': False, 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EAC4B0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551E7F2B0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EC9270000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EC97F0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551ECBFF0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551E9ED30000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EA4CF0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551EA29F0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551ECDFB0000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'hdd', 'id': '010000005000C500551E99230000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'ssd', 'id': '010000005000C500551E9ED31000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'ssd', 'id': '010000005000C500551EA4CF2000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'ssd', 'id': '010000005000C500551EA29F3000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'ssd', 'id': '010000005000C500551ECDFB4000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sas', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'},
- {'available': True, 'currentVolumeGroupRef': '0000000000000000000000000000000000000000',
- 'driveMediaType': 'ssd', 'id': '010000005000C500551E99235000000000000000', 'fdeCapable': True,
- 'hotSpare': False, 'invalidDriveData': False, 'nonRedundantAccess': False, 'pfa': False,
- 'phyDriveType': 'sata', 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'rawCapacity': '300000000000', 'removed': False, 'status': 'optimal', 'uncertified': False,
- 'usableCapacity': '299463129088'}]
-
- RAID6_CANDIDATE_DRIVES = {"volumeCandidate": [
- {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "898389368832", "usableSize": "898388459520",
- "driveCount": 5, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": {
- "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000",
- "010000005000C500551E9ED30000000000000000"]}, "candidateSelectionType": "count",
- "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas", "dssPreallocEnabled": False,
- "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd",
- "protectionInformationCapable": False,
- "protectionInformationCapabilities": {"protectionInformationCapable": True,
- "protectionType": "type2Protection"},
- "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None},
- "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"},
- {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "1197852491776", "usableSize": "1197851279360",
- "driveCount": 6, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": {
- "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000"]},
- "candidateSelectionType": "count", "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas",
- "dssPreallocEnabled": False, "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd",
- "protectionInformationCapable": False,
- "protectionInformationCapabilities": {"protectionInformationCapable": True,
- "protectionType": "type2Protection"},
- "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None},
- "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"},
- {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "1497315614720", "usableSize": "1497314099200",
- "driveCount": 7, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": {
- "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000",
- "010000005000C500551ED1FF0000000000000000"]}, "candidateSelectionType": "count",
- "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas", "dssPreallocEnabled": False,
- "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd",
- "protectionInformationCapable": False,
- "protectionInformationCapabilities": {"protectionInformationCapable": True,
- "protectionType": "type2Protection"},
- "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None},
- "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"},
- {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "1796778737664", "usableSize": "1796776919040",
- "driveCount": 8, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": {
- "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000",
- "010000005000C500551ED1FF0000000000000000", "010000005000C500551EA29F0000000000000000"]},
- "candidateSelectionType": "count", "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas",
- "dssPreallocEnabled": False, "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd",
- "protectionInformationCapable": False,
- "protectionInformationCapabilities": {"protectionInformationCapable": True,
- "protectionType": "type2Protection"},
- "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None},
- "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"},
- {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "2096241860608", "usableSize": "2096239738880",
- "driveCount": 9, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": {
- "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000",
- "010000005000C500551ED1FF0000000000000000", "010000005000C500551EA29F0000000000000000",
- "010000005000C500551ECDFB0000000000000000"]}, "candidateSelectionType": "count",
- "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas", "dssPreallocEnabled": False,
- "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd",
- "protectionInformationCapable": False,
- "protectionInformationCapabilities": {"protectionInformationCapable": True,
- "protectionType": "type2Protection"},
- "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None},
- "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"},
- {"raidLevel": "raid6", "trayLossProtection": False, "rawSize": "2395704983552", "usableSize": "2395702558720",
- "driveCount": 10, "freeExtentRef": "0000000000000000000000000000000000000000", "driveRefList": {
- "driveRef": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA4CF0000000000000000",
- "010000005000C500551ED1FF0000000000000000", "010000005000C500551EA29F0000000000000000",
- "010000005000C500551ECDFB0000000000000000", "010000005000C500551E99230000000000000000"]},
- "candidateSelectionType": "count", "spindleSpeedMatch": True, "spindleSpeed": 10000, "phyDriveType": "sas",
- "dssPreallocEnabled": False, "securityType": "capable", "drawerLossProtection": False, "driveMediaType": "hdd",
- "protectionInformationCapable": False,
- "protectionInformationCapabilities": {"protectionInformationCapable": True,
- "protectionType": "type2Protection"},
- "volumeCandidateData": {"type": "traditional", "diskPoolVolumeCandidateData": None},
- "driveBlockFormat": "allNative", "allocateReservedSpace": False, "securityLevel": "fde"}], "returnCode": "ok"}
-
- EXPANSION_DDP_DRIVES_LIST = ["010000005000C500551ED1FF0000000000000000", "010000005000C500551E7F2B0000000000000000",
- "010000005000C500551EC9270000000000000000", "010000005000C500551EC97F0000000000000000",
- "010000005000C500551ECBFF0000000000000000", "010000005000C500551E9ED30000000000000000",
- "010000005000C500551EA4CF0000000000000000", "010000005000C500551EA29F0000000000000000",
- "010000005000C500551ECDFB0000000000000000", "010000005000C500551E99230000000000000000",
- "010000005000C500551E9ED31000000000000000", "010000005000C500551EA4CF2000000000000000",
- "010000005000C500551EA29F3000000000000000", "010000005000C500551ECDFB4000000000000000",
- "010000005000C500551E99235000000000000000"]
- EXPANSION_DDP_DRIVE_DATA = {"returnCode": "ok", "candidates": [
- {"drives": ["010000005000C500551E7F2B0000000000000000"], "trayLossProtection": False, "wastedCapacity": "0",
- "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "299463129088",
- "driveBlockFormat": "allNative"},
- {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000"],
- "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False,
- "usableCapacity": "598926258176", "driveBlockFormat": "allNative"},
- {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000",
- "010000005000C500551E9ED30000000000000000"], "trayLossProtection": False, "wastedCapacity": "0",
- "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "898389387264",
- "driveBlockFormat": "allNative"},
- {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000"],
- "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False,
- "usableCapacity": "1197852516352", "driveBlockFormat": "allNative"},
- {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000",
- "010000005000C500551EA4CF0000000000000000"], "trayLossProtection": False, "wastedCapacity": "0",
- "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "1497315645440",
- "driveBlockFormat": "allNative"},
- {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000",
- "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000"],
- "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False,
- "usableCapacity": "1796778774528", "driveBlockFormat": "allNative"},
- {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000",
- "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000"], "trayLossProtection": False, "wastedCapacity": "0",
- "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "2096241903616",
- "driveBlockFormat": "allNative"},
- {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000",
- "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000"],
- "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False,
- "usableCapacity": "2395705032704", "driveBlockFormat": "allNative"},
- {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000",
- "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000",
- "010000005000C500551ECDFB0000000000000000"], "trayLossProtection": False, "wastedCapacity": "0",
- "spindleSpeedMatch": True, "drawerLossProtection": False, "usableCapacity": "2695168161792",
- "driveBlockFormat": "allNative"},
- {"drives": ["010000005000C500551E7F2B0000000000000000", "010000005000C500551E99230000000000000000",
- "010000005000C500551E9ED30000000000000000", "010000005000C500551EA29F0000000000000000",
- "010000005000C500551EA4CF0000000000000000", "010000005000C500551EC9270000000000000000",
- "010000005000C500551EC97F0000000000000000", "010000005000C500551ECBFF0000000000000000",
- "010000005000C500551ECDFB0000000000000000", "010000005000C500551ED1FF0000000000000000"],
- "trayLossProtection": False, "wastedCapacity": "0", "spindleSpeedMatch": True, "drawerLossProtection": False,
- "usableCapacity": "2994631290880", "driveBlockFormat": "allNative"}]}
-
- REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_storagepool.request"
- NETAPP_REQUEST_FUNC = "ansible.module_utils.netapp.NetAppESeriesModule.request"
- VALIDATE_FUNC = "ansible.modules.storage.netapp.netapp_e_storagepool.NetAppESeriesModule.validate_instance"
-
- DRIVES_PROPERTY = "ansible.modules.storage.netapp.netapp_e_storagepool.NetAppESeriesStoragePool.drives"
- STORAGE_POOL_PROPERTY = "ansible.modules.storage.netapp.netapp_e_storagepool.NetAppESeriesStoragePool.storage_pool"
-
- def _set_args(self, args=None):
- module_args = self.REQUIRED_PARAMS.copy()
- if args is not None:
- module_args.update(args)
- set_module_args(module_args)
-
- def _initialize_dummy_instance(self, alt_args=None):
- """Initialize a dummy instance of NetAppESeriesStoragePool for the purpose of testing individual methods."""
- args = {"state": "absent", "name": "storage_pool"}
- if alt_args:
- args.update(alt_args)
- self._set_args(args)
- return NetAppESeriesStoragePool()
-
- def test_drives_fail(self):
- """Verify exception is thrown."""
-
- with patch(self.NETAPP_REQUEST_FUNC) as netapp_request:
- netapp_request.return_value = Exception()
- storagepool = self._initialize_dummy_instance()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to fetch disk drives."):
- drives = storagepool.drives
-
- def test_available_drives(self):
- """Verify all drives returned are available"""
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
-
- storagepool = self._initialize_dummy_instance()
- self.assertEqual(storagepool.available_drives,
- ['010000005000C500551ED1FF0000000000000000', '010000005000C500551E7F2B0000000000000000',
- '010000005000C500551EC9270000000000000000', '010000005000C500551EC97F0000000000000000',
- '010000005000C500551ECBFF0000000000000000', '010000005000C500551E9ED30000000000000000',
- '010000005000C500551EA4CF0000000000000000', '010000005000C500551EA29F0000000000000000',
- '010000005000C500551ECDFB0000000000000000', '010000005000C500551E99230000000000000000',
- '010000005000C500551E9ED31000000000000000', '010000005000C500551EA4CF2000000000000000',
- '010000005000C500551EA29F3000000000000000', '010000005000C500551ECDFB4000000000000000',
- '010000005000C500551E99235000000000000000'])
-
- def test_available_drive_types(self):
- """Verify all drive types are returned in most common first order."""
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
-
- storagepool = self._initialize_dummy_instance()
- self.assertEqual(storagepool.available_drive_types[0], "hdd")
- self.assertEqual(storagepool.available_drive_types[1], "ssd")
-
- def test_available_drive_interface_types(self):
- """Verify all interface types are returned in most common first order."""
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
-
- storagepool = self._initialize_dummy_instance()
- self.assertEqual(storagepool.available_drive_interface_types[0], "sas")
- self.assertEqual(storagepool.available_drive_interface_types[1], "sata")
-
- def test_storage_pool_drives(self):
- """Verify storage pool drive collection."""
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
-
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "pool", "criteria_drive_count": "12", "raid_level": "raidDiskPool"})
- storagepool.pool_detail = self.STORAGE_POOL_DATA[0]
- self.assertEqual(storagepool.storage_pool_drives, [
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551EB1930000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551EAAE30000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551ECB1F0000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551EB2930000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551ECB0B0000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551EC6C70000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551E9BA70000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551ED7CF0000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551ECB0F0000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551E72870000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551E9DBB0000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551EAC230000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551EA0BB0000000000000000'},
- {'available': False, 'pfa': False, 'driveMediaType': 'hdd', 'uncertified': False,
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'}, 'fdeCapable': True,
- 'currentVolumeGroupRef': '04000000600A098000A4B28D000017805C7BD4D8', 'invalidDriveData': False,
- 'nonRedundantAccess': False, 'hotSpare': False, 'status': 'optimal', 'rawCapacity': '300000000000',
- 'usableCapacity': '299463129088', 'phyDriveType': 'sas', 'removed': False,
- 'id': '010000005000C500551EAC4B0000000000000000'}])
-
- def test_get_ddp_capacity(self):
- """Evaluate returned capacity from get_ddp_capacity method."""
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
-
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "pool", "criteria_drive_count": "12", "raid_level": "raidDiskPool"})
- storagepool.pool_detail = self.STORAGE_POOL_DATA[0]
- self.assertAlmostEqual(storagepool.get_ddp_capacity(self.EXPANSION_DDP_DRIVES_LIST), 6038680353645,
- places=-2) # Allows for python version/architecture computational differences
-
- def test_get_candidate_drives(self):
- """Verify correct candidate list is returned."""
- with patch(self.NETAPP_REQUEST_FUNC) as netapp_request:
- netapp_request.return_value = (200, self.RAID6_CANDIDATE_DRIVES)
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
-
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "raid6_vg", "criteria_drive_count": "6", "raid_level": "raid6"})
- self.assertEqual(storagepool.get_candidate_drives(),
- {'candidateSelectionType': 'count', 'driveMediaType': 'hdd',
- 'protectionInformationCapabilities': {'protectionInformationCapable': True,
- 'protectionType': 'type2Protection'},
- 'dssPreallocEnabled': False, 'phyDriveType': 'sas', 'allocateReservedSpace': False,
- 'trayLossProtection': False, 'raidLevel': 'raid6', 'spindleSpeed': 10000,
- 'securityType': 'capable', 'securityLevel': 'fde', 'spindleSpeedMatch': True,
- 'driveBlockFormat': 'allNative', 'protectionInformationCapable': False,
- 'freeExtentRef': '0000000000000000000000000000000000000000', 'driveCount': 6,
- 'driveRefList': {'driveRef': ['010000005000C500551E7F2B0000000000000000',
- '010000005000C500551EC9270000000000000000',
- '010000005000C500551EC97F0000000000000000',
- '010000005000C500551ECBFF0000000000000000',
- '010000005000C500551E9ED30000000000000000',
- '010000005000C500551EA4CF0000000000000000']},
- 'rawSize': '1197852491776', 'usableSize': '1197851279360',
- 'drawerLossProtection': False,
- 'volumeCandidateData': {'type': 'traditional', 'diskPoolVolumeCandidateData': None}})
-
- def test_get_expansion_candidate_drives(self):
- """Verify correct drive list is returned"""
- with patch(self.NETAPP_REQUEST_FUNC) as netapp_request:
- netapp_request.return_value = (200, self.EXPANSION_DDP_DRIVE_DATA)
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
-
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "pool", "criteria_drive_count": "20", "raid_level": "raidDiskPool"})
- storagepool.pool_detail = self.STORAGE_POOL_DATA[0]
- self.assertEqual(storagepool.get_expansion_candidate_drives(), [
- {'drawerLossProtection': False, 'trayLossProtection': False,
- 'drives': ['010000005000C500551E7F2B0000000000000000', '010000005000C500551E99230000000000000000',
- '010000005000C500551E9ED30000000000000000', '010000005000C500551EA29F0000000000000000',
- '010000005000C500551EA4CF0000000000000000', '010000005000C500551EC9270000000000000000'],
- 'spindleSpeedMatch': True, 'driveBlockFormat': 'allNative', 'usableCapacity': '1796778774528',
- 'wastedCapacity': '0'}])
-
- def test_get_maximum_reserve_drive_count(self):
- """Ensure maximum reserve drive count is accurately calculated."""
- with patch(self.NETAPP_REQUEST_FUNC) as netapp_request:
- netapp_request.return_value = (200, self.EXPANSION_DDP_DRIVE_DATA)
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
-
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "pool", "criteria_drive_count": "20", "raid_level": "raidDiskPool"})
- storagepool.pool_detail = self.STORAGE_POOL_DATA[0]
- self.assertEqual(storagepool.get_maximum_reserve_drive_count(), 5)
-
- def test_apply_check_mode_unchange(self):
- """Verify that the changes are appropriately determined."""
- # Absent storage pool required to be absent
- with self.assertRaisesRegexp(AnsibleExitJson, "'changed': False"):
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
- with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool:
- storage_pool.return_value = {}
- storagepool = self._initialize_dummy_instance(
- {"state": "absent", "name": "not-a-pool", "erase_secured_drives": False,
- "criteria_drive_count": "14", "raid_level": "raidDiskPool"})
- storagepool.module.check_mode = True
- storagepool.is_drive_count_valid = lambda x: True
- storagepool.apply()
-
- # Present storage pool with no changes
- with self.assertRaisesRegexp(AnsibleExitJson, "'changed': False"):
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
- with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool:
- storage_pool.return_value = self.STORAGE_POOL_DATA[0]
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "pool", "erase_secured_drives": False,
- "criteria_drive_count": "14", "raid_level": "raidDiskPool"})
- storagepool.module.check_mode = True
- storagepool.is_drive_count_valid = lambda x: True
- storagepool.apply()
-
- def test_apply_check_mode_change(self):
- """Verify that the changes are appropriately determined."""
- # Remove absent storage pool
- with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"):
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
- with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool:
- storage_pool.return_value = self.STORAGE_POOL_DATA[0]
- storagepool = self._initialize_dummy_instance(
- {"state": "absent", "name": "pool", "erase_secured_drives": False, "criteria_drive_count": "14",
- "raid_level": "raidDiskPool"})
- storagepool.module.check_mode = True
- storagepool.is_drive_count_valid = lambda x: True
- storagepool.apply()
-
- # Expand present storage pool
- with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"):
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
- with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool:
- storage_pool.return_value = self.STORAGE_POOL_DATA[0]
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "pool", "erase_secured_drives": False,
- "criteria_drive_count": "15", "raid_level": "raidDiskPool"})
- storagepool.module.check_mode = True
- storagepool.is_drive_count_valid = lambda x: True
- storagepool.expand_storage_pool = lambda check_mode: (True, 100)
- storagepool.migrate_raid_level = lambda check_mode: False
- storagepool.secure_storage_pool = lambda check_mode: False
- storagepool.set_reserve_drive_count = lambda check_mode: False
- storagepool.apply()
-
- # Migrate present storage pool raid level
- with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"):
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
- with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool:
- storage_pool.return_value = self.STORAGE_POOL_DATA[0]
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "pool", "erase_secured_drives": False,
- "criteria_drive_count": "15", "raid_level": "raidDiskPool"})
- storagepool.module.check_mode = True
- storagepool.is_drive_count_valid = lambda x: True
- storagepool.expand_storage_pool = lambda check_mode: (False, 0)
- storagepool.migrate_raid_level = lambda check_mode: True
- storagepool.secure_storage_pool = lambda check_mode: False
- storagepool.set_reserve_drive_count = lambda check_mode: False
- storagepool.apply()
-
- # Secure present storage pool
- with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"):
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
- with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool:
- storage_pool.return_value = self.STORAGE_POOL_DATA[0]
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "pool", "erase_secured_drives": False,
- "criteria_drive_count": "15", "raid_level": "raidDiskPool"})
- storagepool.module.check_mode = True
- storagepool.is_drive_count_valid = lambda x: True
- storagepool.expand_storage_pool = lambda check_mode: (False, 0)
- storagepool.migrate_raid_level = lambda check_mode: False
- storagepool.secure_storage_pool = lambda check_mode: True
- storagepool.set_reserve_drive_count = lambda check_mode: False
- storagepool.apply()
-
- # Change present storage pool reserve drive count
- with self.assertRaisesRegexp(AnsibleExitJson, "'changed': True"):
- with patch(self.DRIVES_PROPERTY, new_callable=PropertyMock) as drives:
- drives.return_value = self.DRIVES_DATA
- with patch(self.STORAGE_POOL_PROPERTY, new_callable=PropertyMock) as storage_pool:
- storage_pool.return_value = self.STORAGE_POOL_DATA[0]
- storagepool = self._initialize_dummy_instance(
- {"state": "present", "name": "pool", "erase_secured_drives": False,
- "criteria_drive_count": "15", "raid_level": "raidDiskPool"})
- storagepool.module.check_mode = True
- storagepool.is_drive_count_valid = lambda x: True
- storagepool.expand_storage_pool = lambda check_mode: (False, 0)
- storagepool.migrate_raid_level = lambda check_mode: False
- storagepool.secure_storage_pool = lambda check_mode: False
- storagepool.set_reserve_drive_count = lambda check_mode: True
- storagepool.apply()
diff --git a/test/units/modules/storage/netapp/test_netapp_e_syslog.py b/test/units/modules/storage/netapp/test_netapp_e_syslog.py
deleted file mode 100644
index e71d4c6b5d..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_syslog.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# (c) 2018, NetApp Inc.
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from ansible.modules.storage.netapp.netapp_e_syslog import Syslog
-from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args
-
-__metaclass__ = type
-from units.compat import mock
-
-
-class AsupTest(ModuleTestCase):
- REQUIRED_PARAMS = {
- "api_username": "rw",
- "api_password": "password",
- "api_url": "http://localhost",
- }
- REQ_FUNC = 'ansible.modules.storage.netapp.netapp_e_syslog.request'
-
- def _set_args(self, args=None):
- module_args = self.REQUIRED_PARAMS.copy()
- if args is not None:
- module_args.update(args)
- set_module_args(module_args)
-
- def test_test_configuration_fail(self):
- """Validate test_configuration fails when request exception is thrown."""
- initial = {"state": "present",
- "ssid": "1",
- "address": "192.168.1.1",
- "port": "514",
- "protocol": "udp",
- "components": ["auditLog"]}
- self._set_args(initial)
- syslog = Syslog()
-
- with self.assertRaisesRegexp(AnsibleFailJson, r"We failed to send test message!"):
- with mock.patch(self.REQ_FUNC, side_effect=Exception()):
- with mock.patch("time.sleep", return_value=None): # mocking sleep is not working
- syslog.test_configuration(self.REQUIRED_PARAMS)
-
- def test_update_configuration_record_match_pass(self):
- """Verify existing syslog server record match does not issue update request."""
- initial = {"state": "present",
- "ssid": "1",
- "address": "192.168.1.1",
- "port": "514",
- "protocol": "udp",
- "components": ["auditLog"]}
- expected = [{"id": "123456",
- "serverAddress": "192.168.1.1",
- "port": 514,
- "protocol": "udp",
- "components": [{"type": "auditLog"}]}]
-
- self._set_args(initial)
- syslog = Syslog()
-
- with mock.patch(self.REQ_FUNC, side_effect=[(200, expected), (200, None)]):
- updated = syslog.update_configuration()
- self.assertFalse(updated)
-
- def test_update_configuration_record_partial_match_pass(self):
- """Verify existing syslog server record partial match results in an update request."""
- initial = {"state": "present",
- "ssid": "1",
- "address": "192.168.1.1",
- "port": "514",
- "protocol": "tcp",
- "components": ["auditLog"]}
- expected = [{"id": "123456",
- "serverAddress": "192.168.1.1",
- "port": 514,
- "protocol": "udp",
- "components": [{"type": "auditLog"}]}]
-
- self._set_args(initial)
- syslog = Syslog()
-
- with mock.patch(self.REQ_FUNC, side_effect=[(200, expected), (200, None)]):
- updated = syslog.update_configuration()
- self.assertTrue(updated)
-
- def test_update_configuration_record_no_match_pass(self):
- """Verify existing syslog server record partial match results in an update request."""
- initial = {"state": "present",
- "ssid": "1",
- "address": "192.168.1.1",
- "port": "514",
- "protocol": "tcp",
- "components": ["auditLog"]}
- expected = [{"id": "123456",
- "serverAddress": "192.168.1.100",
- "port": 514,
- "protocol": "udp",
- "components": [{"type": "auditLog"}]}]
-
- self._set_args(initial)
- syslog = Syslog()
-
- with mock.patch(self.REQ_FUNC, side_effect=[(200, expected), (200, dict(id=1234))]):
- updated = syslog.update_configuration()
- self.assertTrue(updated)
-
- def test_update_configuration_record_no_match_defaults_pass(self):
- """Verify existing syslog server record partial match results in an update request."""
- initial = {"state": "present",
- "ssid": "1",
- "address": "192.168.1.1",
- "port": "514",
- "protocol": "tcp",
- "components": ["auditLog"]}
- expected = [{"id": "123456",
- "serverAddress": "192.168.1.100",
- "port": 514,
- "protocol": "udp",
- "components": [{"type": "auditLog"}]}]
-
- self._set_args(initial)
- syslog = Syslog()
-
- with mock.patch(self.REQ_FUNC, side_effect=[(200, expected), (200, dict(id=1234))]):
- updated = syslog.update_configuration()
- self.assertTrue(updated)
diff --git a/test/units/modules/storage/netapp/test_netapp_e_volume.py b/test/units/modules/storage/netapp/test_netapp_e_volume.py
deleted file mode 100644
index 348d0e4b1f..0000000000
--- a/test/units/modules/storage/netapp/test_netapp_e_volume.py
+++ /dev/null
@@ -1,870 +0,0 @@
-# coding=utf-8
-# (c) 2018, NetApp 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
-
-try:
- from unittest import mock
-except ImportError:
- import mock
-
-from ansible.module_utils.netapp import NetAppESeriesModule
-from ansible.modules.storage.netapp.netapp_e_volume import NetAppESeriesVolume
-from units.modules.utils import AnsibleFailJson, ModuleTestCase, set_module_args
-
-
-class NetAppESeriesVolumeTest(ModuleTestCase):
- REQUIRED_PARAMS = {"api_username": "username",
- "api_password": "password",
- "api_url": "http://localhost/devmgr/v2",
- "ssid": "1",
- "validate_certs": "no"}
-
- THIN_VOLUME_RESPONSE = [{"capacity": "1288490188800",
- "volumeRef": "3A000000600A098000A4B28D000010475C405428",
- "status": "optimal",
- "protectionType": "type1Protection",
- "maxVirtualCapacity": "281474976710656",
- "initialProvisionedCapacity": "4294967296",
- "currentProvisionedCapacity": "4294967296",
- "provisionedCapacityQuota": "1305670057984",
- "growthAlertThreshold": 85,
- "expansionPolicy": "automatic",
- "flashCached": False,
- "metadata": [{"key": "workloadId", "value": "4200000001000000000000000000000000000000"},
- {"key": "volumeTypeId", "value": "volume"}],
- "dataAssurance": True,
- "segmentSize": 131072,
- "diskPool": True,
- "listOfMappings": [],
- "mapped": False,
- "currentControllerId": "070000000000000000000001",
- "cacheSettings": {"readCacheEnable": True, "writeCacheEnable": True,
- "readAheadMultiplier": 0},
- "name": "thin_volume",
- "id": "3A000000600A098000A4B28D000010475C405428"}]
- VOLUME_GET_RESPONSE = [{"offline": False,
- "raidLevel": "raid6",
- "capacity": "214748364800",
- "reconPriority": 1,
- "segmentSize": 131072,
- "volumeRef": "02000000600A098000A4B9D100000F095C2F7F31",
- "status": "optimal",
- "protectionInformationCapable": False,
- "protectionType": "type0Protection",
- "diskPool": True,
- "flashCached": False,
- "metadata": [{"key": "workloadId", "value": "4200000002000000000000000000000000000000"},
- {"key": "volumeTypeId", "value": "Clare"}],
- "dataAssurance": False,
- "currentControllerId": "070000000000000000000002",
- "cacheSettings": {"readCacheEnable": True, "writeCacheEnable": False,
- "readAheadMultiplier": 0},
- "thinProvisioned": False,
- "totalSizeInBytes": "214748364800",
- "name": "Matthew",
- "id": "02000000600A098000A4B9D100000F095C2F7F31"},
- {"offline": False,
- "raidLevel": "raid6",
- "capacity": "107374182400",
- "reconPriority": 1,
- "segmentSize": 131072,
- "volumeRef": "02000000600A098000A4B28D00000FBE5C2F7F26",
- "status": "optimal",
- "protectionInformationCapable": False,
- "protectionType": "type0Protection",
- "diskPool": True,
- "flashCached": False,
- "metadata": [{"key": "workloadId", "value": "4200000002000000000000000000000000000000"},
- {"key": "volumeTypeId", "value": "Samantha"}],
- "dataAssurance": False,
- "currentControllerId": "070000000000000000000001",
- "cacheSettings": {"readCacheEnable": True, "writeCacheEnable": False,
- "readAheadMultiplier": 0},
- "thinProvisioned": False,
- "totalSizeInBytes": "107374182400",
- "name": "Samantha",
- "id": "02000000600A098000A4B28D00000FBE5C2F7F26"},
- {"offline": False,
- "raidLevel": "raid6",
- "capacity": "107374182400",
- "segmentSize": 131072,
- "volumeRef": "02000000600A098000A4B9D100000F0B5C2F7F40",
- "status": "optimal",
- "protectionInformationCapable": False,
- "protectionType": "type0Protection",
- "volumeGroupRef": "04000000600A098000A4B9D100000F085C2F7F26",
- "diskPool": True,
- "flashCached": False,
- "metadata": [{"key": "workloadId", "value": "4200000002000000000000000000000000000000"},
- {"key": "volumeTypeId", "value": "Micah"}],
- "dataAssurance": False,
- "currentControllerId": "070000000000000000000002",
- "cacheSettings": {"readCacheEnable": True, "writeCacheEnable": False,
- "readAheadMultiplier": 0},
- "thinProvisioned": False,
- "totalSizeInBytes": "107374182400",
- "name": "Micah",
- "id": "02000000600A098000A4B9D100000F0B5C2F7F40"}]
- STORAGE_POOL_GET_RESPONSE = [{"offline": False,
- "raidLevel": "raidDiskPool",
- "volumeGroupRef": "04000000600A",
- "securityType": "capable",
- "protectionInformationCapable": False,
- "protectionInformationCapabilities": {"protectionInformationCapable": True,
- "protectionType": "type2Protection"},
- "volumeGroupData": {"type": "diskPool",
- "diskPoolData": {"reconstructionReservedDriveCount": 1,
- "reconstructionReservedAmt": "296889614336",
- "reconstructionReservedDriveCountCurrent": 1,
- "poolUtilizationWarningThreshold": 0,
- "poolUtilizationCriticalThreshold": 85,
- "poolUtilizationState": "utilizationOptimal",
- "unusableCapacity": "0",
- "degradedReconstructPriority": "high",
- "criticalReconstructPriority": "highest",
- "backgroundOperationPriority": "low",
- "allocGranularity": "4294967296"}},
- "reservedSpaceAllocated": False,
- "securityLevel": "fde",
- "usedSpace": "863288426496",
- "totalRaidedSpace": "2276332666880",
- "raidStatus": "optimal",
- "freeSpace": "1413044240384",
- "drivePhysicalType": "sas",
- "driveMediaType": "hdd",
- "diskPool": True,
- "id": "04000000600A098000A4B9D100000F085C2F7F26",
- "name": "employee_data_storage_pool"},
- {"offline": False,
- "raidLevel": "raid1",
- "volumeGroupRef": "04000000600A098000A4B28D00000FBD5C2F7F19",
- "state": "complete",
- "securityType": "capable",
- "drawerLossProtection": False,
- "protectionInformationCapable": False,
- "protectionInformationCapabilities": {"protectionInformationCapable": True,
- "protectionType": "type2Protection"},
- "volumeGroupData": {"type": "unknown", "diskPoolData": None},
- "reservedSpaceAllocated": False,
- "securityLevel": "fde",
- "usedSpace": "322122547200",
- "totalRaidedSpace": "598926258176",
- "raidStatus": "optimal",
- "freeSpace": "276803710976",
- "drivePhysicalType": "sas",
- "driveMediaType": "hdd",
- "diskPool": False,
- "id": "04000000600A098000A4B28D00000FBD5C2F7F19",
- "name": "database_storage_pool"}]
-
- GET_LONG_LIVED_OPERATION_RESPONSE = [
- {"returnCode": "ok",
- "longLivedOpsProgress": [
- {"volAction": "initializing", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None,
- "init": {"volumeRef": "02000000600A098000A4B9D1000037315D494C6F", "pending": False, "percentComplete": 1, "timeToCompletion": 20},
- "format": None, "volCreation": None, "volDeletion": None},
- {"volAction": "initializing", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None,
- "init": {"volumeRef": "02000000600A098000A4B28D00003D2C5D494C87", "pending": False, "percentComplete": 0, "timeToCompletion": 18},
- "volCreation": None, "volDeletion": None}]},
- {"returnCode": "ok",
- "longLivedOpsProgress": [
- {"volAction": "complete", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None,
- "init": {"volumeRef": "02000000600A098000A4B9D1000037315D494C6F", "pending": False, "percentComplete": 1, "timeToCompletion": 20},
- "format": None, "volCreation": None, "volDeletion": None},
- {"volAction": "initializing", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None,
- "init": {"volumeRef": "02000000600A098000A4B28D00003D2C5D494C87", "pending": False, "percentComplete": 0, "timeToCompletion": 18},
- "volCreation": None, "volDeletion": None}]},
- {"returnCode": "ok",
- "longLivedOpsProgress": [
- {"volAction": "initializing", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None,
- "init": {"volumeRef": "02000000600A098000A4B9D1000037315D494C6F", "pending": False, "percentComplete": 1, "timeToCompletion": 20},
- "format": None, "volCreation": None, "volDeletion": None},
- {"volAction": "complete", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None,
- "init": {"volumeRef": "02000000600A098000A4B28D00003D2C5D494C87", "pending": False, "percentComplete": 0, "timeToCompletion": 18},
- "volCreation": None, "volDeletion": None}]},
- {"returnCode": "ok",
- "longLivedOpsProgress": [
- {"volAction": "complete", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None,
- "init": {"volumeRef": "02000000600A098000A4B9D1000037315D494C6F", "pending": False, "percentComplete": 1, "timeToCompletion": 20},
- "format": None, "volCreation": None, "volDeletion": None},
- {"volAction": "complete", "reconstruct": None, "volExpansion": None, "volAndCapExpansion": None,
- "init": {"volumeRef": "02000000600A098000A4B28D00003D2C5D494C87", "pending": False, "percentComplete": 0, "timeToCompletion": 18},
- "volCreation": None, "volDeletion": None}]}]
-
- WORKLOAD_GET_RESPONSE = [{"id": "4200000001000000000000000000000000000000", "name": "general_workload_1",
- "workloadAttributes": [{"key": "profileId", "value": "Other_1"}]},
- {"id": "4200000002000000000000000000000000000000", "name": "employee_data",
- "workloadAttributes": [{"key": "use", "value": "EmployeeData"},
- {"key": "location", "value": "ICT"},
- {"key": "private", "value": "public"},
- {"key": "profileId", "value": "ansible_workload_1"}]},
- {"id": "4200000003000000000000000000000000000000", "name": "customer_database",
- "workloadAttributes": [{"key": "use", "value": "customer_information"},
- {"key": "location", "value": "global"},
- {"key": "profileId", "value": "ansible_workload_2"}]},
- {"id": "4200000004000000000000000000000000000000", "name": "product_database",
- "workloadAttributes": [{"key": "use", "value": "production_information"},
- {"key": "security", "value": "private"},
- {"key": "location", "value": "global"},
- {"key": "profileId", "value": "ansible_workload_4"}]}]
-
- REQUEST_FUNC = "ansible.modules.storage.netapp.netapp_e_volume.NetAppESeriesVolume.request"
- GET_VOLUME_FUNC = "ansible.modules.storage.netapp.netapp_e_volume.NetAppESeriesVolume.get_volume"
- SLEEP_FUNC = "ansible.modules.storage.netapp.netapp_e_volume.sleep"
-
- def _set_args(self, args=None):
- module_args = self.REQUIRED_PARAMS.copy()
- if args is not None:
- module_args.update(args)
- set_module_args(module_args)
-
- def test_module_arguments_pass(self):
- """Ensure valid arguments successful create a class instance."""
- arg_sets = [{"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "tb",
- "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 10},
- {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "gb",
- "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1024,
- "thin_volume_growth_alert_threshold": 99},
- {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "gb",
- "thin_provision": True, "thin_volume_repo_size": 64},
- {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "kb",
- "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 67108864}]
-
- # validate size normalization
- for arg_set in arg_sets:
- self._set_args(arg_set)
- volume_object = NetAppESeriesVolume()
-
- self.assertEqual(volume_object.size_b, volume_object.convert_to_aligned_bytes(arg_set["size"]))
- self.assertEqual(volume_object.thin_volume_repo_size_b, volume_object.convert_to_aligned_bytes(arg_set["thin_volume_repo_size"]))
- self.assertEqual(volume_object.thin_volume_expansion_policy, "automatic")
- if "thin_volume_max_repo_size" not in arg_set.keys():
- self.assertEqual(volume_object.thin_volume_max_repo_size_b, volume_object.convert_to_aligned_bytes(arg_set["size"]))
- else:
- self.assertEqual(volume_object.thin_volume_max_repo_size_b,
- volume_object.convert_to_aligned_bytes(arg_set["thin_volume_max_repo_size"]))
-
- # validate metadata form
- self._set_args(
- {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 10, "workload_name": "workload1",
- "metadata": {"availability": "public", "security": "low"}})
- volume_object = NetAppESeriesVolume()
- for entry in volume_object.metadata:
- self.assertTrue(entry in [{'value': 'low', 'key': 'security'}, {'value': 'public', 'key': 'availability'}])
-
- def test_module_arguments_fail(self):
- """Ensure invalid arguments values do not create a class instance."""
- arg_sets = [{"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "tb",
- "thin_provision": True, "thin_volume_repo_size": 260},
- {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 10000, "size_unit": "tb",
- "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 10},
- {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 10000, "size_unit": "gb",
- "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 9},
- {"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 10000, "size_unit": "gb",
- "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 100}]
-
- for arg_set in arg_sets:
- with self.assertRaises(AnsibleFailJson):
- self._set_args(arg_set)
- print(arg_set)
- volume_object = NetAppESeriesVolume()
-
- def test_get_volume_pass(self):
- """Evaluate the get_volume method."""
- with mock.patch(self.REQUEST_FUNC,
- side_effect=[(200, self.VOLUME_GET_RESPONSE), (200, self.THIN_VOLUME_RESPONSE)]):
- self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100})
- volume_object = NetAppESeriesVolume()
- self.assertEqual(volume_object.get_volume(),
- [entry for entry in self.VOLUME_GET_RESPONSE if entry["name"] == "Matthew"][0])
-
- with mock.patch(self.REQUEST_FUNC,
- side_effect=[(200, self.VOLUME_GET_RESPONSE), (200, self.THIN_VOLUME_RESPONSE)]):
- self._set_args({"state": "present", "name": "NotAVolume", "storage_pool_name": "pool", "size": 100})
- volume_object = NetAppESeriesVolume()
- self.assertEqual(volume_object.get_volume(), {})
-
- def test_get_volume_fail(self):
- """Evaluate the get_volume exception paths."""
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to obtain list of thick volumes."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100})
- volume_object = NetAppESeriesVolume()
- volume_object.get_volume()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to obtain list of thin volumes."):
- with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.VOLUME_GET_RESPONSE), Exception()]):
- self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100})
- volume_object = NetAppESeriesVolume()
- volume_object.get_volume()
-
- def tests_wait_for_volume_availability_pass(self):
- """Ensure wait_for_volume_availability completes as expected."""
- self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100,
- "wait_for_initialization": True})
- volume_object = NetAppESeriesVolume()
- with mock.patch(self.SLEEP_FUNC, return_value=None):
- with mock.patch(self.GET_VOLUME_FUNC, side_effect=[False, False, True]):
- volume_object.wait_for_volume_availability()
-
- def tests_wait_for_volume_availability_fail(self):
- """Ensure wait_for_volume_availability throws the expected exceptions."""
- self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100,
- "wait_for_initialization": True})
- volume_object = NetAppESeriesVolume()
- volume_object.get_volume = lambda: False
- with self.assertRaisesRegexp(AnsibleFailJson, "Timed out waiting for the volume"):
- with mock.patch(self.SLEEP_FUNC, return_value=None):
- volume_object.wait_for_volume_availability()
-
- def tests_wait_for_volume_action_pass(self):
- """Ensure wait_for_volume_action completes as expected."""
- self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100,
- "wait_for_initialization": True})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"id": "02000000600A098000A4B9D1000037315D494C6F",
- "storageVolumeRef": "02000000600A098000A4B9D1000037315DXXXXXX"}
- with mock.patch(self.SLEEP_FUNC, return_value=None):
- with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.GET_LONG_LIVED_OPERATION_RESPONSE[0]),
- (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[1]),
- (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[2]),
- (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[3])]):
- volume_object.wait_for_volume_action()
-
- self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100,
- "wait_for_initialization": True})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"id": "02000000600A098000A4B9D1000037315DXXXXXX",
- "storageVolumeRef": "02000000600A098000A4B9D1000037315D494C6F"}
- with mock.patch(self.SLEEP_FUNC, return_value=None):
- with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.GET_LONG_LIVED_OPERATION_RESPONSE[0]),
- (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[1]),
- (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[2]),
- (200, self.GET_LONG_LIVED_OPERATION_RESPONSE[3])]):
- volume_object.wait_for_volume_action()
-
- def tests_wait_for_volume_action_fail(self):
- """Ensure wait_for_volume_action throws the expected exceptions."""
- self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool", "size": 100,
- "wait_for_initialization": True})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"id": "02000000600A098000A4B9D1000037315DXXXXXX",
- "storageVolumeRef": "02000000600A098000A4B9D1000037315D494C6F"}
- with mock.patch(self.SLEEP_FUNC, return_value=None):
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to get volume expansion progress."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- volume_object.wait_for_volume_action()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Expansion action failed to complete."):
- with mock.patch(self.REQUEST_FUNC, return_value=(200, self.GET_LONG_LIVED_OPERATION_RESPONSE[0])):
- volume_object.wait_for_volume_action(timeout=300)
-
- def test_get_storage_pool_pass(self):
- """Evaluate the get_storage_pool method."""
- with mock.patch(self.REQUEST_FUNC, return_value=(200, self.STORAGE_POOL_GET_RESPONSE)):
- self._set_args({"state": "present", "name": "NewVolume", "storage_pool_name": "employee_data_storage_pool",
- "size": 100})
- volume_object = NetAppESeriesVolume()
- self.assertEqual(volume_object.get_storage_pool(), [entry for entry in self.STORAGE_POOL_GET_RESPONSE if
- entry["name"] == "employee_data_storage_pool"][0])
-
- self._set_args(
- {"state": "present", "name": "NewVolume", "storage_pool_name": "NotAStoragePool", "size": 100})
- volume_object = NetAppESeriesVolume()
- self.assertEqual(volume_object.get_storage_pool(), {})
-
- def test_get_storage_pool_fail(self):
- """Evaluate the get_storage_pool exception paths."""
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to obtain list of storage pools."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100})
- volume_object = NetAppESeriesVolume()
- volume_object.get_storage_pool()
-
- def test_check_storage_pool_sufficiency_pass(self):
- """Ensure passing logic."""
- self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = [entry for entry in self.STORAGE_POOL_GET_RESPONSE
- if entry["name"] == "employee_data_storage_pool"][0]
- volume_object.check_storage_pool_sufficiency()
-
- def test_check_storage_pool_sufficiency_fail(self):
- """Validate exceptions are thrown for insufficient storage pool resources."""
- self._set_args({"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "tb",
- "thin_provision": True, "thin_volume_repo_size": 64, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 10})
- volume_object = NetAppESeriesVolume()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "Requested storage pool"):
- volume_object.check_storage_pool_sufficiency()
-
- with self.assertRaisesRegexp(AnsibleFailJson,
- "Thin provisioned volumes can only be created on raid disk pools."):
- volume_object.pool_detail = [entry for entry in self.STORAGE_POOL_GET_RESPONSE
- if entry["name"] == "database_storage_pool"][0]
- volume_object.volume_detail = {}
- volume_object.check_storage_pool_sufficiency()
-
- with self.assertRaisesRegexp(AnsibleFailJson, "requires the storage pool to be DA-compatible."):
- volume_object.pool_detail = {"diskPool": True,
- "protectionInformationCapabilities": {"protectionType": "type0Protection",
- "protectionInformationCapable": False}}
- volume_object.volume_detail = {}
- volume_object.data_assurance_enabled = True
- volume_object.check_storage_pool_sufficiency()
-
- volume_object.pool_detail = {"diskPool": True,
- "protectionInformationCapabilities": {"protectionType": "type2Protection",
- "protectionInformationCapable": True}}
- volume_object.check_storage_pool_sufficiency()
-
- self._set_args({"state": "present", "name": "vol", "storage_pool_name": "pool", "size": 100, "size_unit": "tb",
- "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- with self.assertRaisesRegexp(AnsibleFailJson,
- "Not enough storage pool free space available for the volume's needs."):
- volume_object.pool_detail = {"freeSpace": 10, "diskPool": True,
- "protectionInformationCapabilities": {"protectionType": "type2Protection",
- "protectionInformationCapable": True}}
- volume_object.volume_detail = {"totalSizeInBytes": 100}
- volume_object.data_assurance_enabled = True
- volume_object.size_b = 1
- volume_object.check_storage_pool_sufficiency()
-
- def test_update_workload_tags_pass(self):
- """Validate updating workload tags."""
- test_sets = [[{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100}, False],
- [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "employee_data"}, False],
- [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "customer_database",
- "metadata": {"use": "customer_information", "location": "global"}}, False],
- [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "customer_database",
- "metadata": {"use": "customer_information"}}, True],
- [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "customer_database",
- "metadata": {"use": "customer_information", "location": "local"}}, True],
- [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "customer_database",
- "metadata": {"use": "customer_information", "location": "global", "importance": "no"}}, True],
- [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "newWorkload",
- "metadata": {"for_testing": "yes"}}, True],
- [{"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "newWorkload"}, True]]
-
- for test in test_sets:
- self._set_args(test[0])
- volume_object = NetAppESeriesVolume()
-
- with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.WORKLOAD_GET_RESPONSE), (200, {"id": 1})]):
- self.assertEqual(volume_object.update_workload_tags(), test[1])
-
- def test_update_workload_tags_fail(self):
- """Validate updating workload tags fails appropriately."""
- self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "employee_data"})
- volume_object = NetAppESeriesVolume()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to retrieve storage array workload tags."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- volume_object.update_workload_tags()
-
- self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "employee_data", "metadata": {"key": "not-use", "value": "EmployeeData"}})
- volume_object = NetAppESeriesVolume()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create new workload tag."):
- with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.WORKLOAD_GET_RESPONSE), Exception()]):
- volume_object.update_workload_tags()
-
- self._set_args({"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100,
- "workload_name": "employee_data2", "metadata": {"key": "use", "value": "EmployeeData"}})
- volume_object = NetAppESeriesVolume()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create new workload tag."):
- with mock.patch(self.REQUEST_FUNC, side_effect=[(200, self.WORKLOAD_GET_RESPONSE), Exception()]):
- volume_object.update_workload_tags()
-
- def test_get_volume_property_changes_pass(self):
- """Verify correct dictionary is returned"""
-
- # no property changes
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True,
- "read_cache_enable": True, "write_cache_enable": True,
- "read_ahead_enable": True, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"metadata": [],
- "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True,
- "readAheadMultiplier": 1}, "flashCached": True,
- "segmentSize": str(128 * 1024)}
- self.assertEqual(volume_object.get_volume_property_changes(), dict())
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True,
- "read_cache_enable": True, "write_cache_enable": True,
- "read_ahead_enable": True, "thin_provision": True, "thin_volume_repo_size": 64,
- "thin_volume_max_repo_size": 1000, "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"metadata": [],
- "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True,
- "readAheadMultiplier": 1},
- "flashCached": True, "growthAlertThreshold": "90",
- "expansionPolicy": "automatic", "segmentSize": str(128 * 1024)}
- self.assertEqual(volume_object.get_volume_property_changes(), dict())
-
- # property changes
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True,
- "read_cache_enable": True, "write_cache_enable": True,
- "read_ahead_enable": True, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"metadata": [],
- "cacheSettings": {"cwob": False, "readCacheEnable": False, "writeCacheEnable": True,
- "readAheadMultiplier": 1}, "flashCached": True,
- "segmentSize": str(128 * 1024)}
- self.assertEqual(volume_object.get_volume_property_changes(),
- {"metaTags": [], 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True},
- 'flashCache': True})
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True,
- "read_cache_enable": True, "write_cache_enable": True, "cache_without_batteries": False,
- "read_ahead_enable": True, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"metadata": [],
- "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": False,
- "readAheadMultiplier": 1}, "flashCached": True,
- "segmentSize": str(128 * 1024)}
- self.assertEqual(volume_object.get_volume_property_changes(),
- {"metaTags": [], 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True},
- 'flashCache': True})
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True,
- "read_cache_enable": True, "write_cache_enable": True, "cache_without_batteries": True,
- "read_ahead_enable": True, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"metadata": [],
- "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True,
- "readAheadMultiplier": 1}, "flashCached": False,
- "segmentSize": str(128 * 1024)}
- self.assertEqual(volume_object.get_volume_property_changes(),
- {"metaTags": [], 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True, "cacheWithoutBatteries": True},
- 'flashCache': True})
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True,
- "read_cache_enable": True, "write_cache_enable": True, "cache_without_batteries": True,
- "read_ahead_enable": False, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"metadata": [],
- "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True,
- "readAheadMultiplier": 1}, "flashCached": False,
- "segmentSize": str(128 * 1024)}
- self.assertEqual(volume_object.get_volume_property_changes(), {"metaTags": [],
- 'cacheSettings': {'readCacheEnable': True,
- 'writeCacheEnable': True,
- 'readAheadEnable': False,
- "cacheWithoutBatteries": True},
- 'flashCache': True})
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True,
- "read_cache_enable": True, "write_cache_enable": True,
- "read_ahead_enable": True, "thin_provision": True, "thin_volume_repo_size": 64,
- "thin_volume_max_repo_size": 1000, "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"metadata": [],
- "cacheSettings": {"cwob": True, "readCacheEnable": True, "writeCacheEnable": True,
- "readAheadMultiplier": 1},
- "flashCached": True, "growthAlertThreshold": "95",
- "expansionPolicy": "automatic", "segmentSize": str(128 * 1024)}
- self.assertEqual(volume_object.get_volume_property_changes(),
- {"metaTags": [], 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True},
- 'growthAlertThreshold': 90, 'flashCache': True})
-
- def test_get_volume_property_changes_fail(self):
- """Verify correct exception is thrown"""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "ssd_cache_enabled": True,
- "read_cache_enable": True, "write_cache_enable": True, "read_ahead_enable": True, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {
- "cacheSettings": {"cwob": False, "readCacheEnable": True, "writeCacheEnable": True, "readAheadMultiplier": 1},
- "flashCached": True, "segmentSize": str(512 * 1024)}
- with self.assertRaisesRegexp(AnsibleFailJson, "Existing volume segment size is"):
- volume_object.get_volume_property_changes()
-
- def test_get_expand_volume_changes_pass(self):
- """Verify expansion changes."""
- # thick volumes
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"capacity": str(50 * 1024 * 1024 * 1024), "thinProvisioned": False}
- self.assertEqual(volume_object.get_expand_volume_changes(),
- {"sizeUnit": "bytes", "expansionSize": 100 * 1024 * 1024 * 1024})
-
- # thin volumes
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "automatic", "thin_volume_repo_size": 64,
- "thin_volume_max_repo_size": 1000, "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"capacity": str(50 * 1024 * 1024 * 1024), "thinProvisioned": True,
- "expansionPolicy": "automatic",
- "provisionedCapacityQuota": str(1000 * 1024 * 1024 * 1024)}
- self.assertEqual(volume_object.get_expand_volume_changes(),
- {"sizeUnit": "bytes", "newVirtualSize": 100 * 1024 * 1024 * 1024})
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "automatic", "thin_volume_repo_size": 64,
- "thin_volume_max_repo_size": 1000, "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True,
- "expansionPolicy": "automatic",
- "provisionedCapacityQuota": str(500 * 1024 * 1024 * 1024)}
- self.assertEqual(volume_object.get_expand_volume_changes(),
- {"sizeUnit": "bytes", "newRepositorySize": 1000 * 1024 * 1024 * 1024})
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 504, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True,
- "expansionPolicy": "manual",
- "currentProvisionedCapacity": str(500 * 1024 * 1024 * 1024)}
- self.assertEqual(volume_object.get_expand_volume_changes(),
- {"sizeUnit": "bytes", "newRepositorySize": 504 * 1024 * 1024 * 1024})
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 756, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True,
- "expansionPolicy": "manual",
- "currentProvisionedCapacity": str(500 * 1024 * 1024 * 1024)}
- self.assertEqual(volume_object.get_expand_volume_changes(),
- {"sizeUnit": "bytes", "newRepositorySize": 756 * 1024 * 1024 * 1024})
-
- def test_get_expand_volume_changes_fail(self):
- """Verify exceptions are thrown."""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"capacity": str(1000 * 1024 * 1024 * 1024)}
- with self.assertRaisesRegexp(AnsibleFailJson, "Reducing the size of volumes is not permitted."):
- volume_object.get_expand_volume_changes()
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 502, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True,
- "expansionPolicy": "manual",
- "currentProvisionedCapacity": str(500 * 1024 * 1024 * 1024)}
- with self.assertRaisesRegexp(AnsibleFailJson, "The thin volume repository increase must be between or equal"):
- volume_object.get_expand_volume_changes()
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"capacity": str(100 * 1024 * 1024 * 1024), "thinProvisioned": True,
- "expansionPolicy": "manual",
- "currentProvisionedCapacity": str(500 * 1024 * 1024 * 1024)}
- with self.assertRaisesRegexp(AnsibleFailJson, "The thin volume repository increase must be between or equal"):
- volume_object.get_expand_volume_changes()
-
- def test_create_volume_pass(self):
- """Verify volume creation."""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = {"id": "12345"}
- with mock.patch(self.REQUEST_FUNC, return_value=(200, {})):
- volume_object.create_volume()
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = {"id": "12345"}
- with mock.patch(self.REQUEST_FUNC, return_value=(200, {})):
- volume_object.create_volume()
-
- def test_create_volume_fail(self):
- """Verify exceptions thrown."""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = {"id": "12345"}
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create volume."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- volume_object.create_volume()
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = {"id": "12345"}
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create thin volume."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- volume_object.create_volume()
-
- def test_update_volume_properties_pass(self):
- """verify property update."""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = {"id": "12345"}
- volume_object.wait_for_volume_availability = lambda: None
- volume_object.get_volume = lambda: {"id": "12345'"}
- volume_object.get_volume_property_changes = lambda: {
- 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, 'growthAlertThreshold': 90,
- 'flashCached': True}
- volume_object.workload_id = "4200000001000000000000000000000000000000"
- with mock.patch(self.REQUEST_FUNC, return_value=(200, {})):
- self.assertTrue(volume_object.update_volume_properties())
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = {"id": "12345"}
- volume_object.wait_for_volume_availability = lambda: None
- volume_object.get_volume = lambda: {"id": "12345'"}
- volume_object.get_volume_property_changes = lambda: {
- 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, 'growthAlertThreshold': 90,
- 'flashCached': True}
- volume_object.workload_id = "4200000001000000000000000000000000000000"
- with mock.patch(self.REQUEST_FUNC, return_value=(200, {})):
- self.assertTrue(volume_object.update_volume_properties())
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = {"metadata": [{"key": "workloadId", "value": "12345"}]}
- volume_object.wait_for_volume_availability = lambda: None
- volume_object.get_volume = lambda: {"id": "12345'"}
- volume_object.get_volume_property_changes = lambda: {}
- volume_object.workload_id = "4200000001000000000000000000000000000000"
- self.assertFalse(volume_object.update_volume_properties())
-
- def test_update_volume_properties_fail(self):
- """Verify exceptions are thrown."""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = {"id": "12345"}
- volume_object.wait_for_volume_availability = lambda: None
- volume_object.get_volume = lambda: {"id": "12345'"}
- volume_object.get_volume_property_changes = lambda: {
- 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, 'growthAlertThreshold': 90,
- 'flashCached': True}
- volume_object.workload_id = "4200000001000000000000000000000000000000"
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to update volume properties."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- self.assertTrue(volume_object.update_volume_properties())
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.pool_detail = {"id": "12345"}
- volume_object.wait_for_volume_availability = lambda: None
- volume_object.get_volume = lambda: {"id": "12345'"}
- volume_object.get_volume_property_changes = lambda: {
- 'cacheSettings': {'readCacheEnable': True, 'writeCacheEnable': True}, 'growthAlertThreshold': 90,
- 'flashCached': True}
- volume_object.workload_id = "4200000001000000000000000000000000000000"
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to update thin volume properties."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- self.assertTrue(volume_object.update_volume_properties())
-
- def test_expand_volume_pass(self):
- """Verify volume expansion."""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.get_expand_volume_changes = lambda: {"sizeUnit": "bytes",
- "expansionSize": 100 * 1024 * 1024 * 1024}
- volume_object.volume_detail = {"id": "12345", "thinProvisioned": True}
- with mock.patch(self.REQUEST_FUNC, return_value=(200, {})):
- volume_object.expand_volume()
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.get_expand_volume_changes = lambda: {"sizeUnit": "bytes",
- "expansionSize": 100 * 1024 * 1024 * 1024}
- volume_object.volume_detail = {"id": "12345", "thinProvisioned": True}
- with mock.patch(self.REQUEST_FUNC, return_value=(200, {})):
- volume_object.expand_volume()
-
- def test_expand_volume_fail(self):
- """Verify exceptions are thrown."""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.get_expand_volume_changes = lambda: {"sizeUnit": "bytes",
- "expansionSize": 100 * 1024 * 1024 * 1024}
- volume_object.volume_detail = {"id": "12345", "thinProvisioned": False}
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to expand volume."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- volume_object.expand_volume()
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True})
- volume_object = NetAppESeriesVolume()
- volume_object.get_expand_volume_changes = lambda: {"sizeUnit": "bytes",
- "expansionSize": 100 * 1024 * 1024 * 1024}
- volume_object.volume_detail = {"id": "12345", "thinProvisioned": True}
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to expand thin volume."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- volume_object.expand_volume()
-
- def test_delete_volume_pass(self):
- """Verify volume deletion."""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"id": "12345"}
- with mock.patch(self.REQUEST_FUNC, return_value=(200, {})):
- volume_object.delete_volume()
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True,
- "thin_volume_expansion_policy": "manual", "thin_volume_repo_size": 760, "thin_volume_max_repo_size": 1000,
- "thin_volume_growth_alert_threshold": 90})
- volume_object = NetAppESeriesVolume()
- volume_object.volume_detail = {"id": "12345"}
- with mock.patch(self.REQUEST_FUNC, return_value=(200, {})):
- volume_object.delete_volume()
-
- def test_delete_volume_fail(self):
- """Verify exceptions are thrown."""
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": False})
- volume_object = NetAppESeriesVolume()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to delete volume."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- volume_object.delete_volume()
-
- self._set_args(
- {"state": "present", "name": "Matthew", "storage_pool_name": "pool", "size": 100, "thin_provision": True})
- volume_object = NetAppESeriesVolume()
- with self.assertRaisesRegexp(AnsibleFailJson, "Failed to delete thin volume."):
- with mock.patch(self.REQUEST_FUNC, return_value=Exception()):
- volume_object.delete_volume()
diff --git a/test/units/modules/system/test_java_keystore.py b/test/units/modules/system/test_java_keystore.py
deleted file mode 100644
index 434be518e3..0000000000
--- a/test/units/modules/system/test_java_keystore.py
+++ /dev/null
@@ -1,264 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2018, Ansible Project
-# Copyright (c) 2018, Abhijeet Kasurde <akasurde@redhat.com>
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-import os
-
-from units.modules.utils import ModuleTestCase, set_module_args
-from units.compat.mock import patch
-from units.compat.mock import Mock
-from ansible.module_utils.basic import AnsibleModule
-from ansible.modules.system.java_keystore import create_jks, cert_changed, ArgumentSpec
-
-
-class TestCreateJavaKeystore(ModuleTestCase):
- """Test the creation of a Java keystore."""
-
- def setUp(self):
- """Setup."""
- super(TestCreateJavaKeystore, self).setUp()
-
- orig_exists = os.path.exists
- self.spec = ArgumentSpec()
- self.mock_create_file = patch('ansible.modules.system.java_keystore.create_file',
- side_effect=lambda path, content: path)
- self.mock_run_commands = patch('ansible.modules.system.java_keystore.run_commands')
- self.mock_os_path_exists = patch('os.path.exists',
- side_effect=lambda path: True if path == '/path/to/keystore.jks' else orig_exists(path))
- self.mock_selinux_context = patch('ansible.module_utils.basic.AnsibleModule.selinux_context',
- side_effect=lambda path: ['unconfined_u', 'object_r', 'user_home_t', 's0'])
- self.mock_is_special_selinux_path = patch('ansible.module_utils.basic.AnsibleModule.is_special_selinux_path',
- side_effect=lambda path: (False, None))
- self.run_commands = self.mock_run_commands.start()
- self.create_file = self.mock_create_file.start()
- self.selinux_context = self.mock_selinux_context.start()
- self.is_special_selinux_path = self.mock_is_special_selinux_path.start()
- self.os_path_exists = self.mock_os_path_exists.start()
-
- def tearDown(self):
- """Teardown."""
- super(TestCreateJavaKeystore, self).tearDown()
- self.mock_create_file.stop()
- self.mock_run_commands.stop()
- self.mock_selinux_context.stop()
- self.mock_is_special_selinux_path.stop()
- self.mock_os_path_exists.stop()
-
- def test_create_jks_success(self):
- set_module_args(dict(
- certificate='cert-foo',
- private_key='private-foo',
- dest='/path/to/keystore.jks',
- name='foo',
- password='changeit'
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- module.exit_json = Mock()
-
- with patch('os.remove', return_value=True):
- self.run_commands.side_effect = lambda args, kwargs: (0, '', '')
- create_jks(module, "test", "openssl", "keytool", "/path/to/keystore.jks", "changeit")
- module.exit_json.assert_called_once_with(
- changed=True,
- cmd="keytool -importkeystore "
- "-destkeystore '/path/to/keystore.jks' "
- "-srckeystore '/tmp/keystore.p12' -srcstoretype pkcs12 -alias 'test' "
- "-deststorepass 'changeit' -srcstorepass 'changeit' -noprompt",
- msg='',
- rc=0,
- stdout_lines=''
- )
-
- def test_create_jks_fail_export_pkcs12(self):
- set_module_args(dict(
- certificate='cert-foo',
- private_key='private-foo',
- dest='/path/to/keystore.jks',
- name='foo',
- password='changeit'
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- module.fail_json = Mock()
-
- with patch('os.remove', return_value=True):
- self.run_commands.side_effect = [(1, '', ''), (0, '', '')]
- create_jks(module, "test", "openssl", "keytool", "/path/to/keystore.jks", "changeit")
- module.fail_json.assert_called_once_with(
- cmd="openssl pkcs12 -export -name 'test' "
- "-in '/tmp/foo.crt' -inkey '/tmp/foo.key' "
- "-out '/tmp/keystore.p12' "
- "-passout 'pass:changeit'",
- msg='',
- rc=1
- )
-
- def test_create_jks_fail_import_key(self):
- set_module_args(dict(
- certificate='cert-foo',
- private_key='private-foo',
- dest='/path/to/keystore.jks',
- name='foo',
- password='changeit'
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- module.fail_json = Mock()
-
- with patch('os.remove', return_value=True):
- self.run_commands.side_effect = [(0, '', ''), (1, '', '')]
- create_jks(module, "test", "openssl", "keytool", "/path/to/keystore.jks", "changeit")
- module.fail_json.assert_called_once_with(
- cmd="keytool -importkeystore "
- "-destkeystore '/path/to/keystore.jks' "
- "-srckeystore '/tmp/keystore.p12' -srcstoretype pkcs12 -alias 'test' "
- "-deststorepass 'changeit' -srcstorepass 'changeit' -noprompt",
- msg='',
- rc=1
- )
-
-
-class TestCertChanged(ModuleTestCase):
- """Test if the cert has changed."""
-
- def setUp(self):
- """Setup."""
- super(TestCertChanged, self).setUp()
- self.spec = ArgumentSpec()
- self.mock_create_file = patch('ansible.modules.system.java_keystore.create_file',
- side_effect=lambda path, content: path)
- self.mock_run_commands = patch('ansible.modules.system.java_keystore.run_commands')
- self.run_commands = self.mock_run_commands.start()
- self.create_file = self.mock_create_file.start()
-
- def tearDown(self):
- """Teardown."""
- super(TestCertChanged, self).tearDown()
- self.mock_create_file.stop()
- self.mock_run_commands.stop()
-
- def test_cert_unchanged_same_fingerprint(self):
- set_module_args(dict(
- certificate='cert-foo',
- private_key='private-foo',
- dest='/path/to/keystore.jks',
- name='foo',
- password='changeit'
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- with patch('os.remove', return_value=True):
- self.run_commands.side_effect = [(0, 'foo=abcd:1234:efgh', ''), (0, 'SHA256: abcd:1234:efgh', '')]
- result = cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo')
- self.assertFalse(result, 'Fingerprint is identical')
-
- def test_cert_changed_fingerprint_mismatch(self):
- set_module_args(dict(
- certificate='cert-foo',
- private_key='private-foo',
- dest='/path/to/keystore.jks',
- name='foo',
- password='changeit'
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- with patch('os.remove', return_value=True):
- self.run_commands.side_effect = [(0, 'foo=abcd:1234:efgh', ''), (0, 'SHA256: wxyz:9876:stuv', '')]
- result = cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo')
- self.assertTrue(result, 'Fingerprint mismatch')
-
- def test_cert_changed_alias_does_not_exist(self):
- set_module_args(dict(
- certificate='cert-foo',
- private_key='private-foo',
- dest='/path/to/keystore.jks',
- name='foo',
- password='changeit'
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- with patch('os.remove', return_value=True):
- self.run_commands.side_effect = [(0, 'foo=abcd:1234:efgh', ''),
- (1, 'keytool error: java.lang.Exception: Alias <foo> does not exist', '')]
- result = cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo')
- self.assertTrue(result, 'Certificate does not exist')
-
- def test_cert_changed_fail_read_cert(self):
- set_module_args(dict(
- certificate='cert-foo',
- private_key='private-foo',
- dest='/path/to/keystore.jks',
- name='foo',
- password='changeit'
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- module.fail_json = Mock()
-
- with patch('os.remove', return_value=True):
- self.run_commands.side_effect = [(1, '', 'Oops'), (0, 'SHA256: wxyz:9876:stuv', '')]
- cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo')
- module.fail_json.assert_called_once_with(
- cmd="openssl x509 -noout -in /tmp/foo.crt -fingerprint -sha256",
- msg='',
- err='Oops',
- rc=1
- )
-
- def test_cert_changed_fail_read_keystore(self):
- set_module_args(dict(
- certificate='cert-foo',
- private_key='private-foo',
- dest='/path/to/keystore.jks',
- name='foo',
- password='changeit'
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- module.fail_json = Mock(return_value=True)
-
- with patch('os.remove', return_value=True):
- self.run_commands.side_effect = [(0, 'foo: wxyz:9876:stuv', ''), (1, '', 'Oops')]
- cert_changed(module, "openssl", "keytool", "/path/to/keystore.jks", "changeit", 'foo')
- module.fail_json.assert_called_with(
- cmd="keytool -list -alias 'foo' -keystore '/path/to/keystore.jks' -storepass 'changeit' -v",
- msg='',
- err='Oops',
- rc=1
- )
diff --git a/test/units/modules/system/test_pamd.py b/test/units/modules/system/test_pamd.py
deleted file mode 100644
index 93c1d08ad4..0000000000
--- a/test/units/modules/system/test_pamd.py
+++ /dev/null
@@ -1,372 +0,0 @@
-from __future__ import (absolute_import, division, print_function)
-from units.compat import unittest
-
-from ansible.modules.system.pamd import PamdRule
-from ansible.modules.system.pamd import PamdLine
-from ansible.modules.system.pamd import PamdComment
-from ansible.modules.system.pamd import PamdInclude
-from ansible.modules.system.pamd import PamdService
-
-
-class PamdLineTestCase(unittest.TestCase):
-
- def setUp(self):
- self.pamd_line = PamdLine("This is a test")
-
- def test_line(self):
- self.assertEqual("This is a test", str(self.pamd_line))
-
- def test_matches(self):
- self.assertFalse(self.pamd_line.matches("test", "matches", "foo", "bar"))
-
-
-class PamdIncludeTestCase(unittest.TestCase):
-
- def setUp(self):
- self.good_include = PamdInclude("@include foobar")
- self.bad_include = PamdInclude("include foobar")
-
- def test_line(self):
- self.assertEqual("@include foobar", str(self.good_include))
-
- def test_matches(self):
- self.assertFalse(self.good_include.matches("something", "something", "dark", "side"))
-
- def test_valid(self):
- self.assertTrue(self.good_include.is_valid)
- self.assertFalse(self.bad_include.is_valid)
-
-
-class PamdCommentTestCase(unittest.TestCase):
-
- def setUp(self):
- self.good_comment = PamdComment("# This is a test comment")
- self.bad_comment = PamdComment("This is a bad test comment")
-
- def test_line(self):
- self.assertEqual("# This is a test comment", str(self.good_comment))
-
- def test_matches(self):
- self.assertFalse(self.good_comment.matches("test", "matches", "foo", "bar"))
-
- def test_valid(self):
- self.assertTrue(self.good_comment.is_valid)
- self.assertFalse(self.bad_comment.is_valid)
-
-
-class PamdRuleTestCase(unittest.TestCase):
- def setUp(self):
- self.rule = PamdRule('account', 'optional', 'pam_keyinit.so', 'revoke')
-
- def test_type(self):
- self.assertEqual(self.rule.rule_type, 'account')
-
- def test_control(self):
- self.assertEqual(self.rule.rule_control, 'optional')
- self.assertEqual(self.rule._control, 'optional')
-
- def test_path(self):
- self.assertEqual(self.rule.rule_path, 'pam_keyinit.so')
-
- def test_args(self):
- self.assertEqual(self.rule.rule_args, ['revoke'])
-
- def test_valid(self):
- self.assertTrue(self.rule.validate()[0])
-
-
-class PamdRuleBadValidationTestCase(unittest.TestCase):
- def setUp(self):
- self.bad_type = PamdRule('foobar', 'optional', 'pam_keyinit.so', 'revoke')
- self.bad_control_simple = PamdRule('account', 'foobar', 'pam_keyinit.so', 'revoke')
- self.bad_control_value = PamdRule('account', '[foobar=1 default=ignore]', 'pam_keyinit.so', 'revoke')
- self.bad_control_action = PamdRule('account', '[success=1 default=foobar]', 'pam_keyinit.so', 'revoke')
-
- def test_validate_bad_type(self):
- self.assertFalse(self.bad_type.validate()[0])
-
- def test_validate_bad_control_simple(self):
- self.assertFalse(self.bad_control_simple.validate()[0])
-
- def test_validate_bad_control_value(self):
- self.assertFalse(self.bad_control_value.validate()[0])
-
- def test_validate_bad_control_action(self):
- self.assertFalse(self.bad_control_action.validate()[0])
-
-
-class PamdServiceTestCase(unittest.TestCase):
- def setUp(self):
- self.system_auth_string = """#%PAM-1.0
-# This file is auto-generated.
-# User changes will be destroyed the next time authconfig is run.
-@include common-auth
-@include common-account
-@include common-session
-auth required pam_env.so
-auth sufficient pam_unix.so nullok try_first_pass
-auth requisite pam_succeed_if.so uid
-auth required pam_deny.so
-# Test comment
-auth sufficient pam_rootok.so
-
-account required pam_unix.so
-account sufficient pam_localuser.so
-account sufficient pam_succeed_if.so uid
-account [success=1 default=ignore] \
- pam_succeed_if.so user = vagrant use_uid quiet
-account required pam_permit.so
-account required pam_access.so listsep=,
-session include system-auth
-
-password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
-password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
-password required pam_deny.so
-
-session optional pam_keyinit.so revoke
-session required pam_limits.so
--session optional pam_systemd.so
-session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
-session [success=1 test=me default=ignore] pam_succeed_if.so service in crond quiet use_uid
-session required pam_unix.so"""
-
- self.simple_system_auth_string = """#%PAM-1.0
- auth required pam_env.so
-"""
-
- self.no_header_system_auth_string = """auth required pam_env.so
-auth sufficient pam_unix.so nullok try_first_pass
-auth requisite pam_succeed_if.so uid
-auth required pam_deny.so
-"""
-
- self.pamd = PamdService(self.system_auth_string)
-
- def test_properly_parsed(self):
- num_lines = len(self.system_auth_string.splitlines()) + 1
- num_lines_processed = len(str(self.pamd).splitlines())
- self.assertEqual(num_lines, num_lines_processed)
-
- def test_has_rule(self):
- self.assertTrue(self.pamd.has_rule('account', 'required', 'pam_permit.so'))
- self.assertTrue(self.pamd.has_rule('account', '[success=1 default=ignore]', 'pam_succeed_if.so'))
-
- def test_doesnt_have_rule(self):
- self.assertFalse(self.pamd.has_rule('account', 'requisite', 'pam_permit.so'))
-
- # Test Update
- def test_update_rule_type(self):
- self.assertTrue(self.pamd.update_rule('session', 'optional', 'pam_keyinit.so', new_type='account'))
- self.assertTrue(self.pamd.has_rule('account', 'optional', 'pam_keyinit.so'))
- test_rule = PamdRule('account', 'optional', 'pam_keyinit.so', 'revoke')
- self.assertIn(str(test_rule), str(self.pamd))
-
- def test_update_rule_that_doesnt_exist(self):
- self.assertFalse(self.pamd.update_rule('blah', 'blah', 'blah', new_type='account'))
- self.assertFalse(self.pamd.has_rule('blah', 'blah', 'blah'))
- test_rule = PamdRule('blah', 'blah', 'blah', 'account')
- self.assertNotIn(str(test_rule), str(self.pamd))
-
- def test_update_rule_type_two(self):
- self.assertTrue(self.pamd.update_rule('session', '[success=1 default=ignore]', 'pam_succeed_if.so', new_type='account'))
- self.assertTrue(self.pamd.has_rule('account', '[success=1 default=ignore]', 'pam_succeed_if.so'))
- test_rule = PamdRule('account', '[success=1 default=ignore]', 'pam_succeed_if.so')
- self.assertIn(str(test_rule), str(self.pamd))
-
- def test_update_rule_control_simple(self):
- self.assertTrue(self.pamd.update_rule('session', 'optional', 'pam_keyinit.so', new_control='required'))
- self.assertTrue(self.pamd.has_rule('session', 'required', 'pam_keyinit.so'))
- test_rule = PamdRule('session', 'required', 'pam_keyinit.so')
- self.assertIn(str(test_rule), str(self.pamd))
-
- def test_update_rule_control_complex(self):
- self.assertTrue(self.pamd.update_rule('session',
- '[success=1 default=ignore]',
- 'pam_succeed_if.so',
- new_control='[success=2 test=me default=ignore]'))
- self.assertTrue(self.pamd.has_rule('session', '[success=2 test=me default=ignore]', 'pam_succeed_if.so'))
- test_rule = PamdRule('session', '[success=2 test=me default=ignore]', 'pam_succeed_if.so')
- self.assertIn(str(test_rule), str(self.pamd))
-
- def test_update_rule_control_more_complex(self):
-
- self.assertTrue(self.pamd.update_rule('session',
- '[success=1 test=me default=ignore]',
- 'pam_succeed_if.so',
- new_control='[success=2 test=me default=ignore]'))
- self.assertTrue(self.pamd.has_rule('session', '[success=2 test=me default=ignore]', 'pam_succeed_if.so'))
- test_rule = PamdRule('session', '[success=2 test=me default=ignore]', 'pam_succeed_if.so')
- self.assertIn(str(test_rule), str(self.pamd))
-
- def test_update_rule_module_path(self):
- self.assertTrue(self.pamd.update_rule('auth', 'required', 'pam_env.so', new_path='pam_limits.so'))
- self.assertTrue(self.pamd.has_rule('auth', 'required', 'pam_limits.so'))
-
- def test_update_rule_module_path_slash(self):
- self.assertTrue(self.pamd.update_rule('auth', 'required', 'pam_env.so', new_path='/lib64/security/pam_duo.so'))
- self.assertTrue(self.pamd.has_rule('auth', 'required', '/lib64/security/pam_duo.so'))
-
- def test_update_rule_module_args(self):
- self.assertTrue(self.pamd.update_rule('auth', 'sufficient', 'pam_unix.so', new_args='uid uid'))
- test_rule = PamdRule('auth', 'sufficient', 'pam_unix.so', 'uid uid')
- self.assertIn(str(test_rule), str(self.pamd))
-
- test_rule = PamdRule('auth', 'sufficient', 'pam_unix.so', 'nullok try_first_pass')
- self.assertNotIn(str(test_rule), str(self.pamd))
-
- def test_update_first_three(self):
- self.assertTrue(self.pamd.update_rule('auth', 'required', 'pam_env.so',
- new_type='one', new_control='two', new_path='three'))
- self.assertTrue(self.pamd.has_rule('one', 'two', 'three'))
-
- def test_update_first_three_with_module_args(self):
- self.assertTrue(self.pamd.update_rule('auth', 'sufficient', 'pam_unix.so',
- new_type='one', new_control='two', new_path='three'))
- self.assertTrue(self.pamd.has_rule('one', 'two', 'three'))
- test_rule = PamdRule('one', 'two', 'three')
- self.assertIn(str(test_rule), str(self.pamd))
- self.assertIn(str(test_rule), str(self.pamd))
-
- def test_update_all_four(self):
- self.assertTrue(self.pamd.update_rule('auth', 'sufficient', 'pam_unix.so',
- new_type='one', new_control='two', new_path='three',
- new_args='four five'))
- test_rule = PamdRule('one', 'two', 'three', 'four five')
- self.assertIn(str(test_rule), str(self.pamd))
-
- test_rule = PamdRule('auth', 'sufficient', 'pam_unix.so', 'nullok try_first_pass')
- self.assertNotIn(str(test_rule), str(self.pamd))
-
- def test_update_rule_with_slash(self):
- self.assertTrue(self.pamd.update_rule('account', '[success=1 default=ignore]', 'pam_succeed_if.so',
- new_type='session', new_path='pam_access.so'))
- test_rule = PamdRule('session', '[success=1 default=ignore]', 'pam_access.so')
- self.assertIn(str(test_rule), str(self.pamd))
-
- # Insert Before
- def test_insert_before_rule(self):
-
- count = self.pamd.insert_before('account', 'required', 'pam_access.so',
- new_type='account', new_control='required', new_path='pam_limits.so')
- self.assertEqual(count, 1)
-
- rules = self.pamd.get("account", "required", "pam_access.so")
- for current_rule in rules:
- self.assertTrue(current_rule.prev.matches("account", "required", "pam_limits.so"))
-
- def test_insert_before_rule_where_rule_doesnt_exist(self):
-
- count = self.pamd.insert_before('account', 'sufficient', 'pam_access.so',
- new_type='account', new_control='required', new_path='pam_limits.so')
- self.assertFalse(count)
-
- def test_insert_before_rule_with_args(self):
- self.assertTrue(self.pamd.insert_before('account', 'required', 'pam_access.so',
- new_type='account', new_control='required', new_path='pam_limits.so',
- new_args='uid'))
-
- rules = self.pamd.get("account", "required", "pam_access.so")
- for current_rule in rules:
- self.assertTrue(current_rule.prev.matches("account", "required", "pam_limits.so", 'uid'))
-
- def test_insert_before_rule_test_duplicates(self):
- self.assertTrue(self.pamd.insert_before('account', 'required', 'pam_access.so',
- new_type='account', new_control='required', new_path='pam_limits.so'))
-
- self.pamd.insert_before('account', 'required', 'pam_access.so',
- new_type='account', new_control='required', new_path='pam_limits.so')
-
- rules = self.pamd.get("account", "required", "pam_access.so")
- for current_rule in rules:
- previous_rule = current_rule.prev
- self.assertTrue(previous_rule.matches("account", "required", "pam_limits.so"))
- self.assertFalse(previous_rule.prev.matches("account", "required", "pam_limits.so"))
-
- def test_insert_before_first_rule(self):
- self.assertTrue(self.pamd.insert_before('auth', 'required', 'pam_env.so',
- new_type='account', new_control='required', new_path='pam_limits.so'))
-
- def test_insert_before_first_rule_simple(self):
- simple_service = PamdService(self.simple_system_auth_string)
- self.assertTrue(simple_service.insert_before('auth', 'required', 'pam_env.so',
- new_type='account', new_control='required', new_path='pam_limits.so'))
-
- # Insert After
- def test_insert_after_rule(self):
- self.assertTrue(self.pamd.insert_after('account', 'required', 'pam_unix.so',
- new_type='account', new_control='required', new_path='pam_permit.so'))
- rules = self.pamd.get("account", "required", "pam_unix.so")
- for current_rule in rules:
- self.assertTrue(current_rule.next.matches("account", "required", "pam_permit.so"))
-
- def test_insert_after_rule_with_args(self):
- self.assertTrue(self.pamd.insert_after('account', 'required', 'pam_access.so',
- new_type='account', new_control='required', new_path='pam_permit.so',
- new_args='uid'))
- rules = self.pamd.get("account", "required", "pam_access.so")
- for current_rule in rules:
- self.assertTrue(current_rule.next.matches("account", "required", "pam_permit.so", "uid"))
-
- def test_insert_after_test_duplicates(self):
- self.assertTrue(self.pamd.insert_after('account', 'required', 'pam_access.so',
- new_type='account', new_control='required', new_path='pam_permit.so',
- new_args='uid'))
- self.assertFalse(self.pamd.insert_after('account', 'required', 'pam_access.so',
- new_type='account', new_control='required', new_path='pam_permit.so',
- new_args='uid'))
-
- rules = self.pamd.get("account", "required", "pam_access.so")
- for current_rule in rules:
- self.assertTrue(current_rule.next.matches("account", "required", "pam_permit.so", "uid"))
- self.assertFalse(current_rule.next.next.matches("account", "required", "pam_permit.so", "uid"))
-
- def test_insert_after_rule_last_rule(self):
- self.assertTrue(self.pamd.insert_after('session', 'required', 'pam_unix.so',
- new_type='account', new_control='required', new_path='pam_permit.so',
- new_args='uid'))
- rules = self.pamd.get("session", "required", "pam_unix.so")
- for current_rule in rules:
- self.assertTrue(current_rule.next.matches("account", "required", "pam_permit.so", "uid"))
-
- # Remove Module Arguments
- def test_remove_module_arguments_one(self):
- self.assertTrue(self.pamd.remove_module_arguments('auth', 'sufficient', 'pam_unix.so', 'nullok'))
-
- def test_remove_module_arguments_one_list(self):
- self.assertTrue(self.pamd.remove_module_arguments('auth', 'sufficient', 'pam_unix.so', ['nullok']))
-
- def test_remove_module_arguments_two(self):
- self.assertTrue(self.pamd.remove_module_arguments('session', '[success=1 default=ignore]', 'pam_succeed_if.so', 'service crond'))
-
- def test_remove_module_arguments_two_list(self):
- self.assertTrue(self.pamd.remove_module_arguments('session', '[success=1 default=ignore]', 'pam_succeed_if.so', ['service', 'crond']))
-
- def test_remove_module_arguments_where_none_existed(self):
- self.assertTrue(self.pamd.add_module_arguments('session', 'required', 'pam_limits.so', 'arg1 arg2= arg3=arg3'))
-
- def test_add_module_arguments_where_none_existed(self):
- self.assertTrue(self.pamd.add_module_arguments('account', 'required', 'pam_unix.so', 'arg1 arg2= arg3=arg3'))
-
- def test_add_module_arguments_where_none_existed_list(self):
- self.assertTrue(self.pamd.add_module_arguments('account', 'required', 'pam_unix.so', ['arg1', 'arg2=', 'arg3=arg3']))
-
- def test_add_module_arguments_where_some_existed(self):
- self.assertTrue(self.pamd.add_module_arguments('auth', 'sufficient', 'pam_unix.so', 'arg1 arg2= arg3=arg3'))
-
- def test_remove_rule(self):
- self.assertTrue(self.pamd.remove('account', 'required', 'pam_unix.so'))
- # Second run should not change anything
- self.assertFalse(self.pamd.remove('account', 'required', 'pam_unix.so'))
- test_rule = PamdRule('account', 'required', 'pam_unix.so')
- self.assertNotIn(str(test_rule), str(self.pamd))
-
- def test_remove_first_rule(self):
- no_header_service = PamdService(self.no_header_system_auth_string)
- self.assertTrue(no_header_service.remove('auth', 'required', 'pam_env.so'))
- test_rule = PamdRule('auth', 'required', 'pam_env.so')
- self.assertNotIn(str(test_rule), str(no_header_service))
-
- def test_remove_last_rule(self):
- self.assertTrue(self.pamd.remove('session', 'required', 'pam_unix.so'))
- test_rule = PamdRule('session', 'required', 'pam_unix.so')
- self.assertNotIn(str(test_rule), str(self.pamd))
diff --git a/test/units/modules/system/test_parted.py b/test/units/modules/system/test_parted.py
deleted file mode 100644
index 91439ffea3..0000000000
--- a/test/units/modules/system/test_parted.py
+++ /dev/null
@@ -1,240 +0,0 @@
-# (c) 2017 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-__metaclass__ = type
-from units.compat.mock import patch, call
-from ansible.modules.system import parted as parted_module
-from ansible.modules.system.parted import parse_partition_info
-from units.modules.utils import AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
-
-# Example of output : parted -s -m /dev/sdb -- unit 'MB' print
-parted_output1 = """
-BYT;
-/dev/sdb:286061MB:scsi:512:512:msdos:ATA TOSHIBA THNSFJ25:;
-1:1.05MB:106MB:105MB:fat32::esp;
-2:106MB:368MB:262MB:ext2::;
-3:368MB:256061MB:255692MB:::;"""
-
-# corresponding dictionary after parsing by parse_partition_info
-parted_dict1 = {
- "generic": {
- "dev": "/dev/sdb",
- "size": 286061.0,
- "unit": "mb",
- "table": "msdos",
- "model": "ATA TOSHIBA THNSFJ25",
- "logical_block": 512,
- "physical_block": 512
- },
- "partitions": [{
- "num": 1,
- "begin": 1.05,
- "end": 106.0,
- "size": 105.0,
- "fstype": "fat32",
- "name": '',
- "flags": ["esp"],
- "unit": "mb"
- }, {
- "num": 2,
- "begin": 106.0,
- "end": 368.0,
- "size": 262.0,
- "fstype": "ext2",
- "name": '',
- "flags": [],
- "unit": "mb"
- }, {
- "num": 3,
- "begin": 368.0,
- "end": 256061.0,
- "size": 255692.0,
- "fstype": "",
- "name": '',
- "flags": [],
- "unit": "mb"
- }]
-}
-
-parted_output2 = """
-BYT;
-/dev/sdb:286061MB:scsi:512:512:msdos:ATA TOSHIBA THNSFJ25:;"""
-
-# corresponding dictionary after parsing by parse_partition_info
-parted_dict2 = {
- "generic": {
- "dev": "/dev/sdb",
- "size": 286061.0,
- "unit": "mb",
- "table": "msdos",
- "model": "ATA TOSHIBA THNSFJ25",
- "logical_block": 512,
- "physical_block": 512
- },
- "partitions": []
-}
-
-
-class TestParted(ModuleTestCase):
- def setUp(self):
- super(TestParted, self).setUp()
-
- self.module = parted_module
- self.mock_check_parted_label = (patch('ansible.modules.system.parted.check_parted_label', return_value=False))
- self.check_parted_label = self.mock_check_parted_label.start()
-
- self.mock_parted = (patch('ansible.modules.system.parted.parted'))
- self.parted = self.mock_parted.start()
-
- self.mock_run_command = (patch('ansible.module_utils.basic.AnsibleModule.run_command'))
- self.run_command = self.mock_run_command.start()
-
- self.mock_get_bin_path = (patch('ansible.module_utils.basic.AnsibleModule.get_bin_path'))
- self.get_bin_path = self.mock_get_bin_path.start()
-
- def tearDown(self):
- super(TestParted, self).tearDown()
- self.mock_run_command.stop()
- self.mock_get_bin_path.stop()
- self.mock_parted.stop()
- self.mock_check_parted_label.stop()
-
- def execute_module(self, failed=False, changed=False, script=None):
- if failed:
- result = self.failed()
- self.assertTrue(result['failed'], result)
- else:
- result = self.changed(changed)
- self.assertEqual(result['changed'], changed, result)
-
- if script:
- self.assertEqual(script, result['script'], result['script'])
-
- return result
-
- def failed(self):
- with self.assertRaises(AnsibleFailJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertTrue(result['failed'], result)
- return result
-
- def changed(self, changed=False):
- with self.assertRaises(AnsibleExitJson) as exc:
- self.module.main()
-
- result = exc.exception.args[0]
- self.assertEqual(result['changed'], changed, result)
- return result
-
- def test_parse_partition_info(self):
- """Test that the parse_partition_info returns the expected dictionary"""
- self.assertEqual(parse_partition_info(parted_output1, 'MB'), parted_dict1)
- self.assertEqual(parse_partition_info(parted_output2, 'MB'), parted_dict2)
-
- def test_partition_already_exists(self):
- set_module_args({
- 'device': '/dev/sdb',
- 'number': 1,
- 'state': 'present',
- })
- with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1):
- self.execute_module(changed=False)
-
- def test_create_new_partition(self):
- set_module_args({
- 'device': '/dev/sdb',
- 'number': 4,
- 'state': 'present',
- })
- with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1):
- self.execute_module(changed=True, script='unit KiB mkpart primary 0% 100%')
-
- def test_create_new_partition_1G(self):
- set_module_args({
- 'device': '/dev/sdb',
- 'number': 4,
- 'state': 'present',
- 'part_end': '1GiB',
- })
- with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1):
- self.execute_module(changed=True, script='unit KiB mkpart primary 0% 1GiB')
-
- def test_remove_partition_number_1(self):
- set_module_args({
- 'device': '/dev/sdb',
- 'number': 1,
- 'state': 'absent',
- })
- with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1):
- self.execute_module(changed=True, script='rm 1')
-
- def test_change_flag(self):
- # Flags are set in a second run of parted().
- # Between the two runs, the partition dict is updated.
- # use checkmode here allow us to continue even if the dictionary is
- # not updated.
- set_module_args({
- 'device': '/dev/sdb',
- 'number': 3,
- 'state': 'present',
- 'flags': ['lvm', 'boot'],
- '_ansible_check_mode': True,
- })
-
- with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1):
- self.parted.reset_mock()
- self.execute_module(changed=True)
- # When using multiple flags:
- # order of execution is non deterministic, because set() operations are used in
- # the current implementation.
- expected_calls_order1 = [call('unit KiB set 3 lvm on set 3 boot on ',
- '/dev/sdb', 'optimal')]
- expected_calls_order2 = [call('unit KiB set 3 boot on set 3 lvm on ',
- '/dev/sdb', 'optimal')]
- self.assertTrue(self.parted.mock_calls == expected_calls_order1 or
- self.parted.mock_calls == expected_calls_order2)
-
- def test_create_new_primary_lvm_partition(self):
- # use check_mode, see previous test comment
- set_module_args({
- 'device': '/dev/sdb',
- 'number': 4,
- 'flags': ["boot"],
- 'state': 'present',
- 'part_start': '257GiB',
- '_ansible_check_mode': True,
- })
- with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict1):
- self.execute_module(changed=True, script='unit KiB mkpart primary 257GiB 100% unit KiB set 4 boot on')
-
- def test_create_label_gpt(self):
- # Like previous test, current implementation use parted to create the partition and
- # then retrieve and update the dictionary. Use check_mode to force to continue even if
- # dictionary is not updated.
- set_module_args({
- 'device': '/dev/sdb',
- 'number': 1,
- 'flags': ["lvm"],
- 'label': 'gpt',
- 'name': 'lvmpartition',
- 'state': 'present',
- '_ansible_check_mode': True,
- })
- with patch('ansible.modules.system.parted.get_device_info', return_value=parted_dict2):
- self.execute_module(changed=True, script='unit KiB mklabel gpt mkpart primary 0% 100% unit KiB name 1 \'"lvmpartition"\' set 1 lvm on')
diff --git a/test/units/modules/system/test_ufw.py b/test/units/modules/system/test_ufw.py
deleted file mode 100644
index b169e94e67..0000000000
--- a/test/units/modules/system/test_ufw.py
+++ /dev/null
@@ -1,434 +0,0 @@
-
-from units.compat import unittest
-from units.compat.mock import patch
-from ansible.module_utils import basic
-from ansible.module_utils._text import to_bytes
-import ansible.modules.system.ufw as module
-
-import json
-
-
-# mock ufw messages
-
-ufw_version_35 = """ufw 0.35\nCopyright 2008-2015 Canonical Ltd.\n"""
-
-ufw_verbose_header = """Status: active
-Logging: on (low)
-Default: deny (incoming), allow (outgoing), deny (routed)
-New profiles: skip
-
-To Action From
--- ------ ----"""
-
-
-ufw_status_verbose_with_port_7000 = ufw_verbose_header + """
-7000/tcp ALLOW IN Anywhere
-7000/tcp (v6) ALLOW IN Anywhere (v6)
-"""
-
-user_rules_with_port_7000 = """### tuple ### allow tcp 7000 0.0.0.0/0 any 0.0.0.0/0 in
-### tuple ### allow tcp 7000 ::/0 any ::/0 in
-"""
-
-user_rules_with_ipv6 = """### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.251 in
-### tuple ### allow udp 5353 ::/0 any ff02::fb in
-"""
-
-ufw_status_verbose_with_ipv6 = ufw_verbose_header + """
-5353/udp ALLOW IN 224.0.0.251
-5353/udp ALLOW IN ff02::fb
-"""
-
-ufw_status_verbose_nothing = ufw_verbose_header
-
-skippg_adding_existing_rules = "Skipping adding existing rule\nSkipping adding existing rule (v6)\n"
-
-grep_config_cli = "grep -h '^### tuple' /lib/ufw/user.rules /lib/ufw/user6.rules /etc/ufw/user.rules /etc/ufw/user6.rules "
-grep_config_cli += "/var/lib/ufw/user.rules /var/lib/ufw/user6.rules"
-
-dry_mode_cmd_with_port_700 = {
- "ufw status verbose": ufw_status_verbose_with_port_7000,
- "ufw --version": ufw_version_35,
- "ufw --dry-run allow from any to any port 7000 proto tcp": skippg_adding_existing_rules,
- "ufw --dry-run delete allow from any to any port 7000 proto tcp": "",
- "ufw --dry-run delete allow from any to any port 7001 proto tcp": user_rules_with_port_7000,
- "ufw --dry-run route allow in on foo out on bar from 1.1.1.1 port 7000 to 8.8.8.8 port 7001 proto tcp": "",
- "ufw --dry-run allow in on foo from any to any port 7003 proto tcp": "",
- "ufw --dry-run allow in on foo from 1.1.1.1 port 7002 to 8.8.8.8 port 7003 proto tcp": "",
- "ufw --dry-run allow out on foo from any to any port 7004 proto tcp": "",
- "ufw --dry-run allow out on foo from 1.1.1.1 port 7003 to 8.8.8.8 port 7004 proto tcp": "",
- grep_config_cli: user_rules_with_port_7000
-}
-
-# setup configuration :
-# ufw reset
-# ufw enable
-# ufw allow proto udp to any port 5353 from 224.0.0.251
-# ufw allow proto udp to any port 5353 from ff02::fb
-dry_mode_cmd_with_ipv6 = {
- "ufw status verbose": ufw_status_verbose_with_ipv6,
- "ufw --version": ufw_version_35,
- # CONTENT of the command sudo ufw --dry-run delete allow in from ff02::fb port 5353 proto udp | grep -E "^### tupple"
- "ufw --dry-run delete allow from ff02::fb to any port 5353 proto udp": "### tuple ### allow udp any ::/0 5353 ff02::fb in",
- grep_config_cli: user_rules_with_ipv6,
- "ufw --dry-run allow from ff02::fb to any port 5353 proto udp": skippg_adding_existing_rules,
- "ufw --dry-run allow from 224.0.0.252 to any port 5353 proto udp": """### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.251 in
-### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.252 in
-""",
- "ufw --dry-run allow from 10.0.0.0/24 to any port 1577 proto udp": "### tuple ### allow udp 1577 0.0.0.0/0 any 10.0.0.0/24 in"
-}
-
-dry_mode_cmd_nothing = {
- "ufw status verbose": ufw_status_verbose_nothing,
- "ufw --version": ufw_version_35,
- grep_config_cli: "",
- "ufw --dry-run allow from any to :: port 23": "### tuple ### allow any 23 :: any ::/0 in"
-}
-
-
-def do_nothing_func_nothing(*args, **kwarg):
- return 0, dry_mode_cmd_nothing[args[0]], ""
-
-
-def do_nothing_func_ipv6(*args, **kwarg):
- return 0, dry_mode_cmd_with_ipv6[args[0]], ""
-
-
-def do_nothing_func_port_7000(*args, **kwarg):
- return 0, dry_mode_cmd_with_port_700[args[0]], ""
-
-
-def set_module_args(args):
- args = json.dumps({'ANSIBLE_MODULE_ARGS': args})
- """prepare arguments so that they will be picked up during module creation"""
- basic._ANSIBLE_ARGS = to_bytes(args)
-
-
-class AnsibleExitJson(Exception):
- """Exception class to be raised by module.exit_json and caught by the test case"""
- pass
-
-
-class AnsibleFailJson(Exception):
- """Exception class to be raised by module.fail_json and caught by the test case"""
- pass
-
-
-def exit_json(*args, **kwargs):
- """function to patch over exit_json; package return data into an exception"""
- if 'changed' not in kwargs:
- kwargs['changed'] = False
- raise AnsibleExitJson(kwargs)
-
-
-def fail_json(*args, **kwargs):
- """function to patch over fail_json; package return data into an exception"""
- kwargs['failed'] = True
- raise AnsibleFailJson(kwargs)
-
-
-def get_bin_path(self, arg, required=False):
- """Mock AnsibleModule.get_bin_path"""
- return arg
-
-
-class TestUFW(unittest.TestCase):
-
- def setUp(self):
- self.mock_module_helper = patch.multiple(basic.AnsibleModule,
- exit_json=exit_json,
- fail_json=fail_json,
- get_bin_path=get_bin_path)
- self.mock_module_helper.start()
- self.addCleanup(self.mock_module_helper.stop)
-
- def test_filter_line_that_contains_ipv4(self):
- reg = module.compile_ipv4_regexp()
-
- self.assertTrue(reg.search("### tuple ### allow udp 5353 ::/0 any ff02::fb in") is None)
- self.assertTrue(reg.search("### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.251 in") is not None)
-
- self.assertTrue(reg.match("ff02::fb") is None)
- self.assertTrue(reg.match("224.0.0.251") is not None)
- self.assertTrue(reg.match("10.0.0.0/8") is not None)
- self.assertTrue(reg.match("somethingElse") is None)
- self.assertTrue(reg.match("::") is None)
- self.assertTrue(reg.match("any") is None)
-
- def test_filter_line_that_contains_ipv6(self):
- reg = module.compile_ipv6_regexp()
- self.assertTrue(reg.search("### tuple ### allow udp 5353 ::/0 any ff02::fb in") is not None)
- self.assertTrue(reg.search("### tuple ### allow udp 5353 0.0.0.0/0 any 224.0.0.251 in") is None)
- self.assertTrue(reg.search("### tuple ### allow any 23 :: any ::/0 in") is not None)
- self.assertTrue(reg.match("ff02::fb") is not None)
- self.assertTrue(reg.match("224.0.0.251") is None)
- self.assertTrue(reg.match("::") is not None)
-
- def test_check_mode_add_rules(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'port': '7000',
- '_ansible_check_mode': True
- })
- result = self.__getResult(do_nothing_func_port_7000)
- self.assertFalse(result.exception.args[0]['changed'])
-
- def test_check_mode_add_detailed_route(self):
- set_module_args({
- 'rule': 'allow',
- 'route': 'yes',
- 'interface_in': 'foo',
- 'interface_out': 'bar',
- 'proto': 'tcp',
- 'from_ip': '1.1.1.1',
- 'to_ip': '8.8.8.8',
- 'from_port': '7000',
- 'to_port': '7001',
- '_ansible_check_mode': True
- })
-
- result = self.__getResult(do_nothing_func_port_7000)
- self.assertTrue(result.exception.args[0]['changed'])
-
- def test_check_mode_add_ambiguous_route(self):
- set_module_args({
- 'rule': 'allow',
- 'route': 'yes',
- 'interface_in': 'foo',
- 'interface_out': 'bar',
- 'direction': 'in',
- 'interface': 'baz',
- '_ansible_check_mode': True
- })
-
- with self.assertRaises(AnsibleFailJson) as result:
- self.__getResult(do_nothing_func_port_7000)
-
- exc = result.exception.args[0]
- self.assertTrue(exc['failed'])
- self.assertIn('mutually exclusive', exc['msg'])
-
- def test_check_mode_add_interface_in(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'port': '7003',
- 'interface_in': 'foo',
- '_ansible_check_mode': True
- })
- result = self.__getResult(do_nothing_func_port_7000)
- self.assertTrue(result.exception.args[0]['changed'])
-
- def test_check_mode_add_interface_out(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'port': '7004',
- 'interface_out': 'foo',
- '_ansible_check_mode': True
- })
- result = self.__getResult(do_nothing_func_port_7000)
- self.assertTrue(result.exception.args[0]['changed'])
-
- def test_check_mode_add_non_route_interface_both(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'port': '7004',
- 'interface_in': 'foo',
- 'interface_out': 'bar',
- '_ansible_check_mode': True
- })
-
- with self.assertRaises(AnsibleFailJson) as result:
- self.__getResult(do_nothing_func_port_7000)
-
- exc = result.exception.args[0]
- self.assertTrue(exc['failed'])
- self.assertIn('combine', exc['msg'])
-
- def test_check_mode_add_direction_in(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'port': '7003',
- 'direction': 'in',
- 'interface': 'foo',
- '_ansible_check_mode': True
- })
- result = self.__getResult(do_nothing_func_port_7000)
- self.assertTrue(result.exception.args[0]['changed'])
-
- def test_check_mode_add_direction_in_with_ip(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'from_ip': '1.1.1.1',
- 'from_port': '7002',
- 'to_ip': '8.8.8.8',
- 'to_port': '7003',
- 'direction': 'in',
- 'interface': 'foo',
- '_ansible_check_mode': True
- })
- result = self.__getResult(do_nothing_func_port_7000)
- self.assertTrue(result.exception.args[0]['changed'])
-
- def test_check_mode_add_direction_out(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'port': '7004',
- 'direction': 'out',
- 'interface': 'foo',
- '_ansible_check_mode': True
- })
- result = self.__getResult(do_nothing_func_port_7000)
- self.assertTrue(result.exception.args[0]['changed'])
-
- def test_check_mode_add_direction_out_with_ip(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'from_ip': '1.1.1.1',
- 'from_port': '7003',
- 'to_ip': '8.8.8.8',
- 'to_port': '7004',
- 'direction': 'out',
- 'interface': 'foo',
- '_ansible_check_mode': True
- })
- result = self.__getResult(do_nothing_func_port_7000)
- self.assertTrue(result.exception.args[0]['changed'])
-
- def test_check_mode_delete_existing_rules(self):
-
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'port': '7000',
- 'delete': 'yes',
- '_ansible_check_mode': True,
- })
-
- self.assertTrue(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed'])
-
- def test_check_mode_delete_not_existing_rules(self):
-
- set_module_args({
- 'rule': 'allow',
- 'proto': 'tcp',
- 'port': '7001',
- 'delete': 'yes',
- '_ansible_check_mode': True,
- })
-
- self.assertFalse(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed'])
-
- def test_enable_mode(self):
- set_module_args({
- 'state': 'enabled',
- '_ansible_check_mode': True
- })
-
- self.assertFalse(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed'])
-
- def test_disable_mode(self):
- set_module_args({
- 'state': 'disabled',
- '_ansible_check_mode': True
- })
-
- self.assertTrue(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed'])
-
- def test_logging_off(self):
- set_module_args({
- 'logging': 'off',
- '_ansible_check_mode': True
- })
-
- self.assertTrue(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed'])
-
- def test_logging_on(self):
- set_module_args({
- 'logging': 'on',
- '_ansible_check_mode': True
- })
-
- self.assertFalse(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed'])
-
- def test_default_changed(self):
- set_module_args({
- 'default': 'allow',
- "direction": "incoming",
- '_ansible_check_mode': True
- })
- self.assertTrue(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed'])
-
- def test_default_not_changed(self):
- set_module_args({
- 'default': 'deny',
- "direction": "incoming",
- '_ansible_check_mode': True
- })
- self.assertFalse(self.__getResult(do_nothing_func_port_7000).exception.args[0]['changed'])
-
- def test_ipv6_remove(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'udp',
- 'port': '5353',
- 'from': 'ff02::fb',
- 'delete': 'yes',
- '_ansible_check_mode': True,
- })
- self.assertTrue(self.__getResult(do_nothing_func_ipv6).exception.args[0]['changed'])
-
- def test_ipv6_add_existing(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'udp',
- 'port': '5353',
- 'from': 'ff02::fb',
- '_ansible_check_mode': True,
- })
- self.assertFalse(self.__getResult(do_nothing_func_ipv6).exception.args[0]['changed'])
-
- def test_add_not_existing_ipv4_submask(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'udp',
- 'port': '1577',
- 'from': '10.0.0.0/24',
- '_ansible_check_mode': True,
- })
- self.assertTrue(self.__getResult(do_nothing_func_ipv6).exception.args[0]['changed'])
-
- def test_ipv4_add_with_existing_ipv6(self):
- set_module_args({
- 'rule': 'allow',
- 'proto': 'udp',
- 'port': '5353',
- 'from': '224.0.0.252',
- '_ansible_check_mode': True,
- })
- self.assertTrue(self.__getResult(do_nothing_func_ipv6).exception.args[0]['changed'])
-
- def test_ipv6_add_from_nothing(self):
- set_module_args({
- 'rule': 'allow',
- 'port': '23',
- 'to': '::',
- '_ansible_check_mode': True,
- })
- result = self.__getResult(do_nothing_func_nothing).exception.args[0]
- print(result)
- self.assertTrue(result['changed'])
-
- def __getResult(self, cmd_fun):
- with patch.object(basic.AnsibleModule, 'run_command') as mock_run_command:
- mock_run_command.side_effect = cmd_fun
- with self.assertRaises(AnsibleExitJson) as result:
- module.main()
- return result
diff --git a/test/units/modules/web_infrastructure/test_apache2_module.py b/test/units/modules/web_infrastructure/test_apache2_module.py
deleted file mode 100644
index 703b35b9da..0000000000
--- a/test/units/modules/web_infrastructure/test_apache2_module.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import pytest
-
-from ansible.modules.web_infrastructure.apache2_module import create_apache_identifier
-
-REPLACEMENTS = [
- ('php7.1', 'php7_module'),
- ('php5.6', 'php5_module'),
- ('shib2', 'mod_shib'),
- ('evasive', 'evasive20_module'),
- ('thismoduledoesnotexist', 'thismoduledoesnotexist_module'), # the default
-]
-
-
-@pytest.mark.parametrize("replacement", REPLACEMENTS, ids=lambda x: x[0])
-def test_apache_identifier(replacement):
- "test the correct replacement of an a2enmod name with an apache2ctl name"
- assert create_apache_identifier(replacement[0]) == replacement[1]
diff --git a/test/units/modules/web_infrastructure/test_jenkins_plugin.py b/test/units/modules/web_infrastructure/test_jenkins_plugin.py
deleted file mode 100644
index 5d89c10d26..0000000000
--- a/test/units/modules/web_infrastructure/test_jenkins_plugin.py
+++ /dev/null
@@ -1,148 +0,0 @@
-from io import BytesIO
-
-from ansible.modules.web_infrastructure.jenkins_plugin import JenkinsPlugin
-from ansible.module_utils.common._collections_compat import Mapping
-
-
-def pass_function(*args, **kwargs):
- pass
-
-
-GITHUB_DATA = {"url": u'https://api.github.com/repos/ansible/ansible',
- "response": b"""
-{
- "id": 3638964,
- "name": "ansible",
- "full_name": "ansible/ansible",
- "owner": {
- "login": "ansible",
- "id": 1507452,
- "avatar_url": "https://avatars2.githubusercontent.com/u/1507452?v=4",
- "gravatar_id": "",
- "url": "https://api.github.com/users/ansible",
- "html_url": "https://github.com/ansible",
- "followers_url": "https://api.github.com/users/ansible/followers",
- "following_url": "https://api.github.com/users/ansible/following{/other_user}",
- "gists_url": "https://api.github.com/users/ansible/gists{/gist_id}",
- "starred_url": "https://api.github.com/users/ansible/starred{/owner}{/repo}",
- "subscriptions_url": "https://api.github.com/users/ansible/subscriptions",
- "organizations_url": "https://api.github.com/users/ansible/orgs",
- "repos_url": "https://api.github.com/users/ansible/repos",
- "events_url": "https://api.github.com/users/ansible/events{/privacy}",
- "received_events_url": "https://api.github.com/users/ansible/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "private": false,
- "html_url": "https://github.com/ansible/ansible",
- "description": "Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy.",
- "fork": false,
- "url": "https://api.github.com/repos/ansible/ansible",
- "forks_url": "https://api.github.com/repos/ansible/ansible/forks",
- "keys_url": "https://api.github.com/repos/ansible/ansible/keys{/key_id}",
- "collaborators_url": "https://api.github.com/repos/ansible/ansible/collaborators{/collaborator}",
- "teams_url": "https://api.github.com/repos/ansible/ansible/teams",
- "hooks_url": "https://api.github.com/repos/ansible/ansible/hooks",
- "issue_events_url": "https://api.github.com/repos/ansible/ansible/issues/events{/number}",
- "events_url": "https://api.github.com/repos/ansible/ansible/events",
- "assignees_url": "https://api.github.com/repos/ansible/ansible/assignees{/user}",
- "branches_url": "https://api.github.com/repos/ansible/ansible/branches{/branch}",
- "tags_url": "https://api.github.com/repos/ansible/ansible/tags",
- "blobs_url": "https://api.github.com/repos/ansible/ansible/git/blobs{/sha}",
- "git_tags_url": "https://api.github.com/repos/ansible/ansible/git/tags{/sha}",
- "git_refs_url": "https://api.github.com/repos/ansible/ansible/git/refs{/sha}",
- "trees_url": "https://api.github.com/repos/ansible/ansible/git/trees{/sha}",
- "statuses_url": "https://api.github.com/repos/ansible/ansible/statuses/{sha}",
- "languages_url": "https://api.github.com/repos/ansible/ansible/languages",
- "stargazers_url": "https://api.github.com/repos/ansible/ansible/stargazers",
- "contributors_url": "https://api.github.com/repos/ansible/ansible/contributors",
- "subscribers_url": "https://api.github.com/repos/ansible/ansible/subscribers",
- "subscription_url": "https://api.github.com/repos/ansible/ansible/subscription",
- "commits_url": "https://api.github.com/repos/ansible/ansible/commits{/sha}",
- "git_commits_url": "https://api.github.com/repos/ansible/ansible/git/commits{/sha}",
- "comments_url": "https://api.github.com/repos/ansible/ansible/comments{/number}",
- "issue_comment_url": "https://api.github.com/repos/ansible/ansible/issues/comments{/number}",
- "contents_url": "https://api.github.com/repos/ansible/ansible/contents/{+path}",
- "compare_url": "https://api.github.com/repos/ansible/ansible/compare/{base}...{head}",
- "merges_url": "https://api.github.com/repos/ansible/ansible/merges",
- "archive_url": "https://api.github.com/repos/ansible/ansible/{archive_format}{/ref}",
- "downloads_url": "https://api.github.com/repos/ansible/ansible/downloads",
- "issues_url": "https://api.github.com/repos/ansible/ansible/issues{/number}",
- "pulls_url": "https://api.github.com/repos/ansible/ansible/pulls{/number}",
- "milestones_url": "https://api.github.com/repos/ansible/ansible/milestones{/number}",
- "notifications_url": "https://api.github.com/repos/ansible/ansible/notifications{?since,all,participating}",
- "labels_url": "https://api.github.com/repos/ansible/ansible/labels{/name}",
- "releases_url": "https://api.github.com/repos/ansible/ansible/releases{/id}",
- "deployments_url": "https://api.github.com/repos/ansible/ansible/deployments",
- "created_at": "2012-03-06T14:58:02Z",
- "updated_at": "2017-09-19T18:10:54Z",
- "pushed_at": "2017-09-19T18:04:51Z",
- "git_url": "git://github.com/ansible/ansible.git",
- "ssh_url": "git@github.com:ansible/ansible.git",
- "clone_url": "https://github.com/ansible/ansible.git",
- "svn_url": "https://github.com/ansible/ansible",
- "homepage": "https://www.ansible.com/",
- "size": 91174,
- "stargazers_count": 25552,
- "watchers_count": 25552,
- "language": "Python",
- "has_issues": true,
- "has_projects": true,
- "has_downloads": true,
- "has_wiki": false,
- "has_pages": false,
- "forks_count": 8893,
- "mirror_url": null,
- "open_issues_count": 4283,
- "forks": 8893,
- "open_issues": 4283,
- "watchers": 25552,
- "default_branch": "devel",
- "organization": {
- "login": "ansible",
- "id": 1507452,
- "avatar_url": "https://avatars2.githubusercontent.com/u/1507452?v=4",
- "gravatar_id": "",
- "url": "https://api.github.com/users/ansible",
- "html_url": "https://github.com/ansible",
- "followers_url": "https://api.github.com/users/ansible/followers",
- "following_url": "https://api.github.com/users/ansible/following{/other_user}",
- "gists_url": "https://api.github.com/users/ansible/gists{/gist_id}",
- "starred_url": "https://api.github.com/users/ansible/starred{/owner}{/repo}",
- "subscriptions_url": "https://api.github.com/users/ansible/subscriptions",
- "organizations_url": "https://api.github.com/users/ansible/orgs",
- "repos_url": "https://api.github.com/users/ansible/repos",
- "events_url": "https://api.github.com/users/ansible/events{/privacy}",
- "received_events_url": "https://api.github.com/users/ansible/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "network_count": 8893,
- "subscribers_count": 1733
-}
-"""
- }
-
-
-def test__get_json_data(mocker):
- "test the json conversion of _get_url_data"
-
- timeout = 30
- params = {
- 'url': GITHUB_DATA['url'],
- 'timeout': timeout
- }
- module = mocker.Mock()
- module.params = params
-
- JenkinsPlugin._csrf_enabled = pass_function
- JenkinsPlugin._get_installed_plugins = pass_function
- JenkinsPlugin._get_url_data = mocker.Mock()
- JenkinsPlugin._get_url_data.return_value = BytesIO(GITHUB_DATA['response'])
- jenkins_plugin = JenkinsPlugin(module)
-
- json_data = jenkins_plugin._get_json_data(
- "{url}".format(url=GITHUB_DATA['url']),
- 'CSRF')
-
- assert isinstance(json_data, Mapping)
diff --git a/test/units/plugins/become/test_doas.py b/test/units/plugins/become/test_doas.py
deleted file mode 100644
index 00b1b1b7fb..0000000000
--- a/test/units/plugins/become/test_doas.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# (c) 2012-2014, Michael DeHaan <michael.dehaan@gmail.com>
-# (c) 2020 Ansible Project
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from ansible import context
-from ansible.playbook.play_context import PlayContext
-from ansible.plugins.loader import become_loader
-
-
-def test_doas(mocker, parser, reset_cli_args):
- options = parser.parse_args([])
- context._init_global_context(options)
- play_context = PlayContext()
-
- default_cmd = "/bin/foo"
- default_exe = "/bin/bash"
- doas_exe = 'doas'
- doas_flags = '-n'
-
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert cmd == default_cmd
-
- success = 'BECOME-SUCCESS-.+?'
-
- play_context.become = True
- play_context.become_user = 'foo'
- play_context.set_become_plugin(become_loader.get('doas'))
- play_context.become_method = 'doas'
- play_context.become_flags = doas_flags
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert (re.match("""%s %s -u %s %s -c 'echo %s; %s'""" % (doas_exe, doas_flags, play_context.become_user, default_exe, success,
- default_cmd), cmd) is not None)
diff --git a/test/units/plugins/become/test_dzdo.py b/test/units/plugins/become/test_dzdo.py
deleted file mode 100644
index 2110a7dcbe..0000000000
--- a/test/units/plugins/become/test_dzdo.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# (c) 2012-2014, Michael DeHaan <michael.dehaan@gmail.com>
-# (c) 2020 Ansible Project
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from ansible import context
-from ansible.playbook.play_context import PlayContext
-from ansible.plugins.loader import become_loader
-
-
-def test_dzdo(mocker, parser, reset_cli_args):
- options = parser.parse_args([])
- context._init_global_context(options)
- play_context = PlayContext()
-
- default_cmd = "/bin/foo"
- default_exe = "/bin/bash"
- dzdo_exe = 'dzdo'
- dzdo_flags = ''
-
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert cmd == default_cmd
-
- success = 'BECOME-SUCCESS-.+?'
-
- play_context.become = True
- play_context.become_user = 'foo'
- play_context.set_become_plugin(become_loader.get('dzdo'))
- play_context.become_method = 'dzdo'
- play_context.become_flags = dzdo_flags
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert re.match("""%s %s -u %s %s -c 'echo %s; %s'""" % (dzdo_exe, dzdo_flags, play_context.become_user, default_exe,
- success, default_cmd), cmd) is not None
- play_context.become_pass = 'testpass'
- play_context.set_become_plugin(become_loader.get('dzdo'))
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert re.match("""%s %s -p %s -u %s %s -c 'echo %s; %s'""" % (dzdo_exe, dzdo_flags, r'\"\[dzdo via ansible, key=.+?\] password:\"',
- play_context.become_user, default_exe, success, default_cmd), cmd) is not None
diff --git a/test/units/plugins/become/test_ksu.py b/test/units/plugins/become/test_ksu.py
deleted file mode 100644
index 7906fe1dda..0000000000
--- a/test/units/plugins/become/test_ksu.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# (c) 2012-2014, Michael DeHaan <michael.dehaan@gmail.com>
-# (c) 2020 Ansible Project
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from ansible import context
-from ansible.playbook.play_context import PlayContext
-from ansible.plugins.loader import become_loader
-
-
-def test_ksu(mocker, parser, reset_cli_args):
- options = parser.parse_args([])
- context._init_global_context(options)
- play_context = PlayContext()
-
- default_cmd = "/bin/foo"
- default_exe = "/bin/bash"
- ksu_exe = 'ksu'
- ksu_flags = ''
-
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert cmd == default_cmd
-
- success = 'BECOME-SUCCESS-.+?'
-
- play_context.become = True
- play_context.become_user = 'foo'
- play_context.set_become_plugin(become_loader.get('ksu'))
- play_context.become_method = 'ksu'
- play_context.become_flags = ksu_flags
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert (re.match("""%s %s %s -e %s -c 'echo %s; %s'""" % (ksu_exe, play_context.become_user, ksu_flags,
- default_exe, success, default_cmd), cmd) is not None)
diff --git a/test/units/plugins/become/test_pbrun.py b/test/units/plugins/become/test_pbrun.py
deleted file mode 100644
index a008b8ae75..0000000000
--- a/test/units/plugins/become/test_pbrun.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# (c) 2012-2014, Michael DeHaan <michael.dehaan@gmail.com>
-# (c) 2020 Ansible Project
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from ansible import context
-from ansible.playbook.play_context import PlayContext
-from ansible.plugins.loader import become_loader
-
-
-def test_pbrun(mocker, parser, reset_cli_args):
- options = parser.parse_args([])
- context._init_global_context(options)
- play_context = PlayContext()
-
- default_cmd = "/bin/foo"
- default_exe = "/bin/bash"
- pbrun_exe = 'pbrun'
- pbrun_flags = ''
-
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert cmd == default_cmd
-
- success = 'BECOME-SUCCESS-.+?'
-
- play_context.become = True
- play_context.become_user = 'foo'
- play_context.set_become_plugin(become_loader.get('pbrun'))
- play_context.become_method = 'pbrun'
- play_context.become_flags = pbrun_flags
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert re.match("""%s %s -u %s 'echo %s; %s'""" % (pbrun_exe, pbrun_flags, play_context.become_user,
- success, default_cmd), cmd) is not None
diff --git a/test/units/plugins/become/test_pfexec.py b/test/units/plugins/become/test_pfexec.py
deleted file mode 100644
index e1c54e78b5..0000000000
--- a/test/units/plugins/become/test_pfexec.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# (c) 2012-2014, Michael DeHaan <michael.dehaan@gmail.com>
-# (c) 2020 Ansible Project
-#
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import re
-
-from ansible import context
-from ansible.playbook.play_context import PlayContext
-from ansible.plugins.loader import become_loader
-
-
-def test_pfexec(mocker, parser, reset_cli_args):
- options = parser.parse_args([])
- context._init_global_context(options)
- play_context = PlayContext()
-
- default_cmd = "/bin/foo"
- default_exe = "/bin/bash"
- pfexec_exe = 'pfexec'
- pfexec_flags = ''
-
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert cmd == default_cmd
-
- success = 'BECOME-SUCCESS-.+?'
-
- play_context.become = True
- play_context.become_user = 'foo'
- play_context.set_become_plugin(become_loader.get('pfexec'))
- play_context.become_method = 'pfexec'
- play_context.become_flags = pfexec_flags
- cmd = play_context.make_become_cmd(cmd=default_cmd, executable=default_exe)
- assert re.match('''%s %s "'echo %s; %s'"''' % (pfexec_exe, pfexec_flags, success, default_cmd), cmd) is not None
diff --git a/test/units/plugins/cache/test_memcached.py b/test/units/plugins/cache/test_memcached.py
deleted file mode 100644
index 5e997a7729..0000000000
--- a/test/units/plugins/cache/test_memcached.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# (c) 2012-2015, Michael DeHaan <michael.dehaan@gmail.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import pytest
-
-pytest.importorskip('memcache')
-
-from ansible.plugins.loader import cache_loader
-from ansible.plugins.cache.memcached import CacheModule as MemcachedCache
-
-
-def test_memcached_cachemodule():
- assert isinstance(MemcachedCache(), MemcachedCache)
-
-
-def test_memcached_cachemodule_with_loader():
- assert isinstance(cache_loader.get('memcached'), MemcachedCache)
diff --git a/test/units/plugins/cache/test_redis.py b/test/units/plugins/cache/test_redis.py
deleted file mode 100644
index 3b242304f9..0000000000
--- a/test/units/plugins/cache/test_redis.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# (c) 2012-2015, Michael DeHaan <michael.dehaan@gmail.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import pytest
-
-pytest.importorskip('redis')
-
-from ansible.plugins.loader import cache_loader
-from ansible.plugins.cache.redis import CacheModule as RedisCache
-
-
-def test_redis_cachemodule():
- assert isinstance(RedisCache(), RedisCache)
-
-
-def test_redis_cachemodule_with_loader():
- # The _uri option is required for the redis plugin
- assert isinstance(cache_loader.get('redis', **{'_uri': '127.0.0.1:6379:1'}), RedisCache)
diff --git a/test/units/plugins/cliconf/test_nos.py b/test/units/plugins/cliconf/test_nos.py
deleted file mode 100644
index 22d0be4468..0000000000
--- a/test/units/plugins/cliconf/test_nos.py
+++ /dev/null
@@ -1,137 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from os import path
-import json
-
-from mock import MagicMock, call
-
-from units.compat import unittest
-from ansible.plugins.cliconf import nos
-
-FIXTURE_DIR = b'%s/fixtures/nos' % (
- path.dirname(path.abspath(__file__)).encode('utf-8')
-)
-
-
-def _connection_side_effect(*args, **kwargs):
- try:
- if args:
- value = args[0]
- else:
- value = kwargs.get('command')
-
- fixture_path = path.abspath(
- b'%s/%s' % (FIXTURE_DIR, b'_'.join(value.split(b' ')))
- )
- with open(fixture_path, 'rb') as file_desc:
- return file_desc.read()
- except (OSError, IOError):
- if args:
- value = args[0]
- return value
- elif kwargs.get('command'):
- value = kwargs.get('command')
- return value
-
- return 'Nope'
-
-
-class TestPluginCLIConfNOS(unittest.TestCase):
- """ Test class for NOS CLI Conf Methods
- """
- def setUp(self):
- self._mock_connection = MagicMock()
- self._mock_connection.send.side_effect = _connection_side_effect
- self._cliconf = nos.Cliconf(self._mock_connection)
- self.maxDiff = None
-
- def tearDown(self):
- pass
-
- def test_get_device_info(self):
- """ Test get_device_info
- """
- device_info = self._cliconf.get_device_info()
-
- mock_device_info = {
- 'network_os': 'nos',
- 'network_os_model': 'BR-VDX6740',
- 'network_os_version': '7.2.0',
- }
-
- self.assertEqual(device_info, mock_device_info)
-
- def test_get_config(self):
- """ Test get_config
- """
- running_config = self._cliconf.get_config()
-
- fixture_path = path.abspath(b'%s/show_running-config' % FIXTURE_DIR)
- with open(fixture_path, 'rb') as file_desc:
- mock_running_config = file_desc.read()
- self.assertEqual(running_config, mock_running_config)
-
- def test_edit_config(self):
- """ Test edit_config
- """
- test_config_command = b'this\nis\nthe\nsong\nthat\nnever\nends'
-
- self._cliconf.edit_config(test_config_command)
-
- send_calls = []
-
- for command in [b'configure terminal', test_config_command, b'end']:
- send_calls.append(call(
- command=command,
- prompt_retry_check=False,
- sendonly=False,
- newline=True,
- check_all=False
- ))
-
- self._mock_connection.send.assert_has_calls(send_calls)
-
- def test_get_capabilities(self):
- """ Test get_capabilities
- """
- capabilities = json.loads(self._cliconf.get_capabilities())
- mock_capabilities = {
- 'network_api': 'cliconf',
- 'rpc': [
- 'get_config',
- 'edit_config',
- 'get_capabilities',
- 'get',
- 'enable_response_logging',
- 'disable_response_logging'
- ],
- 'device_info': {
- 'network_os_model': 'BR-VDX6740',
- 'network_os_version': '7.2.0',
- 'network_os': 'nos'
- }
- }
-
- self.assertEqual(
- mock_capabilities,
- capabilities
- )
diff --git a/test/units/plugins/cliconf/test_slxos.py b/test/units/plugins/cliconf/test_slxos.py
deleted file mode 100644
index 5befc768f5..0000000000
--- a/test/units/plugins/cliconf/test_slxos.py
+++ /dev/null
@@ -1,144 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from os import path
-import json
-
-from mock import MagicMock, call
-
-from units.compat import unittest
-from ansible.plugins.cliconf import slxos
-
-FIXTURE_DIR = b'%s/fixtures/slxos' % (
- path.dirname(path.abspath(__file__)).encode('utf-8')
-)
-
-
-def _connection_side_effect(*args, **kwargs):
- try:
- if args:
- value = args[0]
- else:
- value = kwargs.get('command')
-
- fixture_path = path.abspath(
- b'%s/%s' % (FIXTURE_DIR, b'_'.join(value.split(b' ')))
- )
- with open(fixture_path, 'rb') as file_desc:
- return file_desc.read()
- except (OSError, IOError):
- if args:
- value = args[0]
- return value
- elif kwargs.get('command'):
- value = kwargs.get('command')
- return value
-
- return 'Nope'
-
-
-class TestPluginCLIConfSLXOS(unittest.TestCase):
- """ Test class for SLX-OS CLI Conf Methods
- """
- def setUp(self):
- self._mock_connection = MagicMock()
- self._mock_connection.send.side_effect = _connection_side_effect
- self._cliconf = slxos.Cliconf(self._mock_connection)
- self.maxDiff = None
-
- def tearDown(self):
- pass
-
- def test_get_device_info(self):
- """ Test get_device_info
- """
- device_info = self._cliconf.get_device_info()
-
- mock_device_info = {
- 'network_os': 'slxos',
- 'network_os_model': 'BR-SLX9140',
- 'network_os_version': '17s.1.02',
- }
-
- self.assertEqual(device_info, mock_device_info)
-
- def test_get_config(self):
- """ Test get_config
- """
- running_config = self._cliconf.get_config()
-
- fixture_path = path.abspath(b'%s/show_running-config' % FIXTURE_DIR)
- with open(fixture_path, 'rb') as file_desc:
- mock_running_config = file_desc.read()
- self.assertEqual(running_config, mock_running_config)
-
- startup_config = self._cliconf.get_config()
-
- fixture_path = path.abspath(b'%s/show_running-config' % FIXTURE_DIR)
- with open(fixture_path, 'rb') as file_desc:
- mock_startup_config = file_desc.read()
- self.assertEqual(startup_config, mock_startup_config)
-
- def test_edit_config(self):
- """ Test edit_config
- """
- test_config_command = b'this\nis\nthe\nsong\nthat\nnever\nends'
-
- self._cliconf.edit_config(test_config_command)
-
- send_calls = []
-
- for command in [b'configure terminal', test_config_command, b'end']:
- send_calls.append(call(
- command=command,
- prompt_retry_check=False,
- sendonly=False,
- newline=True,
- check_all=False
- ))
-
- self._mock_connection.send.assert_has_calls(send_calls)
-
- def test_get_capabilities(self):
- """ Test get_capabilities
- """
- capabilities = json.loads(self._cliconf.get_capabilities())
- mock_capabilities = {
- 'network_api': 'cliconf',
- 'rpc': [
- 'get_config',
- 'edit_config',
- 'get_capabilities',
- 'get',
- 'enable_response_logging',
- 'disable_response_logging'
- ],
- 'device_info': {
- 'network_os_model': 'BR-SLX9140',
- 'network_os_version': '17s.1.02',
- 'network_os': 'slxos'
- }
- }
-
- self.assertEqual(
- mock_capabilities,
- capabilities
- )
diff --git a/test/units/plugins/connection/test_docker.py b/test/units/plugins/connection/test_docker.py
deleted file mode 100644
index d371550214..0000000000
--- a/test/units/plugins/connection/test_docker.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# (c) 2020 Red Hat, Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from io import StringIO
-import pytest
-
-from units.compat import mock
-from units.compat import unittest
-from ansible.errors import AnsibleError
-from ansible.playbook.play_context import PlayContext
-from ansible.plugins.connection.docker import Connection as DockerConnection
-
-
-class TestDockerConnectionClass(unittest.TestCase):
-
- def setUp(self):
- self.play_context = PlayContext()
- self.play_context.prompt = (
- '[sudo via ansible, key=ouzmdnewuhucvuaabtjmweasarviygqq] password: '
- )
- self.in_stream = StringIO()
-
- def tearDown(self):
- pass
-
- @mock.patch('ansible.plugins.connection.docker.Connection._old_docker_version', return_value=('false', 'garbage', '', 1))
- @mock.patch('ansible.plugins.connection.docker.Connection._new_docker_version', return_value=('docker version', '1.2.3', '', 0))
- def test_docker_connection_module_too_old(self, mock_new_docker_verison, mock_old_docker_version):
- self.assertRaisesRegexp(AnsibleError, '^docker connection type requires docker 1.3 or higher$',
- DockerConnection, self.play_context, self.in_stream, docker_command='/fake/docker')
-
- @mock.patch('ansible.plugins.connection.docker.Connection._old_docker_version', return_value=('false', 'garbage', '', 1))
- @mock.patch('ansible.plugins.connection.docker.Connection._new_docker_version', return_value=('docker version', '1.3.4', '', 0))
- def test_docker_connection_module(self, mock_new_docker_verison, mock_old_docker_version):
- self.assertIsInstance(DockerConnection(self.play_context, self.in_stream, docker_command='/fake/docker'),
- DockerConnection)
-
- # old version and new version fail
- @mock.patch('ansible.plugins.connection.docker.Connection._old_docker_version', return_value=('false', 'garbage', '', 1))
- @mock.patch('ansible.plugins.connection.docker.Connection._new_docker_version', return_value=('false', 'garbage', '', 1))
- def test_docker_connection_module_wrong_cmd(self, mock_new_docker_version, mock_old_docker_version):
- self.assertRaisesRegexp(AnsibleError, '^Docker version check (.*?) failed: ',
- DockerConnection, self.play_context, self.in_stream, docker_command='/fake/docker')
diff --git a/test/units/plugins/connection/test_lxc.py b/test/units/plugins/connection/test_lxc.py
deleted file mode 100644
index f754406c5d..0000000000
--- a/test/units/plugins/connection/test_lxc.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# (c) 2020 Red Hat Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from io import StringIO
-import pytest
-
-from units.compat import unittest
-from ansible.plugins.connection import lxc
-from ansible.playbook.play_context import PlayContext
-
-
-class TestLXCConnectionClass(unittest.TestCase):
-
- def test_lxc_connection_module(self):
- play_context = PlayContext()
- play_context.prompt = (
- '[sudo via ansible, key=ouzmdnewuhucvuaabtjmweasarviygqq] password: '
- )
- in_stream = StringIO()
-
- self.assertIsInstance(lxc.Connection(play_context, in_stream), lxc.Connection)
diff --git a/test/units/plugins/httpapi/test_ftd.py b/test/units/plugins/httpapi/test_ftd.py
deleted file mode 100644
index 7767ea2db8..0000000000
--- a/test/units/plugins/httpapi/test_ftd.py
+++ /dev/null
@@ -1,413 +0,0 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-
-import json
-
-from ansible.module_utils.six.moves.urllib.error import HTTPError
-from units.compat import mock
-from units.compat import unittest
-from units.compat.mock import mock_open, patch
-
-from ansible.errors import AnsibleConnectionFailure
-from ansible.module_utils.connection import ConnectionError
-from ansible.module_utils.network.ftd.common import HTTPMethod, ResponseParams
-from ansible.module_utils.network.ftd.fdm_swagger_client import SpecProp, FdmSwaggerParser
-from ansible.module_utils.six import BytesIO, PY3, StringIO
-from ansible.plugins.httpapi.ftd import HttpApi, BASE_HEADERS, TOKEN_PATH_TEMPLATE, DEFAULT_API_VERSIONS
-
-
-if PY3:
- BUILTINS_NAME = 'builtins'
-else:
- BUILTINS_NAME = '__builtin__'
-
-
-class FakeFtdHttpApiPlugin(HttpApi):
- def __init__(self, conn):
- super(FakeFtdHttpApiPlugin, self).__init__(conn)
- self.hostvars = {
- 'token_path': '/testLoginUrl',
- 'spec_path': '/testSpecUrl'
- }
-
- def get_option(self, var):
- return self.hostvars[var]
-
- def set_option(self, var, val):
- self.hostvars[var] = val
-
-
-class TestFtdHttpApi(unittest.TestCase):
-
- def setUp(self):
- self.connection_mock = mock.Mock()
- self.ftd_plugin = FakeFtdHttpApiPlugin(self.connection_mock)
- self.ftd_plugin.access_token = 'ACCESS_TOKEN'
- self.ftd_plugin._load_name = 'httpapi'
-
- def test_login_should_request_tokens_when_no_refresh_token(self):
- self.connection_mock.send.return_value = self._connection_response(
- {'access_token': 'ACCESS_TOKEN', 'refresh_token': 'REFRESH_TOKEN'}
- )
-
- self.ftd_plugin.login('foo', 'bar')
-
- assert 'ACCESS_TOKEN' == self.ftd_plugin.access_token
- assert 'REFRESH_TOKEN' == self.ftd_plugin.refresh_token
- assert {'Authorization': 'Bearer ACCESS_TOKEN'} == self.ftd_plugin.connection._auth
- expected_body = json.dumps({'grant_type': 'password', 'username': 'foo', 'password': 'bar'})
- self.connection_mock.send.assert_called_once_with(mock.ANY, expected_body, headers=mock.ANY, method=mock.ANY)
-
- def test_login_should_update_tokens_when_refresh_token_exists(self):
- self.ftd_plugin.refresh_token = 'REFRESH_TOKEN'
- self.connection_mock.send.return_value = self._connection_response(
- {'access_token': 'NEW_ACCESS_TOKEN', 'refresh_token': 'NEW_REFRESH_TOKEN'}
- )
-
- self.ftd_plugin.login('foo', 'bar')
-
- assert 'NEW_ACCESS_TOKEN' == self.ftd_plugin.access_token
- assert 'NEW_REFRESH_TOKEN' == self.ftd_plugin.refresh_token
- assert {'Authorization': 'Bearer NEW_ACCESS_TOKEN'} == self.ftd_plugin.connection._auth
- expected_body = json.dumps({'grant_type': 'refresh_token', 'refresh_token': 'REFRESH_TOKEN'})
- self.connection_mock.send.assert_called_once_with(mock.ANY, expected_body, headers=mock.ANY, method=mock.ANY)
-
- def test_login_should_use_env_variable_when_set(self):
- temp_token_path = self.ftd_plugin.hostvars['token_path']
- self.ftd_plugin.hostvars['token_path'] = '/testFakeLoginUrl'
- self.connection_mock.send.return_value = self._connection_response(
- {'access_token': 'ACCESS_TOKEN', 'refresh_token': 'REFRESH_TOKEN'}
- )
-
- self.ftd_plugin.login('foo', 'bar')
-
- self.connection_mock.send.assert_called_once_with('/testFakeLoginUrl', mock.ANY, headers=mock.ANY,
- method=mock.ANY)
- self.ftd_plugin.hostvars['token_path'] = temp_token_path
-
- def test_login_raises_exception_when_no_refresh_token_and_no_credentials(self):
- with self.assertRaises(AnsibleConnectionFailure) as res:
- self.ftd_plugin.login(None, None)
- assert 'Username and password are required' in str(res.exception)
-
- def test_login_raises_exception_when_invalid_response(self):
- self.connection_mock.send.return_value = self._connection_response(
- {'no_access_token': 'ACCESS_TOKEN'}
- )
-
- with self.assertRaises(ConnectionError) as res:
- self.ftd_plugin.login('foo', 'bar')
-
- assert 'Server returned response without token info during connection authentication' in str(res.exception)
-
- def test_login_raises_exception_when_http_error(self):
- self.connection_mock.send.side_effect = HTTPError('http://testhost.com', 400, '', {},
- StringIO('{"message": "Failed to authenticate user"}'))
-
- with self.assertRaises(ConnectionError) as res:
- self.ftd_plugin.login('foo', 'bar')
-
- assert 'Failed to authenticate user' in str(res.exception)
-
- def test_logout_should_revoke_tokens(self):
- self.ftd_plugin.access_token = 'ACCESS_TOKEN_TO_REVOKE'
- self.ftd_plugin.refresh_token = 'REFRESH_TOKEN_TO_REVOKE'
- self.connection_mock.send.return_value = self._connection_response(None)
-
- self.ftd_plugin.logout()
-
- assert self.ftd_plugin.access_token is None
- assert self.ftd_plugin.refresh_token is None
- expected_body = json.dumps({'grant_type': 'revoke_token', 'access_token': 'ACCESS_TOKEN_TO_REVOKE',
- 'token_to_revoke': 'REFRESH_TOKEN_TO_REVOKE'})
- self.connection_mock.send.assert_called_once_with(mock.ANY, expected_body, headers=mock.ANY, method=mock.ANY)
-
- def test_send_request_should_send_correct_request(self):
- exp_resp = {'id': '123', 'name': 'foo'}
- self.connection_mock.send.return_value = self._connection_response(exp_resp)
-
- resp = self.ftd_plugin.send_request('/test/{objId}', HTTPMethod.PUT,
- body_params={'name': 'foo'},
- path_params={'objId': '123'},
- query_params={'at': 0})
-
- assert {ResponseParams.SUCCESS: True, ResponseParams.STATUS_CODE: 200,
- ResponseParams.RESPONSE: exp_resp} == resp
- self.connection_mock.send.assert_called_once_with('/test/123?at=0', '{"name": "foo"}', method=HTTPMethod.PUT,
- headers=BASE_HEADERS)
-
- def test_send_request_should_return_empty_dict_when_no_response_data(self):
- self.connection_mock.send.return_value = self._connection_response(None)
-
- resp = self.ftd_plugin.send_request('/test', HTTPMethod.GET)
-
- assert {ResponseParams.SUCCESS: True, ResponseParams.STATUS_CODE: 200, ResponseParams.RESPONSE: {}} == resp
- self.connection_mock.send.assert_called_once_with('/test', None, method=HTTPMethod.GET,
- headers=BASE_HEADERS)
-
- def test_send_request_should_return_error_info_when_http_error_raises(self):
- self.connection_mock.send.side_effect = HTTPError('http://testhost.com', 500, '', {},
- StringIO('{"errorMessage": "ERROR"}'))
-
- resp = self.ftd_plugin.send_request('/test', HTTPMethod.GET)
-
- assert {ResponseParams.SUCCESS: False, ResponseParams.STATUS_CODE: 500,
- ResponseParams.RESPONSE: {'errorMessage': 'ERROR'}} == resp
-
- def test_send_request_raises_exception_when_invalid_response(self):
- self.connection_mock.send.return_value = self._connection_response('nonValidJson')
-
- with self.assertRaises(ConnectionError) as res:
- self.ftd_plugin.send_request('/test', HTTPMethod.GET)
-
- assert 'Invalid JSON response' in str(res.exception)
-
- def test_handle_httperror_should_update_tokens_and_retry_on_auth_errors(self):
- self.ftd_plugin.refresh_token = 'REFRESH_TOKEN'
- self.connection_mock.send.return_value = self._connection_response(
- {'access_token': 'NEW_ACCESS_TOKEN', 'refresh_token': 'NEW_REFRESH_TOKEN'}
- )
-
- retry = self.ftd_plugin.handle_httperror(HTTPError('http://testhost.com', 401, '', {}, None))
-
- assert retry
- assert 'NEW_ACCESS_TOKEN' == self.ftd_plugin.access_token
- assert 'NEW_REFRESH_TOKEN' == self.ftd_plugin.refresh_token
-
- def test_handle_httperror_should_not_retry_on_non_auth_errors(self):
- assert not self.ftd_plugin.handle_httperror(HTTPError('http://testhost.com', 500, '', {}, None))
-
- def test_handle_httperror_should_not_retry_when_ignoring_http_errors(self):
- self.ftd_plugin._ignore_http_errors = True
- assert not self.ftd_plugin.handle_httperror(HTTPError('http://testhost.com', 401, '', {}, None))
-
- @patch('os.path.isdir', mock.Mock(return_value=False))
- def test_download_file(self):
- self.connection_mock.send.return_value = self._connection_response('File content')
-
- open_mock = mock_open()
- with patch('%s.open' % BUILTINS_NAME, open_mock):
- self.ftd_plugin.download_file('/files/1', '/tmp/test.txt')
-
- open_mock.assert_called_once_with('/tmp/test.txt', 'wb')
- open_mock().write.assert_called_once_with(b'File content')
-
- @patch('os.path.isdir', mock.Mock(return_value=True))
- def test_download_file_should_extract_filename_from_headers(self):
- filename = 'test_file.txt'
- response = mock.Mock()
- response.info.return_value = {'Content-Disposition': 'attachment; filename="%s"' % filename}
- dummy, response_data = self._connection_response('File content')
- self.connection_mock.send.return_value = response, response_data
-
- open_mock = mock_open()
- with patch('%s.open' % BUILTINS_NAME, open_mock):
- self.ftd_plugin.download_file('/files/1', '/tmp/')
-
- open_mock.assert_called_once_with('/tmp/%s' % filename, 'wb')
- open_mock().write.assert_called_once_with(b'File content')
-
- @patch('os.path.basename', mock.Mock(return_value='test.txt'))
- @patch('ansible.plugins.httpapi.ftd.encode_multipart_formdata',
- mock.Mock(return_value=('--Encoded data--', 'multipart/form-data')))
- def test_upload_file(self):
- self.connection_mock.send.return_value = self._connection_response({'id': '123'})
-
- open_mock = mock_open()
- with patch('%s.open' % BUILTINS_NAME, open_mock):
- resp = self.ftd_plugin.upload_file('/tmp/test.txt', '/files')
-
- assert {'id': '123'} == resp
- exp_headers = dict(BASE_HEADERS)
- exp_headers['Content-Length'] = len('--Encoded data--')
- exp_headers['Content-Type'] = 'multipart/form-data'
- self.connection_mock.send.assert_called_once_with('/files', data='--Encoded data--',
- headers=exp_headers, method=HTTPMethod.POST)
- open_mock.assert_called_once_with('/tmp/test.txt', 'rb')
-
- @patch('os.path.basename', mock.Mock(return_value='test.txt'))
- @patch('ansible.plugins.httpapi.ftd.encode_multipart_formdata',
- mock.Mock(return_value=('--Encoded data--', 'multipart/form-data')))
- def test_upload_file_raises_exception_when_invalid_response(self):
- self.connection_mock.send.return_value = self._connection_response('invalidJsonResponse')
-
- open_mock = mock_open()
- with patch('%s.open' % BUILTINS_NAME, open_mock):
- with self.assertRaises(ConnectionError) as res:
- self.ftd_plugin.upload_file('/tmp/test.txt', '/files')
-
- assert 'Invalid JSON response' in str(res.exception)
-
- @patch.object(FdmSwaggerParser, 'parse_spec')
- def test_get_operation_spec(self, parse_spec_mock):
- self.connection_mock.send.return_value = self._connection_response(None)
- parse_spec_mock.return_value = {
- SpecProp.OPERATIONS: {'testOp': 'Specification for testOp'}
- }
-
- assert 'Specification for testOp' == self.ftd_plugin.get_operation_spec('testOp')
- assert self.ftd_plugin.get_operation_spec('nonExistingTestOp') is None
-
- @patch.object(FdmSwaggerParser, 'parse_spec')
- def test_get_model_spec(self, parse_spec_mock):
- self.connection_mock.send.return_value = self._connection_response(None)
- parse_spec_mock.return_value = {
- SpecProp.MODELS: {'TestModel': 'Specification for TestModel'}
- }
-
- assert 'Specification for TestModel' == self.ftd_plugin.get_model_spec('TestModel')
- assert self.ftd_plugin.get_model_spec('NonExistingTestModel') is None
-
- @patch.object(FdmSwaggerParser, 'parse_spec')
- def test_get_operation_spec_by_model_name(self, parse_spec_mock):
- self.connection_mock.send.return_value = self._connection_response(None)
- operation1 = {'modelName': 'TestModel'}
- op_model_name_is_none = {'modelName': None}
- op_without_model_name = {'url': 'testUrl'}
-
- parse_spec_mock.return_value = {
- SpecProp.MODEL_OPERATIONS: {
- 'TestModel': {
- 'testOp1': operation1,
- 'testOp2': 'spec2'
- },
- 'TestModel2': {
- 'testOp10': 'spec10',
- 'testOp20': 'spec20'
- }
- },
- SpecProp.OPERATIONS: {
- 'testOp1': operation1,
- 'testOp10': {
- 'modelName': 'TestModel2'
- },
- 'testOpWithoutModelName': op_without_model_name,
- 'testOpModelNameIsNone': op_model_name_is_none
- }
- }
-
- assert {'testOp1': operation1, 'testOp2': 'spec2'} == self.ftd_plugin.get_operation_specs_by_model_name(
- 'TestModel')
- assert None is self.ftd_plugin.get_operation_specs_by_model_name(
- 'testOpModelNameIsNone')
-
- assert None is self.ftd_plugin.get_operation_specs_by_model_name(
- 'testOpWithoutModelName')
-
- assert self.ftd_plugin.get_operation_specs_by_model_name('nonExistingOperation') is None
-
- @staticmethod
- def _connection_response(response, status=200):
- response_mock = mock.Mock()
- response_mock.getcode.return_value = status
- response_text = json.dumps(response) if type(response) is dict else response
- response_data = BytesIO(response_text.encode() if response_text else ''.encode())
- return response_mock, response_data
-
- def test_get_list_of_supported_api_versions_with_failed_http_request(self):
- error_msg = "Invalid Credentials"
- fp = mock.MagicMock()
- fp.read.return_value = '{{"error-msg": "{0}"}}'.format(error_msg)
- send_mock = mock.MagicMock(side_effect=HTTPError('url', 400, 'msg', 'hdrs', fp))
- with mock.patch.object(self.ftd_plugin.connection, 'send', send_mock):
- with self.assertRaises(ConnectionError) as res:
- self.ftd_plugin._get_supported_api_versions()
-
- assert error_msg in str(res.exception)
-
- def test_get_list_of_supported_api_versions_with_buggy_response(self):
- error_msg = "Non JSON value"
- http_response_mock = mock.MagicMock()
- http_response_mock.getvalue.return_value = error_msg
-
- send_mock = mock.MagicMock(return_value=(None, http_response_mock))
-
- with mock.patch.object(self.ftd_plugin.connection, 'send', send_mock):
- with self.assertRaises(ConnectionError) as res:
- self.ftd_plugin._get_supported_api_versions()
- assert error_msg in str(res.exception)
-
- def test_get_list_of_supported_api_versions_with_positive_response(self):
- http_response_mock = mock.MagicMock()
- http_response_mock.getvalue.return_value = '{"supportedVersions": ["v1"]}'
-
- send_mock = mock.MagicMock(return_value=(None, http_response_mock))
- with mock.patch.object(self.ftd_plugin.connection, 'send', send_mock):
- supported_versions = self.ftd_plugin._get_supported_api_versions()
- assert supported_versions == ['v1']
-
- @patch('ansible.plugins.httpapi.ftd.HttpApi._get_api_token_path', mock.MagicMock(return_value=None))
- @patch('ansible.plugins.httpapi.ftd.HttpApi._get_known_token_paths')
- def test_lookup_login_url_with_empty_response(self, get_known_token_paths_mock):
- payload = mock.MagicMock()
- get_known_token_paths_mock.return_value = []
- self.assertRaises(
- ConnectionError,
- self.ftd_plugin._lookup_login_url,
- payload
- )
-
- @patch('ansible.plugins.httpapi.ftd.HttpApi._get_known_token_paths')
- @patch('ansible.plugins.httpapi.ftd.HttpApi._send_login_request')
- def test_lookup_login_url_with_failed_request(self, api_request_mock, get_known_token_paths_mock):
- payload = mock.MagicMock()
- url = mock.MagicMock()
- get_known_token_paths_mock.return_value = [url]
- api_request_mock.side_effect = ConnectionError('Error message')
- with mock.patch.object(self.ftd_plugin.connection, 'queue_message') as display_mock:
- self.assertRaises(
- ConnectionError,
- self.ftd_plugin._lookup_login_url,
- payload
- )
- assert display_mock.called
-
- @patch('ansible.plugins.httpapi.ftd.HttpApi._get_api_token_path', mock.MagicMock(return_value=None))
- @patch('ansible.plugins.httpapi.ftd.HttpApi._get_known_token_paths')
- @patch('ansible.plugins.httpapi.ftd.HttpApi._send_login_request')
- @patch('ansible.plugins.httpapi.ftd.HttpApi._set_api_token_path')
- def test_lookup_login_url_with_positive_result(self, set_api_token_mock, api_request_mock,
- get_known_token_paths_mock):
- payload = mock.MagicMock()
- url = mock.MagicMock()
- get_known_token_paths_mock.return_value = [url]
- response_mock = mock.MagicMock()
- api_request_mock.return_value = response_mock
-
- resp = self.ftd_plugin._lookup_login_url(payload)
-
- set_api_token_mock.assert_called_once_with(url)
- assert resp == response_mock
-
- @patch('ansible.plugins.httpapi.ftd.HttpApi._get_supported_api_versions')
- def test_get_known_token_paths_with_positive_response(self, get_list_of_supported_api_versions_mock):
- test_versions = ['v1', 'v2']
- get_list_of_supported_api_versions_mock.return_value = test_versions
- result = self.ftd_plugin._get_known_token_paths()
- assert result == [TOKEN_PATH_TEMPLATE.format(version) for version in test_versions]
-
- @patch('ansible.plugins.httpapi.ftd.HttpApi._get_supported_api_versions')
- def test_get_known_token_paths_with_failed_api_call(self, get_list_of_supported_api_versions_mock):
- get_list_of_supported_api_versions_mock.side_effect = ConnectionError('test error message')
- result = self.ftd_plugin._get_known_token_paths()
- assert result == [TOKEN_PATH_TEMPLATE.format(version) for version in DEFAULT_API_VERSIONS]
-
- def test_set_api_token_path(self):
- url = mock.MagicMock()
- self.ftd_plugin._set_api_token_path(url)
- assert self.ftd_plugin._get_api_token_path() == url
diff --git a/test/units/plugins/inventory/test_linode.py b/test/units/plugins/inventory/test_linode.py
deleted file mode 100644
index b192414cf8..0000000000
--- a/test/units/plugins/inventory/test_linode.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright 2018 Luke Murphy <lukewm@riseup.net>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import pytest
-import sys
-
-linode_apiv4 = pytest.importorskip('linode_api4')
-mandatory_py_version = pytest.mark.skipif(
- sys.version_info < (2, 7),
- reason='The linode_api4 dependency requires python2.7 or higher'
-)
-
-
-from ansible.errors import AnsibleError, AnsibleParserError
-from ansible.plugins.inventory.linode import InventoryModule
-
-
-@pytest.fixture(scope="module")
-def inventory():
- return InventoryModule()
-
-
-def test_access_token_lookup(inventory):
- inventory._options = {'access_token': None}
- with pytest.raises(AnsibleError) as error_message:
- inventory._build_client()
- assert 'Could not retrieve Linode access token' in error_message
-
-
-def test_validate_option(inventory):
- assert ['eu-west'] == inventory._validate_option('regions', list, 'eu-west')
- assert ['eu-west'] == inventory._validate_option('regions', list, ['eu-west'])
-
-
-def test_validation_option_bad_option(inventory):
- with pytest.raises(AnsibleParserError) as error_message:
- inventory._validate_option('regions', dict, [])
- assert "The option filters ([]) must be a <class 'dict'>" == error_message
-
-
-def test_empty_config_query_options(inventory):
- regions, types = inventory._get_query_options({})
- assert regions == types == []
-
-
-def test_conig_query_options(inventory):
- regions, types = inventory._get_query_options({
- 'regions': ['eu-west', 'us-east'],
- 'types': ['g5-standard-2', 'g6-standard-2'],
- })
-
- assert regions == ['eu-west', 'us-east']
- assert types == ['g5-standard-2', 'g6-standard-2']
-
-
-def test_verify_file_bad_config(inventory):
- assert inventory.verify_file('foobar.linde.yml') is False
diff --git a/test/units/plugins/lookup/test_avi.py b/test/units/plugins/lookup/test_avi.py
deleted file mode 100644
index 4619cba735..0000000000
--- a/test/units/plugins/lookup/test_avi.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# -*- coding: utf-8 -*-
-# (c) 2019, Sandeep Bandi <sandeepb@avinetworks.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import pytest
-import json
-
-from units.compat.mock import patch, MagicMock
-
-from ansible.errors import AnsibleError
-from ansible.plugins.loader import lookup_loader
-from ansible.plugins.lookup import avi
-
-
-try:
- import builtins as __builtin__
-except ImportError:
- import __builtin__
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-
-with open(fixture_path + '/avi.json') as json_file:
- data = json.load(json_file)
-
-
-@pytest.fixture
-def dummy_credentials():
- dummy_credentials = {}
- dummy_credentials['controller'] = "192.0.2.13"
- dummy_credentials['username'] = "admin"
- dummy_credentials['password'] = "password"
- dummy_credentials['api_version'] = "17.2.14"
- dummy_credentials['tenant'] = 'admin'
- return dummy_credentials
-
-
-@pytest.fixture
-def super_switcher(scope="function", autouse=True):
- # Mocking the inbuilt super as it is used in ApiSession initialization
- original_super = __builtin__.super
- __builtin__.super = MagicMock()
- yield
- # Revert the super to default state
- __builtin__.super = original_super
-
-
-def test_lookup_multiple_obj(dummy_credentials):
- avi_lookup = lookup_loader.get('avi')
- avi_mock = MagicMock()
- avi_mock.return_value.get.return_value.json.return_value = data["mock_multiple_obj"]
- with patch.object(avi, 'ApiSession', avi_mock):
- retval = avi_lookup.run([], {}, avi_credentials=dummy_credentials,
- obj_type="network")
- assert retval == data["mock_multiple_obj"]["results"]
-
-
-def test_lookup_single_obj(dummy_credentials):
- avi_lookup = lookup_loader.get('avi')
- avi_mock = MagicMock()
- avi_mock.return_value.get_object_by_name.return_value = data["mock_single_obj"]
- with patch.object(avi, 'ApiSession', avi_mock):
- retval = avi_lookup.run([], {}, avi_credentials=dummy_credentials,
- obj_type="network", obj_name='PG-123')
- assert retval[0] == data["mock_single_obj"]
-
-
-def test_invalid_lookup(dummy_credentials):
- avi_lookup = lookup_loader.get('avi')
- avi_mock = MagicMock()
- with pytest.raises(AnsibleError):
- with patch.object(avi, 'ApiSession', avi_mock):
- avi_lookup.run([], {}, avi_credentials=dummy_credentials)
diff --git a/test/units/plugins/lookup/test_conjur_variable.py b/test/units/plugins/lookup/test_conjur_variable.py
deleted file mode 100644
index 98890f82ab..0000000000
--- a/test/units/plugins/lookup/test_conjur_variable.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: utf-8 -*-
-# (c) 2018, Jason Vanderhoof <jason.vanderhoof@cyberark.com>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-import pytest
-from units.compat.mock import MagicMock
-from ansible.errors import AnsibleError
-from ansible.module_utils.six.moves import http_client
-from ansible.plugins.lookup import conjur_variable
-import tempfile
-
-
-class TestLookupModule:
- def test_valid_netrc_file(self):
- with tempfile.NamedTemporaryFile() as temp_netrc:
- temp_netrc.write(b"machine http://localhost/authn\n")
- temp_netrc.write(b" login admin\n")
- temp_netrc.write(b" password my-pass\n")
- temp_netrc.seek(0)
-
- results = conjur_variable._load_identity_from_file(temp_netrc.name, 'http://localhost')
-
- assert results['id'] == 'admin'
- assert results['api_key'] == 'my-pass'
-
- def test_netrc_without_host_file(self):
- with tempfile.NamedTemporaryFile() as temp_netrc:
- temp_netrc.write(b"machine http://localhost/authn\n")
- temp_netrc.write(b" login admin\n")
- temp_netrc.write(b" password my-pass\n")
- temp_netrc.seek(0)
-
- with pytest.raises(AnsibleError):
- conjur_variable._load_identity_from_file(temp_netrc.name, 'http://foo')
-
- def test_valid_configuration(self):
- with tempfile.NamedTemporaryFile() as configuration_file:
- configuration_file.write(b"---\n")
- configuration_file.write(b"account: demo-policy\n")
- configuration_file.write(b"plugins: []\n")
- configuration_file.write(b"appliance_url: http://localhost:8080\n")
- configuration_file.seek(0)
-
- results = conjur_variable._load_conf_from_file(configuration_file.name)
- assert results['account'] == 'demo-policy'
- assert results['appliance_url'] == 'http://localhost:8080'
-
- def test_valid_token_retrieval(self, mocker):
- mock_response = MagicMock(spec_set=http_client.HTTPResponse)
- try:
- mock_response.getcode.return_value = 200
- except Exception:
- # HTTPResponse is a Python 3 only feature. This uses a generic mock for python 2.6
- mock_response = MagicMock()
- mock_response.getcode.return_value = 200
-
- mock_response.read.return_value = 'foo-bar-token'
- mocker.patch.object(conjur_variable, 'open_url', return_value=mock_response)
-
- response = conjur_variable._fetch_conjur_token('http://conjur', 'account', 'username', 'api_key')
- assert response == 'foo-bar-token'
-
- def test_valid_fetch_conjur_variable(self, mocker):
- mock_response = MagicMock(spec_set=http_client.HTTPResponse)
- try:
- mock_response.getcode.return_value = 200
- except Exception:
- # HTTPResponse is a Python 3 only feature. This uses a generic mock for python 2.6
- mock_response = MagicMock()
- mock_response.getcode.return_value = 200
-
- mock_response.read.return_value = 'foo-bar'
- mocker.patch.object(conjur_variable, 'open_url', return_value=mock_response)
-
- response = conjur_variable._fetch_conjur_token('super-secret', 'token', 'http://conjur', 'account')
- assert response == 'foo-bar'
-
- def test_invalid_fetch_conjur_variable(self, mocker):
- for code in [401, 403, 404]:
- mock_response = MagicMock(spec_set=http_client.HTTPResponse)
- try:
- mock_response.getcode.return_value = code
- except Exception:
- # HTTPResponse is a Python 3 only feature. This uses a generic mock for python 2.6
- mock_response = MagicMock()
- mock_response.getcode.return_value = code
-
- mocker.patch.object(conjur_variable, 'open_url', return_value=mock_response)
-
- with pytest.raises(AnsibleError):
- response = conjur_variable._fetch_conjur_token('super-secret', 'token', 'http://conjur', 'account')
diff --git a/test/units/plugins/lookup/test_lastpass.py b/test/units/plugins/lookup/test_lastpass.py
deleted file mode 100644
index 7de54d0fc5..0000000000
--- a/test/units/plugins/lookup/test_lastpass.py
+++ /dev/null
@@ -1,187 +0,0 @@
-# (c)2016 Andrew Zenk <azenk@umn.edu>
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-
-# Make coding more python3-ish
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from argparse import ArgumentParser
-
-from units.compat import unittest
-from units.compat.mock import patch
-
-from ansible.errors import AnsibleError
-from ansible.module_utils import six
-from ansible.plugins.lookup.lastpass import LookupModule, LPass, LPassException
-
-
-MOCK_ENTRIES = [{'username': 'user',
- 'name': 'Mock Entry',
- 'password': 't0pS3cret passphrase entry!',
- 'url': 'https://localhost/login',
- 'notes': 'Test\nnote with multiple lines.\n',
- 'id': '0123456789'}]
-
-
-class MockLPass(LPass):
-
- _mock_logged_out = False
- _mock_disconnected = False
-
- def _lookup_mock_entry(self, key):
- for entry in MOCK_ENTRIES:
- if key == entry['id'] or key == entry['name']:
- return entry
-
- def _run(self, args, stdin=None, expected_rc=0):
- # Mock behavior of lpass executable
- base_options = ArgumentParser(add_help=False)
- base_options.add_argument('--color', default="auto", choices=['auto', 'always', 'never'])
-
- p = ArgumentParser()
- sp = p.add_subparsers(help='command', dest='subparser_name')
-
- logout_p = sp.add_parser('logout', parents=[base_options], help='logout')
- show_p = sp.add_parser('show', parents=[base_options], help='show entry details')
-
- field_group = show_p.add_mutually_exclusive_group(required=True)
- for field in MOCK_ENTRIES[0].keys():
- field_group.add_argument("--{0}".format(field), default=False, action='store_true')
- field_group.add_argument('--field', default=None)
- show_p.add_argument('selector', help='Unique Name or ID')
-
- args = p.parse_args(args)
-
- def mock_exit(output='', error='', rc=0):
- if rc != expected_rc:
- raise LPassException(error)
- return output, error
-
- if args.color != 'never':
- return mock_exit(error='Error: Mock only supports --color=never', rc=1)
-
- if args.subparser_name == 'logout':
- if self._mock_logged_out:
- return mock_exit(error='Error: Not currently logged in', rc=1)
-
- logged_in_error = 'Are you sure you would like to log out? [Y/n]'
- if stdin and stdin.lower() == 'n\n':
- return mock_exit(output='Log out: aborted.', error=logged_in_error, rc=1)
- elif stdin and stdin.lower() == 'y\n':
- return mock_exit(output='Log out: complete.', error=logged_in_error, rc=0)
- else:
- return mock_exit(error='Error: aborted response', rc=1)
-
- if args.subparser_name == 'show':
- if self._mock_logged_out:
- return mock_exit(error='Error: Could not find decryption key.' +
- ' Perhaps you need to login with `lpass login`.', rc=1)
-
- if self._mock_disconnected:
- return mock_exit(error='Error: Couldn\'t resolve host name.', rc=1)
-
- mock_entry = self._lookup_mock_entry(args.selector)
-
- if args.field:
- return mock_exit(output=mock_entry.get(args.field, ''))
- elif args.password:
- return mock_exit(output=mock_entry.get('password', ''))
- elif args.username:
- return mock_exit(output=mock_entry.get('username', ''))
- elif args.url:
- return mock_exit(output=mock_entry.get('url', ''))
- elif args.name:
- return mock_exit(output=mock_entry.get('name', ''))
- elif args.id:
- return mock_exit(output=mock_entry.get('id', ''))
- elif args.notes:
- return mock_exit(output=mock_entry.get('notes', ''))
-
- raise LPassException('We should never get here')
-
-
-class DisconnectedMockLPass(MockLPass):
-
- _mock_disconnected = True
-
-
-class LoggedOutMockLPass(MockLPass):
-
- _mock_logged_out = True
-
-
-class TestLPass(unittest.TestCase):
-
- def test_lastpass_cli_path(self):
- lp = MockLPass(path='/dev/null')
- self.assertEqual('/dev/null', lp.cli_path)
-
- def test_lastpass_build_args_logout(self):
- lp = MockLPass()
- self.assertEqual(['logout', '--color=never'], lp._build_args("logout"))
-
- def test_lastpass_logged_in_true(self):
- lp = MockLPass()
- self.assertTrue(lp.logged_in)
-
- def test_lastpass_logged_in_false(self):
- lp = LoggedOutMockLPass()
- self.assertFalse(lp.logged_in)
-
- def test_lastpass_show_disconnected(self):
- lp = DisconnectedMockLPass()
-
- with self.assertRaises(LPassException):
- lp.get_field('0123456789', 'username')
-
- def test_lastpass_show(self):
- lp = MockLPass()
- for entry in MOCK_ENTRIES:
- entry_id = entry.get('id')
- for k, v in six.iteritems(entry):
- self.assertEqual(v.strip(), lp.get_field(entry_id, k))
-
-
-class TestLastpassPlugin(unittest.TestCase):
-
- @patch('ansible.plugins.lookup.lastpass.LPass', new=MockLPass)
- def test_lastpass_plugin_normal(self):
- lookup_plugin = LookupModule()
-
- for entry in MOCK_ENTRIES:
- entry_id = entry.get('id')
- for k, v in six.iteritems(entry):
- self.assertEqual(v.strip(),
- lookup_plugin.run([entry_id], field=k)[0])
-
- @patch('ansible.plugins.lookup.lastpass.LPass', LoggedOutMockLPass)
- def test_lastpass_plugin_logged_out(self):
- lookup_plugin = LookupModule()
-
- entry = MOCK_ENTRIES[0]
- entry_id = entry.get('id')
- with self.assertRaises(AnsibleError):
- lookup_plugin.run([entry_id], field='password')
-
- @patch('ansible.plugins.lookup.lastpass.LPass', DisconnectedMockLPass)
- def test_lastpass_plugin_disconnected(self):
- lookup_plugin = LookupModule()
-
- entry = MOCK_ENTRIES[0]
- entry_id = entry.get('id')
- with self.assertRaises(AnsibleError):
- lookup_plugin.run([entry_id], field='password')
diff --git a/test/units/plugins/lookup/test_manifold.py b/test/units/plugins/lookup/test_manifold.py
deleted file mode 100644
index 1cc1b68967..0000000000
--- a/test/units/plugins/lookup/test_manifold.py
+++ /dev/null
@@ -1,536 +0,0 @@
-# (c) 2018, Arigato Machine Inc.
-# (c) 2018, Ansible Project
-# 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
-
-from units.compat import unittest
-from units.compat.mock import patch, call
-from ansible.errors import AnsibleError
-from ansible.module_utils.urls import ConnectionError, SSLValidationError
-from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
-from ansible.module_utils import six
-from ansible.plugins.lookup.manifold import ManifoldApiClient, LookupModule, ApiError
-import json
-
-
-API_FIXTURES = {
- 'https://api.marketplace.manifold.co/v1/resources':
- [
- {
- "body": {
- "label": "resource-1",
- "name": "Resource 1"
- },
- "id": "rid-1"
- },
- {
- "body": {
- "label": "resource-2",
- "name": "Resource 2"
- },
- "id": "rid-2"
- }
- ],
- 'https://api.marketplace.manifold.co/v1/resources?label=resource-1':
- [
- {
- "body": {
- "label": "resource-1",
- "name": "Resource 1"
- },
- "id": "rid-1"
- }
- ],
- 'https://api.marketplace.manifold.co/v1/resources?label=resource-2':
- [
- {
- "body": {
- "label": "resource-2",
- "name": "Resource 2"
- },
- "id": "rid-2"
- }
- ],
- 'https://api.marketplace.manifold.co/v1/resources?team_id=tid-1':
- [
- {
- "body": {
- "label": "resource-1",
- "name": "Resource 1"
- },
- "id": "rid-1"
- }
- ],
- 'https://api.marketplace.manifold.co/v1/resources?project_id=pid-1':
- [
- {
- "body": {
- "label": "resource-2",
- "name": "Resource 2"
- },
- "id": "rid-2"
- }
- ],
- 'https://api.marketplace.manifold.co/v1/resources?project_id=pid-2':
- [
- {
- "body": {
- "label": "resource-1",
- "name": "Resource 1"
- },
- "id": "rid-1"
- },
- {
- "body": {
- "label": "resource-3",
- "name": "Resource 3"
- },
- "id": "rid-3"
- }
- ],
- 'https://api.marketplace.manifold.co/v1/resources?team_id=tid-1&project_id=pid-1':
- [
- {
- "body": {
- "label": "resource-1",
- "name": "Resource 1"
- },
- "id": "rid-1"
- }
- ],
- 'https://api.marketplace.manifold.co/v1/projects':
- [
- {
- "body": {
- "label": "project-1",
- "name": "Project 1",
- },
- "id": "pid-1",
- },
- {
- "body": {
- "label": "project-2",
- "name": "Project 2",
- },
- "id": "pid-2",
- }
- ],
- 'https://api.marketplace.manifold.co/v1/projects?label=project-2':
- [
- {
- "body": {
- "label": "project-2",
- "name": "Project 2",
- },
- "id": "pid-2",
- }
- ],
- 'https://api.marketplace.manifold.co/v1/credentials?resource_id=rid-1':
- [
- {
- "body": {
- "resource_id": "rid-1",
- "values": {
- "RESOURCE_TOKEN_1": "token-1",
- "RESOURCE_TOKEN_2": "token-2"
- }
- },
- "id": "cid-1",
- }
- ],
- 'https://api.marketplace.manifold.co/v1/credentials?resource_id=rid-2':
- [
- {
- "body": {
- "resource_id": "rid-2",
- "values": {
- "RESOURCE_TOKEN_3": "token-3",
- "RESOURCE_TOKEN_4": "token-4"
- }
- },
- "id": "cid-2",
- }
- ],
- 'https://api.marketplace.manifold.co/v1/credentials?resource_id=rid-3':
- [
- {
- "body": {
- "resource_id": "rid-3",
- "values": {
- "RESOURCE_TOKEN_1": "token-5",
- "RESOURCE_TOKEN_2": "token-6"
- }
- },
- "id": "cid-3",
- }
- ],
- 'https://api.identity.manifold.co/v1/teams':
- [
- {
- "id": "tid-1",
- "body": {
- "name": "Team 1",
- "label": "team-1"
- }
- },
- {
- "id": "tid-2",
- "body": {
- "name": "Team 2",
- "label": "team-2"
- }
- }
- ]
-}
-
-
-def mock_fixture(open_url_mock, fixture=None, data=None, headers=None):
- if not headers:
- headers = {}
- if fixture:
- data = json.dumps(API_FIXTURES[fixture])
- if 'content-type' not in headers:
- headers['content-type'] = 'application/json'
-
- open_url_mock.return_value.read.return_value = data
- open_url_mock.return_value.headers = headers
-
-
-class TestManifoldApiClient(unittest.TestCase):
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_sends_default_headers(self, open_url_mock):
- mock_fixture(open_url_mock, data='hello')
- client = ManifoldApiClient('token-123')
- client.request('test', 'endpoint')
- open_url_mock.assert_called_with('https://api.test.manifold.co/v1/endpoint',
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123'},
- http_agent='python-manifold-ansible-1.0.0')
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_decodes_json(self, open_url_mock):
- mock_fixture(open_url_mock, fixture='https://api.marketplace.manifold.co/v1/resources')
- client = ManifoldApiClient('token-123')
- self.assertIsInstance(client.request('marketplace', 'resources'), list)
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_streams_text(self, open_url_mock):
- mock_fixture(open_url_mock, data='hello', headers={'content-type': "text/plain"})
- client = ManifoldApiClient('token-123')
- self.assertEqual('hello', client.request('test', 'endpoint'))
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_processes_parameterized_headers(self, open_url_mock):
- mock_fixture(open_url_mock, data='hello')
- client = ManifoldApiClient('token-123')
- client.request('test', 'endpoint', headers={'X-HEADER': 'MANIFOLD'})
- open_url_mock.assert_called_with('https://api.test.manifold.co/v1/endpoint',
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123',
- 'X-HEADER': 'MANIFOLD'},
- http_agent='python-manifold-ansible-1.0.0')
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_passes_arbitrary_parameters(self, open_url_mock):
- mock_fixture(open_url_mock, data='hello')
- client = ManifoldApiClient('token-123')
- client.request('test', 'endpoint', use_proxy=False, timeout=5)
- open_url_mock.assert_called_with('https://api.test.manifold.co/v1/endpoint',
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123'},
- http_agent='python-manifold-ansible-1.0.0',
- use_proxy=False, timeout=5)
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_raises_on_incorrect_json(self, open_url_mock):
- mock_fixture(open_url_mock, data='noJson', headers={'content-type': "application/json"})
- client = ManifoldApiClient('token-123')
- with self.assertRaises(ApiError) as context:
- client.request('test', 'endpoint')
- self.assertEqual('JSON response can\'t be parsed while requesting https://api.test.manifold.co/v1/endpoint:\n'
- 'noJson',
- str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_raises_on_status_500(self, open_url_mock):
- open_url_mock.side_effect = HTTPError('https://api.test.manifold.co/v1/endpoint',
- 500, 'Server error', {}, six.StringIO('ERROR'))
- client = ManifoldApiClient('token-123')
- with self.assertRaises(ApiError) as context:
- client.request('test', 'endpoint')
- self.assertEqual('Server returned: HTTP Error 500: Server error while requesting '
- 'https://api.test.manifold.co/v1/endpoint:\nERROR',
- str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_raises_on_bad_url(self, open_url_mock):
- open_url_mock.side_effect = URLError('URL is invalid')
- client = ManifoldApiClient('token-123')
- with self.assertRaises(ApiError) as context:
- client.request('test', 'endpoint')
- self.assertEqual('Failed lookup url for https://api.test.manifold.co/v1/endpoint : <url'
- 'open error URL is invalid>',
- str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_raises_on_ssl_error(self, open_url_mock):
- open_url_mock.side_effect = SSLValidationError('SSL Error')
- client = ManifoldApiClient('token-123')
- with self.assertRaises(ApiError) as context:
- client.request('test', 'endpoint')
- self.assertEqual('Error validating the server\'s certificate for https://api.test.manifold.co/v1/endpoint: '
- 'SSL Error',
- str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_request_raises_on_connection_error(self, open_url_mock):
- open_url_mock.side_effect = ConnectionError('Unknown connection error')
- client = ManifoldApiClient('token-123')
- with self.assertRaises(ApiError) as context:
- client.request('test', 'endpoint')
- self.assertEqual('Error connecting to https://api.test.manifold.co/v1/endpoint: Unknown connection error',
- str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_get_resources_get_all(self, open_url_mock):
- url = 'https://api.marketplace.manifold.co/v1/resources'
- mock_fixture(open_url_mock, fixture=url)
- client = ManifoldApiClient('token-123')
- self.assertListEqual(API_FIXTURES[url], client.get_resources())
- open_url_mock.assert_called_with(url,
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123'},
- http_agent='python-manifold-ansible-1.0.0')
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_get_resources_filter_label(self, open_url_mock):
- url = 'https://api.marketplace.manifold.co/v1/resources?label=resource-1'
- mock_fixture(open_url_mock, fixture=url)
- client = ManifoldApiClient('token-123')
- self.assertListEqual(API_FIXTURES[url], client.get_resources(label='resource-1'))
- open_url_mock.assert_called_with(url,
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123'},
- http_agent='python-manifold-ansible-1.0.0')
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_get_resources_filter_team_and_project(self, open_url_mock):
- url = 'https://api.marketplace.manifold.co/v1/resources?team_id=tid-1&project_id=pid-1'
- mock_fixture(open_url_mock, fixture=url)
- client = ManifoldApiClient('token-123')
- self.assertListEqual(API_FIXTURES[url], client.get_resources(team_id='tid-1', project_id='pid-1'))
- args, kwargs = open_url_mock.call_args
- url_called = args[0]
- # Dict order is not guaranteed, so an url may have querystring parameters order randomized
- self.assertIn('team_id=tid-1', url_called)
- self.assertIn('project_id=pid-1', url_called)
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_get_teams_get_all(self, open_url_mock):
- url = 'https://api.identity.manifold.co/v1/teams'
- mock_fixture(open_url_mock, fixture=url)
- client = ManifoldApiClient('token-123')
- self.assertListEqual(API_FIXTURES[url], client.get_teams())
- open_url_mock.assert_called_with(url,
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123'},
- http_agent='python-manifold-ansible-1.0.0')
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_get_teams_filter_label(self, open_url_mock):
- url = 'https://api.identity.manifold.co/v1/teams'
- mock_fixture(open_url_mock, fixture=url)
- client = ManifoldApiClient('token-123')
- self.assertListEqual(API_FIXTURES[url][1:2], client.get_teams(label='team-2'))
- open_url_mock.assert_called_with(url,
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123'},
- http_agent='python-manifold-ansible-1.0.0')
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_get_projects_get_all(self, open_url_mock):
- url = 'https://api.marketplace.manifold.co/v1/projects'
- mock_fixture(open_url_mock, fixture=url)
- client = ManifoldApiClient('token-123')
- self.assertListEqual(API_FIXTURES[url], client.get_projects())
- open_url_mock.assert_called_with(url,
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123'},
- http_agent='python-manifold-ansible-1.0.0')
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_get_projects_filter_label(self, open_url_mock):
- url = 'https://api.marketplace.manifold.co/v1/projects?label=project-2'
- mock_fixture(open_url_mock, fixture=url)
- client = ManifoldApiClient('token-123')
- self.assertListEqual(API_FIXTURES[url], client.get_projects(label='project-2'))
- open_url_mock.assert_called_with(url,
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123'},
- http_agent='python-manifold-ansible-1.0.0')
-
- @patch('ansible.plugins.lookup.manifold.open_url')
- def test_get_credentials(self, open_url_mock):
- url = 'https://api.marketplace.manifold.co/v1/credentials?resource_id=rid-1'
- mock_fixture(open_url_mock, fixture=url)
- client = ManifoldApiClient('token-123')
- self.assertListEqual(API_FIXTURES[url], client.get_credentials(resource_id='rid-1'))
- open_url_mock.assert_called_with(url,
- headers={'Accept': '*/*', 'Authorization': 'Bearer token-123'},
- http_agent='python-manifold-ansible-1.0.0')
-
-
-class TestLookupModule(unittest.TestCase):
- def setUp(self):
- self.lookup = LookupModule()
- self.lookup._load_name = "manifold"
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_get_all(self, client_mock):
- expected_result = [{'RESOURCE_TOKEN_1': 'token-1',
- 'RESOURCE_TOKEN_2': 'token-2',
- 'RESOURCE_TOKEN_3': 'token-3',
- 'RESOURCE_TOKEN_4': 'token-4'
- }]
- client_mock.return_value.get_resources.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/resources']
- client_mock.return_value.get_credentials.side_effect = lambda x: API_FIXTURES['https://api.marketplace.manifold.co/v1/'
- 'credentials?resource_id={0}'.format(x)]
- self.assertListEqual(expected_result, self.lookup.run([], api_token='token-123'))
- client_mock.assert_called_with('token-123')
- client_mock.return_value.get_resources.assert_called_with(team_id=None, project_id=None)
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_get_one_resource(self, client_mock):
- expected_result = [{'RESOURCE_TOKEN_3': 'token-3',
- 'RESOURCE_TOKEN_4': 'token-4'
- }]
- client_mock.return_value.get_resources.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/resources?label=resource-2']
- client_mock.return_value.get_credentials.side_effect = lambda x: API_FIXTURES['https://api.marketplace.manifold.co/v1/'
- 'credentials?resource_id={0}'.format(x)]
- self.assertListEqual(expected_result, self.lookup.run(['resource-2'], api_token='token-123'))
- client_mock.return_value.get_resources.assert_called_with(team_id=None, project_id=None, label='resource-2')
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_get_two_resources(self, client_mock):
- expected_result = [{'RESOURCE_TOKEN_1': 'token-1',
- 'RESOURCE_TOKEN_2': 'token-2',
- 'RESOURCE_TOKEN_3': 'token-3',
- 'RESOURCE_TOKEN_4': 'token-4'
- }]
- client_mock.return_value.get_resources.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/resources']
- client_mock.return_value.get_credentials.side_effect = lambda x: API_FIXTURES['https://api.marketplace.manifold.co/v1/'
- 'credentials?resource_id={0}'.format(x)]
- self.assertListEqual(expected_result, self.lookup.run(['resource-1', 'resource-2'], api_token='token-123'))
- client_mock.assert_called_with('token-123')
- client_mock.return_value.get_resources.assert_called_with(team_id=None, project_id=None)
-
- @patch('ansible.plugins.lookup.manifold.display')
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_get_resources_with_same_credential_names(self, client_mock, display_mock):
- expected_result = [{'RESOURCE_TOKEN_1': 'token-5',
- 'RESOURCE_TOKEN_2': 'token-6'
- }]
- client_mock.return_value.get_resources.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/resources?project_id=pid-2']
- client_mock.return_value.get_projects.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/projects?label=project-2']
- client_mock.return_value.get_credentials.side_effect = lambda x: API_FIXTURES['https://api.marketplace.manifold.co/v1/'
- 'credentials?resource_id={0}'.format(x)]
- self.assertListEqual(expected_result, self.lookup.run([], api_token='token-123', project='project-2'))
- client_mock.assert_called_with('token-123')
- display_mock.warning.assert_has_calls([
- call("'RESOURCE_TOKEN_1' with label 'resource-1' was replaced by resource data with label 'resource-3'"),
- call("'RESOURCE_TOKEN_2' with label 'resource-1' was replaced by resource data with label 'resource-3'")],
- any_order=True
- )
- client_mock.return_value.get_resources.assert_called_with(team_id=None, project_id='pid-2')
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_filter_by_team(self, client_mock):
- expected_result = [{'RESOURCE_TOKEN_1': 'token-1',
- 'RESOURCE_TOKEN_2': 'token-2'
- }]
- client_mock.return_value.get_resources.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/resources?team_id=tid-1']
- client_mock.return_value.get_teams.return_value = API_FIXTURES['https://api.identity.manifold.co/v1/teams'][0:1]
- client_mock.return_value.get_credentials.side_effect = lambda x: API_FIXTURES['https://api.marketplace.manifold.co/v1/'
- 'credentials?resource_id={0}'.format(x)]
- self.assertListEqual(expected_result, self.lookup.run([], api_token='token-123', team='team-1'))
- client_mock.assert_called_with('token-123')
- client_mock.return_value.get_resources.assert_called_with(team_id='tid-1', project_id=None)
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_filter_by_project(self, client_mock):
- expected_result = [{'RESOURCE_TOKEN_3': 'token-3',
- 'RESOURCE_TOKEN_4': 'token-4'
- }]
- client_mock.return_value.get_resources.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/resources?project_id=pid-1']
- client_mock.return_value.get_projects.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/projects'][0:1]
- client_mock.return_value.get_credentials.side_effect = lambda x: API_FIXTURES['https://api.marketplace.manifold.co/v1/'
- 'credentials?resource_id={0}'.format(x)]
- self.assertListEqual(expected_result, self.lookup.run([], api_token='token-123', project='project-1'))
- client_mock.assert_called_with('token-123')
- client_mock.return_value.get_resources.assert_called_with(team_id=None, project_id='pid-1')
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_filter_by_team_and_project(self, client_mock):
- expected_result = [{'RESOURCE_TOKEN_1': 'token-1',
- 'RESOURCE_TOKEN_2': 'token-2'
- }]
- client_mock.return_value.get_resources.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/resources?team_id=tid-1&project_id=pid-1']
- client_mock.return_value.get_teams.return_value = API_FIXTURES['https://api.identity.manifold.co/v1/teams'][0:1]
- client_mock.return_value.get_projects.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/projects'][0:1]
- client_mock.return_value.get_credentials.side_effect = lambda x: API_FIXTURES['https://api.marketplace.manifold.co/v1/'
- 'credentials?resource_id={0}'.format(x)]
- self.assertListEqual(expected_result, self.lookup.run([], api_token='token-123', project='project-1'))
- client_mock.assert_called_with('token-123')
- client_mock.return_value.get_resources.assert_called_with(team_id=None, project_id='pid-1')
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_raise_team_doesnt_exist(self, client_mock):
- client_mock.return_value.get_teams.return_value = []
- with self.assertRaises(AnsibleError) as context:
- self.lookup.run([], api_token='token-123', team='no-team')
- self.assertEqual("Team 'no-team' does not exist",
- str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_raise_project_doesnt_exist(self, client_mock):
- client_mock.return_value.get_projects.return_value = []
- with self.assertRaises(AnsibleError) as context:
- self.lookup.run([], api_token='token-123', project='no-project')
- self.assertEqual("Project 'no-project' does not exist",
- str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_raise_resource_doesnt_exist(self, client_mock):
- client_mock.return_value.get_resources.return_value = API_FIXTURES['https://api.marketplace.manifold.co/v1/resources']
- with self.assertRaises(AnsibleError) as context:
- self.lookup.run(['resource-1', 'no-resource-1', 'no-resource-2'], api_token='token-123')
- self.assertEqual("Resource(s) no-resource-1, no-resource-2 do not exist",
- str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_catch_api_error(self, client_mock):
- client_mock.side_effect = ApiError('Generic error')
- with self.assertRaises(AnsibleError) as context:
- self.lookup.run([], api_token='token-123')
- self.assertEqual("API Error: Generic error",
- str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_catch_unhandled_exception(self, client_mock):
- client_mock.side_effect = Exception('Unknown error')
- with self.assertRaises(AnsibleError) as context:
- self.lookup.run([], api_token='token-123')
- self.assertTrue('Exception: Unknown error' in str(context.exception))
-
- @patch('ansible.plugins.lookup.manifold.os.getenv')
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_falls_back_to_env_var(self, client_mock, getenv_mock):
- getenv_mock.return_value = 'token-321'
- client_mock.return_value.get_resources.return_value = []
- client_mock.return_value.get_credentials.return_value = []
- self.lookup.run([])
- getenv_mock.assert_called_with('MANIFOLD_API_TOKEN')
- client_mock.assert_called_with('token-321')
-
- @patch('ansible.plugins.lookup.manifold.os.getenv')
- @patch('ansible.plugins.lookup.manifold.ManifoldApiClient')
- def test_falls_raises_on_no_token(self, client_mock, getenv_mock):
- getenv_mock.return_value = None
- client_mock.return_value.get_resources.return_value = []
- client_mock.return_value.get_credentials.return_value = []
- with self.assertRaises(AnsibleError) as context:
- self.lookup.run([])
- self.assertEqual('API token is required. Please set api_token parameter or MANIFOLD_API_TOKEN env var',
- str(context.exception))
diff --git a/test/units/plugins/lookup/test_onepassword.py b/test/units/plugins/lookup/test_onepassword.py
deleted file mode 100644
index dee53b1b01..0000000000
--- a/test/units/plugins/lookup/test_onepassword.py
+++ /dev/null
@@ -1,321 +0,0 @@
-# (c) 2018, Scott Buchanan <sbuchanan@ri.pn>
-# (c) 2016, Andrew Zenk <azenk@umn.edu> (test_lastpass.py used as starting point)
-# 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 json
-import datetime
-
-try:
- from urllib.parse import urlparse
-except ImportError:
- from urlparse import urlparse
-
-from argparse import ArgumentParser
-
-
-from units.compat import unittest
-from units.compat.mock import patch
-from ansible.errors import AnsibleError
-from ansible.plugins.lookup.onepassword import OnePass, LookupModule
-from ansible.plugins.lookup.onepassword_raw import LookupModule as OnePasswordRawLookup
-
-
-# Intentionally excludes metadata leaf nodes that would exist in real output if not relevant.
-MOCK_ENTRIES = [
- {
- 'vault_name': 'Acme "Quot\'d" Servers',
- 'queries': [
- '0123456789',
- 'Mock "Quot\'d" Server'
- ],
- 'output': {
- 'uuid': '0123456789',
- 'vaultUuid': '2468',
- 'overview': {
- 'title': 'Mock "Quot\'d" Server'
- },
- 'details': {
- 'sections': [{
- 'title': '',
- 'fields': [
- {'t': 'username', 'v': 'jamesbond'},
- {'t': 'password', 'v': 't0pS3cret'},
- {'t': 'notes', 'v': 'Test note with\nmultiple lines and trailing space.\n\n'},
- {'t': 'tricksy "quot\'d" field\\', 'v': '"quot\'d" value'}
- ]
- }]
- }
- }
- },
- {
- 'vault_name': 'Acme Logins',
- 'queries': [
- '9876543210',
- 'Mock Website',
- 'acme.com'
- ],
- 'output': {
- 'uuid': '9876543210',
- 'vaultUuid': '1357',
- 'overview': {
- 'title': 'Mock Website',
- 'URLs': [
- {'l': 'website', 'u': 'https://acme.com/login'}
- ]
- },
- 'details': {
- 'sections': [{
- 'title': '',
- 'fields': [
- {'t': 'password', 'v': 't0pS3cret'}
- ]
- }]
- }
- }
- },
- {
- 'vault_name': 'Acme Logins',
- 'queries': [
- '864201357'
- ],
- 'output': {
- 'uuid': '864201357',
- 'vaultUuid': '1357',
- 'overview': {
- 'title': 'Mock Something'
- },
- 'details': {
- 'fields': [
- {
- 'value': 'jbond@mi6.gov.uk',
- 'name': 'emailAddress'
- },
- {
- 'name': 'password',
- 'value': 'vauxhall'
- },
- {},
- ]
- }
- }
- },
-]
-
-
-def get_mock_query_generator(require_field=None):
- def _process_field(field, section_title=None):
- field_name = field.get('name', field.get('t', ''))
- field_value = field.get('value', field.get('v', ''))
-
- if require_field is None or field_name == require_field:
- return entry, query, section_title, field_name, field_value
-
- for entry in MOCK_ENTRIES:
- for query in entry['queries']:
- for field in entry['output']['details'].get('fields', []):
- fixture = _process_field(field)
- if fixture:
- yield fixture
- for section in entry['output']['details'].get('sections', []):
- for field in section['fields']:
- fixture = _process_field(field, section['title'])
- if fixture:
- yield fixture
-
-
-def get_one_mock_query(require_field=None):
- generator = get_mock_query_generator(require_field)
- return next(generator)
-
-
-class MockOnePass(OnePass):
-
- _mock_logged_out = False
- _mock_timed_out = False
-
- def _lookup_mock_entry(self, key, vault=None):
- for entry in MOCK_ENTRIES:
- if vault is not None and vault.lower() != entry['vault_name'].lower() and vault.lower() != entry['output']['vaultUuid'].lower():
- continue
-
- match_fields = [
- entry['output']['uuid'],
- entry['output']['overview']['title']
- ]
-
- # Note that exactly how 1Password matches on domains in non-trivial cases is neither documented
- # nor obvious, so this may not precisely match the real behavior.
- urls = entry['output']['overview'].get('URLs')
- if urls is not None:
- match_fields += [urlparse(url['u']).netloc for url in urls]
-
- if key in match_fields:
- return entry['output']
-
- def _run(self, args, expected_rc=0, command_input=None, ignore_errors=False):
- parser = ArgumentParser()
-
- command_parser = parser.add_subparsers(dest='command')
-
- get_parser = command_parser.add_parser('get')
- get_options = ArgumentParser(add_help=False)
- get_options.add_argument('--vault')
- get_type_parser = get_parser.add_subparsers(dest='object_type')
- get_type_parser.add_parser('account', parents=[get_options])
- get_item_parser = get_type_parser.add_parser('item', parents=[get_options])
- get_item_parser.add_argument('item_id')
-
- args = parser.parse_args(args)
-
- def mock_exit(output='', error='', rc=0):
- if rc != expected_rc:
- raise AnsibleError(error)
- if error != '':
- now = datetime.date.today()
- error = '[LOG] {0} (ERROR) {1}'.format(now.strftime('%Y/%m/%d %H:$M:$S'), error)
- return rc, output, error
-
- if args.command == 'get':
- if self._mock_logged_out:
- return mock_exit(error='You are not currently signed in. Please run `op signin --help` for instructions', rc=1)
-
- if self._mock_timed_out:
- return mock_exit(error='401: Authentication required.', rc=1)
-
- if args.object_type == 'item':
- mock_entry = self._lookup_mock_entry(args.item_id, args.vault)
-
- if mock_entry is None:
- return mock_exit(error='Item {0} not found'.format(args.item_id))
-
- return mock_exit(output=json.dumps(mock_entry))
-
- if args.object_type == 'account':
- # Since we don't actually ever use this output, don't bother mocking output.
- return mock_exit()
-
- raise AnsibleError('Unsupported command string passed to OnePass mock: {0}'.format(args))
-
-
-class LoggedOutMockOnePass(MockOnePass):
-
- _mock_logged_out = True
-
-
-class TimedOutMockOnePass(MockOnePass):
-
- _mock_timed_out = True
-
-
-class TestOnePass(unittest.TestCase):
-
- def test_onepassword_cli_path(self):
- op = MockOnePass(path='/dev/null')
- self.assertEqual('/dev/null', op.cli_path)
-
- def test_onepassword_logged_in(self):
- op = MockOnePass()
- try:
- op.assert_logged_in()
- except Exception:
- self.fail()
-
- def test_onepassword_logged_out(self):
- op = LoggedOutMockOnePass()
- with self.assertRaises(AnsibleError):
- op.assert_logged_in()
-
- def test_onepassword_timed_out(self):
- op = TimedOutMockOnePass()
- with self.assertRaises(AnsibleError):
- op.assert_logged_in()
-
- def test_onepassword_get(self):
- op = MockOnePass()
- op.logged_in = True
- query_generator = get_mock_query_generator()
- for dummy, query, dummy, field_name, field_value in query_generator:
- self.assertEqual(field_value, op.get_field(query, field_name))
-
- def test_onepassword_get_raw(self):
- op = MockOnePass()
- op.logged_in = True
- for entry in MOCK_ENTRIES:
- for query in entry['queries']:
- self.assertEqual(json.dumps(entry['output']), op.get_raw(query))
-
- def test_onepassword_get_not_found(self):
- op = MockOnePass()
- op.logged_in = True
- self.assertEqual('', op.get_field('a fake query', 'a fake field'))
-
- def test_onepassword_get_with_section(self):
- op = MockOnePass()
- op.logged_in = True
- dummy, query, section_title, field_name, field_value = get_one_mock_query()
- self.assertEqual(field_value, op.get_field(query, field_name, section=section_title))
-
- def test_onepassword_get_with_vault(self):
- op = MockOnePass()
- op.logged_in = True
- entry, query, dummy, field_name, field_value = get_one_mock_query()
- for vault_query in [entry['vault_name'], entry['output']['vaultUuid']]:
- self.assertEqual(field_value, op.get_field(query, field_name, vault=vault_query))
-
- def test_onepassword_get_with_wrong_vault(self):
- op = MockOnePass()
- op.logged_in = True
- dummy, query, dummy, field_name, dummy = get_one_mock_query()
- self.assertEqual('', op.get_field(query, field_name, vault='a fake vault'))
-
- def test_onepassword_get_diff_case(self):
- op = MockOnePass()
- op.logged_in = True
- entry, query, section_title, field_name, field_value = get_one_mock_query()
- self.assertEqual(
- field_value,
- op.get_field(
- query,
- field_name.upper(),
- vault=entry['vault_name'].upper(),
- section=section_title.upper()
- )
- )
-
-
-@patch('ansible.plugins.lookup.onepassword.OnePass', MockOnePass)
-class TestLookupModule(unittest.TestCase):
-
- def test_onepassword_plugin_multiple(self):
- lookup_plugin = LookupModule()
-
- entry = MOCK_ENTRIES[0]
- field = entry['output']['details']['sections'][0]['fields'][0]
-
- self.assertEqual(
- [field['v']] * len(entry['queries']),
- lookup_plugin.run(entry['queries'], field=field['t'])
- )
-
- def test_onepassword_plugin_default_field(self):
- lookup_plugin = LookupModule()
-
- dummy, query, dummy, dummy, field_value = get_one_mock_query('password')
- self.assertEqual([field_value], lookup_plugin.run([query]))
-
-
-@patch('ansible.plugins.lookup.onepassword_raw.OnePass', MockOnePass)
-class TestOnePasswordRawLookup(unittest.TestCase):
-
- def test_onepassword_raw_plugin_multiple(self):
- raw_lookup_plugin = OnePasswordRawLookup()
-
- entry = MOCK_ENTRIES[0]
- raw_value = entry['output']
-
- self.assertEqual(
- [raw_value] * len(entry['queries']),
- raw_lookup_plugin.run(entry['queries'])
- )
diff --git a/test/units/plugins/terminal/test_slxos.py b/test/units/plugins/terminal/test_slxos.py
deleted file mode 100644
index d886fe06ff..0000000000
--- a/test/units/plugins/terminal/test_slxos.py
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# (c) 2018 Extreme Networks Inc.
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
-#
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-from mock import MagicMock
-
-from units.compat import unittest
-from ansible.plugins.terminal import slxos
-from ansible.errors import AnsibleConnectionFailure
-
-
-class TestPluginTerminalSLXOS(unittest.TestCase):
- """ Test class for SLX-OS Terminal Module
- """
- def setUp(self):
- self._mock_connection = MagicMock()
- self._terminal = slxos.TerminalModule(self._mock_connection)
-
- def test_on_open_shell(self):
- """ Test on_open_shell
- """
- self._mock_connection.exec_command.side_effect = [
- b'Looking out my window I see a brick building, and people. Cool.',
- ]
- self._terminal.on_open_shell()
- self._mock_connection.exec_command.assert_called_with(u'terminal length 0')
-
- def test_on_open_shell_error(self):
- """ Test on_open_shell with error
- """
- self._mock_connection.exec_command.side_effect = [
- AnsibleConnectionFailure
- ]
-
- with self.assertRaises(AnsibleConnectionFailure):
- self._terminal.on_open_shell()